Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(341)

Side by Side Diff: src/platform/update_engine/install_action.cc

Issue 492008: AU: Try delta updates first, then full updates (Closed)
Patch Set: use mkstemp Created 11 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium 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 "update_engine/install_action.h" 5 #include "update_engine/install_action.h"
6 #include <errno.h> 6 #include <errno.h>
7 #include <string>
7 #include <vector> 8 #include <vector>
8 #include <gflags/gflags.h> 9 #include <gflags/gflags.h>
9 #include "update_engine/filesystem_iterator.h" 10 #include "update_engine/filesystem_iterator.h"
10 #include "update_engine/gzip.h" 11 #include "update_engine/gzip.h"
11 #include "update_engine/subprocess.h" 12 #include "update_engine/subprocess.h"
12 #include "update_engine/utils.h" 13 #include "update_engine/utils.h"
13 14
14 DEFINE_string(mount_install_path, "", 15 DEFINE_string(mount_install_path, "",
15 "If set, the path to use when mounting the " 16 "If set, the path to use when mounting the "
16 "destination device during install"); 17 "destination device during install");
17 18
19 using std::string;
18 using std::vector; 20 using std::vector;
19 21
20 namespace chromeos_update_engine { 22 namespace chromeos_update_engine {
21 23
22 namespace { 24 namespace {
23 const string kBspatchPath = "/usr/bin/bspatch"; 25 const string kBspatchPath = "/usr/bin/bspatch";
24 } 26 }
25 27
26 void InstallAction::PerformAction() { 28 void InstallAction::PerformAction() {
27 ScopedActionCompleter completer(processor_, this); 29 ScopedActionCompleter completer(processor_, this);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 S_ISSOCK(file.mode())) { 119 S_ISSOCK(file.mode())) {
118 InstallFileSpecialFile(mountpoint, file, path, parser, exists); 120 InstallFileSpecialFile(mountpoint, file, path, parser, exists);
119 } else if (S_ISREG(file.mode())) { 121 } else if (S_ISREG(file.mode())) {
120 InstallFileRegularFile(mountpoint, file, path, parser, exists); 122 InstallFileRegularFile(mountpoint, file, path, parser, exists);
121 } else { 123 } else {
122 // unknown mode type 124 // unknown mode type
123 TEST_AND_RETURN_FALSE(false); 125 TEST_AND_RETURN_FALSE(false);
124 } 126 }
125 127
126 // chmod/chown new file 128 // chmod/chown new file
129 TEST_AND_RETURN_FALSE(file.has_uid() && file.has_gid());
130 TEST_AND_RETURN_FALSE_ERRNO(lchown((mountpoint + path).c_str(),
131 file.uid(), file.gid()) == 0);
127 if (!S_ISLNK(file.mode())) 132 if (!S_ISLNK(file.mode()))
128 TEST_AND_RETURN_FALSE_ERRNO(chmod((mountpoint + path).c_str(), file.mode()) 133 TEST_AND_RETURN_FALSE_ERRNO(chmod((mountpoint + path).c_str(), file.mode())
129 == 0); 134 == 0);
130 TEST_AND_RETURN_FALSE(file.has_uid() && file.has_gid());
131 TEST_AND_RETURN_FALSE_ERRNO(lchown((mountpoint + path).c_str(),
132 file.uid(), file.gid()) == 0);
133 return true; 135 return true;
134 } 136 }
135 137
136 bool InstallAction::InstallFileRegularFile( 138 bool InstallAction::InstallFileRegularFile(
137 const std::string& mountpoint, 139 const std::string& mountpoint,
138 const DeltaArchiveManifest_File& file, 140 const DeltaArchiveManifest_File& file,
139 const std::string& path, 141 const std::string& path,
140 const DeltaDiffParser& parser, 142 const DeltaDiffParser& parser,
141 const bool exists) const { 143 const bool exists) const {
142 if (!file.has_data_format()) 144 if (!file.has_data_format())
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 symlink_data = decompressed_symlink_data; 251 symlink_data = decompressed_symlink_data;
250 } 252 }
251 symlink_data.push_back('\0'); 253 symlink_data.push_back('\0');
252 TEST_AND_RETURN_FALSE_ERRNO(symlink(&symlink_data[0], 254 TEST_AND_RETURN_FALSE_ERRNO(symlink(&symlink_data[0],
253 (mountpoint + path).c_str()) == 0); 255 (mountpoint + path).c_str()) == 0);
254 return true; 256 return true;
255 } 257 }
256 258
257 259
258 } // namespace chromeos_update_engine 260 } // namespace chromeos_update_engine
OLDNEW
« no previous file with comments | « src/platform/update_engine/generate_delta_main.cc ('k') | src/platform/update_engine/install_action_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698