all repos — fluxbox @ 7a149626e60ef089ab3dcdd9b4fceb07250f8e13

custom fork of the fluxbox windowmanager

improved 'escapeRememberChars()' routine by traversing the string only once

removed obsolete 'getuint()' function
Mathias Gumz akira at fluxbox dot org
commit

7a149626e60ef089ab3dcdd9b4fceb07250f8e13

parent

48cc67965b22801b920317b2778639adeeb5c9ac

1 files changed, 14 insertions(+), 9 deletions(-)

jump to
M src/Remember.ccsrc/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 {