[Initng-svn] r1968 - in initng: initfiles/debug src

svn at initng.thinktux.net svn at initng.thinktux.net
Mon Nov 7 02:00:42 CET 2005


Author: jimmy
Date: Mon Nov  7 02:00:41 2005
New Revision: 1968

Modified:
   initng/initfiles/debug/bug197.ii
   initng/src/initng_string_tools.c
Log:
Fixed bug 197.


Modified: initng/initfiles/debug/bug197.ii
==============================================================================
--- initng/initfiles/debug/bug197.ii	(original)
+++ initng/initfiles/debug/bug197.ii	Mon Nov  7 02:00:41 2005
@@ -1,9 +1,9 @@
-service daemon/bug197/tty1 {
-    daemon      = /bin/echo
-    daemon_args = "Here should be tty1 - but it isn't!"
+service debug/bug197/tty1 {
+    start     = /bin/echo
+    start_args = "Here should be tty1 - but it isn't!"
 }
 
-service daemon/bug197/* {
-    daemon      = /bin/echo
-    daemon_args = $NAME
+service debug/bug197/* {
+    start      = /bin/echo
+    start_args = $NAME
 }

Modified: initng/src/initng_string_tools.c
==============================================================================
--- initng/src/initng_string_tools.c	(original)
+++ initng/src/initng_string_tools.c	Mon Nov  7 02:00:41 2005
@@ -149,34 +149,41 @@
 
     /* skip beginning first spaces */
     JUMP_SPACES(*string);
+    if(!(*string)[0] || (*string)[0]=='\n')
+	return(NULL);
 
-    /* count tokens */
-    if (*(string)[0] == '"')
+    /* handle '"' chars */
+    if((*string)[0]=='"')
     {
-        (*string)++;
-        while ((*string)[i] != '\0' &&
-               (*string)[i] != '"' &&
-               (*string)[i] != '\n' &&
-               (*string)[i] != ',' && (*string)[i] != ';')
-            i++;
-    }
-    else
-        while ((*string)[i] != '\0' &&
-               (*string)[i] != ' ' &&
-               (*string)[i] != '\t' &&
-               (*string)[i] != '\n' && (*string)[i] != ','
-               && (*string)[i] != ';')
-            i++;
-
-    if (!i)
-        return (NULL);
+	(*string)++;
+	i=strcspn(*string, "\"");
 
+	td=i_strndup(*string, i);
+	(*string)+=i;
+	if(*string[0]=='"')
+	    (*string)++;
+	return(td);
+    }
+
+    /* handle '{' '}' chars */
+    if((*string)[0]=='{')
+    {
+	(*string)++;
+	i=strcspn(*string, "}");
+	td=i_strndup(*string, i);
+	(*string)+=i;
+	if(*string[0]=='}')
+	    (*string)++;
+	return(td);
+    }
+
+    /* or copy until space tab newline, ; or , */
+    i=strcspn(*string, " \t\n;,");
+    if(i<1)
+	return(NULL);
     /* copy string */
     td = i_strndup(*string, i);
     (*string) += i;
-
-    if ((*string)[0] == '"')
-        (*string)++;
     return (td);
 }
 
@@ -191,31 +198,43 @@
 
     assert(string);
 
-    /* count tokens */
-    if ((*string)[0] == '"')
-    {
-        (*string)++;
-        while ((*string)[i] != '\0' &&
-               (*string)[i] != '"' &&
-               (*string)[i] != '\n' && (*string)[i] != ';')
-            i++;
-    }
-    else
-        while ((*string)[i] != '\0' &&
-               (*string)[i] != '\n' && (*string)[i] != ';')
-            i++;
+    /* skip beginning first spaces */
+    JUMP_SPACES(*string);
+    if(!(*string)[0] || (*string)[0]=='\n')
+	return(NULL);
 
-    if (!i)
-        return (NULL);
+    /* handle '"' chars */
+    if((*string)[0]=='"')
+    {
+	(*string)++;
+	i=strcspn(*string, "\"");
 
+	td=i_strndup(*string, i);
+	(*string)+=i;
+	if(*string[0]=='"')
+	    (*string)++;
+	return(td);
+    }
+
+    /* handle '{' '}' chars */
+    if((*string)[0]=='{')
+    {
+	(*string)++;
+	i=strcspn(*string, "}");
+	td=i_strndup(*string, i);
+	(*string)+=i;
+	if(*string[0]=='}')
+	    (*string)++;
+	return(td);
+    }
+
+    /* or copy until space tab newline, ; or , */
+    i=strcspn(*string, "\n;");
+    if(i<1)
+	return(NULL);
     /* copy string */
     td = i_strndup(*string, i);
     (*string) += i;
-
-    /* if this is a "line", don't leave an '"' */
-    if ((*string)[0] == '"')
-        (*string) += i;
-
     return (td);
 }
 


More information about the Initng-svn mailing list