OSDN Git Service

* tree-vrp.c (stmt_interesting_for_vrp): Some statements with
[pf3gnuchains/gcc-fork.git] / gcc / protoize.c
index 54fdba5..f67fc4d 100644 (file)
@@ -1,6 +1,6 @@
 /* Protoize program - Original version by Ron Guilmette (rfg@segfault.us.com).
    Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -16,8 +16,8 @@ for more details.
 
 You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING.  If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA.  */
+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA.  */
 
 #include "config.h"
 #include "system.h"
@@ -34,7 +34,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#undef abort
 #include "version.h"
 
 /* Include getopt.h for the sake of getopt_long.  */
@@ -48,11 +47,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #endif
 
 /* Macro to see if the paths match.  */
-#ifdef HAVE_DOS_BASED_FILE_SYSTEM
-#define IS_SAME_PATH(a,b) (strcasecmp (a, b) == 0)
-#else
-#define IS_SAME_PATH(a,b) (strcmp (a, b) == 0)
-#endif
+#define IS_SAME_PATH(a,b) (FILENAME_CMP (a, b) == 0)
 
 /* Suffix for aux-info files.  */
 #ifdef __MSDOS__
@@ -75,45 +70,42 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #define CPLUS_FILE_SUFFIX "C"
 #endif
 
-static void usage PARAMS ((void)) ATTRIBUTE_NORETURN;
-static void aux_info_corrupted PARAMS ((void)) ATTRIBUTE_NORETURN;
-static void declare_source_confusing PARAMS ((const char *)) ATTRIBUTE_NORETURN;
-static const char *shortpath PARAMS ((const char *, const char *));
-extern void fancy_abort PARAMS ((void)) ATTRIBUTE_NORETURN;
-static void notice PARAMS ((const char *, ...)) ATTRIBUTE_PRINTF_1;
-static char *savestring PARAMS ((const char *, unsigned int));
-static char *dupnstr PARAMS ((const char *, size_t));
-static const char *substr PARAMS ((const char *, const char * const));
-static int safe_read PARAMS ((int, PTR, int));
-static void safe_write PARAMS ((int, PTR, int, const char *));
-static void save_pointers PARAMS ((void));
-static void restore_pointers PARAMS ((void));
-static int is_id_char PARAMS ((int));
-static int in_system_include_dir PARAMS ((const char *));
-static int directory_specified_p PARAMS ((const char *));
-static int file_excluded_p PARAMS ((const char *));
-static char *unexpand_if_needed PARAMS ((const char *));
-static char *abspath PARAMS ((const char *, const char *));
-static int is_abspath PARAMS ((const char *));
-static void check_aux_info PARAMS ((int));
-static const char *find_corresponding_lparen PARAMS ((const char *));
-static int referenced_file_is_newer PARAMS ((const char *, time_t));
-static void save_def_or_dec PARAMS ((const char *, int));
-static void munge_compile_params PARAMS ((const char *));
-static int gen_aux_info_file PARAMS ((const char *));
-static void process_aux_info_file PARAMS ((const char *, int, int));
-static int identify_lineno PARAMS ((const char *));
-static void check_source PARAMS ((int, const char *));
-static const char *seek_to_line PARAMS ((int));
-static const char *forward_to_next_token_char PARAMS ((const char *));
-static void output_bytes PARAMS ((const char *, size_t));
-static void output_string PARAMS ((const char *));
-static void output_up_to PARAMS ((const char *));
-static int other_variable_style_function PARAMS ((const char *));
-static const char *find_rightmost_formals_list PARAMS ((const char *));
-static void do_cleaning PARAMS ((char *, const char *));
-static const char *careful_find_l_paren PARAMS ((const char *));
-static void do_processing PARAMS ((void));
+static void usage (void) ATTRIBUTE_NORETURN;
+static void aux_info_corrupted (void) ATTRIBUTE_NORETURN;
+static void declare_source_confusing (const char *) ATTRIBUTE_NORETURN;
+static const char *shortpath (const char *, const char *);
+static void notice (const char *, ...) ATTRIBUTE_PRINTF_1;
+static char *savestring (const char *, unsigned int);
+static char *dupnstr (const char *, size_t);
+static int safe_read (int, void *, int);
+static void safe_write (int, void *, int, const char *);
+static void save_pointers (void);
+static void restore_pointers (void);
+static int is_id_char (int);
+static int in_system_include_dir (const char *);
+static int directory_specified_p (const char *);
+static int file_excluded_p (const char *);
+static char *unexpand_if_needed (const char *);
+static char *abspath (const char *, const char *);
+static void check_aux_info (int);
+static const char *find_corresponding_lparen (const char *);
+static int referenced_file_is_newer (const char *, time_t);
+static void save_def_or_dec (const char *, int);
+static void munge_compile_params (const char *);
+static int gen_aux_info_file (const char *);
+static void process_aux_info_file (const char *, int, int);
+static int identify_lineno (const char *);
+static void check_source (int, const char *);
+static const char *seek_to_line (int);
+static const char *forward_to_next_token_char (const char *);
+static void output_bytes (const char *, size_t);
+static void output_string (const char *);
+static void output_up_to (const char *);
+static int other_variable_style_function (const char *);
+static const char *find_rightmost_formals_list (const char *);
+static void do_cleaning (char *, const char *);
+static const char *careful_find_l_paren (const char *);
+static void do_processing (void);
 
 /* Look for these where the `const' qualifier is intentionally cast aside.  */
 #define NONCONST
@@ -201,8 +193,8 @@ struct string_list
   struct string_list *next;
 };
 
-static struct string_list *string_list_cons PARAMS ((const char *,
-                                                    struct string_list *));
+static struct string_list *string_list_cons (const char *,
+                                            struct string_list *);
 
 /* List of directories in which files should be converted.  */
 
@@ -227,9 +219,7 @@ struct string_list *exclude_list;
 static const char * const other_var_style = "stdarg";
 #else /* !defined (UNPROTOIZE) */
 static const char * const other_var_style = "varargs";
-/* Note that this is a string containing the expansion of va_alist.
-   But in `main' we discard all but the first token.  */
-static const char *varargs_style_indicator = #va_alist;
+static const char *varargs_style_indicator = "va_alist";
 #endif /* !defined (UNPROTOIZE) */
 
 /* The following two types are used to create hash tables.  In this program,
@@ -249,29 +239,29 @@ typedef struct file_info_struct file_info;
 typedef struct f_list_chain_item_struct f_list_chain_item;
 
 #ifndef UNPROTOIZE
-static int is_syscalls_file PARAMS ((const file_info *));
-static void rename_c_file PARAMS ((const hash_table_entry *));
-static const def_dec_info *find_extern_def PARAMS ((const def_dec_info *,
-                                                   const def_dec_info *));
-static const def_dec_info *find_static_definition PARAMS ((const def_dec_info *));
-static void connect_defs_and_decs PARAMS ((const hash_table_entry *));
-static void add_local_decl PARAMS ((const def_dec_info *, const char *));
-static void add_global_decls PARAMS ((const file_info *, const char *));
+static int is_syscalls_file (const file_info *);
+static void rename_c_file (const hash_table_entry *);
+static const def_dec_info *find_extern_def (const def_dec_info *,
+                                           const def_dec_info *);
+static const def_dec_info *find_static_definition (const def_dec_info *);
+static void connect_defs_and_decs (const hash_table_entry *);
+static void add_local_decl (const def_dec_info *, const char *);
+static void add_global_decls (const file_info *, const char *);
 #endif /* ! UNPROTOIZE */
