the case of READ_KBD being a cons cell. Retry the timer check
after a timer fired. (All of these make this definition
consistent with the one that supports async subprocesses.)
(wait_reading_process_input, both definitions):
Use plain detect_input_pending just before the select call.
block signals, if available. If HAVE_VFORK, save and restore
signal handlers that the child might change, since in many
systems (e.g. Solaris 2.4) if the child changes the signal
handlers this munges the parent's handler.
IS_DEVICE_SEP, DIRECTORY_SEP, and DEVICE_SEP.
[WINDOWSNT]: Add includes. Don't define sys_siglist.
(sigchld_handler): Work around bug in MS C compiler.
(sigchld_handler) [WINDOWSNT]: Do not call signal.
(signal_process) [WINDOWSNT]: Use win32_kill_process instead of kill.
(read_process_output) [WINDOWSNT]: Use read_child_output instead of
read.
(create_process) [WINDOWSNT]: Use
pipe_with_inherited_out and pipe_with_inherited_in.
Use the pid returned by child_setup. Deal with not having vfork,
Call register_child.
(close_process_descs): Do nothing if WINDOWSNT.
(proc_buffer_char): No longer static.
(non_keyboard_wait_mask): New variable.
(Fset_process_filter): Update non_keyboard_wait_mask
(create_process, Fopen_network_stream, deactivate_process):
(init_process, sigchld_handler): Likewise.
(wait_reading_process_input): Maybe use non_keyboard_wait_mask.
(add_keyboard_wait_descriptor):
Renamed from change_keyboard_wait_descriptor.
Clear the old descriptor's bit only the first call.
(delete_keyboard_wait_descriptor): New function.
(keyboard_bit_set): New function.
(wait_reading_process_input): Use keyboard_bit_set.
Start the loop over process descs from 0, and explicitly
ignore non-process input descs.
(init_process): Don't init keyboard_descriptor.
(keyboard_descriptor): Variable deleted.
(add_keyboard_wait_descriptor): Don't set keyboard_descriptor.
(delete_keyboard_wait_descriptor): New function.
Fprocess_exit_status, list_processes_1, Fstart_process, Fopen_network_stream,
Faccept_process_output, wait_reading_process_input, sigchld_handler,
status_notify): Use type test macros.
(exec_sentinel): Catch all errors in the sentinel.
(read_process_output_error_handler): New function.
(read_process_output_call): New function.
(read_process_output): Catch and report errors in filters.
(pty_name): Move it up; make it static.
(create_process): Set the tty_name field.
(Fprocess_tty_name): New function.
(syms_of_process): defsubr it.
Don't put in a C-d unless a single line is too long.
Read process input whenever output gets stuck.
Relocate BUF if we read input. New arg OBJECT.
Fprocess_send_region, Fprocess_send_string, process_send_signal)
(Fprocess_send_eof): Pass new arg OBJECT.
unless we are going to redisplay for a garbaged frame.
(read_process_output): Call prepare_menu_bars if waiting for input.
(exec_sentinel): Call prepare_menu_bars if waiting for input.
(wait_reading_process_output): Don't look for process output
beyond that many bits.
(create_process, Fopen_network_stream, deactivate_process): Update it.
(init_process): Initialize it.
[BROKEN_O_NONBLOCK]: Undefine O_NONBLOCK.
(create_process): Delete SYSV4_PTYS code.
(deactivate_process): Likewise.
(create_process) [SET_CHILD_PTY_PGRP]: Do ioctls
to set the pgrp of the pty.
(wait_reading_process_input): Call prepare_menu_bars.
Use -1 to mean wait_channel is empty.
Start process loop with descriptor 0 if keyboard_descriptor is not 0.
(make_process): Initialize descriptors to -1.
(Fdelete_process): -1 means empty, in infd.
(deactivate_process): Likewise.
(process_send_signal): Likewise.
(kill_buffer_processes): Likewise.
(sigchld_handler): Likewise.
(status_notify): Likewise.
(close_process_descs): Likewise.
(create_process): Likewise.
(Fopen_network_stream): Likewise.
(send_process): Likewise.
(Fprocess_send_eof): Likewise. Use XINT when closing outfd.
(Fset_process_filter): Use XINT to get infd value.
(wait_reading_process_input): Likewise.
(wait_reading_process_input): When bypassing select, clear Available.
* s/irix4-0.h: Get rid of our fake definitions for setpgrp and
getpgrp.
* callproc.c (Fcall_process): Go ahead and use the USG calling
convention for setpgrp.
* ymakefile (pre-crt0.o): Add rule for this. Perhaps it will help
separate-source-directory compilation.
* emacs.c (shut_down_emacs): Some USG systems #define
EMACS_HAVE_TTY_PGRP; call getpgrp as appropriate for such systems.
* sysdep.c (sys_suspend): Call getpgrp as appropriate for USG and
non-USG.
* process.c [IRIX] (create_process): Don't put child in process
group zero before opening the tty; Irix is like USG in this
regard.
call setpgrp with arguments, even if USG is #defined.
* process.c [IRIX] (create_process): Don't call setpgrp before
opening the pty. Call it after doing the TIOCNOTTY ioctl.
* s/template.h: Mention that you should #define HAVE_TERMIO or
HAVE_TERMIOS, but not both, and that HAVE_TERMIOS is preferred.
* systty.h (EMACS_SET_TTY_PGRP): Don't assign the return value of
tcsetpgrp to *pgid; it's just a status value.
* config.h.in (HAVE_RANDOM): This shouldn't be defined on Linux
systems using XFree386, and perhaps is inappropriate in general.
* m/intel386.h: #undefine the integer size macros, since the Linux
<values.h> file #defines them itself.
* mem-limits.h (get_lim_data): Linux has the ulimit call; if it
fails, fall back on ULIMIT_BREAK_VALUE.
* process.c: Linux needs the WAITTYPE, etc. definitions.
* unexec.c (hdr, ohdr): Linux has the ordinary `struct exec' type;
no need to use SYSV names.
* s/linux.h: New file.
equivalent of /dev/null, and the suffixes used by executable
files. This is simple, and helps people porting Emacs to other
operating systems.
* process.h (NULL_DEVICE): Give this a default value.
* process.c (Fstart_process): Pass EXEC_SUFFIXES to openp.
(Fprocess_send_eof): Use NULL_DEVICE instead of "/dev/null".
* callproc.c (Fcall_process): Pass EXEC_SUFFIXES to openp.
Use NULL_DEVICE instead of "/dev/null".
floating-point as well as integer arguments. subr.el defines the
former as an alias for the latter.
* data.c (Fnumber_to_string): Renamed from Fint_to_string.
(wrong_type_argument): Adjust caller.
(syms_of_data): Adjust defsubr.
* fns.c (concat): Adjust caller.
* lisp.h (Fnumber_to_string): Adjust extern declaration.
* mocklisp.c (Finsert_string): Adjust caller.
* process.c (status_message): Adjust caller.
control characters to processes, don't try to return Qnil; just
return.
* process.c [! subprocesses] (wait_reading_process_input):
Remember to re-enable polling for input.
the sigchld handler clear *input_available_clear_time.
(wait_reading_process_input): Check for process activity after
setting the timeout and calling set_waiting_for_input.
(sigchld_handler): If the process which has exited is one we care
about, clear *input_available_clear_time.
* process.c (process_send_signal): Use TERMIOS functions in
preference to BSD ioctls. Some systems attempt to provide the BSD
functions for backward compatibility, and get it wrong.
garbaged whenever it goes from invisible to visible.
* dispextern.h (frame_garbaged): Move extern declaration from here...
* frame.h (frame_garbaged): ... to here. The FRAME_SAMPLE_VISIBILITY
macro uses it now, and this seems to be just as modular. Make a
new page, just for this and message_buf_print.
(struct frame): Doc fix for the `visible' field.
* process.c: #include "frame.h" instead of "dispextern.h"; the
only thing we care about from it is the frame_garbaged
declaration.
* ymakefile: Note dependency change.
for subprocesses when the buffer's default-directory is a handled
name.
* fileio.c (Funhandled_file_name_directory): New function.
(Qunhandled_file_name_directory): New file-name-handler operation.
(syms_of_fileio): Defsubr Sunhandled_file_name_directory, and
initialize and staticpro Qunhandled_file_name_directory.
* callproc.c (Fcall_process): Call Funhandled_file_name_directory
on the buffer's default directory. Do it earlier in the function
so there's less to GCPRO.
* process.c (create_process): Don't check the validity of the
buffer's default directory here...
(Fstart_process): Instead, do it here; if we call
Funhandled_file_name_directory here, there's less GCPROing to do.
Added VMS changes from Roland Roberts.
* process.c (read_process_output): Save, widen, insert the process
output, and then restore the restriction if inserting text outside
the visible region.
* process.c (Fstart_process): Establish an unwind-protect to
remove PROC from the process list if an error occurs while
starting it.
(start_process_unwind): New function to help with that.
(create_process): There's no need to explicitly call
remove_process if the fork fails; the record_unwind_protect in
Fstart_process will take care of it.
* process.c (wait_reading_process_input): Test the C preprocessor
symbol "ultrix", not "__ultrix__" to see if we should ignore
ENOMEM errors from select.
* process.c (process_send_signal): On systems which have both
the TIOCGETC and TCGETA ioctls, just use the former.
* s/bsd4-2.h, s/bsd4-3.h: #define SIGNALS_VIA_CHARACTERS.
* process.c (process_send_signal): Put all the code for sending
signals via characters in a #ifdef SIGNALS_VIA_CHARACTERS. Decide
whether to use the Berkeley-style or SYSV-style ioctls by seeing
which ioctl commands are #defined.
* process.c (process_send_signal): Doc fix.
Lisp_Object at the top of the file.
(decode_status): Don't untag XCONS (tem)->cdr before storing it in
tem; tem is a Lisp_Object, too.
(process_send_signal): Declare this to be static void. Don't
return Qnil; nobody cares.
(sigchld_handler): Use XFASTINT to manipulate p->infd.
* process.c (pty_process): Variable deleted; it's no longer used.
(syms_of_process): Don't initialize it.
(create_process): #if 0 out the code which sets the child's
handler for SIGCHLD to sigchld; the code which gives sigchld its
value has been diked out under these CPP symbols, so this should
be diked out too.
system doesn't have that facility.
* process.c: [USG5] Don't include <fcntl.h>.
[USG] Don't bother including termios, termio, or fcntl; systerm.h
takes care of all that.
Remove the "mis;tak-+;;" line from the code; apparently this
section of code does get used.
* process.c (wait_reading_process_input): Put comments around
text following #endif.