]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
implemented \" and \n support in quoted string parsers (console and otherwise)
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 22 Jan 2007 14:51:05 +0000 (14:51 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 22 Jan 2007 14:51:05 +0000 (14:51 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6726 d7cf8633-e32d-0410-b094-e92efae38249

common.c

index e3c95da46a92c47524cc6ca55e6296608e8096a6..dad84c89dd83055ee8cf5a03b69b297e74863038 100644 (file)
--- a/common.c
+++ b/common.c
@@ -673,6 +673,7 @@ Parse a token out of a string
 int COM_ParseToken(const char **datapointer, int returnnewline)
 {
        int len;
+       int c;
        const char *data = *datapointer;
 
        len = 0;
@@ -725,15 +726,27 @@ skipwhite:
                // quoted string
                for (data++;*data != '\"';data++)
                {
-                       if (*data == '\\' && data[1] == '"' )
-                               data++;
                        if (!*data || len >= (int)sizeof(com_token) - 1)
                        {
                                com_token[0] = 0;
                                *datapointer = NULL;
                                return false;
                        }
-                       com_token[len++] = *data;
+                       c = *data;
+                       if (*data == '\\')
+                       {
+                               if (data[1] == '"')
+                               {
+                                       data++;
+                                       c = *data;
+                               }
+                               else if (data[1] == 'n')
+                               {
+                                       data++;
+                                       c = '\n';
+                               }
+                       }
+                       com_token[len++] = c;
                }
                com_token[len] = 0;
                *datapointer = data+1;
@@ -803,6 +816,7 @@ Parse a token out of a string, behaving like the qwcl console
 int COM_ParseTokenConsole(const char **datapointer)
 {
        int len;
+       int c;
        const char *data = *datapointer;
 
        len = 0;
@@ -844,7 +858,21 @@ skipwhite:
                                *datapointer = NULL;
                                return false;
                        }
-                       com_token[len++] = *data;
+                       c = *data;
+                       if (*data == '\\')
+                       {
+                               if (data[1] == '"')
+                               {
+                                       data++;
+                                       c = *data;
+                               }
+                               else if (data[1] == 'n')
+                               {
+                                       data++;
+                                       c = '\n';
+                               }
+                       }
+                       com_token[len++] = c;
                }
                com_token[len] = 0;
                *datapointer = data+1;