-static int needs_to_be_converted PARAMS ((const file_info *));
-static void visit_each_hash_node PARAMS ((const hash_table_entry *,
-                                         void (*)(const hash_table_entry *)));
-static hash_table_entry *add_symbol PARAMS ((hash_table_entry *, const char *));
-static hash_table_entry *lookup PARAMS ((hash_table_entry *, const char *));
-static void free_def_dec PARAMS ((def_dec_info *));
-static file_info *find_file PARAMS ((const char *, int));
-static void reverse_def_dec_list PARAMS ((const hash_table_entry *));
-static void edit_fn_declaration PARAMS ((const def_dec_info *, const char *));
-static int edit_formals_lists PARAMS ((const char *, unsigned int,
-                                      const def_dec_info *));
-static void edit_fn_definition PARAMS ((const def_dec_info *, const char *));
-static void scan_for_missed_items PARAMS ((const file_info *));
-static void edit_file PARAMS ((const hash_table_entry *));
+static int needs_to_be_converted (const file_info *);
+static void visit_each_hash_node (const hash_table_entry *,
+                                 void (*)(const hash_table_entry *));
+static hash_table_entry *add_symbol (hash_table_entry *, const char *);
+static hash_table_entry *lookup (hash_table_entry *, const char *);
+static void free_def_dec (def_dec_info *);
+static file_info *find_file (const char *, int);
+static void reverse_def_dec_list (const hash_table_entry *);
+static void edit_fn_declaration (const def_dec_info *, const char *);
+static int edit_formals_lists (const char *, unsigned int,
+                              const def_dec_info *);
+static void edit_fn_definition (const def_dec_info *, const char *);
+static void scan_for_missed_items (const file_info *);
+static void edit_file (const hash_table_entry *);
 
 /* In the struct below, note that the "_info" field has two different uses
    depending on the type of hash table we are in (i.e. either the filenames
@@ -371,6 +361,8 @@ static const char *pname;
 static int errors = 0;
 
 /* Option flags.  */
+/* ??? The variables are not marked static because some of them have
+   the same names as gcc variables declared in options.h.  */
 /* ??? These comments should say what the flag mean as well as the options
    that set them.  */
 
@@ -378,20 +370,20 @@ static int errors = 0;
    something other than gcc.  */
 static const char *compiler_file_name = "gcc";
 
-static int version_flag = 0;           /* Print our version number.  */
-static int quiet_flag = 0;             /* Don't print messages normally.  */
-static int nochange_flag = 0;          /* Don't convert, just say what files
-                                          we would have converted.  */
-static int nosave_flag = 0;            /* Don't save the old version.  */
-static int keep_flag = 0;              /* Don't delete the .X files.  */
+int version_flag = 0;          /* Print our version number.  */
+int quiet_flag = 0;            /* Don't print messages normally.  */
+int nochange_flag = 0;         /* Don't convert, just say what files
+                                  we would have converted.  */
+int nosave_flag = 0;           /* Don't save the old version.  */
+int keep_flag = 0;             /* Don't delete the .X files.  */
 static const char ** compile_params = 0;       /* Option string for gcc.  */
 #ifdef UNPROTOIZE
 static const char *indent_string = "     ";    /* Indentation for newly
                                                   inserted parm decls.  */
 #else /* !defined (UNPROTOIZE) */
-static int local_flag = 0;             /* Insert new local decls (when?).  */
-static int global_flag = 0;            /* set by -g option */
-static int cplusplus_flag = 0;         /* Rename converted files to *.C.  */
+int local_flag = 0;            /* Insert new local decls (when?).  */
+int global_flag = 0;           /* set by -g option */
+int cplusplus_flag = 0;                /* Rename converted files to *.C.  */
 static const char *nondefault_syscalls_dir = 0; /* Dir to look for
                                                   SYSCALLS.c.X in.  */
 #endif /* !defined (UNPROTOIZE) */
@@ -513,12 +505,12 @@ static char * saved_repl_write_ptr;
 \f
 /* Translate and output an error message.  */
 static void
-notice (const char *msgid, ...)
+notice (const char *cmsgid, ...)
 {
   va_list ap;
   
-  va_start (ap, msgid);
-  vfprintf (stderr, _(msgid), ap);
+  va_start (ap, cmsgid);
+  vfprintf (stderr, _(cmsgid), ap);
   va_end (ap);
 }
 
@@ -526,72 +518,32 @@ notice (const char *msgid, ...)
 /* Make a copy of a string INPUT with size SIZE.  */
 
 static char *
-savestring (input, size)
-     const char *input;
-     unsigned int size;
+savestring (const char *input, unsigned int size)
 {
-  char *output = (char *) xmalloc (size + 1);
+  char *output = xmalloc (size + 1);
   strcpy (output, input);
   return output;
 }
 
-/* More 'friendly' abort that prints the line and file.
-   config.h can #define abort fancy_abort if you like that sort of thing.  */
-
-void
-fancy_abort ()
-{
-  notice ("%s: internal abort\n", pname);
-  exit (FATAL_EXIT_CODE);
-}
 \f
 /* Make a duplicate of the first N bytes of a given string in a newly
    allocated area.  */
 
 static char *
-dupnstr (s, n)
-     const char *s;
-     size_t n;
+dupnstr (const char *s, size_t n)
 {
-  char *ret_val = (char *) xmalloc (n + 1);
+  char *ret_val = xmalloc (n + 1);
 
   strncpy (ret_val, s, n);
   ret_val[n] = '\0';
   return ret_val;
 }
-
-/* Return a pointer to the first occurrence of s2 within s1 or NULL if s2
-   does not occur within s1.  Assume neither s1 nor s2 are null pointers.  */
-
-static const char *
-substr (s1, s2)
-     const char *s1;
-     const char *const s2;
-{
-  for (; *s1 ; s1++)
-    {
-      const char *p1;
-      const char *p2;
-      int c;
-
-      for (p1 = s1, p2 = s2; (c = *p2); p1++, p2++)
-       if (*p1 != c)
-         goto outer;
-      return s1;
-outer:
-      ;
-    }
-  return 0;
-}
 \f
 /* Read LEN bytes at PTR from descriptor DESC, for file FILENAME,
    retrying if necessary.  Return the actual number of bytes read.  */
 
 static int
