add a new static method to portably determine whether a patch is

absolute or not, based on a patch by Gregory Curfman!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73368 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2009-06-15 04:17:07 +00:00
parent e4935150c7
commit 88d7e403d0
3 changed files with 27 additions and 0 deletions

View File

@ -309,6 +309,11 @@ namespace sys {
/// @brief Determine if the path is absolute.
bool isAbsolute() const;
/// This function determines if the path name is absolute, as opposed to
/// relative.
/// @brief Determine if the path is absolute.
static bool isAbsolute(const char *NameStart, unsigned NameLen);
/// This function opens the file associated with the path name provided by
/// the Path object and reads its magic number. If the magic number at the
/// start of the file matches \p magic, true is returned. In all other

View File

@ -103,6 +103,14 @@ Path::isValid() const {
return i >= len;
}
bool
Path::isAbsolute(const char *NameStart, unsigned NameLen) {
assert(NameStart);
if (NameLen == 0)
return false;
return NameStart[0] == '/';
}
bool
Path::isAbsolute() const {
if (path.empty())

View File

@ -125,6 +125,20 @@ Path::isValid() const {
return true;
}
bool
Path::isAbsolute(const char *NameStart, unsigned NameLen) {
assert(NameStart);
switch (NameLen) {
case 0:
return false;
case 1:
case 2:
return NameStart[0] == '/';
default:
return NameStart[0] == '/' || (NameStart[1] == ':' && NameStart[2] == '/');
}
}
bool
Path::isAbsolute() const {
switch (path.length()) {