OSDN Git Service

Daily bump.
[pf3gnuchains/gcc-fork.git] / gcc / fix-header.c
index ff29e8e..c789e99 100644 (file)
@@ -1,5 +1,5 @@
 /* fix-header.c - Make C header file suitable for C++.
-   Copyright (C) 1993, 94-97, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1993, 94-98, 1999 Free Software Foundation, Inc.
 
 This program is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License as published by the
@@ -70,23 +70,15 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
    Written by Per Bothner <bothner@cygnus.com>, July 1993.  */
 
-#include <stdio.h>
-#include <ctype.h>
 #include "hconfig.h"
+#include "system.h"
 #include "obstack.h"
 #include "scan.h"
 #include "cpplib.h"
-#include "gansidecl.h"
+#include "cpphash.h"
 
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#endif
-
-extern void cpp_fatal ();
-
-#if !__STDC__ && !defined(const)
-#define const /* nothing */
-#endif
+static void v_fatal PROTO ((const char *, va_list)) ATTRIBUTE_NORETURN;
+static void fatal PVPROTO ((const char *, ...)) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
 
 sstring buf;
 
@@ -128,9 +120,21 @@ char *inf_ptr;
 enum special_file
 {
   no_special,
+#ifdef errno_h
+#undef errno_h
+#endif
   errno_h,
+#ifdef stdio_h
+#undef stdio_h
+#endif
   stdio_h,
+#ifdef stdlib_h
+#undef stdlib_h
+#endif
   stdlib_h,
+#ifdef sys_stat_h
+#undef sys_stat_h
+#endif
   sys_stat_h
 };
 
@@ -183,7 +187,19 @@ struct symbol_list {
 struct symbol_list symbol_table[SYMBOL_TABLE_SIZE];
 int cur_symbol_table_size;
 
-void
+static void add_symbols PROTO ((symbol_flags, namelist));
+static struct fn_decl *lookup_std_proto PROTO ((const char *, int));
+static void write_lbrac PROTO ((void));
+static void recognized_macro PROTO ((const char *));
+static void check_macro_names PROTO ((cpp_reader *, namelist));
+static void read_scan_file PROTO ((char *, int, char **));
+static void write_rbrac PROTO ((void));
+static int inf_skip_spaces PROTO ((int));
+static int inf_read_upto PROTO ((sstring *, int));
+static int inf_scan_ident PROTO ((sstring *, int));
+static int check_protection PROTO ((int *, int *));
+
+static void
 add_symbols (flags, names)
      symbol_flags flags;
      namelist names;
@@ -332,7 +348,7 @@ setgid\0setpgid\0setsid\0setuid\0sleep\0sysconf\0tcgetpgrp\0tcsetpgrp\0\
 ttyname\0unlink\0write\0" },
   { CONTINUED, POSIX2_SYMBOL, "getopt\0" },
   { CONTINUED, XOPEN_EXTENDED_SYMBOL,
-      "lockf\0gethostid\0gethostname\0readlink\0" },
+      "lockf\0gethostid\0gethostname\0readlink\0symlink\0" },
 
   { "utime.h", POSIX1_SYMBOL, "utime\0" },
 
@@ -354,32 +370,13 @@ int seen_errno = 0;
 /* The following are only used when handling stdlib.h */
 int seen_EXIT_FAILURE = 0, seen_EXIT_SUCCESS = 0;
 \f
-/* Wrapper around free, to avoid prototype clashes.  */
-
-void
-xfree (ptr)
-     char *ptr;
-{
-  free (ptr);
-}
-
-/* Avoid error if config defines abort as fancy_abort.
-   It's not worth "really" implementing this because ordinary
-   compiler users never run fix-header.  */
-
-void
-fancy_abort ()
-{
-  abort ();
-}
-\f
 #define obstack_chunk_alloc xmalloc
-#define obstack_chunk_free xfree
+#define obstack_chunk_free free
 struct obstack scan_file_obstack;
 
 /* NOTE:  If you edit this, also edit gen-protos.c !! */
 
-struct fn_decl *
+static struct fn_decl *
 lookup_std_proto (name, name_length)
      const char *name;
      int name_length;
@@ -392,7 +389,7 @@ lookup_std_proto (name, name_length)
       if (hash_tab[i] == 0)
        return NULL;
       fn = &std_protos[hash_tab[i]];
