Merge branch 'quote-shenanigans' into 'master'

Stuff I Broke: Commands

See merge request STJr/SRB2!607
This commit is contained in:
James R 2020-01-01 17:52:21 -05:00
commit 35fe2e7281
1 changed files with 33 additions and 15 deletions

View File

@ -427,20 +427,21 @@ static void COM_TokenizeString(char *ptext)
com_argc = 0; com_argc = 0;
com_args = NULL; com_args = NULL;
com_flags = 0;
if (ptext[0] == '\033')
{
com_flags = (unsigned)ptext[1];
ptext += 2;
}
else
com_flags = 0;
while (com_argc < MAX_ARGS) while (com_argc < MAX_ARGS)
{ {
// Skip whitespace up to a newline. // Skip whitespace up to a newline.
while (*ptext != '\0' && *ptext <= ' ' && *ptext != '\n') while (*ptext != '\0' && *ptext <= ' ' && *ptext != '\n')
ptext++; {
if (ptext[0] == '\033')
{
com_flags = (unsigned)ptext[1];
ptext += 2;
}
else
ptext++;
}
// A newline means end of command in buffer, // A newline means end of command in buffer,
// thus end of this command's args too. // thus end of this command's args too.
@ -2169,8 +2170,13 @@ skipwhite:
com_token[len] = 0; com_token[len] = 0;
return data; return data;
} }
com_token[len] = c; if (c == '\033')
len++; data += 2;
else
{
com_token[len] = c;
len++;
}
} }
} }
@ -2186,10 +2192,22 @@ skipwhite:
// parse a regular word // parse a regular word
do do
{ {
com_token[len] = c; if (c == '\033')
data++; {
len++; do
c = *data; {
data += 2;
c = *data;
}
while (c == '\033') ;
}
else
{
com_token[len] = c;
data++;
len++;
c = *data;
}
if (c == '{' || c == '}' || c == ')'|| c == '(' || c == '\'') if (c == '{' || c == '}' || c == ')'|| c == '(' || c == '\'')
break; break;
} while (c > 32); } while (c > 32);