summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buf.c2
-rw-r--r--src/main.c2
-rw-r--r--src/parse.y4
3 files changed, 6 insertions, 2 deletions
diff --git a/src/buf.c b/src/buf.c
index 1d22a6f..6d01f3d 100644
--- a/src/buf.c
+++ b/src/buf.c
@@ -166,7 +166,7 @@ struct Buf *buf_strdefine (struct Buf *buf, const char *str, const char *def)
*/
struct Buf *buf_m4_define (struct Buf *buf, const char* def, const char* val)
{
- const char * fmt = "m4_define( [[%s]], [[%s]])m4_dnl\n";
+ const char * fmt = "m4_define( [[%s]], [[[[%s]]]])m4_dnl\n";
char * str;
size_t strsz;
diff --git a/src/main.c b/src/main.c
index 0c0e360..ef804cd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -445,6 +445,8 @@ void check_options (void)
if ( bison_bridge_lloc)
buf_m4_define (&m4defs_buf, "<M4_YY_BISON_LLOC>", NULL);
+ if (strchr(prefix, '[') || strchr(prefix, ']'))
+ flexerror(_("Prefix cannot include '[' or ']'"));
buf_m4_define(&m4defs_buf, "M4_YY_PREFIX", prefix);
if (did_outfilename)
diff --git a/src/parse.y b/src/parse.y
index 4de4151..8aed868 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -199,7 +199,9 @@ option : TOK_OUTFILE '=' NAME
| TOK_EXTRA_TYPE '=' NAME
{ extra_type = xstrdup(nmstr); }
| TOK_PREFIX '=' NAME
- { prefix = xstrdup(nmstr); }
+ { prefix = xstrdup(nmstr);
+ if (strchr(prefix, '[') || strchr(prefix, ']'))
+ flexerror(_("Prefix must not contain [ or ]")); }
| TOK_YYCLASS '=' NAME
{ yyclass = xstrdup(nmstr); }
| TOK_HEADER_FILE '=' NAME