=== modified file 'src/SquidString.h' --- src/SquidString.h 2012-09-22 10:56:48 +0000 +++ src/SquidString.h 2013-02-21 02:21:23 +0000 @@ -184,6 +184,11 @@ const char *checkNullString(const char *p); int stringHasWhitespace(const char *); int stringHasCntl(const char *); -char *strwordtok(char *buf, char **t); + +/** + * Like strtok(start, " ") but contains a rudimentary knowledge of quoted strings and backslashing. + * When slashDecode parameter is set to false does NOT decode backslashes so is safe for bare backslashes. + */ +char *strwordtok(char *buf, char **t, bool slashDecode = true); #endif /* SQUID_STRING_H */ === modified file 'src/String.cc' --- src/String.cc 2012-10-04 09:14:06 +0000 +++ src/String.cc 2013-02-21 02:16:46 +0000 @@ -350,7 +350,7 @@ * of quoting */ char * -strwordtok(char *buf, char **t) +strwordtok(char *buf, char **t, bool slashDecode) { unsigned char *word = NULL; unsigned char *p = (unsigned char *) buf; @@ -376,6 +376,7 @@ switch (ch) { case '\\': + if (slashDecode) { ++p; switch (*p) { @@ -396,6 +397,7 @@ break; } + } *d = ch; ++d;