From 7a149626e60ef089ab3dcdd9b4fceb07250f8e13 Mon Sep 17 00:00:00 2001 From: Mathias Gumz Date: Wed, 8 Sep 2010 21:45:33 +0200 Subject: improved 'escapeRememberChars()' routine by traversing the string only once removed obsolete 'getuint()' function --- src/Remember.cc | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/Remember.cc b/src/Remember.cc index 80de7ae..f70217e 100644 --- a/src/Remember.cc +++ b/src/Remember.cc @@ -224,19 +224,24 @@ void Application::reset() { 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 { -- cgit v0.11.2