Index: set_bootable_flag_action.cc |
diff --git a/set_bootable_flag_action.cc b/set_bootable_flag_action.cc |
deleted file mode 100644 |
index 1cec31e052f279870468e5003c8f9cb9c5a5cfbc..0000000000000000000000000000000000000000 |
--- a/set_bootable_flag_action.cc |
+++ /dev/null |
@@ -1,77 +0,0 @@ |
-// Copyright (c) 2010 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. |
- |
-#include "update_engine/set_bootable_flag_action.h" |
-#include <sys/stat.h> |
-#include <sys/types.h> |
-#include <errno.h> |
-#include <fcntl.h> |
-#include <string> |
-#include <vector> |
-#include "update_engine/subprocess.h" |
-#include "update_engine/utils.h" |
- |
-using std::string; |
-using std::vector; |
- |
-namespace chromeos_update_engine { |
- |
-namespace { |
-const char* const kGpt = "/usr/bin/gpt"; |
-const ssize_t kPmbrLength = 512; |
-} |
- |
-void SetBootableFlagAction::PerformAction() { |
- ScopedActionCompleter completer(processor_, this); |
- |
- TEST_AND_RETURN(HasInputObject()); |
- const InstallPlan install_plan = GetInputObject(); |
- TEST_AND_RETURN(!install_plan.install_path.empty()); |
- const string partition = install_plan.install_path; |
- string root_device = utils::RootDevice(partition); |
- string partition_number = utils::PartitionNumber(partition); |
- |
- utils::BootLoader boot_loader; |
- TEST_AND_RETURN(utils::GetBootloader(&boot_loader)); |
- |
- // For now, only support Syslinux bootloader |
- TEST_AND_RETURN(boot_loader == utils::BootLoader_SYSLINUX); |
- |
- string temp_file; |
- TEST_AND_RETURN(utils::MakeTempFile("/tmp/pmbr_copy.XXXXXX", |
- &temp_file, |
- NULL)); |
- ScopedPathUnlinker temp_file_unlinker(temp_file); |
- |
- // Copy existing PMBR to temp file |
- vector<char> buf(kPmbrLength); |
- { |
- int fd = open(root_device.c_str(), O_RDONLY); |
- TEST_AND_RETURN(fd >= 0); |
- ScopedFdCloser fd_closer(&fd); |
- ssize_t bytes_read; |
- TEST_AND_RETURN(utils::PReadAll(fd, &buf[0], buf.size(), 0, &bytes_read)); |
- } |
- TEST_AND_RETURN(utils::WriteFile(temp_file.c_str(), &buf[0], buf.size())); |
- |
- // Call gpt tool to do the work |
- vector<string> command; |
- command.push_back(kGpt); |
- command.push_back("-S"); |
- command.push_back("boot"); |
- command.push_back("-i"); |
- command.push_back(partition_number); |
- command.push_back("-b"); |
- command.push_back(temp_file); |
- command.push_back(root_device); |
- int rc = 0; |
- Subprocess::SynchronousExec(command, &rc); |
- TEST_AND_RETURN(rc == 0); |
- |
- completer.set_code(kActionCodeSuccess); |
- if (HasOutputPipe()) |
- SetOutputObject(GetInputObject()); |
-} |
- |
-} // namespace chromeos_update_engine |