• Daiki Ueno's avatar
    Add facility to collect stderr of async subprocess · f55ea05b
    Daiki Ueno authored
    * src/w32.h (register_aux_fd): New function declaration.
    * src/w32.c (register_aux_fd): New function.
    * src/process.h (struct Lisp_Process): New member stderrproc.
    * src/process.c (PIPECONN_P): New macro.
    (PIPECONN1_P): New macro.
    (Fdelete_process, Fprocess_status, Fset_process_buffer)
    (Fset_process_filter, Fset_process_sentinel, Fstop_process)
    (Fcontinue_process): Handle pipe process specially.
    (create_process): Respect p->stderrproc.
    (Fmake_pipe_process): New function.
    (Fmake_process): Add new keyword argument :stderr.
    (wait_reading_process_output): Specially handle a pipe process when
    it gets an EOF.
    (syms_of_process): Register Qpipe and Smake_pipe_process.
    * doc/lispref/processes.texi (Asynchronous Processes): Document
    `make-pipe-process' and `:stderr' keyword of `make-process'.
    * lisp/subr.el (start-process): Suggest to use `make-process' handle
    standard error separately.
    * test/automated/process-tests.el (process-test-stderr-buffer)
    (process-test-stderr-filter): New tests.
    * etc/NEWS: Mention new process type `pipe' and its usage with the
    `:stderr' keyword of `make-process'.
subr.el 196 KB