# HG changeset patch # User Mikael Berthe # Date 1120899001 -3600 # Node ID d0295e7357684d751e2d803816cf8711f26796ac # Parent 96917f04c841cc1089ba7898ea4d46695dc51a82 Assignment lvalue (key, option name, alias...) cannnot contain spaces diff -r 96917f04c841 -r d0295e735768 mcabber/src/settings.c --- a/mcabber/src/settings.c Sat Jul 09 09:41:31 2005 +0100 +++ b/mcabber/src/settings.c Sat Jul 09 09:50:01 2005 +0100 @@ -71,7 +71,7 @@ // The called should g_free() *pkey and *pval (if not NULL) after use. guint parse_assigment(gchar *assignment, const gchar **pkey, const gchar **pval) { - char *key, *val, *t; + char *key, *val, *t, *p; *pkey = *pval = NULL; @@ -79,13 +79,13 @@ // Remove leading spaces in option name while ((!isalnum(*key)) && (*key != '=') && *key) { //if (!isblank(*key)) - // scr_LogPrint("Error in setting parsing!\n"); + // scr_LogPrint("Error in assignment parsing!"); key++; } if (!*key) return FALSE; // Empty assignment if (*key == '=') { - //scr_LogPrint("Cannot parse setting!\n"); + //scr_LogPrint("Cannot parse assignment!"); return FALSE; } // Ok, key points to the option name @@ -93,12 +93,21 @@ for (val = key+1 ; *val && (*val != '=') ; val++) if (!isalnum(*val) && !isblank(*val) && (*val != '_') && (*val != '-')) { // Key should only have alnum chars... - //scr_LogPrint("Error in setting parsing!\n"); + //scr_LogPrint("Error in assignment parsing!"); return FALSE; } // Remove trailing spaces in option name: for (t = val-1 ; t > key && isblank(*t) ; t--) ; + // Check for embedded whitespace characters + for (p = key; p < t; p++) { + if (isblank(*p)) { + //scr_LogPrint("Error in assignment parsing!" + // " (Name should not contain space chars)"); + return FALSE; + } + } + *pkey = g_strndup(key, t+1-key); if (!*val) return FALSE; // Not an assignment