X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/342b8b6e2156e923797745af2da2596e3086ccd5..74ffbcb6bf2b471ef16c485830a3084978fa29f7:/src/files.c diff --git a/src/files.c b/src/files.c index 7e29c4c6..d8641521 100644 --- a/src/files.c +++ b/src/files.c @@ -23,6 +23,7 @@ #include "getargs.h" #include "files.h" #include "gram.h" +#include "error.h" #include "complain.h" FILE *finput = NULL; @@ -86,26 +87,36 @@ stringappend (const char *string1, const char *string2) } -/*---------------------------------------------------------------. -| Computes the macro name used to avoid double inclusion in the | -| header of the parser and store it in header_macro_name. | -`---------------------------------------------------------------*/ +/*-----------------------------------------------------------------. +| Computes the macro name used to avoid double inclusion in the | +| header of the parser and store it in header_macro_name. Be sure | +| to produce valid CPP names (don't start with digit, remain | +| alphanumerical + underscore). | +`-----------------------------------------------------------------*/ static char * compute_header_macro (void) { + const char *prefix = "BISON_"; char *macro_name, *cp; if (spec_defines_file) - macro_name = xstrdup (spec_defines_file); + { + macro_name = XMALLOC (char, + strlen (prefix) + + strlen (spec_defines_file) + 1); + cp = stpcpy (macro_name, prefix); + cp = stpcpy (cp, spec_defines_file); + } else { macro_name = XMALLOC (char, + strlen (prefix) + strlen (base_name) + strlen (header_extension) + 1); - - stpcpy (macro_name, base_name); - strcat (macro_name, header_extension); + cp = stpcpy (macro_name, prefix); + cp = stpcpy (cp, base_name); + cp = stpcpy (cp, header_extension); } for (cp = macro_name; *cp; ++cp) @@ -201,9 +212,9 @@ skeleton_find (const char *envvar, const char *skeleton_name) if (!res) { /* Skeleton file name without path */ - const char *skel_name = strrchr(skeleton_name, '/'); + const char *skel_name = strrchr (skeleton_name, '/'); if (!skel_name) - skel_name = strrchr(skeleton_name, '\\'); + skel_name = strrchr (skeleton_name, '\\'); if (!skel_name) skel_name = skeleton_name; else