Added escaping escape characters

This commit is contained in:
Nate Choe
2022-06-06 17:06:13 -05:00
parent 174e77a637
commit 45caaa4d8a

View File

@@ -104,8 +104,7 @@ static int writefile(struct expandfile *file, FILE *out) {
break; break;
} }
case AUTOESCAPE_CHAR: case AUTOESCAPE_CHAR:
for (++i; data->data[i] != ESCAPE_CHAR && for (++i; i < data->len; ++i) {
i < data->len; ++i) {
switch (data->data[i]) { switch (data->data[i]) {
case '&': case '&':
fputs("&amp;", out); fputs("&amp;", out);
@@ -118,16 +117,27 @@ static int writefile(struct expandfile *file, FILE *out) {
case '>': case '>':
fputs("&gt;", out); fputs("&gt;", out);
break; break;
case ESCAPE_CHAR:
if (data->data[i + 1] != ESCAPE_CHAR)
goto autoescapeend;
++i;
/* fallthrough */
default: default:
fputc(data->data[i], out); fputc(data->data[i], out);
break; break;
} }
} }
autoescapeend:
break; break;
case NOMINIFY_CHAR: case NOMINIFY_CHAR:
for (++i; data->data[i] != ESCAPE_CHAR && for (++i; data->data[i] != ESCAPE_CHAR && i < data->len; ++i) {
i < data->len; ++i) if (data->data[i] == ESCAPE_CHAR) {
if (data->data[i + 1] != ESCAPE_CHAR)
break;
++i;
}
fputc(data->data[i], out); fputc(data->data[i], out);
}
break; break;
} }
} }