| 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
|
|
|