summaryrefslogtreecommitdiff
path: root/src/output.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/output.c')
-rw-r--r--src/output.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/output.c b/src/output.c
index 4b1bb0d8..07234f2a 100644
--- a/src/output.c
+++ b/src/output.c
@@ -104,20 +104,45 @@ GENERATE_MUSCLE_INSERT_TABLE (muscle_insert_symbol_number_table, symbol_number)
GENERATE_MUSCLE_INSERT_TABLE (muscle_insert_item_number_table, item_number)
GENERATE_MUSCLE_INSERT_TABLE (muscle_insert_state_number_table, state_number)
+
/*----------------------------------------------------------------.
| Print to OUT a representation of CP quoted and escaped for M4. |
+| |
+| Keep sync'ed with obstack_escape. |
`----------------------------------------------------------------*/
static void
output_escaped (FILE *out, const char *cp)
{
- for (; *cp; cp++)
+ for (; *cp; ++cp)
switch (*cp)
{
case '$': fputs ("$][", out); break;
case '@': fputs ("@@", out); break;
case '[': fputs ("@{", out); break;
case ']': fputs ("@}", out); break;
+
+ case 'b':
+ if (STRPREFIX_LIT ("b4_", cp))
+ {
+ fputs ("b4@'_", out);
+ cp += strlen ("b4_") - 1;
+ break;
+ }
+ else
+ goto append;
+
+ case 'm':
+ if (STRPREFIX_LIT ("m4_", cp))
+ {
+ fputs ("m4@'_", out);
+ cp += strlen ("m4_") - 1;
+ break;
+ }
+ else
+ goto append;
+
+ append:
default: fputc (*cp, out); break;
}
}