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

Side by Side Diff: base/file_util_posix.cc

Issue 101143006: Convert base::file_util to use File instead of PlatformFile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove base:: Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/file_util.cc ('k') | base/file_util_unittest.cc » ('j') | 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 "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 <libgen.h> 10 #include <libgen.h>
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 while (success && !directories.empty()) { 237 while (success && !directories.empty()) {
238 FilePath dir = FilePath(directories.top()); 238 FilePath dir = FilePath(directories.top());
239 directories.pop(); 239 directories.pop();
240 success = (rmdir(dir.value().c_str()) == 0); 240 success = (rmdir(dir.value().c_str()) == 0);
241 } 241 }
242 return success; 242 return success;
243 } 243 }
244 244
245 bool ReplaceFile(const FilePath& from_path, 245 bool ReplaceFile(const FilePath& from_path,
246 const FilePath& to_path, 246 const FilePath& to_path,
247 PlatformFileError* error) { 247 File::Error* error) {
248 ThreadRestrictions::AssertIOAllowed(); 248 ThreadRestrictions::AssertIOAllowed();
249 if (rename(from_path.value().c_str(), to_path.value().c_str()) == 0) 249 if (rename(from_path.value().c_str(), to_path.value().c_str()) == 0)
250 return true; 250 return true;
251 if (error) 251 if (error)
252 *error = ErrnoToPlatformFileError(errno); 252 *error = File::OSErrorToFileError(errno);
253 return false; 253 return false;
254 } 254 }
255 255
256 bool CopyDirectory(const FilePath& from_path, 256 bool CopyDirectory(const FilePath& from_path,
257 const FilePath& to_path, 257 const FilePath& to_path,
258 bool recursive) { 258 bool recursive) {
259 ThreadRestrictions::AssertIOAllowed(); 259 ThreadRestrictions::AssertIOAllowed();
260 // Some old callers of CopyDirectory want it to support wildcards. 260 // Some old callers of CopyDirectory want it to support wildcards.
261 // After some discussion, we decided to fix those callers. 261 // After some discussion, we decided to fix those callers.
262 // Break loudly here if anyone tries to do this. 262 // Break loudly here if anyone tries to do this.
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 bool CreateNewTempDirectory(const FilePath::StringType& prefix, 582 bool CreateNewTempDirectory(const FilePath::StringType& prefix,
583 FilePath* new_temp_path) { 583 FilePath* new_temp_path) {
584 FilePath tmpdir; 584 FilePath tmpdir;
585 if (!GetTempDir(&tmpdir)) 585 if (!GetTempDir(&tmpdir))
586 return false; 586 return false;
587 587
588 return CreateTemporaryDirInDirImpl(tmpdir, TempFileName(), new_temp_path); 588 return CreateTemporaryDirInDirImpl(tmpdir, TempFileName(), new_temp_path);
589 } 589 }
590 590
591 bool CreateDirectoryAndGetError(const FilePath& full_path, 591 bool CreateDirectoryAndGetError(const FilePath& full_path,
592 PlatformFileError* error) { 592 File::Error* error) {
593 ThreadRestrictions::AssertIOAllowed(); // For call to mkdir(). 593 ThreadRestrictions::AssertIOAllowed(); // For call to mkdir().
594 std::vector<FilePath> subpaths; 594 std::vector<FilePath> subpaths;
595 595
596 // Collect a list of all parent directories. 596 // Collect a list of all parent directories.
597 FilePath last_path = full_path; 597 FilePath last_path = full_path;
598 subpaths.push_back(full_path); 598 subpaths.push_back(full_path);
599 for (FilePath path = full_path.DirName(); 599 for (FilePath path = full_path.DirName();
600 path.value() != last_path.value(); path = path.DirName()) { 600 path.value() != last_path.value(); path = path.DirName()) {
601 subpaths.push_back(path); 601 subpaths.push_back(path);
602 last_path = path; 602 last_path = path;
603 } 603 }
604 604
605 // Iterate through the parents and create the missing ones. 605 // Iterate through the parents and create the missing ones.
606 for (std::vector<FilePath>::reverse_iterator i = subpaths.rbegin(); 606 for (std::vector<FilePath>::reverse_iterator i = subpaths.rbegin();
607 i != subpaths.rend(); ++i) { 607 i != subpaths.rend(); ++i) {
608 if (DirectoryExists(*i)) 608 if (DirectoryExists(*i))
609 continue; 609 continue;
610 if (mkdir(i->value().c_str(), 0700) == 0) 610 if (mkdir(i->value().c_str(), 0700) == 0)
611 continue; 611 continue;
612 // Mkdir failed, but it might have failed with EEXIST, or some other error 612 // Mkdir failed, but it might have failed with EEXIST, or some other error
613 // due to the the directory appearing out of thin air. This can occur if 613 // due to the the directory appearing out of thin air. This can occur if
614 // two processes are trying to create the same file system tree at the same 614 // two processes are trying to create the same file system tree at the same
615 // time. Check to see if it exists and make sure it is a directory. 615 // time. Check to see if it exists and make sure it is a directory.
616 int saved_errno = errno; 616 int saved_errno = errno;
617 if (!DirectoryExists(*i)) { 617 if (!DirectoryExists(*i)) {
618 if (error) 618 if (error)
619 *error = ErrnoToPlatformFileError(saved_errno); 619 *error = File::OSErrorToFileError(saved_errno);
620 return false; 620 return false;
621 } 621 }
622 } 622 }
623 return true; 623 return true;
624 } 624 }
625 625
626 bool NormalizeFilePath(const FilePath& path, FilePath* normalized_path) { 626 bool NormalizeFilePath(const FilePath& path, FilePath* normalized_path) {
627 FilePath real_path_result; 627 FilePath real_path_result;
628 if (!RealPath(path, &real_path_result)) 628 if (!RealPath(path, &real_path_result))
629 return false; 629 return false;
(...skipping 17 matching lines...) Expand all
647 // least be a 'followable' link. 647 // least be a 'followable' link.
648 if (CallLstat(file_path.value().c_str(), &st) != 0) 648 if (CallLstat(file_path.value().c_str(), &st) != 0)
649 return false; 649 return false;
650 650
651 if (S_ISLNK(st.st_mode)) 651 if (S_ISLNK(st.st_mode))
652 return true; 652 return true;
653 else 653 else
654 return false; 654 return false;
655 } 655 }
656 656
657 bool GetFileInfo(const FilePath& file_path, PlatformFileInfo* results) { 657 bool GetFileInfo(const FilePath& file_path, File::Info* results) {
658 stat_wrapper_t file_info; 658 stat_wrapper_t file_info;
659 #if defined(OS_ANDROID) 659 #if defined(OS_ANDROID)
660 if (file_path.IsContentUri()) { 660 if (file_path.IsContentUri()) {
661 int fd = OpenContentUriForRead(file_path); 661 int fd = OpenContentUriForRead(file_path);
662 if (fd < 0) 662 if (fd < 0)
663 return false; 663 return false;
664 file_util::ScopedFD scoped_fd(&fd); 664 file_util::ScopedFD scoped_fd(&fd);
665 if (CallFstat(fd, &file_info) != 0) 665 if (CallFstat(fd, &file_info) != 0)
666 return false; 666 return false;
667 } else { 667 } else {
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
958 result = false; 958 result = false;
959 if (IGNORE_EINTR(close(outfile)) < 0) 959 if (IGNORE_EINTR(close(outfile)) < 0)
960 result = false; 960 result = false;
961 961
962 return result; 962 return result;
963 } 963 }
964 #endif // !defined(OS_MACOSX) 964 #endif // !defined(OS_MACOSX)
965 965
966 } // namespace internal 966 } // namespace internal
967 } // namespace base 967 } // namespace base
OLDNEW
« no previous file with comments | « base/file_util.cc ('k') | base/file_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698