diff options
| author | Richard M. Stallman <rms@gnu.org> | 1993-10-22 01:16:04 +0000 |
|---|---|---|
| committer | Richard M. Stallman <rms@gnu.org> | 1993-10-22 01:16:04 +0000 |
| commit | 20ddfff7191bdbfbb419964a1ce129e050c4e382 (patch) | |
| tree | 0c42acd5f313278292c8864b919e46398d912fe7 /src/process.c | |
| parent | 4e24c6b147db4309dbf7134eb5a9c1cb279bc498 (diff) | |
(status_notify): Don't read from process if filter is t.
(Fset_process_filter): Set or clear bit in input_wait_mask when nec.
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/process.c b/src/process.c index aa7ae12aff4..491baa6434c 100644 --- a/src/process.c +++ b/src/process.c @@ -678,6 +678,7 @@ DEFUN ("process-mark", Fprocess_mark, Sprocess_mark, DEFUN ("set-process-filter", Fset_process_filter, Sset_process_filter, 2, 2, 0, "Give PROCESS the filter function FILTER; nil means no filter.\n\ +t means stop accepting output from the process.\n\ When a process has a filter, each time it does output\n\ the entire string of output is passed to the filter.\n\ The filter gets two arguments: the process and the string of output.\n\ @@ -686,6 +687,10 @@ If the process has a filter, its buffer is not used for output.") register Lisp_Object proc, filter; { CHECK_PROCESS (proc, 0); + if (EQ (filter, Qt)) + FD_CLR (XPROCESS (proc)->infd, &input_wait_mask); + else if (EQ (XPROCESS (proc)->filter, Qt)) + FD_SET (XPROCESS (proc)->infd, &input_wait_mask); XPROCESS (proc)->filter = filter; return filter; } @@ -2849,7 +2854,8 @@ status_notify () /* If process is still active, read any output that remains. */ if (XFASTINT (p->infd)) - while (read_process_output (proc, XFASTINT (p->infd)) > 0); + while (! EQ (p->filter, Qt) + && read_process_output (proc, XFASTINT (p->infd)) > 0); buffer = p->buffer; |
