changeset 293:d0295e735768

Assignment lvalue (key, option name, alias...) cannnot contain spaces
author Mikael Berthe <mikael@lilotux.net>
date Sat, 09 Jul 2005 09:50:01 +0100
parents 96917f04c841
children 871e53769084
files mcabber/src/settings.c
diffstat 1 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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