X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/342b8b6e2156e923797745af2da2596e3086ccd5..a12f5cabb2dd5a4a1ab4010f0ddbd90179df9f6c:/src/files.c?ds=inline diff --git a/src/files.c b/src/files.c index 7e29c4c6..2da1fd37 100644 --- a/src/files.c +++ b/src/files.c @@ -86,26 +86,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 +211,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