OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/file_util.h" | 5 #include "base/file_util.h" |
6 | 6 |
7 #include <dirent.h> | 7 #include <dirent.h> |
8 #include <errno.h> | 8 #include <errno.h> |
9 #include <fcntl.h> | 9 #include <fcntl.h> |
10 #include <fnmatch.h> | 10 #include <fnmatch.h> |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 case FTS_D: // Preorder directory. | 207 case FTS_D: // Preorder directory. |
208 // If we encounter a subdirectory in a non-recursive copy, prune it | 208 // If we encounter a subdirectory in a non-recursive copy, prune it |
209 // from the traversal. | 209 // from the traversal. |
210 if (!recursive && ent->fts_level > 0) { | 210 if (!recursive && ent->fts_level > 0) { |
211 if (fts_set(fts, ent, FTS_SKIP) != 0) | 211 if (fts_set(fts, ent, FTS_SKIP) != 0) |
212 error = errno; | 212 error = errno; |
213 continue; | 213 continue; |
214 } | 214 } |
215 | 215 |
216 // Try creating the target dir, continuing on it if it exists already. | 216 // Try creating the target dir, continuing on it if it exists already. |
217 // Rely on the user's umask to produce correct permissions. | 217 if (mkdir(target_path.value().c_str(), 0700) != 0) { |
218 if (mkdir(target_path.value().c_str(), 0777) != 0) { | |
219 if (errno != EEXIST) | 218 if (errno != EEXIST) |
220 error = errno; | 219 error = errno; |
221 } | 220 } |
222 break; | 221 break; |
223 case FTS_F: // Regular file. | 222 case FTS_F: // Regular file. |
224 case FTS_NSOK: // File, no stat info requested. | 223 case FTS_NSOK: // File, no stat info requested. |
225 errno = 0; | 224 errno = 0; |
226 if (!CopyFile(FilePath(ent->fts_path), target_path)) | 225 if (!CopyFile(FilePath(ent->fts_path), target_path)) |
227 error = errno ? errno : EINVAL; | 226 error = errno ? errno : EINVAL; |
228 break; | 227 break; |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 for (FilePath path = full_path.DirName(); | 417 for (FilePath path = full_path.DirName(); |
419 path.value() != last_path.value(); path = path.DirName()) { | 418 path.value() != last_path.value(); path = path.DirName()) { |
420 subpaths.push_back(path); | 419 subpaths.push_back(path); |
421 last_path = path; | 420 last_path = path; |
422 } | 421 } |
423 | 422 |
424 // Iterate through the parents and create the missing ones. | 423 // Iterate through the parents and create the missing ones. |
425 for (std::vector<FilePath>::reverse_iterator i = subpaths.rbegin(); | 424 for (std::vector<FilePath>::reverse_iterator i = subpaths.rbegin(); |
426 i != subpaths.rend(); ++i) { | 425 i != subpaths.rend(); ++i) { |
427 if (!DirectoryExists(*i)) { | 426 if (!DirectoryExists(*i)) { |
428 if (mkdir(i->value().c_str(), 0777) != 0) | 427 if (mkdir(i->value().c_str(), 0700) != 0) |
429 return false; | 428 return false; |
430 } | 429 } |
431 } | 430 } |
432 return true; | 431 return true; |
433 } | 432 } |
434 | 433 |
435 bool GetFileInfo(const FilePath& file_path, FileInfo* results) { | 434 bool GetFileInfo(const FilePath& file_path, FileInfo* results) { |
436 struct stat64 file_info; | 435 struct stat64 file_info; |
437 if (stat64(file_path.value().c_str(), &file_info) != 0) | 436 if (stat64(file_path.value().c_str(), &file_info) != 0) |
438 return false; | 437 return false; |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 munmap(data_, length_); | 632 munmap(data_, length_); |
634 if (file_ != -1) | 633 if (file_ != -1) |
635 close(file_); | 634 close(file_); |
636 | 635 |
637 data_ = NULL; | 636 data_ = NULL; |
638 length_ = 0; | 637 length_ = 0; |
639 file_ = -1; | 638 file_ = -1; |
640 } | 639 } |
641 | 640 |
642 } // namespace file_util | 641 } // namespace file_util |
OLD | NEW |