-safe_read (desc, ptr, len)
-     int desc;
-     PTR ptr;
-     int len;
+safe_read (int desc, void *ptr, int len)
 {
   int left = len;
   while (left > 0) {
@@ -617,11 +569,7 @@ safe_read (desc, ptr, len)
    retrying if necessary, and treating any real error as fatal.  */
 
 static void
-safe_write (desc, ptr, len, out_fname)
-     int desc;
-     PTR ptr;
-     int len;
-     const char *out_fname;
+safe_write (int desc, void *ptr, int len, const char *out_fname)
 {
   while (len > 0) {
     int written = write (desc, ptr, len);
@@ -632,7 +580,7 @@ safe_write (desc, ptr, len, out_fname)
        if (errno_val == EINTR)
          continue;
 #endif
-       notice ("%s: error writing file `%s': %s\n",
+       notice ("%s: error writing file '%s': %s\n",
                pname, shortpath (NULL, out_fname), xstrerror (errno_val));
        return;
       }
@@ -645,7 +593,7 @@ safe_write (desc, ptr, len, out_fname)
 /* Get setup to recover in case the edit we are about to do goes awry.  */
 
 static void
-save_pointers ()
+save_pointers (void)
 {
   saved_clean_read_ptr = clean_read_ptr;
   saved_repl_write_ptr = repl_write_ptr;
@@ -655,7 +603,7 @@ save_pointers ()
    too confusing in the source code we are trying to edit.  */
 
 static void
-restore_pointers ()
+restore_pointers (void)
 {
   clean_read_ptr = saved_clean_read_ptr;
   repl_write_ptr = saved_repl_write_ptr;
@@ -664,8 +612,7 @@ restore_pointers ()
 /* Return true if the given character is a valid identifier character.  */
 
 static int
-is_id_char (ch)
-     int ch;
+is_id_char (int ch)
 {
   return (ISIDNUM (ch) || (ch == '$'));
 }
@@ -674,7 +621,7 @@ is_id_char (ch)
    exit with nonzero status.  */
 
 static void
-usage ()
+usage (void)
 {
 #ifdef UNPROTOIZE
   notice ("%s: usage '%s [ -VqfnkN ] [ -i <istring> ] [ filename ... ]'\n",
@@ -691,13 +638,11 @@ usage ()
    include directories.  */
 
 static int
-in_system_include_dir (path)
-     const char *path;
+in_system_include_dir (const char *path)
 {
   const struct default_include *p;
 
-  if (! is_abspath (path))
-    abort ();          /* Must be an absolutized filename.  */
+  gcc_assert (IS_ABSOLUTE_PATH (path));
 
   for (p = cpp_include_defaults; p->fname; p++)
     if (!strncmp (path, p->fname, strlen (p->fname))
@@ -714,7 +659,7 @@ in_system_include_dir (path)
 static int
 file_could_be_converted (const char *path)
 {
-  char *const dir_name = (char *) alloca (strlen (path) + 1);
+  char *const dir_name = alloca (strlen (path) + 1);
 
   if (access (path, R_OK))
     return 0;
@@ -734,10 +679,8 @@ file_could_be_converted (const char *path)
        dir_last_slash = slash;
     }
 #endif
-    if (dir_last_slash)
-      *dir_last_slash = '\0';
-    else
-      abort ();  /* Should have been an absolutized filename.  */
+    gcc_assert (dir_last_slash);
+    *dir_last_slash = '\0';
   }
 
   if (access (path, W_OK))
@@ -778,16 +721,14 @@ file_normally_convertible (const char *path)
        dir_last_slash = slash;
     }
 #endif
-    if (dir_last_slash)
-      *dir_last_slash = '\0';
-    else
-      abort ();  /* Should have been an absolutized filename.  */
+    gcc_assert (dir_last_slash);
+    *dir_last_slash = '\0';
   }
 
   if (access (path, R_OK))
     {
       if (!quiet_flag)
-       notice ("%s: warning: no read access for file `%s'\n",
+       notice ("%s: warning: no read access for file '%s'\n",
                pname, shortpath (NULL, path));
       return 0;
     }
@@ -795,7 +736,7 @@ file_normally_convertible (const char *path)
   if (access (path, W_OK))
     {
       if (!quiet_flag)
-       notice ("%s: warning: no write access for file `%s'\n",
+       notice ("%s: warning: no write access for file '%s'\n",
                pname, shortpath (NULL, path));
       return 0;
     }
@@ -803,7 +744,7 @@ file_normally_convertible (const char *path)
   if (access (dir_name, W_OK))
     {
       if (!quiet_flag)
-       notice ("%s: warning: no write access for dir containing `%s'\n",
+       notice ("%s: warning: no write access for dir containing '%s'\n",
                pname, shortpath (NULL, path));
       return 0;
     }
@@ -818,8 +759,7 @@ file_normally_convertible (const char *path)
    file.  Return false otherwise.  */
 
 static int
-is_syscalls_file (fi_p)
-     const file_info *fi_p;
+is_syscalls_file (const file_info *fi_p)
 {
   char const *f = fi_p->hash_entry->symbol;
   size_t fl = strlen (f), sysl = sizeof (syscalls_filename) - 1;
@@ -838,8 +778,7 @@ is_syscalls_file (fi_p)
    by connect_defs_and_decs.  */
 
 static int
-needs_to_be_converted (file_p)
-     const file_info *file_p;
+needs_to_be_converted (const file_info *file_p)
 {
   const def_dec_info *ddp;
 
@@ -877,8 +816,7 @@ needs_to_be_converted (file_p)
    that should be converted.  */
 
 static int
-directory_specified_p (name)
-     const char *name;
+directory_specified_p (const char *name)
 {
   struct string_list *p;
 
@@ -904,8 +842,7 @@ directory_specified_p (name)
 /* Return 1 if the file named NAME should be excluded from conversion.  */
 
 static int
-file_excluded_p (name)
-     const char *name;
+file_excluded_p (const char *name)
 {
   struct string_list *p;
   int len = strlen (name);
@@ -922,12 +859,9 @@ file_excluded_p (name)
    STRING is the new element value, and REST holds the remaining elements.  */
 
 static struct string_list *
-string_list_cons (string, rest)
-     const char *string;
-     struct string_list *rest;
+string_list_cons (const char *string, struct string_list *rest)
 {
-  struct string_list *temp
-    = (struct string_list *) xmalloc (sizeof (struct string_list));
+  struct string_list *temp = xmalloc (sizeof (struct string_list));
 
   temp->next = rest;
   temp->name = string;
@@ -944,9 +878,8 @@ string_list_cons (string, rest)
    argument.  */
 
 static void
-visit_each_hash_node (hash_tab_p, func)
-     const hash_table_entry *hash_tab_p;
-     void (*func) PARAMS ((const hash_table_entry *));
+visit_each_hash_node (const hash_table_entry *hash_tab_p,
+                     void (*func) (const hash_table_entry *))
 {
   const hash_table_entry *primary;
 
@@ -967,9 +900,7 @@ visit_each_hash_node (hash_tab_p, func)
    called.  */
 
 static hash_table_entry *
-add_symbol (p, s)
-     hash_table_entry *p;
-     const char *s;
+add_symbol (hash_table_entry *p, const char *s)
 {
   p->hash_next = NULL;
   p->symbol = xstrdup (s);
@@ -984,9 +915,7 @@ add_symbol (p, s)
    hash table entry for the given name.  */
 
 static hash_table_entry *
-lookup (hash_tab_p, search_symbol)
-     hash_table_entry *hash_tab_p;
-     const char *search_symbol;
+lookup (hash_table_entry *hash_tab_p, const char *search_symbol)
 {
   int hash_value = 0;
   const char *search_symbol_char_p = search_symbol;
@@ -1006,7 +935,7 @@ lookup (hash_tab_p, search_symbol)
       if (!strcmp (p->symbol, search_symbol))
        return p;
     }
-  p->hash_next = (hash_table_entry *) xmalloc (sizeof (hash_table_entry));
+  p->hash_next = xmalloc (sizeof (hash_table_entry));
   p = p->hash_next;
   return add_symbol (p, search_symbol);
 }
@@ -1017,10 +946,9 @@ lookup (hash_tab_p, search_symbol)
    stuff it pointed to.  */
 
 static void
-free_def_dec (p)
-     def_dec_info *p;
+free_def_dec (def_dec_info *p)
 {
-  free ((NONCONST PTR) p->ansi_decl);
+  free ((NONCONST void *) p->ansi_decl);
 
 #ifndef UNPROTOIZE
   {
@@ -1030,7 +958,7 @@ free_def_dec (p)
     for (curr = p->f_list_chain; curr; curr = next)
       {
        next = curr->chain_next;
-       free ((NONCONST PTR) curr);
+       free ((NONCONST void *) curr);
       }
   }
 #endif /* !defined (UNPROTOIZE) */
@@ -1038,14 +966,13 @@ free_def_dec (p)
   free (p);
 }
 
-/* Unexpand as many macro symbol as we can find.
+/* Unexpand as many macro symbols as we can find.
 
    If the given line must be unexpanded, make a copy of it in the heap and
    return a pointer to the unexpanded copy.  Otherwise return NULL.  */
 
 static char *
-unexpand_if_needed (aux_info_line)
-     const char *aux_info_line;
+unexpand_if_needed (const char *aux_info_line)
 {
   static char *line_buf = 0;
   static int line_buf_size = 0;
@@ -1057,7 +984,7 @@ unexpand_if_needed (aux_info_line)
   if (line_buf == 0)
     {
       line_buf_size = 1024;
-      line_buf = (char *) xmalloc (line_buf_size);
+      line_buf = xmalloc (line_buf_size);
     }
 
   copy_p = line_buf;
@@ -1080,7 +1007,7 @@ unexpand_if_needed (aux_info_line)
                  int offset = copy_p - line_buf;
                  line_buf_size *= 2;
                  line_buf_size += size;
-                 line_buf = (char *) xrealloc (line_buf, line_buf_size);
+                 line_buf = xrealloc (line_buf, line_buf_size);
                  copy_p = line_buf + offset;
                }
              strcpy (copy_p, unexp_p->contracted);
@@ -1097,7 +1024,7 @@ unexpand_if_needed (aux_info_line)
        {
          int offset = copy_p - line_buf;
          line_buf_size *= 2;
-         line_buf = (char *) xrealloc (line_buf, line_buf_size);
+         line_buf = xrealloc (line_buf, line_buf_size);
          copy_p = line_buf + offset;
        }
       *copy_p++ = *s++;
@@ -1107,7 +1034,7 @@ continue_outer: ;
     {
       int offset = copy_p - line_buf;
       line_buf_size *= 2;
-      line_buf = (char *) xrealloc (line_buf, line_buf_size);
+      line_buf = xrealloc (line_buf, line_buf_size);
       copy_p = line_buf + offset;
     }
   *copy_p++ = '\n';
@@ -1116,20 +1043,6 @@ continue_outer: ;
   return (got_unexpanded ? savestring (line_buf, copy_p - line_buf) : 0);
 }
 \f
-/* Return 1 if pathname is absolute.  */
-
-static int
-is_abspath (path)
-     const char *path;
-{
-  return (IS_DIR_SEPARATOR (path[0])
-#ifdef HAVE_DOS_BASED_FILE_SYSTEM
-         /* Check for disk name on MS-DOS-based systems.  */
-         || (path[0] && path[1] == ':' && IS_DIR_SEPARATOR (path[2]))
-#endif
-         );
-}
-\f
 /* Return the absolutized filename for the given relative
    filename.  Note that if that filename is already absolute, it may
    still be returned in a modified form because this routine also
@@ -1141,14 +1054,11 @@ is_abspath (path)
    NULL.  */
 
 static char *
-abspath (cwd, rel_filename)
-     const char *cwd;
-     const char *rel_filename;
+abspath (const char *cwd, const char *rel_filename)
 {
   /* Setup the current working directory as needed.  */
   const char *const cwd2 = (cwd) ? cwd : cwd_buffer;
-  char *const abs_buffer
-    = (char *) alloca (strlen (cwd2) + strlen (rel_filename) + 2);
+  char *const abs_buffer = alloca (strlen (cwd2) + strlen (rel_filename) + 2);
   char *endp = abs_buffer;
   char *outp, *inp;
 
@@ -1158,7 +1068,7 @@ abspath (cwd, rel_filename)
   {
     const char *src_p;
 
-    if (! is_abspath (rel_filename))
+    if (! IS_ABSOLUTE_PATH (rel_filename))
       {
        src_p = cwd2;
        while ((*endp++ = *src_p++))
@@ -1260,9 +1170,7 @@ abspath (cwd, rel_filename)
    subpart of the original filename is actually a symbolic link.  */
 
 static const char *
-shortpath (cwd, filename)
-     const char *cwd;
-     const char *filename;
+shortpath (const char *cwd, const char *filename)
 {
   char *rel_buffer;
   char *rel_buf_p;
@@ -1272,7 +1180,7 @@ shortpath (cwd, filename)
   size_t filename_len = strlen (filename);
 
   path_p = abspath (cwd, filename);
-  rel_buf_p = rel_buffer = (char *) xmalloc (filename_len);
+  rel_buf_p = rel_buffer = xmalloc (filename_len);
 
   while (*cwd_p && IS_SAME_PATH_CHAR (*cwd_p, *path_p))
     {
@@ -1349,9 +1257,7 @@ shortpath (cwd, filename)
    That is probably a bug in AIX, but might as well avoid the warning.  */
 
 static file_info *
-find_file (filename, do_not_stat)
-     const char *filename;
-     int do_not_stat;
+find_file (const char *filename, int do_not_stat)
 {
   hash_table_entry *hash_entry_p;
 
@@ -1361,7 +1267,7 @@ find_file (filename, do_not_stat)
   else
     {
       struct stat stat_buf;
-      file_info *file_p = (file_info *) xmalloc (sizeof (file_info));
+      file_info *file_p = xmalloc (sizeof (file_info));
 
       /* If we cannot get status on any given source file, give a warning
         and then just set its time of last modification to infinity.  */
@@ -1392,7 +1298,7 @@ find_file (filename, do_not_stat)
    messed up.  */
 
 static void
-aux_info_corrupted ()
+aux_info_corrupted (void)
 {
   notice ("\n%s: fatal error: aux info file corrupted at line %d\n",
          pname, current_aux_info_lineno);
@@ -1403,8 +1309,7 @@ aux_info_corrupted ()
 /* Check to see that a condition is true.  This is kind of like an assert.  */
 
 static void
-check_aux_info (cond)
-     int cond;
+check_aux_info (int cond)
 {
   if (! cond)
     aux_info_corrupted ();
@@ -1415,8 +1320,7 @@ check_aux_info (cond)
    return a pointer to it.  */
 
 static const char *
-find_corresponding_lparen (p)
-     const char *p;
+find_corresponding_lparen (const char *p)
 {
   const char *q;
   int paren_depth;
@@ -1442,9 +1346,7 @@ find_corresponding_lparen (p)
    file was created.  If so, return nonzero, else return zero.  */
 
 static int
-referenced_file_is_newer (l, aux_info_mtime)
-     const char *l;
-     time_t aux_info_mtime;
+referenced_file_is_newer (const char *l, time_t aux_info_mtime)
 {
   const char *p;
   file_info *fi_p;
@@ -1463,7 +1365,7 @@ referenced_file_is_newer (l, aux_info_mtime)
 #endif
           )
       p++;
-    filename = (char *) alloca ((size_t) (p - filename_start) + 1);
+    filename = alloca ((size_t) (p - filename_start) + 1);
     strncpy (filename, filename_start, (size_t) (p - filename_start));
     filename[p-filename_start] = '\0';
   }
@@ -1494,13 +1396,11 @@ referenced_file_is_newer (l, aux_info_mtime)
    pertaining to this particular function name.  */
 
 static void
-save_def_or_dec (l, is_syscalls)
-     const char *l;
-     int is_syscalls;
+save_def_or_dec (const char *l, int is_syscalls)
 {
   const char *p;
   const char *semicolon_p;
-  def_dec_info *def_dec_p = (def_dec_info *) xmalloc (sizeof (def_dec_info));
+  def_dec_info *def_dec_p = xmalloc (sizeof (def_dec_info));
 
 #ifndef UNPROTOIZE
   def_dec_p->written = 0;
@@ -1525,7 +1425,7 @@ save_def_or_dec (l, is_syscalls)
 #endif
           )
       p++;
-    filename = (char *) alloca ((size_t) (p - filename_start) + 1);
+    filename = alloca ((size_t) (p - filename_start) + 1);
     strncpy (filename, filename_start, (size_t) (p - filename_start));
     filename[p-filename_start] = '\0';
 
@@ -1655,8 +1555,7 @@ save_def_or_dec (l, is_syscalls)
       const char *left_paren_p = find_corresponding_lparen (p);
 #ifndef UNPROTOIZE
       {
-       f_list_chain_item *cip
-         = (f_list_chain_item *) xmalloc (sizeof (f_list_chain_item));
+       f_list_chain_item *cip = xmalloc (sizeof (f_list_chain_item));
 
        cip->formals_list
          = dupnstr (left_paren_p + 1, (size_t) (p - (left_paren_p+1)));
@@ -1698,7 +1597,7 @@ save_def_or_dec (l, is_syscalls)
     /* p now points to the leftmost character of the function name.  */
 
     {
-      char *fn_string = (char *) alloca (past_fn - p + 1);
+      char *fn_string = alloca (past_fn - p + 1);
 
       strncpy (fn_string, p, (size_t) (past_fn - p));
       fn_string[past_fn-p] = '\0';
@@ -1730,7 +1629,7 @@ save_def_or_dec (l, is_syscalls)
          {
            if (strcmp (def_dec_p->ansi_decl, other->ansi_decl))
              {
-               notice ("%s:%d: declaration of function `%s' takes different forms\n",
+               notice ("%s:%d: declaration of function '%s' takes different forms\n",
                        def_dec_p->file->hash_entry->symbol,
                        def_dec_p->line,
                        def_dec_p->hash_entry->symbol);
@@ -1889,13 +1788,12 @@ save_def_or_dec (l, is_syscalls)
    and adding '-aux-info AUXFILE -S  -o /dev/null INFILE' at the end.  */
 
 static void
-munge_compile_params (params_list)
-     const char *params_list;
+munge_compile_params (const char *params_list)
 {
   /* Build up the contents in a temporary vector
      that is so big that to has to be big enough.  */
   const char **temp_params
-    = (const char **) alloca ((strlen (params_list) + 8) * sizeof (char *));
+    = alloca ((strlen (params_list) + 8) * sizeof (char *));
   int param_count = 0;
   const char *param;
   struct stat st;
@@ -1964,8 +1862,7 @@ munge_compile_params (params_list)
 
   /* Make a copy of the compile_params in heap space.  */
 
-  compile_params
-    = (const char **) xmalloc (sizeof (char *) * (param_count+1));
+  compile_params = xmalloc (sizeof (char *) * (param_count+1));
   memcpy (compile_params, temp_params, sizeof (char *) * param_count);
 }
 
@@ -1975,8 +1872,7 @@ munge_compile_params (params_list)
    The result is a boolean indicating success.  */
 
 static int
-gen_aux_info_file (base_filename)
-     const char *base_filename;
+gen_aux_info_file (const char *base_filename)
 {
   if (!input_file_name_index)
     munge_compile_params ("");
@@ -1988,7 +1884,7 @@ gen_aux_info_file (base_filename)
     concat (compile_params[input_file_name_index], aux_info_suffix, NULL);
 
   if (!quiet_flag)
-    notice ("%s: compiling `%s'\n",
+    notice ("%s: compiling '%s'\n",
            pname, compile_params[input_file_name_index]);
 
   {
@@ -2030,7 +1926,7 @@ gen_aux_info_file (base_filename)
          }
        return 1;
       }
-    abort ();
+    gcc_unreachable ();
   }
 }
 \f
@@ -2038,14 +1934,11 @@ gen_aux_info_file (base_filename)
    Save all of the important stuff for later.  */
 
 static void
-process_aux_info_file (base_source_filename, keep_it, is_syscalls)
-     const char *base_source_filename;
-     int keep_it;
-     int is_syscalls;
+process_aux_info_file (const char *base_source_filename, int keep_it,
+                      int is_syscalls)
 {
   size_t base_len = strlen (base_source_filename);
-  char * aux_info_filename
-    = (char *) alloca (base_len + strlen (aux_info_suffix) + 1);
+  char * aux_info_filename = alloca (base_len + strlen (aux_info_suffix) + 1);
   char *aux_info_base;
   char *aux_info_limit;
   char *aux_info_relocated_name;
@@ -2076,7 +1969,7 @@ start_over: ;
        {
          if (is_syscalls)
            {
-             notice ("%s: warning: missing SYSCALLS file `%s'\n",
+             notice ("%s: warning: missing SYSCALLS file '%s'\n",
                      pname, aux_info_filename);
              return;
            }
@@ -2085,7 +1978,7 @@ start_over: ;
       else
        {
          int errno_val = errno;
-         notice ("%s: can't read aux info file `%s': %s\n",
+         notice ("%s: can't read aux info file '%s': %s\n",
                  pname, shortpath (NULL, aux_info_filename),
                  xstrerror (errno_val));
          errors++;
@@ -2114,7 +2007,7 @@ start_over: ;
       if (access (aux_info_filename, R_OK) == -1)
        {
          int errno_val = errno;
-         notice ("%s: can't read aux info file `%s': %s\n",
+         notice ("%s: can't read aux info file '%s': %s\n",
                  pname, shortpath (NULL, aux_info_filename),
                  xstrerror (errno_val));
          errors++;
@@ -2130,7 +2023,7 @@ start_over: ;
     if (stat (aux_info_filename, &stat_buf) == -1)
       {
        int errno_val = errno;
-       notice ("%s: can't get status of aux info file `%s': %s\n",
+       notice ("%s: can't get status of aux info file '%s': %s\n",
                pname, shortpath (NULL, aux_info_filename),
                xstrerror (errno_val));
        errors++;
@@ -2158,7 +2051,7 @@ start_over: ;
        if (stat (base_source_filename, &stat_buf) == -1)
          {
            int errno_val = errno;
-           notice ("%s: can't get status of aux info file `%s': %s\n",
+           notice ("%s: can't get status of aux info file '%s': %s\n",
                    pname, shortpath (NULL, base_source_filename),
                    xstrerror (errno_val));
            errors++;
@@ -2186,7 +2079,7 @@ start_over: ;
     if ((aux_info_file = open (aux_info_filename, fd_flags, 0444 )) == -1)
       {
        int errno_val = errno;
-       notice ("%s: can't open aux info file `%s' for reading: %s\n",
+       notice ("%s: can't open aux info file '%s' for reading: %s\n",
                pname, shortpath (NULL, aux_info_filename),
                xstrerror (errno_val));
        return;
@@ -2204,7 +2097,7 @@ start_over: ;
        (int) aux_info_size)
       {
        int errno_val = errno;
-       notice ("%s: error reading aux info file `%s': %s\n",
+       notice ("%s: error reading aux info file '%s': %s\n",
                pname, shortpath (NULL, aux_info_filename),
                xstrerror (errno_val));
        free (aux_info_base);
@@ -2217,7 +2110,7 @@ start_over: ;
     if (close (aux_info_file))
       {
        int errno_val = errno;
-       notice ("%s: error closing aux info file `%s': %s\n",
+       notice ("%s: error closing aux info file '%s': %s\n",
                pname, shortpath (NULL, aux_info_filename),
                xstrerror (errno_val));
        free (aux_info_base);
@@ -2233,7 +2126,7 @@ start_over: ;
     if (unlink (aux_info_filename) == -1)
       {
        int errno_val = errno;
-       notice ("%s: can't delete aux info file `%s': %s\n",
+       notice ("%s: can't delete aux info file '%s': %s\n",
                pname, shortpath (NULL, aux_info_filename),
                xstrerror (errno_val));
       }
@@ -2266,7 +2159,7 @@ start_over: ;
       continue;
     aux_info_second_line = p;
     aux_info_relocated_name = 0;
-    if (! is_abspath (invocation_filename))
+    if (! IS_ABSOLUTE_PATH (invocation_filename))
       {
        /* INVOCATION_FILENAME is relative;
           append it to BASE_SOURCE_FILENAME's dir.  */
@@ -2315,7 +2208,7 @@ start_over: ;
                if (keep_it && unlink (aux_info_filename) == -1)
                  {
                    int errno_val = errno;
-                   notice ("%s: can't delete file `%s': %s\n",
+                   notice ("%s: can't delete file '%s': %s\n",
                            pname, shortpath (NULL, aux_info_filename),
                            xstrerror (errno_val));
                    return;
@@ -2370,13 +2263,12 @@ start_over: ;
    function implements the -C option.  */
 
 static void
-rename_c_file (hp)
-     const hash_table_entry *hp;
+rename_c_file (const hash_table_entry *hp)
 {
   const char *filename = hp->symbol;
   int last_char_index = strlen (filename) - 1;
-  char *const new_filename = (char *) alloca (strlen (filename)
-                                             + strlen (cplus_suffix) + 1);
+  char *const new_filename = alloca (strlen (filename)
+                                    + strlen (cplus_suffix) + 1);
 
   /* Note that we don't care here if the given file was converted or not.  It
      is possible that the given file was *not* converted, simply because there
@@ -2394,7 +2286,7 @@ rename_c_file (hp)
   if (rename (filename, new_filename) == -1)
     {
       int errno_val = errno;
-      notice ("%s: warning: can't rename file `%s' to `%s': %s\n",
+      notice ("%s: warning: can't rename file '%s' to '%s': %s\n",
              pname, shortpath (NULL, filename),
              shortpath (NULL, new_filename), xstrerror (errno_val));
       errors++;
@@ -2413,8 +2305,7 @@ rename_c_file (hp)
    order here.  */
 
 static void
-reverse_def_dec_list (hp)
-     const hash_table_entry *hp;
+reverse_def_dec_list (const hash_table_entry *hp)
 {
   file_info *file_p = hp->fip;
   def_dec_info *prev = NULL;
@@ -2455,9 +2346,7 @@ reverse_def_dec_list (hp)
    contains all of the correct prototypes for system functions.  */
 
 static const def_dec_info *
-find_extern_def (head, user)
-     const def_dec_info *head;
-     const def_dec_info *user;
+find_extern_def (const def_dec_info *head, const def_dec_info *user)
 {
   const def_dec_info *dd_p;
   const def_dec_info *extern_def_p = NULL;
@@ -2558,7 +2447,7 @@ find_extern_def (head, user)
          {
            extern_def_p = dd_p;        /* save a pointer to the definition */
            if (!quiet_flag)
-             notice ("%s: warning: using formals list from %s(%d) for function `%s'\n",
+             notice ("%s: warning: using formals list from %s(%d) for function '%s'\n",
                      pname,
                      shortpath (NULL, dd_p->file->hash_entry->symbol),
                      dd_p->line, dd_p->hash_entry->symbol);
@@ -2586,11 +2475,11 @@ find_extern_def (head, user)
              {
                /* Why copy this string into `needed' at all?
                   Why not just use user->ansi_decl without copying?  */
-               char *needed = (char *) alloca (strlen (user->ansi_decl) + 1);
+               char *needed = alloca (strlen (user->ansi_decl) + 1);
                char *p;
 
                strcpy (needed, user->ansi_decl);
-               p = (NONCONST char *) substr (needed, user->hash_entry->symbol)
+               p = strstr (needed, user->hash_entry->symbol)
                    + strlen (user->hash_entry->symbol) + 2;
                /* Avoid having ??? in the string.  */
                *p++ = '?';
@@ -2598,13 +2487,13 @@ find_extern_def (head, user)
                *p++ = '?';
                strcpy (p, ");");
 
-               notice ("%s: %d: `%s' used but missing from SYSCALLS\n",
+               notice ("%s: %d: '%s' used but missing from SYSCALLS\n",
                        shortpath (NULL, file), user->line,
                        needed+7);      /* Don't print "extern " */
              }
 #if 0
            else
-             notice ("%s: %d: warning: no extern definition for `%s'\n",
+             notice ("%s: %d: warning: no extern definition for '%s'\n",
                      shortpath (NULL, file), user->line,
                      user->hash_entry->symbol);
 #endif
@@ -2618,8 +2507,7 @@ find_extern_def (head, user)
    from the def_dec_info record pointer which is passed in.  */
 
 static const def_dec_info *
-find_static_definition (user)
-     const def_dec_info *user;
+find_static_definition (const def_dec_info *user)
 {
   const def_dec_info *head = user->hash_entry->ddip;
   const def_dec_info *dd_p;
@@ -2635,13 +2523,13 @@ find_static_definition (user)
   if (num_static_defs == 0)
     {
       if (!quiet_flag)
-       notice ("%s: warning: no static definition for `%s' in file `%s'\n",
+       notice ("%s: warning: no static definition for '%s' in file '%s'\n",
                pname, head->hash_entry->symbol,
                shortpath (NULL, user->file->hash_entry->symbol));
     }
   else if (num_static_defs > 1)
     {
-      notice ("%s: multiple static defs of `%s' in file `%s'\n",
+      notice ("%s: multiple static defs of '%s' in file '%s'\n",
              pname, head->hash_entry->symbol,
              shortpath (NULL, user->file->hash_entry->symbol));
       return NULL;
@@ -2668,8 +2556,7 @@ find_static_definition (user)
    more details.  */
 
 static void
-connect_defs_and_decs (hp)
-     const hash_table_entry *hp;
+connect_defs_and_decs (const hash_table_entry *hp)
 {
   const def_dec_info *dd_p;
   const def_dec_info *extern_def_p = NULL;
@@ -2793,8 +2680,7 @@ connect_defs_and_decs (hp)
    original source line number that the given pointer points into.  */
 
 static int
-identify_lineno (clean_p)
-     const char *clean_p;
+identify_lineno (const char *clean_p)
 {
   int line_num = 1;
   const char *scan_p;
@@ -2808,8 +2694,7 @@ identify_lineno (clean_p)
 /* Issue an error message and give up on doing this particular edit.  */
 
 static void
-declare_source_confusing (clean_p)
-     const char *clean_p;
+declare_source_confusing (const char *clean_p)
 {
   if (!quiet_flag)
     {
@@ -2829,9 +2714,7 @@ declare_source_confusing (clean_p)
    converting this particular source file.  */
 
 static void
-check_source (cond, clean_p)
-     int cond;
-     const char *clean_p;
+check_source (int cond, const char *clean_p)
 {
   if (!cond)
     declare_source_confusing (clean_p);
@@ -2853,11 +2736,9 @@ check_source (cond, clean_p)
    of the in-core cleaned buffer again.  */
 
 static const char *
-seek_to_line (n)
-     int n;
+seek_to_line (int n)
 {
-  if (n < last_known_line_number)
-    abort ();
+  gcc_assert (n >= last_known_line_number);
 
   while (n > last_known_line_number)
     {
@@ -2873,8 +2754,7 @@ seek_to_line (n)
    to the next non-whitespace character which follows it.  */
 
 static const char *
-forward_to_next_token_char (ptr)
-     const char *ptr;
+forward_to_next_token_char (const char *ptr)
 {
   for (++ptr; ISSPACE ((const unsigned char)*ptr);
        check_source (++ptr < clean_text_limit, 0))
@@ -2887,14 +2767,12 @@ forward_to_next_token_char (ptr)
    buffer ultimately go through here.  */
 
 static void
-output_bytes (str, len)
-     const char *str;
-     size_t len;
+output_bytes (const char *str, size_t len)
 {
   if ((repl_write_ptr + 1) + len >= repl_text_limit)
     {
       size_t new_size = (repl_text_limit - repl_text_base) << 1;
-      char *new_buf = (char *) xrealloc (repl_text_base, new_size);
+      char *new_buf = xrealloc (repl_text_base, new_size);
 
       repl_write_ptr = new_buf + (repl_write_ptr - repl_text_base);
       repl_text_base = new_buf;
@@ -2908,8 +2786,7 @@ output_bytes (str, len)
    the current output buffer.  */
 
 static void
-output_string (str)
-     const char *str;
+output_string (const char *str)
 {
   output_bytes (str, strlen (str));
 }
@@ -2934,8 +2811,7 @@ output_string (str)
    byte pointed to by the argument pointer `p'.  */
 
 static void
-output_up_to (p)
-     const char *p;
+output_up_to (const char *p)
 {
   size_t copy_length = (size_t) (p - clean_read_ptr);
   const char *copy_start = orig_text_base+(clean_read_ptr-clean_text_base)+1;
@@ -2954,15 +2830,14 @@ output_up_to (p)
    otherwise.  */
 
 static int
-other_variable_style_function (ansi_header)
-     const char *ansi_header;
+other_variable_style_function (const char *ansi_header)
 {
 #ifdef UNPROTOIZE
 
   /* See if we have a stdarg function, or a function which has stdarg style
      parameters or a stdarg style return type.  */
 
-  return substr (ansi_header, "...") != 0;
+  return strstr (ansi_header, "...") != 0;
 
 #else /* !defined (UNPROTOIZE) */
 
@@ -2976,7 +2851,7 @@ other_variable_style_function (ansi_header)
     {
       const char *candidate;
 
-      if ((candidate = substr (p, varargs_style_indicator)) == 0)
+      if ((candidate = strstr (p, varargs_style_indicator)) == 0)
        return 0;
       else
        if (!is_id_char (candidate[-1]) && !is_id_char (candidate[len]))
@@ -2993,9 +2868,8 @@ other_variable_style_function (ansi_header)
    below.  */
 
 static void
-edit_fn_declaration (def_dec_p, clean_text_p)
-     const def_dec_info *def_dec_p;
-     const char *volatile clean_text_p;
+edit_fn_declaration (const def_dec_info *def_dec_p,
+                    const char *volatile clean_text_p)
 {
   const char *start_formals;
   const char *end_formals;
@@ -3038,7 +2912,7 @@ edit_fn_declaration (def_dec_p, clean_text_p)
   if (setjmp (source_confusion_recovery))
     {
       restore_pointers ();
-      notice ("%s: declaration of function `%s' not converted\n",
+      notice ("%s: declaration of function '%s' not converted\n",
              pname, function_to_edit);
       return;
     }
@@ -3161,7 +3035,7 @@ edit_fn_declaration (def_dec_p, clean_text_p)
       else
        {
          if (!quiet_flag)
-           notice ("%s: warning: too many parameter lists in declaration of `%s'\n",
+           notice ("%s: warning: too many parameter lists in declaration of '%s'\n",
                    pname, def_dec_p->hash_entry->symbol);
          check_source (0, end_formals);  /* leave the declaration intact */
        }
@@ -3182,7 +3056,7 @@ edit_fn_declaration (def_dec_p, clean_text_p)
            if (this_f_list_chain_item)
              {
                if (!quiet_flag)
-                 notice ("\n%s: warning: too few parameter lists in declaration of `%s'\n",
+                 notice ("\n%s: warning: too few parameter lists in declaration of '%s'\n",
                          pname, def_dec_p->hash_entry->symbol);
                check_source (0, start_formals); /* leave the decl intact */
              }
@@ -3209,10 +3083,8 @@ edit_fn_declaration (def_dec_p, clean_text_p)
    function doesn't match the one expected).  */
 
 static int
-edit_formals_lists (end_formals, f_list_count, def_dec_p)
-     const char *end_formals;
-     unsigned int f_list_count;
-     const def_dec_info *def_dec_p;
+edit_formals_lists (const char *end_formals, unsigned int f_list_count,
+                   const def_dec_info *def_dec_p)
 {
   const char *start_formals;
   int depth;
@@ -3280,7 +3152,7 @@ edit_formals_lists (end_formals, f_list_count, def_dec_p)
       if (func_name_len != strlen (expected)
          || strncmp (func_name_start, expected, func_name_len))
        {
-         notice ("%s: %d: warning: found `%s' but expected `%s'\n",
+         notice ("%s: %d: warning: found '%s' but expected '%s'\n",
                  shortpath (NULL, def_dec_p->file->hash_entry->symbol),
                  identify_lineno (func_name_start),
                  dupnstr (func_name_start, func_name_len),
@@ -3320,8 +3192,7 @@ edit_formals_lists (end_formals, f_list_count, def_dec_p)
    definition header.  */
 
 static const char *
-find_rightmost_formals_list (clean_text_p)
-     const char *clean_text_p;
+find_rightmost_formals_list (const char *clean_text_p)
 {
   const char *end_formals;
 
@@ -3438,9 +3309,7 @@ find_rightmost_formals_list (clean_text_p)
    parameter type checking.  */
 
 static void
-add_local_decl (def_dec_p, clean_text_p)
-     const def_dec_info *def_dec_p;
-     const char *clean_text_p;
+add_local_decl (const def_dec_info *def_dec_p, const char *clean_text_p)
 {
   const char *start_of_block;
   const char *function_to_edit = def_dec_p->hash_entry->symbol;
@@ -3458,7 +3327,7 @@ add_local_decl (def_dec_p, clean_text_p)
   if (setjmp (source_confusion_recovery))
     {
       restore_pointers ();
-      notice ("%s: local declaration for function `%s' not inserted\n",
+      notice ("%s: local declaration for function '%s' not inserted\n",
              pname, function_to_edit);
       return;
     }
@@ -3485,7 +3354,7 @@ add_local_decl (def_dec_p, clean_text_p)
   if (*start_of_block != '{')
     {
       if (!quiet_flag)
-       notice ("\n%s: %d: warning: can't add declaration of `%s' into macro call\n",
+       notice ("\n%s: %d: warning: can't add declaration of '%s' into macro call\n",
          def_dec_p->file->hash_entry->symbol, def_dec_p->line,
          def_dec_p->hash_entry->symbol);
       return;
@@ -3545,9 +3414,7 @@ add_local_decl (def_dec_p, clean_text_p)
    and then insert the new explicit declaration at that point in the file.  */
 
 static void
-add_global_decls (file_p, clean_text_p)
-     const file_info *file_p;
-     const char *clean_text_p;
+add_global_decls (const file_info *file_p, const char *clean_text_p)
 {
   const def_dec_info *dd_p;
   const char *scan_p;
@@ -3559,7 +3426,7 @@ add_global_decls (file_p, clean_text_p)
   if (setjmp (source_confusion_recovery))
     {
       restore_pointers ();
-      notice ("%s: global declarations for file `%s' not inserted\n",
+      notice ("%s: global declarations for file '%s' not inserted\n",
              pname, shortpath (NULL, file_p->hash_entry->symbol));
       return;
     }
@@ -3636,9 +3503,7 @@ add_global_decls (file_p, clean_text_p)
    separate routine above.  */
 
 static void
-edit_fn_definition (def_dec_p, clean_text_p)
-     const def_dec_info *def_dec_p;
-     const char *clean_text_p;
+edit_fn_definition (const def_dec_info *def_dec_p, const char *clean_text_p)
 {
   const char *end_formals;
   const char *function_to_edit = def_dec_p->hash_entry->symbol;
@@ -3650,7 +3515,7 @@ edit_fn_definition (def_dec_p, clean_text_p)
   if (setjmp (source_confusion_recovery))
     {
       restore_pointers ();
-      notice ("%s: definition of function `%s' not converted\n",
+      notice ("%s: definition of function '%s' not converted\n",
              pname, function_to_edit);
       return;
     }
@@ -3680,7 +3545,7 @@ edit_fn_definition (def_dec_p, clean_text_p)
   if (edit_formals_lists (end_formals, def_dec_p->f_list_count, def_dec_p))
     {
       restore_pointers ();
-      notice ("%s: definition of function `%s' not converted\n",
+      notice ("%s: definition of function '%s' not converted\n",
              pname, function_to_edit);
       return;
     }
@@ -3780,9 +3645,7 @@ edit_fn_definition (def_dec_p, clean_text_p)
    into whitespace.  Also, whiteout string and character literals.  */
 
 static void
-do_cleaning (new_clean_text_base, new_clean_text_limit)
-     char *new_clean_text_base;
-     const char *new_clean_text_limit;
+do_cleaning (char *new_clean_text_base, const char *new_clean_text_limit)
 {
   char *scan_p;
   int non_whitespace_since_newline = 0;
@@ -3802,8 +3665,8 @@ do_cleaning (new_clean_text_base, new_clean_text_limit)
            {
              if (!ISSPACE ((const unsigned char)*scan_p))
                *scan_p = ' ';
-             if (++scan_p >= new_clean_text_limit)
-               abort ();
+             ++scan_p;
+             gcc_assert (scan_p < new_clean_text_limit);
            }
          *scan_p++ = ' ';
          *scan_p = ' ';
@@ -3817,8 +3680,8 @@ do_cleaning (new_clean_text_base, new_clean_text_limit)
            {
              if (!ISSPACE ((const unsigned char)*scan_p))
                *scan_p = ' ';
-             if (++scan_p >= new_clean_text_limit)
-               abort ();
+             ++scan_p;
+             gcc_assert (scan_p < new_clean_text_limit);
            }
          *scan_p++ = ' ';
          break;
@@ -3832,8 +3695,8 @@ do_cleaning (new_clean_text_base, new_clean_text_limit)
                scan_p[1] = ' ';
              if (!ISSPACE ((const unsigned char)*scan_p))
                *scan_p = ' ';
-             if (++scan_p >= new_clean_text_limit)
-               abort ();
+             ++scan_p;
+             gcc_assert (scan_p < new_clean_text_limit);
            }
          *scan_p++ = ' ';
          break;
@@ -3847,8 +3710,8 @@ do_cleaning (new_clean_text_base, new_clean_text_limit)
                scan_p[1] = ' ';
              if (!ISSPACE ((const unsigned char)*scan_p))
                *scan_p = ' ';
-             if (++scan_p >= new_clean_text_limit)
-               abort ();
+             ++scan_p;
+             gcc_assert (scan_p < new_clean_text_limit);
            }
          if (!ISSPACE ((const unsigned char)*scan_p))
            *scan_p = ' ';
@@ -3886,8 +3749,7 @@ regular:
    and return a pointer to it.  */
 
 static const char *
-careful_find_l_paren (p)
-     const char *p;
+careful_find_l_paren (const char *p)
 {
   const char *q;
   int paren_depth;
@@ -3925,8 +3787,7 @@ careful_find_l_paren (p)
    I will probably try to do this in a later version though.  */
 
 static void
-scan_for_missed_items (file_p)
-     const file_info *file_p;
+scan_for_missed_items (const file_info *file_p)
 {
   static const char *scan_p;
   const char *limit = clean_text_limit - 3;
@@ -3983,7 +3844,7 @@ scan_for_missed_items (file_p)
                    goto not_missed;
 
                  {
-                   char *func_name = (char *) alloca (id_length + 1);
+                   char *func_name = alloca (id_length + 1);
                    static const char * const stmt_keywords[]
                      = { "if", "else", "do", "while", "for", "switch", "case", "return", 0 };
                    const char * const *stmt_keyword;
@@ -3999,7 +3860,7 @@ scan_for_missed_items (file_p)
                        goto not_missed;
 
 #if 0
-                   notice ("%s: found definition of `%s' at %s(%d)\n",
+                   notice ("%s: found definition of '%s' at %s(%d)\n",
                            pname,
                            func_name,
                            shortpath (NULL, file_p->hash_entry->symbol),
@@ -4015,7 +3876,7 @@ scan_for_missed_items (file_p)
                    /* If we make it here, then we did not know about this
                       function definition.  */
 
-                   notice ("%s: %d: warning: `%s' excluded by preprocessing\n",
+                   notice ("%s: %d: warning: '%s' excluded by preprocessing\n",
                            shortpath (NULL, file_p->hash_entry->symbol),
                            identify_lineno (id_start), func_name);
                    notice ("%s: function definition not converted\n",
@@ -4041,8 +3902,7 @@ scan_for_missed_items (file_p)
    preprocessing directives make the editing a whole lot easier.  */
 
 static void
-edit_file (hp)
-     const hash_table_entry *hp;
+edit_file (const hash_table_entry *hp)
 {
   struct stat stat_buf;
   const file_info *file_p = hp->fip;
@@ -4077,7 +3937,7 @@ edit_file (hp)
          && !in_system_include_dir (convert_filename)
 #endif /* defined (UNPROTOIZE) */
          )
-       notice ("%s: `%s' not converted\n",
+       notice ("%s: '%s' not converted\n",
                pname, shortpath (NULL, convert_filename));
       return;
     }
@@ -4085,10 +3945,10 @@ edit_file (hp)
   /* Let the user know what we are up to.  */
 
   if (nochange_flag)
-    notice ("%s: would convert file `%s'\n",
+    notice ("%s: would convert file '%s'\n",
            pname, shortpath (NULL, convert_filename));
   else
-    notice ("%s: converting file `%s'\n",
+    notice ("%s: converting file '%s'\n",
            pname, shortpath (NULL, convert_filename));
   fflush (stderr);
 
@@ -4098,7 +3958,7 @@ edit_file (hp)
   if (stat (convert_filename, &stat_buf) == -1)
     {
       int errno_val = errno;
-      notice ("%s: can't get status for file `%s': %s\n",
+      notice ("%s: can't get status for file '%s': %s\n",
              pname, shortpath (NULL, convert_filename),
              xstrerror (errno_val));
       return;
@@ -4107,12 +3967,12 @@ edit_file (hp)
 
   /* Allocate a buffer to hold the original text.  */
 
-  orig_text_base = new_orig_text_base = (char *) xmalloc (orig_size + 2);
+  orig_text_base = new_orig_text_base = xmalloc (orig_size + 2);
   orig_text_limit = new_orig_text_limit = new_orig_text_base + orig_size;
 
   /* Allocate a buffer to hold the cleaned-up version of the original text.  */
 
-  clean_text_base = new_clean_text_base = (char *) xmalloc (orig_size + 2);
+  clean_text_base = new_clean_text_base = xmalloc (orig_size + 2);
   clean_text_limit = new_clean_text_limit = new_clean_text_base + orig_size;
   clean_read_ptr = clean_text_base - 1;
 
@@ -4122,7 +3982,7 @@ edit_file (hp)
      buffer can be expanded later as needed.  */
 
   repl_size = orig_size + (orig_size >> 2) + 4096;
-  repl_text_base = (char *) xmalloc (repl_size + 2);
+  repl_text_base = xmalloc (repl_size + 2);
   repl_text_limit = repl_text_base + repl_size - 1;
   repl_write_ptr = repl_text_base - 1;
 
@@ -4140,7 +4000,7 @@ edit_file (hp)
     if ((input_file = open (convert_filename, fd_flags, 0444)) == -1)
       {
        int errno_val = errno;
-       notice ("%s: can't open file `%s' for reading: %s\n",
+       notice ("%s: can't open file '%s' for reading: %s\n",
                pname, shortpath (NULL, convert_filename),
                xstrerror (errno_val));
        return;
@@ -4155,7 +4015,7 @@ edit_file (hp)
       {
        int errno_val = errno;
        close (input_file);
-       notice ("\n%s: error reading input file `%s': %s\n",
+       notice ("\n%s: error reading input file '%s': %s\n",
                pname, shortpath (NULL, convert_filename),
                xstrerror (errno_val));
        return;
@@ -4180,7 +4040,7 @@ edit_file (hp)
   {
     int clean_file;
     size_t clean_size = orig_text_limit - orig_text_base;
-    char *const clean_filename = (char *) alloca (strlen (convert_filename) + 6 + 1);
+    char *const clean_filename = alloca (strlen (convert_filename) + 6 + 1);
 
     /* Open (and create) the clean file.  */
 
@@ -4189,7 +4049,7 @@ edit_file (hp)
     if ((clean_file = creat (clean_filename, 0666)) == -1)
       {
        int errno_val = errno;
-       notice ("%s: can't create/open clean file `%s': %s\n",
+       notice ("%s: can't create/open clean file '%s': %s\n",
                pname, shortpath (NULL, clean_filename),
                xstrerror (errno_val));
        return;
@@ -4280,7 +4140,7 @@ edit_file (hp)
   if (!nosave_flag)
     {
       char *new_filename
-       = (char *) xmalloc (strlen (convert_filename) + strlen (save_suffix) + 2);
+       = xmalloc (strlen (convert_filename) + strlen (save_suffix) + 2);
 
       strcpy (new_filename, convert_filename);
 #ifdef __MSDOS__
@@ -4294,7 +4154,7 @@ edit_file (hp)
       if (access (new_filename, F_OK) == 0)
        {
          if (!quiet_flag)
-           notice ("%s: warning: file `%s' already saved in `%s'\n",
+           notice ("%s: warning: file '%s' already saved in '%s'\n",
                    pname,
                    shortpath (NULL, convert_filename),
                    shortpath (NULL, new_filename));
@@ -4302,7 +4162,7 @@ edit_file (hp)
       else if (rename (convert_filename, new_filename) == -1)
        {
          int errno_val = errno;
-         notice ("%s: can't link file `%s' to `%s': %s\n",
+         notice ("%s: can't link file '%s' to '%s': %s\n",
                  pname,
                  shortpath (NULL, convert_filename),
                  shortpath (NULL, new_filename),
@@ -4317,7 +4177,7 @@ edit_file (hp)
       /* The file may have already been renamed.  */
       if (errno_val != ENOENT)
        {
-         notice ("%s: can't delete file `%s': %s\n",
+         notice ("%s: can't delete file '%s': %s\n",
                  pname, shortpath (NULL, convert_filename),
                  xstrerror (errno_val));
          return;
@@ -4332,7 +4192,7 @@ edit_file (hp)
     if ((output_file = creat (convert_filename, 0666)) == -1)
       {
        int errno_val = errno;
-       notice ("%s: can't create/open output file `%s': %s\n",
+       notice ("%s: can't create/open output file '%s': %s\n",
                pname, shortpath (NULL, convert_filename),
                xstrerror (errno_val));
        return;
@@ -4365,7 +4225,7 @@ edit_file (hp)
   if (chmod (convert_filename, stat_buf.st_mode) == -1)
     {
       int errno_val = errno;
-      notice ("%s: can't change mode of file `%s': %s\n",
+      notice ("%s: can't change mode of file '%s': %s\n",
              pname, shortpath (NULL, convert_filename),
              xstrerror (errno_val));
     }
@@ -4381,7 +4241,7 @@ edit_file (hp)
    in the command line.  */
 
 static void
-do_processing ()
+do_processing (void)
 {
   const char * const *base_pp;
   const char * const * const end_pps
@@ -4407,8 +4267,8 @@ do_processing ()
   if (nondefault_syscalls_dir)
     {
       syscalls_absolute_filename
-       = (char *) xmalloc (strlen (nondefault_syscalls_dir) + 1
-                           + sizeof (syscalls_filename));
+       = xmalloc (strlen (nondefault_syscalls_dir) + 1
+                  + sizeof (syscalls_filename));
       strcpy (syscalls_absolute_filename, nondefault_syscalls_dir);
     }
   else
@@ -4419,10 +4279,10 @@ do_processing ()
          default_syscalls_dir = standard_exec_prefix;
        }
       syscalls_absolute_filename
-       = (char *) xmalloc (strlen (default_syscalls_dir) + 0
-                           + strlen (target_machine) + 1
-                           + strlen (target_version) + 1
-                           + sizeof (syscalls_filename));
+       = xmalloc (strlen (default_syscalls_dir) + 0
+                  + strlen (target_machine) + 1
+                  + strlen (target_version) + 1
+                  + sizeof (syscalls_filename));
       strcpy (syscalls_absolute_filename, default_syscalls_dir);
       strcat (syscalls_absolute_filename, target_machine);
       strcat (syscalls_absolute_filename, "/");
@@ -4506,12 +4366,10 @@ static const struct option longopts[] =
   {0, 0, 0, 0}
 };
 
-extern int main PARAMS ((int, char **const));
+extern int main (int, char **const);
 
 int
-main (argc, argv)
-     int argc;
-     char **const argv;
+main (int argc, char **const argv)
 {
   int longind;
   int c;
@@ -4535,6 +4393,9 @@ main (argc, argv)
   signal (SIGCHLD, SIG_DFL);
 #endif
 
+  /* Unlock the stdio streams.  */
+  unlock_std_streams ();
+
   gcc_init_libintl ();
 
   cwd_buffer = getpwd ();
@@ -4627,7 +4488,7 @@ main (argc, argv)
   /* Now actually make a list of the base source filenames.  */
 
   base_source_filenames
-    = (const char **) xmalloc ((n_base_source_files + 1) * sizeof (char *));
+    = xmalloc ((n_base_source_files + 1) * sizeof (char *));
   n_base_source_files = 0;
   for (; optind < argc; optind++)
     {