| Index: src/platform/update_engine/file_writer.h
|
| diff --git a/src/platform/update_engine/file_writer.h b/src/platform/update_engine/file_writer.h
|
| index 3b44a267c45092408687956afeb40210b8de6e75..c506c01f3b97297107714fbd33bfd8bed7f9922c 100644
|
| --- a/src/platform/update_engine/file_writer.h
|
| +++ b/src/platform/update_engine/file_writer.h
|
| @@ -2,14 +2,15 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef UPDATE_ENGINE_FILE_WRITER_H__
|
| -#define UPDATE_ENGINE_FILE_WRITER_H__
|
| +#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_FILE_WRITER_H__
|
| +#define CHROMEOS_PLATFORM_UPDATE_ENGINE_FILE_WRITER_H__
|
|
|
| #include <sys/types.h>
|
| #include <sys/stat.h>
|
| #include <fcntl.h>
|
| #include <unistd.h>
|
| -#include "base/logging.h"
|
| +#include "chromeos/obsolete_logging.h"
|
| +#include "update_engine/utils.h"
|
|
|
| // FileWriter is a class that is used to (synchronously, for now) write to
|
| // a file. This file is a thin wrapper around open/write/close system calls,
|
| @@ -41,39 +42,29 @@ class DirectFileWriter : public FileWriter {
|
| DirectFileWriter() : fd_(-1) {}
|
| virtual ~DirectFileWriter() {}
|
|
|
| - virtual int Open(const char* path, int flags, mode_t mode) {
|
| - CHECK_EQ(-1, fd_);
|
| - fd_ = open(path, flags, mode);
|
| - if (fd_ < 0)
|
| - return -errno;
|
| - return 0;
|
| - }
|
| -
|
| - virtual int Write(const void* bytes, size_t count) {
|
| - CHECK_GE(fd_, 0);
|
| - ssize_t rc = write(fd_, bytes, count);
|
| - if (rc < 0)
|
| - return -errno;
|
| - return rc;
|
| - }
|
| + virtual int Open(const char* path, int flags, mode_t mode);
|
| + virtual int Write(const void* bytes, size_t count);
|
| + virtual int Close();
|
|
|
| - virtual int Close() {
|
| - CHECK_GE(fd_, 0);
|
| - int rc = close(fd_);
|
| + int fd() const { return fd_; }
|
|
|
| - // This can be any negative number that's not -1. This way, this FileWriter
|
| - // won't be used again for another file.
|
| - fd_ = -2;
|
| + private:
|
| + int fd_;
|
| +};
|
|
|
| - if (rc < 0)
|
| - return -errno;
|
| - return rc;
|
| +class ScopedFileWriterCloser {
|
| + public:
|
| + explicit ScopedFileWriterCloser(FileWriter* writer) : writer_(writer) {}
|
| + ~ScopedFileWriterCloser() {
|
| + int err = writer_->Close();
|
| + if (err)
|
| + LOG(ERROR) << "FileWriter::Close failed: "
|
| + << utils::ErrnoNumberAsString(-err);
|
| }
|
| -
|
| private:
|
| - int fd_;
|
| + FileWriter* writer_;
|
| };
|
|
|
| } // namespace chromeos_update_engine
|
|
|
| -#endif // UPDATE_ENGINE_FILE_WRITER_H__
|
| +#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_FILE_WRITER_H__
|
|
|