]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
added \' and \\ support to parsers, and added such escape code support to ' quoted...
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 22 Jan 2007 14:53:52 +0000 (14:53 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 22 Jan 2007 14:53:52 +0000 (14:53 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6727 d7cf8633-e32d-0410-b094-e92efae38249

common.c

index dad84c89dd83055ee8cf5a03b69b297e74863038..ec3d63b812323158e220f2cc98c4131a60d32397 100644 (file)
--- a/common.c
+++ b/common.c
@@ -740,11 +740,18 @@ skipwhite:
                                        data++;
                                        c = *data;
                                }
+                               else if (data[1] == '\'')
+                               {
+                                       data++;
+                                       c = *data;
+                               }
                                else if (data[1] == 'n')
                                {
                                        data++;
                                        c = '\n';
                                }
+                               else if (data[1] == '\\')
+                                       data++;
                        }
                        com_token[len++] = c;
                }
@@ -757,15 +764,34 @@ 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] == '\'')
+                               {
+                                       data++;
+                                       c = *data;
+                               }
+                               else if (data[1] == 'n')
+                               {
+                                       data++;
+                                       c = '\n';
+                               }
+                               else if (data[1] == '\\')
+                                       data++;
+                       }
+                       com_token[len++] = c;
                }
                com_token[len] = 0;
                *datapointer = data+1;
@@ -798,7 +824,28 @@ skipwhite:
                                *datapointer = NULL;
                                return false;
                        }
-                       com_token[len++] = *data;
+                       c = *data;
+                       if (*data == '\\')
+                       {
+                               if (data[1] == '"')
+                               {
+                                       data++;
+                                       c = *data;
+                               }
+                               else if (data[1] == '\'')
+                               {
+                                       data++;
+                                       c = *data;
+                               }
+                               else if (data[1] == 'n')
+                               {
+                                       data++;
+                                       c = '\n';
+                               }
+                               else if (data[1] == '\\')
+                                       data++;
+                       }
+                       com_token[len++] = c;
                }
                com_token[len] = 0;
                *datapointer = data;
@@ -866,11 +913,18 @@ skipwhite:
                                        data++;
                                        c = *data;
                                }
+                               else if (data[1] == '\'')
+                               {
+                                       data++;
+                                       c = *data;
+                               }
                                else if (data[1] == 'n')
                                {
                                        data++;
                                        c = '\n';
                                }
+                               else if (data[1] == '\\')
+                                       data++;
                        }
                        com_token[len++] = c;
                }
@@ -888,7 +942,28 @@ skipwhite:
                                *datapointer = NULL;
                                return false;
                        }
-                       com_token[len++] = *data;
+                       c = *data;
+                       if (*data == '\\')
+                       {
+                               if (data[1] == '"')
+                               {
+                                       data++;
+                                       c = *data;
+                               }
+                               else if (data[1] == '\'')
+                               {
+                                       data++;
+                                       c = *data;
+                               }
+                               else if (data[1] == 'n')
+                               {
+                                       data++;
+                                       c = '\n';
+                               }
+                               else if (data[1] == '\\')
+                                       data++;
+                       }
+                       com_token[len++] = c;
                }
                com_token[len] = 0;
                *datapointer = data;