Index: base/file_util_posix.cc |
diff --git a/base/file_util_posix.cc b/base/file_util_posix.cc |
index 8bf164ace5c4a175907d416672e0507362808e6c..8b368127410e091eb392cf440f2bd9c50a417acd 100644 |
--- a/base/file_util_posix.cc |
+++ b/base/file_util_posix.cc |
@@ -59,6 +59,19 @@ |
#endif |
using base::FilePath; |
+using base::MakeAbsoluteFilePath; |
+ |
+namespace base { |
+ |
+FilePath MakeAbsoluteFilePath(const FilePath& input) { |
+ base::ThreadRestrictions::AssertIOAllowed(); |
+ char full_path[PATH_MAX]; |
+ if (realpath(input.value().c_str(), full_path) == NULL) |
+ return FilePath(); |
+ return FilePath(full_path); |
+} |
+ |
+} // namespace base |
namespace file_util { |
@@ -150,15 +163,6 @@ static std::string TempFileName() { |
#endif |
} |
-bool AbsolutePath(FilePath* path) { |
- base::ThreadRestrictions::AssertIOAllowed(); // For realpath(). |
- char full_path[PATH_MAX]; |
- if (realpath(path->value().c_str(), full_path) == NULL) |
- return false; |
- *path = FilePath(full_path); |
- return true; |
-} |
- |
// TODO(erikkay): The Windows version of this accepts paths like "foo/bar/*" |
// which works both with and without the recursive flag. I'm not sure we need |
// that functionality. If not, remove from file_util_win.cc, otherwise add it |
@@ -253,15 +257,16 @@ bool CopyDirectory(const FilePath& from_path, |
// This function does not properly handle destinations within the source |
FilePath real_to_path = to_path; |
if (PathExists(real_to_path)) { |
- if (!AbsolutePath(&real_to_path)) |
+ real_to_path = MakeAbsoluteFilePath(real_to_path); |
+ if (real_to_path.empty()) |
return false; |
} else { |
- real_to_path = real_to_path.DirName(); |
- if (!AbsolutePath(&real_to_path)) |
+ real_to_path = MakeAbsoluteFilePath(real_to_path.DirName()); |
+ if (real_to_path.empty()) |
return false; |
} |
- FilePath real_from_path = from_path; |
- if (!AbsolutePath(&real_from_path)) |
+ FilePath real_from_path = MakeAbsoluteFilePath(from_path); |
+ if (real_from_path.empty()) |
return false; |
if (real_to_path.value().size() >= real_from_path.value().size() && |
real_to_path.value().compare(0, real_from_path.value().size(), |