summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2006-04-07 01:43:44 +0000
committerPaul Smith <psmith@gnu.org>2006-04-07 01:43:44 +0000
commitf222b19158a91b121af29a6a8eb5d74aa591078a (patch)
treedffe00254df4fae89052c3a7af1eb0c92392d03f
parent776d8b7bc2ff83f8ebf5d357ec89e3bbe6d83962 (diff)
downloadgunmake-f222b19158a91b121af29a6a8eb5d74aa591078a.tar.gz
Code cleanup: Remove all references to PARAMS() & ansi2knr.
-rw-r--r--ChangeLog17
-rw-r--r--Makefile.am2
-rw-r--r--NEWS6
-rw-r--r--amiga.h5
-rw-r--r--ar.c10
-rw-r--r--arscan.c2
-rw-r--r--commands.c4
-rw-r--r--commands.h10
-rw-r--r--config.h-vms.template8
-rw-r--r--configure.in5
-rw-r--r--dep.h30
-rw-r--r--dir.c12
-rw-r--r--expand.c2
-rw-r--r--filedef.h31
-rw-r--r--function.c4
-rw-r--r--implicit.c5
-rw-r--r--job.c48
-rw-r--r--job.h24
-rw-r--r--main.c46
-rw-r--r--make.h169
-rw-r--r--read.c43
-rw-r--r--remake.c17
-rw-r--r--rule.c2
-rw-r--r--rule.h16
-rw-r--r--variable.h90
-rw-r--r--vmsdir.h9
-rw-r--r--vmsjobs.c2
-rw-r--r--vpath.c3
28 files changed, 314 insertions, 308 deletions
diff --git a/ChangeLog b/ChangeLog
index df6a509..358d654 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2006-04-06 Paul D. Smith <psmith@gnu.org>
+
+ * configure.in: Removed AM_C_PROTOTYPES. Starting now on we
+ require an ISO C 1989 standard compiler and runtime library.
+
+ * Makefile.am: Remove the ansi2knr feature.
+
+ * make.h: Remove the PARAMS() macro definition and all uses of it.
+
+ * amiga.h, ar.c, arscan.c: Remove all uses of the PARAMS() macro.
+ * commands.c, commands.h, config.h-vms.template: Ditto.
+ * dep.h, dir.c, expand.c, filedef.h, function.c: Ditto.
+ * implicit.c, job.c, job.h, main.c, read.c, remake.c: Ditto.
+ * rule.c, rule.h, variable.h, vmsdir.h, vmsjobs.c, vpath.c: Ditto.
+
+ * NEWS: Update.
+
2006-04-01 Paul D. Smith <psmith@gnu.org>
Version 3.81 released.
diff --git a/Makefile.am b/Makefile.am
index 82274bb..2f612e6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,7 +16,7 @@
# GNU Make; see the file COPYING. If not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-AUTOMAKE_OPTIONS = 1.8 dist-bzip2 check-news ansi2knr
+AUTOMAKE_OPTIONS = 1.8 dist-bzip2 check-news
ACLOCAL_AMFLAGS = -I config
MAKE_HOST = @MAKE_HOST@
diff --git a/NEWS b/NEWS
index fdeb5be..42aa3b8 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,12 @@ manual, which is contained in this distribution as the file doc/make.texi.
See the README file and the GNU make manual for instructions for
reporting bugs.
+Version 3.81.90
+
+* Compiling GNU make now requires a conforming ISO C 1989 compiler and
+ standard runtime library.
+
+
Version 3.81
* GNU make is ported to OS/2.
diff --git a/amiga.h b/amiga.h
index 4b035a8..eed1db0 100644
--- a/amiga.h
+++ b/amiga.h
@@ -15,6 +15,5 @@ You should have received a copy of the GNU General Public License along with
GNU Make; see the file COPYING. If not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
-extern int MyExecute PARAMS ((char ** argv));
-extern char * wildcard_expansion PARAMS ((char * wc, char * o));
-
+int MyExecute (char ** argv);
+char * wildcard_expansion (char * wc, char * o);
diff --git a/ar.c b/ar.c
index 4d9f1bb..956432e 100644
--- a/ar.c
+++ b/ar.c
@@ -25,10 +25,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
#include <fnmatch.h>
/* Defined in arscan.c. */
-extern long int ar_scan PARAMS ((char *archive, long int (*function) (), long int arg));
-extern int ar_name_equal PARAMS ((char *name, char *mem, int truncated));
+extern long int ar_scan (char *archive, long int (*function) (), long int arg);
+extern int ar_name_equal (char *name, char *mem, int truncated);
#ifndef VMS
-extern int ar_member_touch PARAMS ((char *arname, char *memname));
+extern int ar_member_touch (char *arname, char *memname);
#endif
/* Return nonzero if NAME is an archive-member reference, zero if not.
@@ -72,8 +72,8 @@ ar_parse_name (char *name, char **arname_p, char **memname_p)
*memname_p = savestring (p + 1, end - (p + 1));
}
-static long int ar_member_date_1 PARAMS ((int desc, char *mem, int truncated, long int hdrpos,
- long int datapos, long int size, long int date, int uid, int gid, int mode, char *name));
+static long int ar_member_date_1 (int desc, char *mem, int truncated, long int hdrpos,
+ long int datapos, long int size, long int date, int uid, int gid, int mode, char *name);
/* Return the modtime of NAME. */
diff --git a/arscan.c b/arscan.c
index dbc4afd..07cf751 100644
--- a/arscan.c
+++ b/arscan.c
@@ -134,7 +134,7 @@ VMS_get_member_info (struct dsc$descriptor_s *module, unsigned long *rfa)
Returns 0 if have scanned successfully. */
long int
-ar_scan (char *archive, long int (*function) PARAMS ((void)), long int arg)
+ar_scan (char *archive, long int (*function) (void), long int arg)
{
char *p;
diff --git a/commands.c b/commands.c
index a0a7c5c..053aac2 100644
--- a/commands.c
+++ b/commands.c
@@ -33,10 +33,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
# define FILE_LIST_SEPARATOR ' '
#endif
-extern int remote_kill PARAMS ((int id, int sig));
+int remote_kill (int id, int sig);
#ifndef HAVE_UNISTD_H
-extern int getpid ();
+int getpid ();
#endif
/* Set FILE's automatic variables up. */
diff --git a/commands.h b/commands.h
index 96a1a4d..3e790ea 100644
--- a/commands.h
+++ b/commands.h
@@ -35,8 +35,8 @@ struct commands
#define COMMANDS_SILENT 2 /* Silent: @. */
#define COMMANDS_NOERROR 4 /* No errors: -. */
-extern void execute_file_commands PARAMS ((struct file *file));
-extern void print_commands PARAMS ((struct commands *cmds));
-extern void delete_child_targets PARAMS ((struct child *child));
-extern void chop_commands PARAMS ((struct commands *cmds));
-extern void set_file_variables PARAMS ((struct file *file));
+void execute_file_commands (struct file *file);
+void print_commands (struct commands *cmds);
+void delete_child_targets (struct child *child);
+void chop_commands (struct commands *cmds);
+void set_file_variables (struct file *file);
diff --git a/config.h-vms.template b/config.h-vms.template
index 2d3d04d..00e4e69 100644
--- a/config.h-vms.template
+++ b/config.h-vms.template
@@ -409,14 +409,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
#define glob gnu_glob
#endif
-#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
-#undef PARAMS
-#define PARAMS(protos) protos
-#else /* Not C++ or ANSI C. */
-#undef PARAMS
-#define PARAMS(protos) ()
-#endif /* C++ or ANSI C. */
-
/* Define if using alloca.c. */
/* #undef C_ALLOCA */
/* maybe this should be placed into make.h */
diff --git a/configure.in b/configure.in
index 5b914bf..6b417f0 100644
--- a/configure.in
+++ b/configure.in
@@ -16,7 +16,7 @@
# GNU Make; see the file COPYING. If not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-AC_INIT([GNU make],[3.81],[bug-make@gnu.org])
+AC_INIT([GNU make],[3.81.90],[bug-make@gnu.org])
AC_PREREQ(2.59)
AC_REVISION([[$Id$]])
@@ -44,9 +44,6 @@ AC_AIX
AC_ISC_POSIX
AC_MINIX
-# Needed for ansi2knr
-AM_C_PROTOTYPES
-
# Enable gettext, in "external" mode.
AM_GNU_GETTEXT_VERSION(0.14.1)
diff --git a/dep.h b/dep.h
index f0923cc..345f5ad 100644
--- a/dep.h
+++ b/dep.h
@@ -55,31 +55,31 @@ struct nameseq
};
-extern struct nameseq *multi_glob PARAMS ((struct nameseq *chain, unsigned int size));
+struct nameseq *multi_glob (struct nameseq *chain, unsigned int size);
#ifdef VMS
-extern struct nameseq *parse_file_seq ();
+struct nameseq *parse_file_seq ();
#else
-extern struct nameseq *parse_file_seq PARAMS ((char **stringp, int stopchar, unsigned int size, int strip));
+struct nameseq *parse_file_seq (char **stringp, int stopchar, unsigned int size, int strip);
#endif
-extern char *tilde_expand PARAMS ((char *name));
+char *tilde_expand (char *name);
#ifndef NO_ARCHIVES
-extern struct nameseq *ar_glob PARAMS ((char *arname, char *member_pattern, unsigned int size));
+struct nameseq *ar_glob (char *arname, char *member_pattern, unsigned int size);
#endif
#ifndef iAPX286
#define dep_name(d) ((d)->name == 0 ? (d)->file->name : (d)->name)
#else
/* Buggy compiler can't hack this. */
-extern char *dep_name ();
+char *dep_name ();
#endif
-extern struct dep *alloc_dep PARAMS ((void));
-extern void free_dep PARAMS ((struct dep *d));
-extern struct dep *copy_dep_chain PARAMS ((const struct dep *d));
-extern void free_dep_chain PARAMS ((struct dep *d));
-extern void free_ns_chain PARAMS ((struct nameseq *n));
-extern struct dep *read_all_makefiles PARAMS ((char **makefiles));
-extern int eval_buffer PARAMS ((char *buffer));
-extern int update_goal_chain PARAMS ((struct dep *goals));
-extern void uniquize_deps PARAMS ((struct dep *));
+struct dep *alloc_dep (void);
+void free_dep (struct dep *d);
+struct dep *copy_dep_chain (const struct dep *d);
+void free_dep_chain (struct dep *d);
+void free_ns_chain (struct nameseq *n);
+struct dep *read_all_makefiles (char **makefiles);
+int eval_buffer (char *buffer);
+int update_goal_chain (struct dep *goals);
+void uniquize_deps (struct dep *);
diff --git a/dir.c b/dir.c
index f72ce42..d88d097 100644
--- a/dir.c
+++ b/dir.c
@@ -23,7 +23,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
# include <dirent.h>
# define NAMLEN(dirent) strlen((dirent)->d_name)
# ifdef VMS
-extern char *vmsify PARAMS ((char *name, int type));
+char *vmsify (char *name, int type);
# endif
#else
# define dirent direct
@@ -411,8 +411,8 @@ dirfile_hash_cmp (const void *xv, const void *yv)
#define DIRFILE_BUCKETS 107
#endif
-static int dir_contents_file_exists_p PARAMS ((struct directory_contents *dir, char *filename));
-static struct directory *find_directory PARAMS ((char *name));
+static int dir_contents_file_exists_p (struct directory_contents *dir, char *filename);
+static struct directory *find_directory (char *name);
/* Find the directory named NAME and return its `struct directory'. */
@@ -1092,8 +1092,8 @@ struct dirstream
};
/* Forward declarations. */
-static __ptr_t open_dirstream PARAMS ((const char *));
-static struct dirent *read_dirstream PARAMS ((__ptr_t));
+static __ptr_t open_dirstream (const char *);
+static struct dirent *read_dirstream (__ptr_t);
static __ptr_t
open_dirstream (const char *directory)
@@ -1180,7 +1180,7 @@ ansi_free (void *p)
*/
#ifndef stat
# ifndef VMS
-extern int stat PARAMS ((const char *path, struct stat *sbuf));
+int stat (const char *path, struct stat *sbuf);
# endif
# define local_stat stat
#else
diff --git a/expand.c b/expand.c
index 993e6d4..5aa0de9 100644
--- a/expand.c
+++ b/expand.c
@@ -93,7 +93,7 @@ initialize_variable_output (void)
/* Recursively expand V. The returned string is malloc'd. */
-static char *allocated_variable_append PARAMS ((const struct variable *v));
+static char *allocated_variable_append (const struct variable *v);
char *
recursively_expand_for_file (struct variable *v, struct file *file)
diff --git a/filedef.h b/filedef.h
index e4fe7c9..b5469a2 100644
--- a/filedef.h
+++ b/filedef.h
@@ -101,17 +101,17 @@ extern struct file *default_goal_file, *suffix_file, *default_file;
extern char **default_goal_name;
-extern struct file *lookup_file PARAMS ((char *name));
-extern struct file *enter_file PARAMS ((char *name));
-extern struct dep *parse_prereqs PARAMS ((char *prereqs));
-extern void remove_intermediates PARAMS ((int sig));
-extern void snap_deps PARAMS ((void));
-extern void rename_file PARAMS ((struct file *file, char *name));
-extern void rehash_file PARAMS ((struct file *file, char *name));
-extern void set_command_state PARAMS ((struct file *file, enum cmd_state state));
-extern void notice_finished_file PARAMS ((struct file *file));
-extern void init_hash_files PARAMS ((void));
-extern char *build_target_list PARAMS ((char *old_list));
+struct file *lookup_file (char *name);
+struct file *enter_file (char *name);
+struct dep *parse_prereqs (char *prereqs);
+void remove_intermediates (int sig);
+void snap_deps (void);
+void rename_file (struct file *file, char *name);
+void rehash_file (struct file *file, char *name);
+void set_command_state (struct file *file, enum cmd_state state);
+void notice_finished_file (struct file *file);
+void init_hash_files (void);
+char *build_target_list (char *old_list);
#if FILE_TIMESTAMP_HI_RES
# define FILE_TIMESTAMP_STAT_MODTIME(fname, st) \
@@ -152,10 +152,9 @@ extern char *build_target_list PARAMS ((char *old_list));
* 302 / 1000) \
+ 1 + 1 + 4 + 25)
-extern FILE_TIMESTAMP file_timestamp_cons PARAMS ((char const *,
- time_t, int));
-extern FILE_TIMESTAMP file_timestamp_now PARAMS ((int *));
-extern void file_timestamp_sprintf PARAMS ((char *p, FILE_TIMESTAMP ts));
+FILE_TIMESTAMP file_timestamp_cons (char const *, time_t, int);
+FILE_TIMESTAMP file_timestamp_now (int *);
+void file_timestamp_sprintf (char *p, FILE_TIMESTAMP ts);
/* Return the mtime of file F (a struct file *), caching it.
The value is NONEXISTENT_MTIME if the file does not exist. */
@@ -165,7 +164,7 @@ extern void file_timestamp_sprintf PARAMS ((char *p, FILE_TIMESTAMP ts));
we don't find it.
The value is NONEXISTENT_MTIME if the file does not exist. */
#define file_mtime_no_search(f) file_mtime_1 ((f), 0)
-extern FILE_TIMESTAMP f_mtime PARAMS ((struct file *file, int search));
+FILE_TIMESTAMP f_mtime (struct file *file, int search);
#define file_mtime_1(f, v) \
((f)->last_mtime == UNKNOWN_MTIME ? f_mtime ((f), v) : (f)->last_mtime)
diff --git a/function.c b/function.c
index c62f7ab..0bc9921 100644
--- a/function.c
+++ b/function.c
@@ -36,7 +36,7 @@ struct function_table_entry
unsigned char minimum_args;
unsigned char maximum_args;
char expand_args;
- char *(*func_ptr) PARAMS ((char *output, char **argv, const char *fname));
+ char *(*func_ptr) (char *output, char **argv, const char *fname);
};
static unsigned long
@@ -2040,7 +2040,7 @@ func_abspath (char *o, char **argv, const char *funcname UNUSED)
EXPAND_ARGS means that all arguments should be expanded before invocation.
Functions that do namespace tricks (foreach) don't automatically expand. */
-static char *func_call PARAMS ((char *o, char **argv, const char *funcname));
+static char *func_call (char *o, char **argv, const char *funcname);
static struct function_table_entry function_table_init[] =
diff --git a/implicit.c b/implicit.c
index 014828f..1cfd58c 100644
--- a/implicit.c
+++ b/implicit.c
@@ -25,9 +25,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
#include "job.h" /* struct child, used inside commands.h */
#include "commands.h" /* set_file_variables */
-static int
-pattern_search PARAMS ((struct file *file, int archive,
- unsigned int depth, unsigned int recursions));
+static int pattern_search (struct file *file, int archive,
+ unsigned int depth, unsigned int recursions);
/* For a FILE which has no commands specified, try to figure out some
from the implicit pattern rules.
diff --git a/job.c b/job.c
index a81cd81..0923c5a 100644
--- a/job.c
+++ b/job.c
@@ -98,7 +98,7 @@ static int amiga_batch_file;
# endif
# include <starlet.h>
# include <lib$routines.h>
-static void vmsWaitForChildren PARAMS ((int *));
+static void vmsWaitForChildren (int *);
#endif
#ifdef WINDOWS32
@@ -130,7 +130,7 @@ extern int wait3 ();
#endif /* Have waitpid. */
#if !defined (wait) && !defined (POSIX)
-extern int wait ();
+int wait ();
#endif
#ifndef HAVE_UNION_WAIT
@@ -175,32 +175,32 @@ extern int wait ();
#endif /* Don't have `union wait'. */
#ifndef HAVE_UNISTD_H
-extern int dup2 ();
-extern int execve ();
-extern void _exit ();
+int dup2 ();
+int execve ();
+void _exit ();
# ifndef VMS
-extern int geteuid ();
-extern int getegid ();
-extern int setgid ();
-extern int getgid ();
+int geteuid ();
+int getegid ();
+int setgid ();
+int getgid ();
# endif
#endif
-extern char *allocated_variable_expand_for_file PARAMS ((char *line, struct file *file));
-
-extern int getloadavg PARAMS ((double loadavg[], int nelem));
-extern int start_remote_job PARAMS ((char **argv, char **envp, int stdin_fd,
- int *is_remote, int *id_ptr, int *used_stdin));
-extern int start_remote_job_p PARAMS ((int));
-extern int remote_status PARAMS ((int *exit_code_ptr, int *signal_ptr,
- int *coredump_ptr, int block));
-
-RETSIGTYPE child_handler PARAMS ((int));
-static void free_child PARAMS ((struct child *));
-static void start_job_command PARAMS ((struct child *child));
-static int load_too_high PARAMS ((void));
-static int job_next_command PARAMS ((struct child *));
-static int start_waiting_job PARAMS ((struct child *));
+char *allocated_variable_expand_for_file (char *line, struct file *file);
+
+int getloadavg (double loadavg[], int nelem);
+int start_remote_job (char **argv, char **envp, int stdin_fd, int *is_remote,
+ int *id_ptr, int *used_stdin);
+int start_remote_job_p (int);
+int remote_status (int *exit_code_ptr, int *signal_ptr, int *coredump_ptr,
+ int block);
+
+RETSIGTYPE child_handler (int);
+static void free_child (struct child *);
+static void start_job_command (struct child *child);
+static int load_too_high (void);
+static int job_next_command (struct child *);
+static int start_waiting_job (struct child *);
/* Chain of all live (or recently deceased) children. */
diff --git a/job.h b/job.h
index 436b979..4d2bd6f 100644
--- a/job.h
+++ b/job.h
@@ -66,31 +66,31 @@ struct child
extern struct child *children;
-extern void new_job PARAMS ((struct file *file));
-extern void reap_children PARAMS ((int block, int err));
-extern void start_waiting_jobs PARAMS ((void));
+void new_job (struct file *file);
+void reap_children (int block, int err);
+void start_waiting_jobs (void);
-extern char **construct_command_argv PARAMS ((char *line, char **restp, struct file *file, char** batch_file));
+char **construct_command_argv (char *line, char **restp, struct file *file, char** batch_file);
#ifdef VMS
-extern int child_execute_job PARAMS ((char *argv, struct child *child));
+int child_execute_job (char *argv, struct child *child);
#elif defined(__EMX__)
-extern int child_execute_job PARAMS ((int stdin_fd, int stdout_fd, char **argv, char **envp));
+int child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp);
#else
-extern void child_execute_job PARAMS ((int stdin_fd, int stdout_fd, char **argv, char **envp));
+void child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp);
#endif
#ifdef _AMIGA
-extern void exec_command PARAMS ((char **argv));
+void exec_command (char **argv);
#elif defined(__EMX__)
-extern int exec_command PARAMS ((char **argv, char **envp));
+int exec_command (char **argv, char **envp);
#else
-extern void exec_command PARAMS ((char **argv, char **envp));
+void exec_command (char **argv, char **envp);
#endif
extern unsigned int job_slots_used;
-extern void block_sigs PARAMS ((void));
+void block_sigs (void);
#ifdef POSIX
-extern void unblock_sigs PARAMS ((void));
+void unblock_sigs (void);
#else
#ifdef HAVE_SIGSETMASK
extern int fatal_signal_mask;
diff --git a/main.c b/main.c
index 483babf..32f50fa 100644
--- a/main.c
+++ b/main.c
@@ -56,39 +56,39 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
int __stack = 20000; /* Make sure we have 20K of stack space */
#endif
-extern void init_dir PARAMS ((void));
-extern void remote_setup PARAMS ((void));
-extern void remote_cleanup PARAMS ((void));
-extern RETSIGTYPE fatal_error_signal PARAMS ((int sig));
+void init_dir (void);
+void remote_setup (void);
+void remote_cleanup (void);
+RETSIGTYPE fatal_error_signal (int sig);
-extern void print_variable_data_base PARAMS ((void));
-extern void print_dir_data_base PARAMS ((void));
-extern void print_rule_data_base PARAMS ((void));
-extern void print_file_data_base PARAMS ((void));
-extern void print_vpath_data_base PARAMS ((void));
+void print_variable_data_base (void);
+void print_dir_data_base (void);
+void print_rule_data_base (void);
+void print_file_data_base (void);
+void print_vpath_data_base (void);
#if defined HAVE_WAITPID || defined HAVE_WAIT3
# define HAVE_WAIT_NOHANG
#endif
#ifndef HAVE_UNISTD_H
-extern int chdir ();
+int chdir ();
#endif
#ifndef STDC_HEADERS
# ifndef sun /* Sun has an incorrect decl in a header. */
-extern void exit PARAMS ((int)) __attribute__ ((noreturn));
+void exit (int) __attribute__ ((noreturn));
# endif
-extern double atof ();
+double atof ();
#endif
-static void clean_jobserver PARAMS ((int status));
-static void print_data_base PARAMS ((void));
-static void print_version PARAMS ((void));
-static void decode_switches PARAMS ((int argc, char **argv, int env));
-static void decode_env_switches PARAMS ((char *envar, unsigned int len));
-static void define_makeflags PARAMS ((int all, int makefile));
-static char *quote_for_env PARAMS ((char *out, char *in));
-static void initialize_global_hash_tables PARAMS ((void));
+static void clean_jobserver (int status);
+static void print_data_base (void);
+static void print_version (void);
+static void decode_switches (int argc, char **argv, int env);
+static void decode_env_switches (char *envar, unsigned int len);
+static void define_makeflags (int all, int makefile);
+static char *quote_for_env (char *out, char *in);
+static void initialize_global_hash_tables (void);
/* The structure that describes an accepted command switch. */
@@ -841,8 +841,8 @@ msdos_return_to_initial_directory (void)
}
#endif
-extern char *mktemp PARAMS ((char *template));
-extern int mkstemp PARAMS ((char *template));
+char *mktemp (char *template);
+int mkstemp (char *template);
FILE *
open_tmpfile(char **name, const char *template)
@@ -1543,7 +1543,7 @@ main (int argc, char **argv, char **envp)
If none of these are true, we don't need a signal handler at all. */
{
- extern RETSIGTYPE child_handler PARAMS ((int sig));
+ RETSIGTYPE child_handler (int sig);
# if defined SIGCHLD
bsd_signal (SIGCHLD, child_handler);
# endif
diff --git a/make.h b/make.h
index 994f4f2..5914dd8 100644
--- a/make.h
+++ b/make.h
@@ -39,15 +39,6 @@ char *alloca ();
#endif
-/* Use prototypes if available. */
-#if defined (__cplusplus) || defined (__STDC__)
-# undef PARAMS
-# define PARAMS(protos) protos
-#else /* Not C++ or ANSI C. */
-# undef PARAMS
-# define PARAMS(protos) ()
-#endif /* C++ or ANSI C. */
-
/* Specify we want GNU source code. This must be defined before any
system headers are included. */
@@ -151,7 +142,7 @@ extern int errno;
# define NEED_GET_PATH_MAX 1
# define GET_PATH_MAX (get_path_max ())
# define PATH_VAR(var) char *var = (char *) alloca (GET_PATH_MAX)
-extern unsigned int get_path_max PARAMS ((void));
+unsigned int get_path_max (void);
#endif
#ifndef CHAR_BIT
@@ -227,12 +218,12 @@ extern unsigned int get_path_max PARAMS ((void));
# ifdef HAVE_STDLIB_H
# include <stdlib.h>
# else
-extern char *malloc PARAMS ((int));
-extern char *realloc PARAMS ((char *, int));
-extern void free PARAMS ((char *));
+char *malloc (int);
+char *realloc (char *, int);
+void free (char *);
-extern void abort PARAMS ((void)) __attribute__ ((noreturn));
-extern void exit PARAMS ((int)) __attribute__ ((noreturn));
+void abort (void) __attribute__ ((noreturn));
+void exit (int) __attribute__ ((noreturn));
# endif /* HAVE_STDLIB_H. */
#endif /* Standard headers. */
@@ -265,19 +256,19 @@ extern void exit PARAMS ((int)) __attribute__ ((noreturn));
# endif
# ifndef bcmp
-extern int bcmp PARAMS ((const char *, const char *, int));
+int bcmp (const char *, const char *, int);
# endif
# ifndef bzero
-extern void bzero PARAMS ((char *, int));
+void bzero (char *, int);
#endif
# ifndef bcopy
-extern void bcopy PARAMS ((const char *b1, char *b2, int));
+void bcopy (const char *b1, char *b2, int);
# endif
/* SCO Xenix has a buggy macro definition in <string.h>. */
#undef strerror
#if !defined(__DECC)
-extern char *strerror PARAMS ((int errnum));
+char *strerror (int errnum);
#endif
#endif /* !ANSI_STRING. */
@@ -289,7 +280,7 @@ extern char *strerror PARAMS ((int errnum));
#define FILE_TIMESTAMP uintmax_t
#if !defined(HAVE_STRSIGNAL)
-extern char *strsignal PARAMS ((int signum));
+char *strsignal (int signum);
#endif
/* ISDIGIT offers the following features:
@@ -323,7 +314,7 @@ extern char *strsignal PARAMS ((int signum));
#endif
#define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0)
#ifdef VMS
-extern int strcmpi (const char *,const char *);
+int strcmpi (const char *,const char *);
#endif
#if defined(__GNUC__) || defined(ENUM_BITFIELDS)
@@ -363,13 +354,13 @@ extern int strcmpi (const char *,const char *);
#ifdef WINDOWS32
# include <fcntl.h>
# include <malloc.h>
-# define pipe(p) _pipe(p, 512, O_BINARY)
-# define kill(pid,sig) w32_kill(pid,sig)
+# define pipe(_p) _pipe((_p), 512, O_BINARY)
+# define kill(_pid,_sig) w32_kill((_pid),(_sig))
-extern void sync_Path_environment(void);
-extern int kill(int pid, int sig);
-extern char *end_of_token_w32(char *s, char stopchar);
-extern int find_and_set_default_shell(char *token);
+void sync_Path_environment (void);
+int kill (int pid, int sig);
+char *end_of_token_w32 (char *s, char stopchar);
+int find_and_set_default_shell (char *token);
/* indicates whether or not we have Bourne shell */
extern int no_default_sh_exe;
@@ -398,78 +389,78 @@ struct floc
#endif
#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H
-extern void message (int prefix, const char *fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-extern void error (const struct floc *flocp, const char *fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-extern void fatal (const struct floc *flocp, const char *fmt, ...)
+void message (int prefix, const char *fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+void error (const struct floc *flocp, const char *fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+void fatal (const struct floc *flocp, const char *fmt, ...)
__attribute__ ((noreturn, __format__ (__printf__, 2, 3)));
#else
-extern void message ();
-extern void error ();
-extern void fatal ();
-#endif
-
-extern void die PARAMS ((int)) __attribute__ ((noreturn));
-extern void log_working_directory PARAMS ((int));
-extern void pfatal_with_name PARAMS ((const char *)) __attribute__ ((noreturn));
-extern void perror_with_name PARAMS ((const char *, const char *));
-extern char *savestring PARAMS ((const char *, unsigned int));
-extern char *concat PARAMS ((const char *, const char *, const char *));
-extern char *xmalloc PARAMS ((unsigned int));
-extern char *xrealloc PARAMS ((char *, unsigned int));
-extern char *xstrdup PARAMS ((const char *));
-extern char *find_next_token PARAMS ((char **, unsigned int *));
-extern char *next_token PARAMS ((const char *));
-extern char *end_of_token PARAMS ((const char *));
-extern void collapse_continuations PARAMS ((char *));
-extern char *lindex PARAMS ((const char *, const char *, int));
-extern int alpha_compare PARAMS ((const void *, const void *));
-extern void print_spaces PARAMS ((unsigned int));
-extern char *find_percent PARAMS ((char *));
-extern FILE *open_tmpfile PARAMS ((char **, const char *));
+void message ();
+void error ();
+void fatal ();
+#endif
+
+void die (int) __attribute__ ((noreturn));
+void log_working_directory (int);
+void pfatal_with_name (const char *) __attribute__ ((noreturn));
+void perror_with_name (const char *, const char *);
+char *savestring (const char *, unsigned int);
+char *concat (const char *, const char *, const char *);
+char *xmalloc (unsigned int);
+char *xrealloc (char *, unsigned int);
+char *xstrdup (const char *);
+char *find_next_token (char **, unsigned int *);
+char *next_token (const char *);
+char *end_of_token (const char *);
+void collapse_continuations (char *);
+char *lindex (const char *, const char *, int);
+int alpha_compare (const void *, const void *);
+void print_spaces (unsigned int);
+char *find_percent (char *);
+FILE *open_tmpfile (char **, const char *);
#ifndef NO_ARCHIVES
-extern int ar_name PARAMS ((char *));
-extern void ar_parse_name PARAMS ((char *, char **, char **));
-extern int ar_touch PARAMS ((char *));
-extern time_t ar_member_date PARAMS ((char *));
+int ar_name (char *);
+void ar_parse_name (char *, char **, char **);
+int ar_touch (char *);
+time_t ar_member_date (char *);
#endif
-extern int dir_file_exists_p PARAMS ((char *, char *));
-extern int file_exists_p PARAMS ((char *));
-extern int file_impossible_p PARAMS ((char *));
-extern void file_impossible PARAMS ((char *));
-extern char *dir_name PARAMS ((char *));
-extern void hash_init_directories PARAMS ((void));
+int dir_file_exists_p (char *, char *);
+int file_exists_p (char *);
+int file_impossible_p (char *);
+void file_impossible (char *);
+char *dir_name (char *);
+void hash_init_directories (void);
-extern void define_default_variables PARAMS ((void));
-extern void set_default_suffixes PARAMS ((void));
-extern void install_default_suffix_rules PARAMS ((void));
-extern void install_default_implicit_rules PARAMS ((void));
+void define_default_variables (void);
+void set_default_suffixes (void);
+void install_default_suffix_rules (void);
+void install_default_implicit_rules (void);
-extern void build_vpath_lists PARAMS ((void));
-extern void construct_vpath_list PARAMS ((char *pattern, char *dirpath));
-extern int vpath_search PARAMS ((char **file, FILE_TIMESTAMP *mtime_ptr));
-extern int gpath_search PARAMS ((char *file, unsigned int len));
+void build_vpath_lists (void);
+void construct_vpath_list (char *pattern, char *dirpath);
+int vpath_search (char **file, FILE_TIMESTAMP *mtime_ptr);
+int gpath_search (char *file, unsigned int len);
-extern void construct_include_path PARAMS ((char **arg_dirs));
+void construct_include_path (char **arg_dirs);
-extern void user_access PARAMS ((void));
-extern void make_access PARAMS ((void));
-extern void child_access PARAMS ((void));
+void user_access (void);
+void make_access (void);
+void child_access (void);
-extern void close_stdout PARAMS ((void));
+void close_stdout (void);
-extern char *strip_whitespace PARAMS ((const char **begpp, const char **endpp));
+char *strip_whitespace (const char **begpp, const char **endpp);
/* String caching */
-extern void strcache_init PARAMS ((void));
-extern void strcache_print_stats PARAMS ((const char *prefix));
-extern int strcache_iscached PARAMS ((const char *str));
-extern const char *strcache_add PARAMS ((const char *str));
-extern const char *strcache_add_len PARAMS ((const char *str, int len));
-extern int strcache_setbufsize PARAMS ((int size));
+void strcache_init (void);
+void strcache_print_stats (const char *prefix);
+int strcache_iscached (const char *str);
+const char *strcache_add (const char *str);
+const char *strcache_add_len (const char *str, int len);
+int strcache_setbufsize (int size);
#ifdef HAVE_VFORK_H
# include <vfork.h>
@@ -480,19 +471,19 @@ extern int strcache_setbufsize PARAMS ((int size));
#if !defined (__GNU_LIBRARY__) && !defined (POSIX) && !defined (_POSIX_VERSION) && !defined(WINDOWS32)
-extern long int atol ();
+long int atol ();
# ifndef VMS
-extern long int lseek ();
+long int lseek ();
# endif
#endif /* Not GNU C library or POSIX. */
#ifdef HAVE_GETCWD
# if !defined(VMS) && !defined(__DECC)
-extern char *getcwd ();
+char *getcwd ();
# endif
#else
-extern char *getwd ();
+char *getwd ();
# define getcwd(buf, len) getwd (buf)
#endif
diff --git a/read.c b/read.c
index f6e8986..e380d02 100644
--- a/read.c
+++ b/read.c
@@ -37,7 +37,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
#ifndef VMS
#include <pwd.h>
#else
-struct passwd *getpwnam PARAMS ((char *name));
+struct passwd *getpwnam (char *name);
#endif
#endif
#endif /* !WINDOWS32 */
@@ -123,27 +123,26 @@ const struct floc *reading_file = 0;
static struct dep *read_makefiles = 0;
-static int eval_makefile PARAMS ((char *filename, int flags));
-static int eval PARAMS ((struct ebuffer *buffer, int flags));
-
-static long readline PARAMS ((struct ebuffer *ebuf));
-static void do_define PARAMS ((char *name, unsigned int namelen,
- enum variable_origin origin,
- struct ebuffer *ebuf));
-static int conditional_line PARAMS ((char *line, int len, const struct floc *flocp));
-static void record_files PARAMS ((struct nameseq *filenames, char *pattern, char *pattern_percent,
- struct dep *deps, unsigned int cmds_started, char *commands,
- unsigned int commands_idx, int two_colon,
- const struct floc *flocp));
-static void record_target_var PARAMS ((struct nameseq *filenames, char *defn,
- enum variable_origin origin,
- int enabled,
- const struct floc *flocp));
-static enum make_word_type get_next_mword PARAMS ((char *buffer, char *delim,
- char **startp, unsigned int *length));
-static void remove_comments PARAMS ((char *line));
-static char *find_char_unquote PARAMS ((char *string, int stop1,
- int stop2, int blank, int ignorevars));
+static int eval_makefile (char *filename, int flags);
+static int eval (struct ebuffer *buffer, int flags);
+
+static long readline (struct ebuffer *ebuf);
+static void do_define (char *name, unsigned int namelen,
+ enum variable_origin origin, struct ebuffer *ebuf);
+static int conditional_line (char *line, int len, const struct floc *flocp);
+static void record_files (struct nameseq *filenames, char *pattern,
+ char *pattern_percent, struct dep *deps,
+ unsigned int cmds_started, char *commands,
+ unsigned int commands_idx, int two_colon,
+ const struct floc *flocp);
+static void record_target_var (struct nameseq *filenames, char *defn,
+ enum variable_origin origin, int enabled,
+ const struct floc *flocp);
+static enum make_word_type get_next_mword (char *buffer, char *delim,
+ char **startp, unsigned int *length);
+static void remove_comments (char *line);
+static char *find_char_unquote (char *string, int stop1, int stop2,
+ int blank, int ignorevars);
/* Read in all the makefiles and return the chain of their names. */
diff --git a/remake.c b/remake.c
index a752734..044b49e 100644
--- a/remake.c
+++ b/remake.c
@@ -39,7 +39,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
#include <io.h>
#endif
-extern int try_implicit_rule PARAMS ((struct file *file, unsigned int depth));
+extern int try_implicit_rule (struct file *file, unsigned int depth);
/* The test for circular dependencies is based on the 'updating' bit in
@@ -60,13 +60,14 @@ unsigned int commands_started = 0;
/* Current value for pruning the scan of the goal chain (toggle 0/1). */
static unsigned int considered;
-static int update_file PARAMS ((struct file *file, unsigned int depth));
-static int update_file_1 PARAMS ((struct file *file, unsigned int depth));
-static int check_dep PARAMS ((struct file *file, unsigned int depth, FILE_TIMESTAMP this_mtime, int *must_make_ptr));
-static int touch_file PARAMS ((struct file *file));
-static void remake_file PARAMS ((struct file *file));
-static FILE_TIMESTAMP name_mtime PARAMS ((char *name));
-static int library_search PARAMS ((char **lib, FILE_TIMESTAMP *mtime_ptr));
+static int update_file (struct file *file, unsigned int depth);
+static int update_file_1 (struct file *file, unsigned int depth);
+static int check_dep (struct file *file, unsigned int depth,
+ FILE_TIMESTAMP this_mtime, int *must_make_ptr);
+static int touch_file (struct file *file);
+static void remake_file (struct file *file);
+static FILE_TIMESTAMP name_mtime (char *name);
+static int library_search (char **lib, FILE_TIMESTAMP *mtime_ptr);
/* Remake all the goals in the `struct dep' chain GOALS. Return -1 if nothing
diff --git a/rule.c b/rule.c
index e988db5..27cf3c9 100644
--- a/rule.c
+++ b/rule.c
@@ -24,7 +24,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
#include "variable.h"
#include "rule.h"
-static void freerule PARAMS ((struct rule *rule, struct rule *lastrule));
+static void freerule (struct rule *rule, struct rule *lastrule);
/* Chain of all pattern rules. */
diff --git a/rule.h b/rule.h
index 99fb76e..91378f6 100644
--- a/rule.h
+++ b/rule.h
@@ -49,12 +49,10 @@ extern struct file *suffix_file;
extern unsigned int maxsuffix;
-extern void install_pattern_rule PARAMS ((struct pspec *p, int terminal));
-extern int new_pattern_rule PARAMS ((struct rule *rule, int override));
-extern void count_implicit_rule_limits PARAMS ((void));
-extern void convert_to_pattern PARAMS ((void));
-extern void create_pattern_rule PARAMS ((char **targets,
- char **target_percents, int terminal,
- struct dep *deps,
- struct commands *commands,
- int override));
+void install_pattern_rule (struct pspec *p, int terminal);
+int new_pattern_rule (struct rule *rule, int override);
+void count_implicit_rule_limits (void);
+void convert_to_pattern (void);
+void create_pattern_rule (char **targets, char **target_percents,
+ int terminal, struct dep *deps,
+ struct commands *commands, int override);
diff --git a/variable.h b/variable.h
index 46b18fa..a404abb 100644
--- a/variable.h
+++ b/variable.h
@@ -109,55 +109,61 @@ extern char *variable_buffer;
extern struct variable_set_list *current_variable_set_list;
/* expand.c */
-extern char *variable_buffer_output PARAMS ((char *ptr, char *string, unsigned int length));
-extern char *variable_expand PARAMS ((char *line));
-extern char *variable_expand_for_file PARAMS ((char *line, struct file *file));
-extern char *allocated_variable_expand_for_file PARAMS ((char *line, struct file *file));
+char *variable_buffer_output (char *ptr, char *string, unsigned int length);
+char *variable_expand (char *line);
+char *variable_expand_for_file (char *line, struct file *file);
+char *allocated_variable_expand_for_file (char *line, struct file *file);
#define allocated_variable_expand(line) \
allocated_variable_expand_for_file (line, (struct file *) 0)
-extern char *expand_argument PARAMS ((const char *str, const char *end));
-extern char *variable_expand_string PARAMS ((char *line, char *string,
- long length));
-extern void install_variable_buffer PARAMS ((char **bufp, unsigned int *lenp));
-extern void restore_variable_buffer PARAMS ((char *buf, unsigned int len));
+char *expand_argument (const char *str, const char *end);
+char *variable_expand_string (char *line, char *string, long length);
+void install_variable_buffer (char **bufp, unsigned int *lenp);
+void restore_variable_buffer (char *buf, unsigned int len);
/* function.c */
-extern int handle_function PARAMS ((char **op, char **stringp));
-extern int pattern_matches PARAMS ((char *pattern, char *percent, char *str));
-extern char *subst_expand PARAMS ((char *o, char *text, char *subst, char *replace,
- unsigned int slen, unsigned int rlen, int by_word));
-extern char *patsubst_expand PARAMS ((char *o, char *text, char *pattern, char *replace,
- char *pattern_percent, char *replace_percent));
+int handle_function (char **op, char **stringp);
+int pattern_matches (char *pattern, char *percent, char *str);
+char *subst_expand (char *o, char *text, char *subst, char *replace,
+ unsigned int slen, unsigned int rlen, int by_word);
+char *patsubst_expand (char *o, char *text, char *pattern, char *replace,
+ char *pattern_percent, char *replace_percent);
/* expand.c */
-extern char *recursively_expand_for_file PARAMS ((struct variable *v,
- struct file *file));
+char *recursively_expand_for_file (struct variable *v, struct file *file);
#define recursively_expand(v) recursively_expand_for_file (v, NULL)
/* variable.c */
-extern struct variable_set_list *create_new_variable_set PARAMS ((void));
-extern void free_variable_set PARAMS ((struct variable_set_list *));
-extern struct variable_set_list *push_new_variable_scope PARAMS ((void));
-extern void pop_variable_scope PARAMS ((void));
-extern void define_automatic_variables PARAMS ((void));
-extern void initialize_file_variables PARAMS ((struct file *file, int read));
-extern void print_file_variables PARAMS ((struct file *file));
-extern void print_variable_set PARAMS ((struct variable_set *set, char *prefix));
-extern void merge_variable_set_lists PARAMS ((struct variable_set_list **to_list, struct variable_set_list *from_list));
-extern struct variable *do_variable_definition PARAMS ((const struct floc *flocp, const char *name, char *value, enum variable_origin origin, enum variable_flavor flavor, int target_var));
-extern struct variable *parse_variable_definition PARAMS ((struct variable *v, char *line));
-extern struct variable *try_variable_definition PARAMS ((const struct floc *flocp, char *line, enum variable_origin origin, int target_var));
-extern void init_hash_global_variable_set PARAMS ((void));
-extern void hash_init_function_table PARAMS ((void));
-extern struct variable *lookup_variable PARAMS ((const char *name, unsigned int length));
-extern struct variable *lookup_variable_in_set PARAMS ((const char *name,
- unsigned int length,
- const struct variable_set *set));
-
-extern struct variable *define_variable_in_set
- PARAMS ((const char *name, unsigned int length, char *value,
- enum variable_origin origin, int recursive,
- struct variable_set *set, const struct floc *flocp));
+struct variable_set_list *create_new_variable_set (void);
+void free_variable_set (struct variable_set_list *);
+struct variable_set_list *push_new_variable_scope (void);
+void pop_variable_scope (void);
+void define_automatic_variables (void);
+void initialize_file_variables (struct file *file, int read);
+void print_file_variables (struct file *file);
+void print_variable_set (struct variable_set *set, char *prefix);
+void merge_variable_set_lists (struct variable_set_list **to_list,
+ struct variable_set_list *from_list);
+struct variable *do_variable_definition (const struct floc *flocp,
+ const char *name, char *value,
+ enum variable_origin origin,
+ enum variable_flavor flavor,
+ int target_var);
+struct variable *parse_variable_definition (struct variable *v, char *line);
+struct variable *try_variable_definition (const struct floc *flocp, char *line,
+ enum variable_origin origin,
+ int target_var);
+void init_hash_global_variable_set (void);
+void hash_init_function_table (void);
+struct variable *lookup_variable (const char *name, unsigned int length);
+struct variable *lookup_variable_in_set (const char *name, unsigned int length,
+ const struct variable_set *set);
+
+struct variable *define_variable_in_set (const char *name, unsigned int length,
+ char *value,
+ enum variable_origin origin,
+ int recursive,
+ struct variable_set *set,
+ const struct floc *flocp);
/* Define a variable in the current variable set. */
@@ -190,9 +196,9 @@ extern struct variable *define_variable_in_set
(int)(l), (n)); \
}while(0)
-extern char **target_environment PARAMS ((struct file *file));
+char **target_environment (struct file *file);
-extern struct pattern_var *create_pattern_var PARAMS ((char *target, char *suffix));
+struct pattern_var *create_pattern_var (char *target, char *suffix);
extern int export_all_variables;
diff --git a/vmsdir.h b/vmsdir.h
index aed53c7..a4bd6f1 100644
--- a/vmsdir.h
+++ b/vmsdir.h
@@ -67,10 +67,11 @@ typedef struct DIR
#define NULL 0
#endif
-extern DIR *opendir PARAMS (());
-extern struct direct *readdir PARAMS ((DIR *dfd));
#define rewinddir(dirp) seekdir((dirp), (long)0)
-extern int closedir PARAMS ((DIR *dfd));
-extern char *vmsify PARAMS ((char *name, int type));
+
+DIR *opendir ();
+struct direct *readdir (DIR *dfd);
+int closedir (DIR *dfd);
+char *vmsify (char *name, int type);
#endif /* VMSDIR_H */
diff --git a/vmsjobs.c b/vmsjobs.c
index e887970..e63dd94 100644
--- a/vmsjobs.c
+++ b/vmsjobs.c
@@ -21,7 +21,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
#include <descrip.h>
#include <clidef.h>
-extern char *vmsify PARAMS ((char *name, int type));
+char *vmsify (char *name, int type);
static int vms_jobsefnmask = 0;
diff --git a/vpath.c b/vpath.c
index 0945240..85e8c0a 100644
--- a/vpath.c
+++ b/vpath.c
@@ -48,7 +48,8 @@ static struct vpath *general_vpath;
static struct vpath *gpaths;
-static int selective_vpath_search PARAMS ((struct vpath *path, char **file, FILE_TIMESTAMP *mtime_ptr));
+static int selective_vpath_search (struct vpath *path, char **file,
+ FILE_TIMESTAMP *mtime_ptr);
/* Reverse the chain of selective VPATH lists so they
will be searched in the order given in the makefiles