StringUtil::removeFirst/TrailingWhitespace didn't truncate a string that was only whitespace

This commit is contained in:
markt 2007-12-14 20:05:14 +00:00
parent 254fb289f3
commit d90befb430
3 changed files with 9 additions and 12 deletions

View file

@ -53,6 +53,8 @@ Command *CommandRegistry::parseLine(const string &line, bool trusted) const {
// parse args and command
string command, args;
StringUtil::getFirstWord(line, command, args);
StringUtil::removeFirstWhitespace(args);
StringUtil::removeTrailingWhitespace(args);
// now we have parsed command and args
command = StringUtil::toLower(command);
@ -63,6 +65,8 @@ BoolCommand *CommandRegistry::parseBoolLine(const string &line, bool trusted) co
// parse args and command
string command, args;
StringUtil::getFirstWord(line, command, args);
StringUtil::removeFirstWhitespace(args);
StringUtil::removeTrailingWhitespace(args);
// now we have parsed command and args
command = StringUtil::toLower(command);

View file

@ -214,8 +214,7 @@ string basename(const string &filename) {
string::size_type removeFirstWhitespace(string &str) {
string::size_type first_pos = str.find_first_not_of(" \t");
if (first_pos != string::npos)
str.erase(0, first_pos);
str.erase(0, first_pos);
return first_pos;
}
@ -223,13 +222,9 @@ string::size_type removeFirstWhitespace(string &str) {
string::size_type removeTrailingWhitespace(string &str) {
// strip trailing whitespace
string::size_type first_pos = str.find_last_not_of(" \t");
if (first_pos != string::npos) {
string::size_type last_pos = str.find_first_of(" \t", first_pos);
while (last_pos != string::npos) {
str.erase(last_pos);
last_pos = str.find_first_of(" \t", last_pos);
}
}
string::size_type last_pos = str.find_first_of(" \t", first_pos);
if (last_pos != string::npos)
str.erase(last_pos);
return first_pos;
}
@ -240,8 +235,6 @@ void getFirstWord(const std::string &in, std::string &word, std::string &rest) {
if (second_pos != string::npos) {
rest = word.substr(second_pos);
word.erase(second_pos);
removeFirstWhitespace(rest);
removeTrailingWhitespace(rest);
}
}

View file

@ -64,7 +64,7 @@ std::string basename(const std::string &basename);
std::string::size_type removeFirstWhitespace(std::string &str);
std::string::size_type removeTrailingWhitespace(std::string &str);
/// removes the first part of a string and returns the two pieces
/// splits input at first non-leading whitespace and returns both parts
void getFirstWord(const std::string &in, std::string &first, std::string &rest);
/// Breaks a string into tokens