X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/ea52d7066d461da102602b25d371dd09e82eb371..80dac38c5eb3b95412a6c99c9dbe976ac963c01b:/src/files.c diff --git a/src/files.c b/src/files.c index dc6eb1e6..0b958c1a 100644 --- a/src/files.c +++ b/src/files.c @@ -30,8 +30,6 @@ FILE *finput = NULL; struct obstack action_obstack; struct obstack attrs_obstack; -struct obstack defines_obstack; -struct obstack guard_obstack; struct obstack output_obstack; char *spec_outfile = NULL; /* for -o. */ @@ -94,7 +92,7 @@ stringappend (const char *string1, const char *string2) | alphanumerical + underscore). | `-----------------------------------------------------------------*/ -static char * +char * compute_header_macro (void) { const char *prefix = "BISON_"; @@ -165,38 +163,6 @@ xfclose (FILE *ptr) return result; } -/*--------------------------------------------------. -| Save the content of the obstack OBS in FILENAME. | -`--------------------------------------------------*/ - -static void -obstack_save (struct obstack *obs, const char *filename) -{ - FILE *out = xfopen (filename, "w"); - size_t size = obstack_object_size (obs); - fwrite (obstack_finish (obs), 1, size, out); - xfclose (out); -} - -/*---------------------------------------------------------------------. -| Output double inclusion protection macros and saves defines_obstack | -`---------------------------------------------------------------------*/ - -static void -defines_obstack_save (const char *filename) -{ - FILE *out = xfopen (filename, "w"); - size_t size = obstack_object_size (&defines_obstack); - char *macro_name = compute_header_macro (); - - fprintf (out, "#ifndef %s\n", macro_name); - fprintf (out, "# define %s\n\n", macro_name); - fwrite (obstack_finish (&defines_obstack), 1, size, out); - fprintf (out, "\n#endif /* not %s */\n", macro_name); - - free (macro_name); - xfclose (out); -} /*------------------------------------------------------------------. | Return the path to the skeleton which locaction might be given in | @@ -457,71 +423,3 @@ compute_output_file_names (void) attrsfile = stringappend (attrsfile, header_extension); #endif /* MSDOS */ } - -/*-----------------------------------------------------------------. -| Open the input file. Look for the skeletons. Find the names of | -| the output files. Prepare the obstacks. | -`-----------------------------------------------------------------*/ - -void -open_files (void) -{ - finput = xfopen (infile, "r"); - - /* Initialize the obstacks. */ - obstack_init (&action_obstack); - obstack_init (&attrs_obstack); - obstack_init (&defines_obstack); - obstack_init (&guard_obstack); - obstack_init (&output_obstack); -} - - - -/*-----------------------. -| Close the open file.. | -`-----------------------*/ - -void -close_files (void) -{ - xfclose (finput); -} - -/*---------------------------. -| Produce the output files. | -`---------------------------*/ - -void -output_files (void) -{ - /* Output the header file if wanted. */ - if (defines_flag) - defines_obstack_save (spec_defines_file); - obstack_free (&defines_obstack, NULL); - -#if 0 - /* Seems to be invalid now --akim. */ - - /* If we output only the table, dump the actions in ACTFILE. */ - if (no_parser_flag) - obstack_save (&action_obstack, stringappend (short_base_name, ".act")); - obstack_free (&action_obstack, NULL); -#endif - - /* If we produced a semantic parser ATTRS_OBSTACK must be dumped - into its own file, ATTTRSFILE. */ - if (semantic_parser) - { - char *temp_name; - - obstack_save (&attrs_obstack, attrsfile); - obstack_free (&attrs_obstack, NULL); - temp_name = stringappend (short_base_name, EXT_GUARD_C); -#ifndef MSDOS - temp_name = stringappend (temp_name, src_extension); -#endif /* MSDOS */ - obstack_save (&guard_obstack, temp_name); - obstack_free (&guard_obstack, NULL); - } -}