HCoop
/
bpt
/
emacs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge from trunk.
[bpt/emacs.git]
/
src
/
callproc.c
diff --git
a/src/callproc.c
b/src/callproc.c
index
c5208fb
..
22245f2
100644
(file)
--- a/
src/callproc.c
+++ b/
src/callproc.c
@@
-102,8
+102,12
@@
static Lisp_Object Fgetenv_internal (Lisp_Object, Lisp_Object);
static Lisp_Object
call_process_kill (Lisp_Object fdpid)
{
static Lisp_Object
call_process_kill (Lisp_Object fdpid)
{
- emacs_close (XFASTINT (Fcar (fdpid)));
- EMACS_KILLPG (XFASTINT (Fcdr (fdpid)), SIGKILL);
+ int fd;
+ pid_t pid;
+ CONS_TO_INTEGER (Fcar (fdpid), int, fd);
+ CONS_TO_INTEGER (Fcdr (fdpid), pid_t, pid);
+ emacs_close (fd);
+ EMACS_KILLPG (pid, SIGKILL);
synch_process_alive = 0;
return Qnil;
}
synch_process_alive = 0;
return Qnil;
}
@@
-112,18
+116,18
@@
static Lisp_Object
call_process_cleanup (Lisp_Object arg)
{
Lisp_Object fdpid = Fcdr (arg);
call_process_cleanup (Lisp_Object arg)
{
Lisp_Object fdpid = Fcdr (arg);
+ int fd;
#if defined (MSDOS)
Lisp_Object file;
#if defined (MSDOS)
Lisp_Object file;
- int fd;
#else
#else
-
in
t pid;
+
pid_
t pid;
#endif
Fset_buffer (Fcar (arg));
#endif
Fset_buffer (Fcar (arg));
+ CONS_TO_INTEGER (Fcar (fdpid), int, fd);
#if defined (MSDOS)
/* for MSDOS fdpid is really (fd . tempfile) */
#if defined (MSDOS)
/* for MSDOS fdpid is really (fd . tempfile) */
- fd = XFASTINT (Fcar (fdpid));
file = Fcdr (fdpid);
/* FD is -1 and FILE is "" when we didn't actually create a
temporary file in call-process. */
file = Fcdr (fdpid);
/* FD is -1 and FILE is "" when we didn't actually create a
temporary file in call-process. */
@@
-132,17
+136,17
@@
call_process_cleanup (Lisp_Object arg)
if (!(strcmp (SDATA (file), NULL_DEVICE) == 0 || SREF (file, 0) == '\0'))
unlink (SDATA (file));
#else /* not MSDOS */
if (!(strcmp (SDATA (file), NULL_DEVICE) == 0 || SREF (file, 0) == '\0'))
unlink (SDATA (file));
#else /* not MSDOS */
-
pid = XFASTINT (Fcdr (fdpid)
);
+
CONS_TO_INTEGER (Fcdr (fdpid), pid_t, pid
);
if (call_process_exited)
{
if (call_process_exited)
{
- emacs_close (
XFASTINT (Fcar (fdpid))
);
+ emacs_close (
fd
);
return Qnil;
}
if (EMACS_KILLPG (pid, SIGINT) == 0)
{
return Qnil;
}
if (EMACS_KILLPG (pid, SIGINT) == 0)
{
-
in
t count = SPECPDL_INDEX ();
+
ptrdiff_
t count = SPECPDL_INDEX ();
record_unwind_protect (call_process_kill, fdpid);
message1 ("Waiting for process to die...(type C-g again to kill it instantly)");
immediate_quit = 1;
record_unwind_protect (call_process_kill, fdpid);
message1 ("Waiting for process to die...(type C-g again to kill it instantly)");
immediate_quit = 1;
@@
-153,7
+157,7
@@
call_process_cleanup (Lisp_Object arg)
message1 ("Waiting for process to die...done");
}
synch_process_alive = 0;
message1 ("Waiting for process to die...done");
}
synch_process_alive = 0;
- emacs_close (
XFASTINT (Fcar (fdpid))
);
+ emacs_close (
fd
);
#endif /* not MSDOS */
return Qnil;
}
#endif /* not MSDOS */
return Qnil;
}
@@
-186,17
+190,16
@@
If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.
usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
(ptrdiff_t nargs, Lisp_Object *args)
{
usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
(ptrdiff_t nargs, Lisp_Object *args)
{
- Lisp_Object infile, buffer, current_dir, path;
-
volatile int display_p_volatile
;
+ Lisp_Object infile, buffer, current_dir, path
, cleanup_info_tail
;
+
int display_p
;
int fd[2];
int filefd;
int fd[2];
int filefd;
- register int pid;
#define CALLPROC_BUFFER_SIZE_MIN (16 * 1024)
#define CALLPROC_BUFFER_SIZE_MAX (4 * CALLPROC_BUFFER_SIZE_MIN)
char buf[CALLPROC_BUFFER_SIZE_MAX];
int bufsize = CALLPROC_BUFFER_SIZE_MIN;
#define CALLPROC_BUFFER_SIZE_MIN (16 * 1024)
#define CALLPROC_BUFFER_SIZE_MAX (4 * CALLPROC_BUFFER_SIZE_MIN)
char buf[CALLPROC_BUFFER_SIZE_MAX];
int bufsize = CALLPROC_BUFFER_SIZE_MIN;
-
in
t count = SPECPDL_INDEX ();
-
volatile
USE_SAFE_ALLOCA;
+
ptrdiff_
t count = SPECPDL_INDEX ();
+ USE_SAFE_ALLOCA;
register const unsigned char **new_argv;
/* File to use for stderr in the child.
register const unsigned char **new_argv;
/* File to use for stderr in the child.
@@
-206,6
+209,9
@@
usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
#ifdef MSDOS /* Demacs 1.1.1 91/10/16 HIRANO Satoshi */
char *outf, *tempfile = NULL;
int outfilefd;
#ifdef MSDOS /* Demacs 1.1.1 91/10/16 HIRANO Satoshi */
char *outf, *tempfile = NULL;
int outfilefd;
+ int pid;
+#else
+ pid_t pid;
#endif
int fd_output = -1;
struct coding_system process_coding; /* coding-system of process output */
#endif
int fd_output = -1;
struct coding_system process_coding; /* coding-system of process output */
@@
-370,7
+376,7
@@
usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
UNGCPRO;
}
UNGCPRO;
}
- display_p
_volatile
= INTERACTIVE && nargs >= 4 && !NILP (args[3]);
+ display_p = INTERACTIVE && nargs >= 4 && !NILP (args[3]);
filefd = emacs_open (SSDATA (infile), O_RDONLY, 0);
if (filefd < 0)
filefd = emacs_open (SSDATA (infile), O_RDONLY, 0);
if (filefd < 0)
@@
-606,10
+612,13
@@
usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
Lisp_Object volatile buffer_volatile = buffer;
Lisp_Object volatile coding_systems_volatile = coding_systems;
Lisp_Object volatile current_dir_volatile = current_dir;
Lisp_Object volatile buffer_volatile = buffer;
Lisp_Object volatile coding_systems_volatile = coding_systems;
Lisp_Object volatile current_dir_volatile = current_dir;
+ int volatile display_p_volatile = display_p;
int volatile fd1_volatile = fd1;
int volatile fd_error_volatile = fd_error;
int volatile fd_output_volatile = fd_output;
int volatile output_to_buffer_volatile = output_to_buffer;
int volatile fd1_volatile = fd1;
int volatile fd_error_volatile = fd_error;
int volatile fd_output_volatile = fd_output;
int volatile output_to_buffer_volatile = output_to_buffer;
+ int volatile sa_must_free_volatile = sa_must_free;
+ ptrdiff_t volatile sa_count_volatile = sa_count;
unsigned char const **volatile new_argv_volatile = new_argv;
pid = vfork ();
unsigned char const **volatile new_argv_volatile = new_argv;
pid = vfork ();
@@
-617,10
+626,13
@@
usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
buffer = buffer_volatile;
coding_systems = coding_systems_volatile;
current_dir = current_dir_volatile;
buffer = buffer_volatile;
coding_systems = coding_systems_volatile;
current_dir = current_dir_volatile;
+ display_p = display_p_volatile;
fd1 = fd1_volatile;
fd_error = fd_error_volatile;
fd_output = fd_output_volatile;
output_to_buffer = output_to_buffer_volatile;
fd1 = fd1_volatile;
fd_error = fd_error_volatile;
fd_output = fd_output_volatile;
output_to_buffer = output_to_buffer_volatile;
+ sa_must_free = sa_must_free_volatile;
+ sa_count = sa_count_volatile;
new_argv = new_argv_volatile;
}
new_argv = new_argv_volatile;
}
@@
-693,16
+705,14
@@
usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
#if defined (MSDOS)
/* MSDOS needs different cleanup information. */
#if defined (MSDOS)
/* MSDOS needs different cleanup information. */
- record_unwind_protect (call_process_cleanup,
- Fcons (Fcurrent_buffer (),
- Fcons (make_number (fd[0]),
- build_string (tempfile ? tempfile : ""))));
+ cleanup_info_tail = build_string (tempfile ? tempfile : "");
#else
#else
+ cleanup_info_tail = INTEGER_TO_CONS (pid);
+#endif /* not MSDOS */
record_unwind_protect (call_process_cleanup,
Fcons (Fcurrent_buffer (),
record_unwind_protect (call_process_cleanup,
Fcons (Fcurrent_buffer (),
- Fcons (make_number (fd[0]), make_number (pid))));
-#endif /* not MSDOS */
-
+ Fcons (INTEGER_TO_CONS (fd[0]),
+ cleanup_info_tail)));
if (BUFFERP (buffer))
Fset_buffer (buffer);
if (BUFFERP (buffer))
Fset_buffer (buffer);
@@
-758,11
+768,10
@@
usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
if (output_to_buffer)
{
if (output_to_buffer)
{
- register
EMACS_INT
nread;
+ register
int
nread;
int first = 1;
EMACS_INT total_read = 0;
int carryover = 0;
int first = 1;
EMACS_INT total_read = 0;
int carryover = 0;
- int display_p = display_p_volatile;
int display_on_the_fly = display_p;
struct coding_system saved_coding;
int display_on_the_fly = display_p;
struct coding_system saved_coding;
@@
-805,7
+814,7
@@
usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
else
{ /* We have to decode the input. */
Lisp_Object curbuf;
else
{ /* We have to decode the input. */
Lisp_Object curbuf;
-
in
t count1 = SPECPDL_INDEX ();
+
ptrdiff_
t count1 = SPECPDL_INDEX ();
XSETBUFFER (curbuf, current_buffer);
/* We cannot allow after-change-functions be run
XSETBUFFER (curbuf, current_buffer);
/* We cannot allow after-change-functions be run
@@
-924,7
+933,7
@@
static Lisp_Object
delete_temp_file (Lisp_Object name)
{
/* Suppress jka-compr handling, etc. */
delete_temp_file (Lisp_Object name)
{
/* Suppress jka-compr handling, etc. */
-
in
t count = SPECPDL_INDEX ();
+
ptrdiff_
t count = SPECPDL_INDEX ();
specbind (intern ("file-name-handler-alist"), Qnil);
internal_delete_file (name);
unbind_to (count, Qnil);
specbind (intern ("file-name-handler-alist"), Qnil);
internal_delete_file (name);
unbind_to (count, Qnil);
@@
-961,7
+970,7
@@
usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
struct gcpro gcpro1;
Lisp_Object filename_string;
register Lisp_Object start, end;
struct gcpro gcpro1;
Lisp_Object filename_string;
register Lisp_Object start, end;
-
in
t count = SPECPDL_INDEX ();
+
ptrdiff_
t count = SPECPDL_INDEX ();
/* Qt denotes we have not yet called Ffind_operation_coding_system. */
Lisp_Object coding_systems;
Lisp_Object val, *args2;
/* Qt denotes we have not yet called Ffind_operation_coding_system. */
Lisp_Object coding_systems;
Lisp_Object val, *args2;
@@
-1038,7
+1047,7
@@
usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
val = complement_process_encoding_system (val);
{
val = complement_process_encoding_system (val);
{
-
in
t count1 = SPECPDL_INDEX ();
+
ptrdiff_
t count1 = SPECPDL_INDEX ();
specbind (intern ("coding-system-for-write"), val);
/* POSIX lets mk[s]temp use "."; don't invoke jka-compr if we
specbind (intern ("coding-system-for-write"), val);
/* POSIX lets mk[s]temp use "."; don't invoke jka-compr if we
@@
-1138,7
+1147,7
@@
child_setup (int in, int out, int err, register char **new_argv, int set_pgrp, L
HANDLE handles[3];
#endif /* WINDOWSNT */
HANDLE handles[3];
#endif /* WINDOWSNT */
-
in
t pid = getpid ();
+
pid_
t pid = getpid ();
/* Close Emacs's descriptors that this process should not have. */
close_process_descs ();
/* Close Emacs's descriptors that this process should not have. */
close_process_descs ();