mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-03-24 03:02:31 +00:00
Separate out C and html quoting into separate functions.
Dot sometimes wants normal C quotes, othertimes html. Quite annoying, really, but this is cleaner anyway.
This commit is contained in:
parent
f680521e0f
commit
f8bdd909cc
3 changed files with 54 additions and 8 deletions
|
@ -55,6 +55,7 @@ const char *save_string (const char *str);
|
|||
|
||||
const char *make_string (char *token, char **end);
|
||||
|
||||
const char *html_string (const char *str);
|
||||
const char *quote_string (const char *str);
|
||||
|
||||
#endif//__strpool_h
|
||||
|
|
|
@ -53,10 +53,10 @@ static void
|
|||
flow_statement (dstring_t *dstr, statement_t *s)
|
||||
{
|
||||
dasprintf (dstr, " <tr>");
|
||||
dasprintf (dstr, "<td>%s</td>", quote_string (s->opcode));
|
||||
dasprintf (dstr, "<td>%s</td>", operand_string (s->opa));
|
||||
dasprintf (dstr, "<td>%s</td>", operand_string (s->opb));
|
||||
dasprintf (dstr, "<td>%s</td>", operand_string (s->opc));
|
||||
dasprintf (dstr, "<td>%s</td>", html_string(quote_string (s->opcode)));
|
||||
dasprintf (dstr, "<td>%s</td>", html_string(operand_string (s->opa)));
|
||||
dasprintf (dstr, "<td>%s</td>", html_string(operand_string (s->opb)));
|
||||
dasprintf (dstr, "<td>%s</td>", html_string(operand_string (s->opc)));
|
||||
dasprintf (dstr, "</tr>\n");
|
||||
}
|
||||
|
||||
|
|
|
@ -360,7 +360,7 @@ make_string (char *token, char **end)
|
|||
}
|
||||
|
||||
const char *
|
||||
quote_string (const char *str)
|
||||
html_string (const char *str)
|
||||
{
|
||||
static dstring_t *q;
|
||||
char c[2] = {0, 0};
|
||||
|
@ -372,9 +372,6 @@ quote_string (const char *str)
|
|||
dstring_clearstr (q);
|
||||
while ((c[0] = *str++)) {
|
||||
switch (c[0]) {
|
||||
case '\n':
|
||||
dstring_appendstr (q, "\\\\n");
|
||||
break;
|
||||
case '<':
|
||||
dstring_appendstr (q, "<");
|
||||
break;
|
||||
|
@ -387,6 +384,54 @@ quote_string (const char *str)
|
|||
case '"':
|
||||
dstring_appendstr (q, """);
|
||||
break;
|
||||
default:
|
||||
dstring_appendstr (q, c);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return q->str;
|
||||
}
|
||||
|
||||
const char *
|
||||
quote_string (const char *str)
|
||||
{
|
||||
static dstring_t *q;
|
||||
char c[2] = {0, 0};
|
||||
|
||||
if (!str)
|
||||
return "(null)";
|
||||
if (!q)
|
||||
q = dstring_new ();
|
||||
dstring_clearstr (q);
|
||||
while ((c[0] = *str++)) {
|
||||
switch (c[0]) {
|
||||
case '\a':
|
||||
dstring_appendstr (q, "\\a");
|
||||
break;
|
||||
case '\b':
|
||||
dstring_appendstr (q, "\\b");
|
||||
break;
|
||||
case '\f':
|
||||
dstring_appendstr (q, "\\f");
|
||||
break;
|
||||
case '\n':
|
||||
dstring_appendstr (q, "\\n");
|
||||
break;
|
||||
case '\r':
|
||||
dstring_appendstr (q, "\\r");
|
||||
break;
|
||||
case '\t':
|
||||
dstring_appendstr (q, "\\t");
|
||||
break;
|
||||
case '\\':
|
||||
dstring_appendstr (q, "\\\\");
|
||||
break;
|
||||
case '\'':
|
||||
dstring_appendstr (q, "\\'");
|
||||
break;
|
||||
case '\"':
|
||||
dstring_appendstr (q, "\\\"");
|
||||
break;
|
||||
default:
|
||||
if (c[0] >= 127 || c[0] < 32)
|
||||
dasprintf (q, "\\\\x%02d", (byte) c[0]);
|
||||
|
|
Loading…
Reference in a new issue