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

Unified Diff: components/zip/zip.cc

Issue 14021015: Move components/zip to third_party/zip (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update unit_tests.isolate for new test data location Created 7 years, 8 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/zip/zip.h ('k') | components/zip/zip_internal.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/zip/zip.cc
diff --git a/components/zip/zip.cc b/components/zip/zip.cc
deleted file mode 100644
index 7521641a9f7ece04ad2b6d77c4691b1ff372512f..0000000000000000000000000000000000000000
--- a/components/zip/zip.cc
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright (c) 2012 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 "components/zip/zip.h"
-
-#include "base/bind.h"
-#include "base/file_util.h"
-#include "base/logging.h"
-#include "base/string16.h"
-#include "base/string_util.h"
-#include "components/zip/zip_internal.h"
-#include "components/zip/zip_reader.h"
-#include "net/base/file_stream.h"
-
-#if defined(USE_SYSTEM_MINIZIP)
-#include <minizip/unzip.h>
-#include <minizip/zip.h>
-#else
-#include "third_party/zlib/contrib/minizip/unzip.h"
-#include "third_party/zlib/contrib/minizip/zip.h"
-#endif
-
-namespace {
-
-bool AddFileToZip(zipFile zip_file, const base::FilePath& src_dir) {
- net::FileStream stream(NULL);
- int flags = base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ;
- if (stream.OpenSync(src_dir, flags) != 0) {
- DLOG(ERROR) << "Could not open stream for path "
- << src_dir.value();
- return false;
- }
-
- int num_bytes;
- char buf[zip::internal::kZipBufSize];
- do {
- num_bytes = stream.ReadSync(buf, zip::internal::kZipBufSize);
- if (num_bytes > 0) {
- if (ZIP_OK != zipWriteInFileInZip(zip_file, buf, num_bytes)) {
- DLOG(ERROR) << "Could not write data to zip for path "
- << src_dir.value();
- return false;
- }
- }
- } while (num_bytes > 0);
-
- return true;
-}
-
-bool AddEntryToZip(zipFile zip_file, const base::FilePath& path,
- const base::FilePath& root_path) {
- std::string str_path =
- path.AsUTF8Unsafe().substr(root_path.value().length() + 1);
-#if defined(OS_WIN)
- ReplaceSubstringsAfterOffset(&str_path, 0u, "\\", "/");
-#endif
-
- bool is_directory = file_util::DirectoryExists(path);
- if (is_directory)
- str_path += "/";
-
- if (ZIP_OK != zipOpenNewFileInZip(
- zip_file, str_path.c_str(),
- NULL, NULL, 0u, NULL, 0u, NULL, // file info, extrafield local, length,
- // extrafield global, length, comment
- Z_DEFLATED, Z_DEFAULT_COMPRESSION)) {
- DLOG(ERROR) << "Could not open zip file entry " << str_path;
- return false;
- }
-
- bool success = true;
- if (!is_directory) {
- success = AddFileToZip(zip_file, path);
- }
-
- if (ZIP_OK != zipCloseFileInZip(zip_file)) {
- DLOG(ERROR) << "Could not close zip file entry " << str_path;
- return false;
- }
-
- return success;
-}
-
-bool ExcludeNoFilesFilter(const base::FilePath& file_path) {
- return true;
-}
-
-bool ExcludeHiddenFilesFilter(const base::FilePath& file_path) {
- return file_path.BaseName().value()[0] != '.';
-}
-
-} // namespace
-
-namespace zip {
-
-bool Unzip(const base::FilePath& src_file, const base::FilePath& dest_dir) {
- ZipReader reader;
- if (!reader.Open(src_file)) {
- DLOG(WARNING) << "Failed to open " << src_file.value();
- return false;
- }
- while (reader.HasMore()) {
- if (!reader.OpenCurrentEntryInZip()) {
- DLOG(WARNING) << "Failed to open the current file in zip";
- return false;
- }
- if (reader.current_entry_info()->is_unsafe()) {
- DLOG(WARNING) << "Found an unsafe file in zip "
- << reader.current_entry_info()->file_path().value();
- return false;
- }
- if (!reader.ExtractCurrentEntryIntoDirectory(dest_dir)) {
- DLOG(WARNING) << "Failed to extract "
- << reader.current_entry_info()->file_path().value();
- return false;
- }
- if (!reader.AdvanceToNextEntry()) {
- DLOG(WARNING) << "Failed to advance to the next file";
- return false;
- }
- }
- return true;
-}
-
-bool ZipWithFilterCallback(const base::FilePath& src_dir,
- const base::FilePath& dest_file,
- const FilterCallback& filter_cb) {
- DCHECK(file_util::DirectoryExists(src_dir));
-
- zipFile zip_file = internal::OpenForZipping(dest_file.AsUTF8Unsafe(),
- APPEND_STATUS_CREATE);
-
- if (!zip_file) {
- DLOG(WARNING) << "couldn't create file " << dest_file.value();
- return false;
- }
-
- bool success = true;
- file_util::FileEnumerator file_enumerator(src_dir, true /* recursive */,
- file_util::FileEnumerator::FILES |
- file_util::FileEnumerator::DIRECTORIES);
- for (base::FilePath path = file_enumerator.Next(); !path.value().empty();
- path = file_enumerator.Next()) {
- if (!filter_cb.Run(path)) {
- continue;
- }
-
- if (!AddEntryToZip(zip_file, path, src_dir)) {
- success = false;
- return false;
- }
- }
-
- if (ZIP_OK != zipClose(zip_file, NULL)) {
- DLOG(ERROR) << "Error closing zip file " << dest_file.value();
- return false;
- }
-
- return success;
-}
-
-bool Zip(const base::FilePath& src_dir, const base::FilePath& dest_file,
- bool include_hidden_files) {
- if (include_hidden_files) {
- return ZipWithFilterCallback(
- src_dir, dest_file, base::Bind(&ExcludeNoFilesFilter));
- } else {
- return ZipWithFilterCallback(
- src_dir, dest_file, base::Bind(&ExcludeHiddenFilesFilter));
- }
-}
-
-#if defined(OS_POSIX)
-bool ZipFiles(const base::FilePath& src_dir,
- const std::vector<base::FilePath>& src_relative_paths,
- int dest_fd) {
- DCHECK(file_util::DirectoryExists(src_dir));
- zipFile zip_file = internal::OpenFdForZipping(dest_fd, APPEND_STATUS_CREATE);
-
- if (!zip_file) {
- DLOG(ERROR) << "couldn't create file for fd " << dest_fd;
- return false;
- }
-
- bool success = true;
- for (std::vector<base::FilePath>::const_iterator iter =
- src_relative_paths.begin();
- iter != src_relative_paths.end(); ++iter) {
- const base::FilePath& path = src_dir.Append(*iter);
- if (!AddEntryToZip(zip_file, path, src_dir)) {
- // TODO(hshi): clean up the partial zip file when error occurs.
- success = false;
- break;
- }
- }
-
- if (ZIP_OK != zipClose(zip_file, NULL)) {
- DLOG(ERROR) << "Error closing zip file for fd " << dest_fd;
- success = false;
- }
-
- return success;
-}
-#endif // defined(OS_POSIX)
-
-} // namespace zip
« no previous file with comments | « components/zip/zip.h ('k') | components/zip/zip_internal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698