appendSuffix: don't append a dot when the suffix is empty.

Additionally, move the implementation of appendSuffix to Path.cpp: it is
platform-independent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118089 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Mikhail Glushenkov 2010-11-02 22:18:37 +00:00
parent ed724fd43a
commit bd6e0323b9
4 changed files with 17 additions and 25 deletions

View File

@ -454,7 +454,8 @@ namespace sys {
/// The precondition for this function is that the Path reference a file
/// name (i.e. isFile() returns true). If the Path is not a file, no
/// action is taken and the function returns false. If the path would
/// become invalid for the host operating system, false is returned.
/// become invalid for the host operating system, false is returned. When
/// the \p suffix is empty, no action is performed.
/// @returns false if the suffix could not be added, true if it was.
/// @brief Adds a period and the \p suffix to the end of the pathname.
bool appendSuffix(StringRef suffix);

View File

@ -195,6 +195,21 @@ StringRef Path::GetDLLSuffix() {
return &(LTDL_SHLIB_EXT[1]);
}
bool
Path::appendSuffix(StringRef suffix) {
if (!suffix.empty()) {
std::string save(path);
path.append(".");
path.append(suffix);
if (!isValid()) {
path = save;
return false;
}
}
return true;
}
bool
Path::isBitcodeFile() const {
std::string actualMagic;

View File

@ -637,18 +637,6 @@ Path::eraseComponent() {
return true;
}
bool
Path::appendSuffix(StringRef suffix) {
std::string save(path);
path.append(".");
path.append(suffix);
if (!isValid()) {
path = save;
return false;
}
return true;
}
bool
Path::eraseSuffix() {
std::string save = path;

View File

@ -551,18 +551,6 @@ Path::eraseComponent() {
return true;
}
bool
Path::appendSuffix(StringRef suffix) {
std::string save(path);
path.append(".");
path.append(suffix);
if (!isValid()) {
path = save;
return false;
}
return true;
}
bool
Path::eraseSuffix() {
size_t dotpos = path.rfind('.',path.size());