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

Side by Side Diff: third_party/zlib/google/zip.cc

Issue 94093003: Zip utf-8 file names with encoding bit set. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add a comment describing why the flag is being set. Created 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "third_party/zlib/google/zip.h" 5 #include "third_party/zlib/google/zip.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/files/file_enumerator.h" 9 #include "base/files/file_enumerator.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 std::string str_path = 54 std::string str_path =
55 path.AsUTF8Unsafe().substr(root_path.AsUTF8Unsafe().length() + 1); 55 path.AsUTF8Unsafe().substr(root_path.AsUTF8Unsafe().length() + 1);
56 #if defined(OS_WIN) 56 #if defined(OS_WIN)
57 ReplaceSubstringsAfterOffset(&str_path, 0u, "\\", "/"); 57 ReplaceSubstringsAfterOffset(&str_path, 0u, "\\", "/");
58 #endif 58 #endif
59 59
60 bool is_directory = base::DirectoryExists(path); 60 bool is_directory = base::DirectoryExists(path);
61 if (is_directory) 61 if (is_directory)
62 str_path += "/"; 62 str_path += "/";
63 63
64 if (ZIP_OK != zipOpenNewFileInZip( 64 // Section 4.4.4 http://www.pkware.com/documents/casestudies/APPNOTE.TXT
65 // Setting the Language encoding flag so the file is told to be in utf-8.
66 const unsigned long LANGUAGE_ENCODING_FLAG = 0x1 << 11;
67
68 if (ZIP_OK != zipOpenNewFileInZip4(
65 zip_file, str_path.c_str(), 69 zip_file, str_path.c_str(),
66 NULL, NULL, 0u, NULL, 0u, NULL, // file info, extrafield local, length, 70 NULL, NULL, 0u, NULL, 0u, NULL, // file info, extrafield local, length,
67 // extrafield global, length, comment 71 // extrafield global, length, comment
68 Z_DEFLATED, Z_DEFAULT_COMPRESSION)) { 72 Z_DEFLATED, Z_DEFAULT_COMPRESSION, 0,
73 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
74 NULL, 0, 0, LANGUAGE_ENCODING_FLAG)) {
satorux1 2013/12/05 09:35:23 NULL, 0, 0 look cryptic. could you add some commen
69 DLOG(ERROR) << "Could not open zip file entry " << str_path; 75 DLOG(ERROR) << "Could not open zip file entry " << str_path;
70 return false; 76 return false;
71 } 77 }
72 78
73 bool success = true; 79 bool success = true;
74 if (!is_directory) { 80 if (!is_directory) {
75 success = AddFileToZip(zip_file, path); 81 success = AddFileToZip(zip_file, path);
76 } 82 }
77 83
78 if (ZIP_OK != zipCloseFileInZip(zip_file)) { 84 if (ZIP_OK != zipCloseFileInZip(zip_file)) {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 if (ZIP_OK != zipClose(zip_file, NULL)) { 204 if (ZIP_OK != zipClose(zip_file, NULL)) {
199 DLOG(ERROR) << "Error closing zip file for fd " << dest_fd; 205 DLOG(ERROR) << "Error closing zip file for fd " << dest_fd;
200 success = false; 206 success = false;
201 } 207 }
202 208
203 return success; 209 return success;
204 } 210 }
205 #endif // defined(OS_POSIX) 211 #endif // defined(OS_POSIX)
206 212
207 } // namespace zip 213 } // namespace zip
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698