Index: utils.h |
diff --git a/utils.h b/utils.h |
index 34b862e109195ec393e81fdbc9562679bb791a90..497963627149758b1e5a1db7b2bf0129f08ac635 100644 |
--- a/utils.h |
+++ b/utils.h |
@@ -12,6 +12,7 @@ |
#include <string> |
#include <vector> |
+#include <ext2fs/ext2fs.h> |
#include <glib.h> |
#include "update_engine/action.h" |
@@ -271,6 +272,17 @@ class ScopedFdCloser { |
DISALLOW_COPY_AND_ASSIGN(ScopedFdCloser); |
}; |
+// Utility class to close a file system |
+class ScopedExt2fsCloser { |
+ public: |
+ explicit ScopedExt2fsCloser(ext2_filsys filsys) : filsys_(filsys) {} |
+ ~ScopedExt2fsCloser() { ext2fs_close(filsys_); } |
+ |
+ private: |
+ ext2_filsys filsys_; |
+ DISALLOW_COPY_AND_ASSIGN(ScopedExt2fsCloser); |
+}; |
+ |
// Utility class to delete a file when it goes out of scope. |
class ScopedPathUnlinker { |
public: |
@@ -389,6 +401,16 @@ class ScopedActionCompleter { |
} \ |
} while (0) |
+#define TEST_AND_RETURN_FALSE_ERRCODE(_x) \ |
+ do { \ |
+ errcode_t _error = (_x); \ |
+ if (_error) { \ |
+ errno = _error; \ |
+ LOG(ERROR) << #_x " failed: " << _error; \ |
+ return false; \ |
+ } \ |
+ } while (0) |
+ |
#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_UTILS_H__ |