improved 'escapeRememberChars()' routine by traversing the string only once removed obsolete 'getuint()' function
Mathias Gumz akira at fluxbox dot org
1 files changed,
14 insertions(+),
9 deletions(-)
jump to
M
src/Remember.cc
→
src/Remember.cc
@@ -224,19 +224,24 @@
namespace { // replace special chars like ( ) and [ ] with \( \) and \[ \] -static string escapeRememberChars(string str) { +string escapeRememberChars(const string& str) { if (str.empty()) return str; - str = FbTk::StringUtil::replaceString(str, "(", "\\("); - str = FbTk::StringUtil::replaceString(str, ")", "\\)"); - str = FbTk::StringUtil::replaceString(str, "[", "\\["); - str = FbTk::StringUtil::replaceString(str, "]", "\\]"); - return str; -} + string escaped_str; + escaped_str.reserve(str.capacity()); + + string::const_iterator i; + for (i = str.begin(); i != str.end(); i++) { + switch (*i) { + case '(': case ')': case '[': case ']': + escaped_str += '\\'; + default: + escaped_str += *i; + } + } -bool getuint(const char *val, unsigned int &ret) { - return (sscanf(val, "%u", &ret) == 1); + return escaped_str; } class RememberMenuItem : public FbTk::MenuItem {