Index: base/file_path.cc |
=================================================================== |
--- base/file_path.cc (revision 30231) |
+++ base/file_path.cc (working copy) |
@@ -158,75 +158,6 @@ |
#endif // defined(FILE_PATH_USES_DRIVE_LETTERS) |
} |
-bool FilePath::AppendAndResolveRelative(const FilePath& relative_path, |
- FilePath* path) const { |
- DCHECK(path); |
- if (!path || relative_path.IsAbsolute()) |
- return false; |
- |
- FilePath full_path = Append(relative_path); |
- // Is it worth looking for parent references? |
- if (!full_path.ReferencesParent()) { |
- *path = full_path; |
- return true; |
- } |
- |
- // If the parent has a drive letter, then we must not remove the first |
- // component, which is the drive letter. |
- bool drive_letter = (FindDriveLetter(full_path.path_) != |
- FilePath::StringType::npos); |
- |
- std::vector<FilePath::StringType> components; |
- full_path.GetComponents(&components); |
- std::vector<FilePath::StringType>::iterator it = components.begin(); |
- // Start by removing any kCurrentDirectory component, since they may |
- // fool us into not going back to the appropriate parent level. |
- for (; it != components.end(); ++it) { |
- if (*it == kCurrentDirectory) { |
- // erase returns an iterator to the next component. |
- it = components.erase(it); |
- // So now, go back to previous iterator, |
- // so that we can appropriately process the next one as we loop. |
- --it; |
- } |
- } |
- |
- // Now parse the component looking for kParentDirectory and remove them as |
- // well as the previous component. |
- it = components.begin(); |
- for (; it != components.end(); ++it) { |
- if (*it == kParentDirectory) { |
- // Did we reach the beginning? |
- if (it == components.begin() || |
- (drive_letter && (it - 1) == components.begin())) { |
- return false; |
- } |
- // Remove the previous component, as well as the current one. |
- std::vector<FilePath::StringType>::iterator previous = it - 1; |
- // Unless the previous is at the beginning. |
- if (previous == components.begin() || |
- (drive_letter && (previous - 1) == components.begin())) { |
- return false; |
- } |
- // vector::erase doesn't erase _Last, it erases [_First, _Last[, |
- // so we must increment current which we want erased. |
- it = components.erase(previous, it + 1); |
- // And go back to previous so that we can process the next one as we loop. |
- --it; |
- } |
- } |
- |
- // Now reconstruct the path with the components that were left in. |
- it = components.begin(); |
- // We start with the first component, in case it is absolute |
- // and absolute paths can't be appended. |
- *path = FilePath(*it); |
- for (++it; it != components.end(); ++it) |
- *path = path->Append(*it); |
- |
- return true; |
-} |
- |
bool FilePath::IsParent(const FilePath& child) const { |
return AppendRelativePath(child, NULL); |
} |