mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-10 15:22:04 +00:00
Comments are now stripped out when a script is loaded instead of during
execution.
This commit is contained in:
parent
d7671d3363
commit
11293819a5
3 changed files with 27 additions and 10 deletions
|
@ -35,6 +35,7 @@ char GIB_Parse_Match_Brace (const char *str, unsigned int *i);
|
|||
char GIB_Parse_Match_Backtick (const char *str, unsigned int *i);
|
||||
char GIB_Parse_Match_Index (const char *str, unsigned int *i);
|
||||
|
||||
void GIB_Parse_Strip_Comments (struct cbuf_s *cbuf);
|
||||
void GIB_Parse_Extract_Line (struct cbuf_s *cbuf);
|
||||
void GIB_Parse_Tokenize_Line (struct cbuf_s *cbuf);
|
||||
|
||||
|
|
|
@ -492,6 +492,7 @@ Cmd_Exec_f (void)
|
|||
sub->up = cbuf_active;
|
||||
cbuf_active->state = CBUF_STATE_STACK;
|
||||
Cbuf_AddText (sub, f);
|
||||
GIB_Parse_Strip_Comments (sub);
|
||||
} else
|
||||
Cbuf_InsertText (cbuf_active, f);
|
||||
Hunk_FreeToLowMark (mark);
|
||||
|
|
|
@ -193,6 +193,31 @@ GIB_Parse_Match_Index (const char *str, unsigned int *i)
|
|||
return '[';
|
||||
}
|
||||
|
||||
void
|
||||
GIB_Parse_Strip_Comments (struct cbuf_s *cbuf)
|
||||
{
|
||||
unsigned int i;
|
||||
dstring_t *dstr = cbuf->buf;
|
||||
char c, *n;
|
||||
|
||||
for (i = 0; dstr->str[i]; i++) {
|
||||
if (dstr->str[i] == '\"') {
|
||||
if ((c = GIB_Parse_Match_Dquote (dstr->str, &i)))
|
||||
// We don't care about parse errors here.
|
||||
// Let the parser sort it out later.
|
||||
return;
|
||||
} else if (dstr->str[i] == '/' && dstr->str[i+1] == '/') {
|
||||
if ((n = strchr (dstr->str+i, '\n'))) {
|
||||
dstring_snip (dstr, i, n-dstr->str-i);
|
||||
i--;
|
||||
} else {
|
||||
dstring_snip (dstr, i, strlen(dstr->str+i));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
GIB_Parse_Extract_Line
|
||||
|
||||
|
@ -224,16 +249,6 @@ GIB_Parse_Extract_Line (struct cbuf_s *cbuf)
|
|||
goto PARSE_ERROR;
|
||||
} else if (dstr->str[i] == '\n' || dstr->str[i] == ';')
|
||||
break;
|
||||
else if (dstr->str[i] == '/' && dstr->str[i+1] == '/') {
|
||||
char *n;
|
||||
if ((n = strchr (dstr->str+i, '\n'))) {
|
||||
dstring_snip (dstr, i, n-dstr->str-i);
|
||||
i--;
|
||||
} else {
|
||||
dstring_snip (dstr, i, strlen(dstr->str+i));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (dstr->str[0]) { // If something is left in the buffer
|
||||
|
|
Loading…
Reference in a new issue