Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <sys/types.h> | 5 #include <sys/types.h> |
| 6 #include <sys/stat.h> | 6 #include <sys/stat.h> |
| 7 #include <errno.h> | 7 #include <errno.h> |
| 8 #include <fcntl.h> | 8 #include <fcntl.h> |
| 9 #include <unistd.h> | 9 #include <unistd.h> |
| 10 | 10 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 69 logging::DONT_LOCK_LOG_FILE, | 69 logging::DONT_LOCK_LOG_FILE, |
| 70 logging::APPEND_TO_OLD_LOG_FILE); | 70 logging::APPEND_TO_OLD_LOG_FILE); |
| 71 if (!FLAGS_apply_delta.empty()) { | 71 if (!FLAGS_apply_delta.empty()) { |
| 72 if (FLAGS_old_image.empty()) { | 72 if (FLAGS_old_image.empty()) { |
| 73 LOG(FATAL) << "Must pass --old_image with --apply_delta."; | 73 LOG(FATAL) << "Must pass --old_image with --apply_delta."; |
| 74 } | 74 } |
| 75 Prefs prefs; | 75 Prefs prefs; |
| 76 LOG(INFO) << "Setting up preferences under: " << FLAGS_prefs_dir; | 76 LOG(INFO) << "Setting up preferences under: " << FLAGS_prefs_dir; |
| 77 LOG_IF(ERROR, !prefs.Init(FilePath(FLAGS_prefs_dir))) | 77 LOG_IF(ERROR, !prefs.Init(FilePath(FLAGS_prefs_dir))) |
| 78 << "Failed to initialize preferences."; | 78 << "Failed to initialize preferences."; |
| 79 // Get original checksums | |
| 80 LOG(INFO) << "Calculating original checksums"; | |
| 81 PartitionInfo kern_info, root_info; | |
| 82 CHECK(InitializePartitionInfo(true, // is_kernel | |
| 83 FLAGS_old_kernel, | |
| 84 &kern_info)); | |
| 85 CHECK(InitializePartitionInfo(false, // is_kernel | |
| 86 FLAGS_old_image, | |
| 87 &root_info)); | |
| 88 vector<char> kern_hash(kern_info.hash().begin(), | |
| 89 kern_info.hash().end()); | |
| 90 vector<char> root_hash(root_info.hash().begin(), | |
| 91 root_info.hash().end()); | |
|
petkov
2010/10/22 20:15:16
indent is off.
adlr
2010/10/22 20:40:18
Done.
| |
| 79 DeltaPerformer performer(&prefs); | 92 DeltaPerformer performer(&prefs); |
| 93 performer.set_current_kernel_hash(&kern_hash); | |
| 94 performer.set_current_rootfs_hash(&root_hash); | |
| 80 CHECK_EQ(performer.Open(FLAGS_old_image.c_str(), 0, 0), 0); | 95 CHECK_EQ(performer.Open(FLAGS_old_image.c_str(), 0, 0), 0); |
| 81 CHECK(performer.OpenKernel(FLAGS_old_kernel.c_str())); | 96 CHECK(performer.OpenKernel(FLAGS_old_kernel.c_str())); |
| 82 vector<char> buf(1024 * 1024); | 97 vector<char> buf(1024 * 1024); |
| 83 int fd = open(FLAGS_apply_delta.c_str(), O_RDONLY, 0); | 98 int fd = open(FLAGS_apply_delta.c_str(), O_RDONLY, 0); |
| 84 CHECK_GE(fd, 0); | 99 CHECK_GE(fd, 0); |
| 85 ScopedFdCloser fd_closer(&fd); | 100 ScopedFdCloser fd_closer(&fd); |
| 86 for (off_t offset = 0;; offset += buf.size()) { | 101 for (off_t offset = 0;; offset += buf.size()) { |
| 87 ssize_t bytes_read; | 102 ssize_t bytes_read; |
| 88 CHECK(utils::PReadAll(fd, &buf[0], buf.size(), offset, &bytes_read)); | 103 CHECK(utils::PReadAll(fd, &buf[0], buf.size(), offset, &bytes_read)); |
| 89 if (bytes_read == 0) | 104 if (bytes_read == 0) |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 120 return 0; | 135 return 0; |
| 121 } | 136 } |
| 122 | 137 |
| 123 } // namespace {} | 138 } // namespace {} |
| 124 | 139 |
| 125 } // namespace chromeos_update_engine | 140 } // namespace chromeos_update_engine |
| 126 | 141 |
| 127 int main(int argc, char** argv) { | 142 int main(int argc, char** argv) { |
| 128 return chromeos_update_engine::Main(argc, argv); | 143 return chromeos_update_engine::Main(argc, argv); |
| 129 } | 144 } |
| OLD | NEW |