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

Side by Side Diff: src/platform/update_engine/generate_delta_main.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 <sys/types.h> 5 #include <sys/types.h>
6 #include <sys/stat.h> 6 #include <sys/stat.h>
7 #include <dirent.h> 7 #include <errno.h>
8 #include <fcntl.h>
9 #include <stdlib.h>
10 #include <stdio.h>
11 #include <unistd.h> 8 #include <unistd.h>
12 9 #include <set>
13 #include <algorithm>
14 #include <string> 10 #include <string>
15 #include <vector>
16 #include <tr1/memory>
17
18 #include <glib.h> 11 #include <glib.h>
19
20 #include "chromeos/obsolete_logging.h" 12 #include "chromeos/obsolete_logging.h"
13 #include "update_engine/delta_diff_generator.h"
21 #include "update_engine/subprocess.h" 14 #include "update_engine/subprocess.h"
22 #include "update_engine/update_metadata.pb.h" 15 #include "update_engine/update_metadata.pb.h"
23 16 #include "update_engine/utils.h"
24 using std::sort;
25 using std::string;
26 using std::vector;
27 using std::tr1::shared_ptr;
28 17
29 // This file contains a simple program that takes an old path, a new path, 18 // This file contains a simple program that takes an old path, a new path,
30 // and an output file as arguments and the path to an output file and 19 // and an output file as arguments and the path to an output file and
31 // generates a delta that can be sent to Chrome OS clients. 20 // generates a delta that can be sent to Chrome OS clients.
32 21
22 using std::set;
23 using std::string;
24
33 namespace chromeos_update_engine { 25 namespace chromeos_update_engine {
34 26
35 int main(int argc, char** argv) { 27 namespace {
28 // These paths should never be delta diffed. They should always be transmitted
29 // in full in the update.
30 const char* kNonDiffPaths[] = {
31 "/boot/extlinux.conf"
32 };
33
34 void usage(const char* argv0) {
35 printf("usage: %s old_dir new_dir out_file\n", argv0);
36 exit(1);
37 }
38
39 bool IsDir(const char* path) {
40 struct stat stbuf;
41 TEST_AND_RETURN_FALSE_ERRNO(lstat(path, &stbuf) == 0);
42 return S_ISDIR(stbuf.st_mode);
43 }
44
45 int Main(int argc, char** argv) {
36 g_thread_init(NULL); 46 g_thread_init(NULL);
37 Subprocess::Init(); 47 Subprocess::Init();
38 if (argc != 4) { 48 if (argc != 4) {
39 usage(argv[0]); 49 usage(argv[0]);
40 } 50 }
51 logging::InitLogging("",
52 logging::LOG_ONLY_TO_SYSTEM_DEBUG_LOG,
53 logging::DONT_LOCK_LOG_FILE,
54 logging::APPEND_TO_OLD_LOG_FILE);
41 const char* old_dir = argv[1]; 55 const char* old_dir = argv[1];
42 const char* new_dir = argv[2]; 56 const char* new_dir = argv[2];
43 if ((!IsDir(old_dir)) || (!IsDir(new_dir))) { 57 if ((!IsDir(old_dir)) || (!IsDir(new_dir))) {
44 usage(argv[0]); 58 usage(argv[0]);
45 } 59 }
46 // TODO(adlr): implement using DeltaDiffGenerator 60
61 set<string> non_diff_paths;
62 for (size_t i = 0; i < arraysize(kNonDiffPaths); i++)
63 non_diff_paths.insert(kNonDiffPaths[i]);
64
65 DeltaArchiveManifest* manifest =
66 DeltaDiffGenerator::EncodeMetadataToProtoBuffer(new_dir);
67 CHECK(manifest);
68 CHECK(DeltaDiffGenerator::EncodeDataToDeltaFile(manifest,
69 old_dir,
70 new_dir,
71 argv[3],
72 non_diff_paths,
73 ""));
47 return 0; 74 return 0;
48 } 75 }
76
77 } // namespace {}
78
79 } // namespace chromeos_update_engine
80
81 int main(int argc, char** argv) {
82 return chromeos_update_engine::Main(argc, argv);
83 }
OLDNEW
« no previous file with comments | « src/platform/update_engine/gen_coverage_html.sh ('k') | src/platform/update_engine/install_action.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698