summaryrefslogtreecommitdiff
path: root/src/callproc.c
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2001-10-12 03:23:25 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2001-10-12 03:23:25 +0000
commitb81a1b72a82185bc426d31f914a5d3d7fee14c4e (patch)
treec6f8387fcb7983bcd2b9d256dc386c4ca49d876c /src/callproc.c
parent183d18335505777fe44514c86ea97efba2b0e3af (diff)
downloademacs-b81a1b72a82185bc426d31f914a5d3d7fee14c4e.tar.gz
(Vexec_suffixes): New var.
(Fcall_process): Update call to openp. (decode_suffixes): New function. (syms_of_callproc): Init exec-suffixes.
Diffstat (limited to 'src/callproc.c')
-rw-r--r--src/callproc.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/src/callproc.c b/src/callproc.c
index fc4d0bf3379..37b52ac5a2a 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -103,9 +103,8 @@ extern char **environ;
#endif
#endif
-#define max(a, b) ((a) > (b) ? (a) : (b))
-
-Lisp_Object Vexec_path, Vexec_directory, Vdata_directory, Vdoc_directory;
+Lisp_Object Vexec_path, Vexec_directory, Vexec_suffixes;
+Lisp_Object Vdata_directory, Vdoc_directory;
Lisp_Object Vconfigure_info_directory;
Lisp_Object Vtemp_file_name_pattern;
@@ -380,7 +379,7 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.")
struct gcpro gcpro1;
GCPRO1 (current_dir);
- openp (Vexec_path, args[0], EXEC_SUFFIXES, &path, 1);
+ openp (Vexec_path, args[0], Vexec_suffixes, &path, 1);
UNGCPRO;
}
if (NILP (path))
@@ -1571,6 +1570,28 @@ set_process_environment ()
Vprocess_environment);
}
+static Lisp_Object
+decode_suffixes (string)
+ char *string;
+{
+ char *p;
+ Lisp_Object suffixes;
+
+ suffixes = Qnil;
+ while (1)
+ {
+ p = index (string, ':');
+ if (!p) p = string + strlen (string);
+ suffixes = Fcons (make_string (string, p - string),
+ suffixes);
+ if (*p)
+ string = p + 1;
+ else
+ break;
+ }
+ return Fnreverse (suffixes);
+}
+
void
syms_of_callproc ()
{
@@ -1587,6 +1608,11 @@ Initialized from the SHELL environment variable.");
"*List of directories to search programs to run in subprocesses.\n\
Each element is a string (directory name) or nil (try default directory).");
+ DEFVAR_LISP ("exec-suffixes", &Vexec_suffixes,
+ "*List of suffixes to try to find executable file names.\n\
+Each element is a string");
+ Vexec_suffixes = decode_suffixes (EXEC_SUFFIXES);
+
DEFVAR_LISP ("exec-directory", &Vexec_directory,
"Directory for executables for Emacs to invoke.\n\
More generally, this includes any architecture-dependent files\n\