Added escaping escape characters
This commit is contained in:
18
src/parse.c
18
src/parse.c
@@ -104,8 +104,7 @@ static int writefile(struct expandfile *file, FILE *out) {
|
||||
break;
|
||||
}
|
||||
case AUTOESCAPE_CHAR:
|
||||
for (++i; data->data[i] != ESCAPE_CHAR &&
|
||||
i < data->len; ++i) {
|
||||
for (++i; i < data->len; ++i) {
|
||||
switch (data->data[i]) {
|
||||
case '&':
|
||||
fputs("&", out);
|
||||
@@ -118,16 +117,27 @@ static int writefile(struct expandfile *file, FILE *out) {
|
||||
case '>':
|
||||
fputs(">", out);
|
||||
break;
|
||||
case ESCAPE_CHAR:
|
||||
if (data->data[i + 1] != ESCAPE_CHAR)
|
||||
goto autoescapeend;
|
||||
++i;
|
||||
/* fallthrough */
|
||||
default:
|
||||
fputc(data->data[i], out);
|
||||
break;
|
||||
}
|
||||
}
|
||||
autoescapeend:
|
||||
break;
|
||||
case NOMINIFY_CHAR:
|
||||
for (++i; data->data[i] != ESCAPE_CHAR &&
|
||||
i < data->len; ++i)
|
||||
for (++i; data->data[i] != ESCAPE_CHAR && i < data->len; ++i) {
|
||||
if (data->data[i] == ESCAPE_CHAR) {
|
||||
if (data->data[i + 1] != ESCAPE_CHAR)
|
||||
break;
|
||||
++i;
|
||||
}
|
||||
fputc(data->data[i], out);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user