diff options
author | mad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-27 01:37:23 +0000 |
---|---|---|
committer | mad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-27 01:37:23 +0000 |
commit | b9312d8cb3c4da74b11070569d229471f70fd566 (patch) | |
tree | a876d97eb98391671892c71f24d40a06c895e8ce /base/file_path.cc | |
parent | 99e9d796bb22f7a87fae907311f491b2ed02dfb6 (diff) | |
download | chromium_src-b9312d8cb3c4da74b11070569d229471f70fd566.zip chromium_src-b9312d8cb3c4da74b11070569d229471f70fd566.tar.gz chromium_src-b9312d8cb3c4da74b11070569d229471f70fd566.tar.bz2 |
The existing file_util::AbsolutePath() function was already doing what we needed to do in the ExtensionResource class.
BUG= http://crbug.com/25681 & http://crbug.com/25131
Review URL: http://codereview.chromium.org/334028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30149 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/file_path.cc')
-rw-r--r-- | base/file_path.cc | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/base/file_path.cc b/base/file_path.cc index 2152187..e36a168e 100644 --- a/base/file_path.cc +++ b/base/file_path.cc @@ -158,75 +158,6 @@ bool FilePath::operator!=(const FilePath& that) const { #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); } |