-      if (strlen (fn->fname) == name_length
+      if ((int) strlen (fn->fname) == name_length
          && strncmp (fn->fname, name, name_length) == 0)
        return fn;
       i = (i+1) % HASH_SIZE;
@@ -403,7 +400,7 @@ lookup_std_proto (name, name_length)
 
 char *inc_filename;
 int inc_filename_length;
-char *progname = "fix-header";
+const char *progname = "fix-header";
 FILE *outf;
 sstring line;
 
@@ -412,7 +409,7 @@ int lbrac_line, rbrac_line;
 int required_unseen_count = 0;
 int required_other = 0;
 
-void 
+static void 
 write_lbrac ()
 {
   
@@ -449,9 +446,9 @@ struct partial_proto required_dummy_proto, seen_dummy_proto;
 #define SET_SEEN(FN) ((FN)->partial = &seen_dummy_proto)
 #define SEEN(FN) ((FN)->partial == &seen_dummy_proto)
 
-void
+static void
 recognized_macro (fname)
-     char *fname;
+     const char *fname;
 {
   /* The original include file defines fname as a macro.  */
   struct fn_decl *fn = lookup_std_proto (fname, strlen (fname));
@@ -502,8 +499,8 @@ recognized_macro (fname)
 void
 recognized_extern (name, name_length, type, type_length)
      char *name;
-     char *type;
-     int name_length, type_length;
+     char *type ATTRIBUTE_UNUSED;
+     int name_length, type_length ATTRIBUTE_UNUSED;
 {
   switch (special_file_handling)
     {
@@ -600,7 +597,7 @@ recognized_function (fname, fname_length,
 /* For any name in NAMES that is defined as a macro,
    call recognized_macro on it.  */
 
-void
+static void
 check_macro_names (pfile, names)
      cpp_reader *pfile;
      namelist names;
@@ -613,7 +610,7 @@ check_macro_names (pfile, names)
     }
 }
 
-void
+static void
 read_scan_file (in_fname, argc, argv)
      char *in_fname;
      int argc;
@@ -628,7 +625,7 @@ read_scan_file (in_fname, argc, argv)
   obstack_init (&scan_file_obstack); 
 
   cpp_reader_init (&scan_in);
-  scan_in.data = &scan_options;
+  scan_in.opts = &scan_options;
   cpp_options_init (&scan_options);
   i = cpp_handle_options (&scan_in, argc, argv);
   if (i < argc && ! CPP_FATAL_ERRORS (&scan_in))
@@ -688,7 +685,7 @@ read_scan_file (in_fname, argc, argv)
          /* Append "_filbuf" and/or "_flsbuf" to the required functions.  */
          if (need_filbuf + need_flsbuf)
            {
-             char *new_list;
+             const char *new_list;
              if (need_filbuf)
                SET_REQUIRED (fn);
              if (need_flsbuf)
@@ -734,7 +731,7 @@ read_scan_file (in_fname, argc, argv)
     }
 }
 
-void
+static void
 write_rbrac ()
 {
   struct fn_decl *fn;
@@ -801,7 +798,8 @@ write_rbrac ()
              || !strcmp (fn->fname, "vprintf")
              || !strcmp (fn->fname, "vfprintf")
              || !strcmp (fn->fname, "vsprintf")
-             || !strcmp (fn->fname, "rewinddir"))
+             || !strcmp (fn->fname, "rewinddir")
+             || !strcmp (fn->fname, "abort"))
            macro_protect = 1;
 
          if (macro_protect)
@@ -866,15 +864,6 @@ write_rbrac ()
 #endif
 }
 
-char *
-xstrdup (str)
-     char *str;
-{
-  char *copy = (char *) xmalloc (strlen (str) + 1);
-  strcpy (copy, str);
-  return copy;
-}
-
 /* Returns 1 iff the file is properly protected from multiple inclusion:
    #ifndef PROTECT_NAME
    #define PROTECT_NAME
@@ -885,7 +874,7 @@ xstrdup (str)
 #define INF_GET() (inf_ptr < inf_limit ? *(unsigned char *) inf_ptr++ : EOF)
 #define INF_UNGET(c) ((c)!=EOF && inf_ptr--)
 
-int
+static int
 inf_skip_spaces (c)
      int c;
 {
@@ -924,7 +913,7 @@ inf_skip_spaces (c)
 
 /* Read into STR from inf_buffer upto DELIM.  */
 
-int
+static int
 inf_read_upto (str, delim)
      sstring *str;
      int delim;
@@ -942,19 +931,19 @@ inf_read_upto (str, delim)
   return ch;
 }
 
