Index: src/platform/update_engine/set_bootable_flag_action.h |
diff --git a/src/platform/update_engine/set_bootable_flag_action.h b/src/platform/update_engine/set_bootable_flag_action.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..44e9555647b5b26310d1946d92dc8a9ea5887814 |
--- /dev/null |
+++ b/src/platform/update_engine/set_bootable_flag_action.h |
@@ -0,0 +1,59 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_SET_BOOTABLE_FLAG_ACTION_H__ |
+#define CHROMEOS_PLATFORM_UPDATE_ENGINE_SET_BOOTABLE_FLAG_ACTION_H__ |
+ |
+#include <string> |
+#include "update_engine/action.h" |
+ |
+// This class takes in a device via the input pipe. The device is the |
+// partition (e.g. /dev/sda1), not the full device (e.g. /dev/sda). |
+// It will make that device bootable by editing the partition table |
+// in the root device. Currently, this class doesn't support extended |
+// partitions. |
+ |
+namespace chromeos_update_engine { |
+ |
+class SetBootableFlagAction; |
+ |
+template<> |
+class ActionTraits<SetBootableFlagAction> { |
+ public: |
+ // Takes the device path as input. |
+ typedef std::string InputObjectType; |
+ // Passes the device path as output |
+ typedef std::string OutputObjectType; |
+}; |
+ |
+class SetBootableFlagAction : public Action<SetBootableFlagAction> { |
+ public: |
+ SetBootableFlagAction() {} |
+ typedef ActionTraits<SetBootableFlagAction>::InputObjectType |
+ InputObjectType; |
+ typedef ActionTraits<SetBootableFlagAction>::OutputObjectType |
+ OutputObjectType; |
+ void PerformAction(); |
+ |
+ // This is a synchronous action, and thus TerminateProcessing() should |
+ // never be called |
+ void TerminateProcessing() { CHECK(false); } |
+ |
+ // Debugging/logging |
+ static std::string StaticType() { return "SetBootableFlagAction"; } |
+ std::string Type() const { return StaticType(); } |
+ |
+ private: |
+ // Returns true on success |
+ bool ReadMbr(char* buffer, int buffer_len, const char* device); |
+ |
+ // Returns true on success |
+ bool WriteMbr(const char* buffer, int buffer_len, const char* device); |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SetBootableFlagAction); |
+}; |
+ |
+} // namespace chromeos_update_engine |
+ |
+#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_SET_BOOTABLE_FLAG_ACTION_H__ |