-int
+static int
 inf_scan_ident (s, c)
      register sstring *s;
      int c;
 {
   s->ptr = s->base;
-  if (isalpha (c) || c == '_')
+  if (ISALPHA (c) || c == '_')
     {
       for (;;)
        {
          SSTRING_PUT (s, c);
          c = INF_GET ();
-         if (c == EOF || !(isalnum (c) || c == '_'))
+         if (c == EOF || !(ISALNUM (c) || c == '_'))
            break;
        }
     }
@@ -968,7 +957,7 @@ inf_scan_ident (s, c)
    and setting *endif_line to the final #endif.
    Otherwise return 0.  */
 
-int
+static int
 check_protection (ifndef_line, endif_line)
      int *ifndef_line, *endif_line;
 {
@@ -1073,6 +1062,8 @@ check_protection (ifndef_line, endif_line)
   return 1;
 }
 
+extern int main                        PROTO ((int, char **));
+
 int
 main (argc, argv)
      int argc;
@@ -1141,7 +1132,7 @@ main (argc, argv)
     special_file_handling = stdio_h;
   include_entry = std_include_table;
   while (include_entry->name != NULL
-        && (include_entry->name == CONTINUED
+        && ((strcmp (include_entry->name, CONTINUED) == 0)
             || strcmp (inc_filename, include_entry->name) != 0))
     include_entry++;
 
@@ -1154,7 +1145,7 @@ main (argc, argv)
          if (entry->flags)
            add_symbols (entry->flags, entry->names);
          entry++;
-         if (entry->name != CONTINUED)
+         if (!entry->name || strcmp (entry->name, CONTINUED) != 0)
            break;
        }
     }
@@ -1265,7 +1256,7 @@ main (argc, argv)
          c = INF_GET ();
          if (c == EOF)
            break;
-         if (isalpha (c) || c == '_')
+         if (ISALPHA (c) || c == '_')
            {
              c = inf_scan_ident (&buf, c);
              (void) INF_UNGET (c);
@@ -1315,71 +1306,33 @@ main (argc, argv)
   return 0;
 }
 \f
-/* Stub error functions.  These replace cpperror.c,
-   because we want to suppress error messages.  */
-
-void
-cpp_file_line_for_message (filename, line, column)
-     char *filename;
-     int line, column;
-{
-  if (!verbose)
-    return;
-  if (column > 0)
-    fprintf (stderr, "%s:%d:%d: ", filename, line, column);
-  else
-    fprintf (stderr, "%s:%d: ", filename, line);
-}
 
-void
-cpp_print_containing_files (pfile)
-     cpp_reader *pfile;
-{
-}
-
-/* IS_ERROR is 2 for fatal error, 1 for error, 0 for warning */
-
-void cpp_message (pfile, is_error, msg, arg1, arg2, arg3)
-     int is_error;
-     cpp_reader *pfile;
-     char *msg;
-     char *arg1, *arg2, *arg3;
-{
-  if (is_error == 1)
-    pfile->errors++;
-  else if (is_error > 1)
-    pfile->errors = CPP_FATAL_LIMIT;
-  if (!verbose)
-    return;
-  if (!is_error)
-    fprintf (stderr, "warning: ");
-  fprintf (stderr, msg, arg1, arg2, arg3);
-  fprintf (stderr, "\n");
-}
-
-void
-fatal (str, arg)
-     char *str, *arg;
+static void
+v_fatal (str, ap)
+  const char * str;
+  va_list ap;
 {
   fprintf (stderr, "%s: %s: ", progname, inc_filename);
-  fprintf (stderr, str, arg);
+  vfprintf (stderr, str, ap);
   fprintf (stderr, "\n");
+  
   exit (FATAL_EXIT_CODE);
 }
 
-void
-cpp_fatal (pfile, str, arg)
-     cpp_reader *pfile;
-     char *str, *arg;
+static void
+fatal VPROTO ((const char *str, ...))
 {
-  fatal (str, arg);
-}
+#ifndef ANSI_PROTOTYPES
+  const char *str;
+#endif
+  va_list ap;
+  
+  VA_START(ap, str);
 
-void
-cpp_pfatal_with_name (pfile, name)
-     cpp_reader *pfile;
-     char *name;
-{
-  cpp_perror_with_name (pfile, name);
-  exit (FATAL_EXIT_CODE);
+#ifndef ANSI_PROTOTYPES
+  str = va_arg (ap, const char *);
+#endif
+
+  v_fatal(str, ap);
+  va_end(ap);
 }