[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Proposal for extending set-process-filter
From: |
David Kastrup |
Subject: |
Proposal for extending set-process-filter |
Date: |
27 Apr 2004 01:55:46 +0200 |
Currently, processes called with call-process can't have their stdout
and stderr directed to different buffers/filter functions/whatever.
This is painfully obvious when using pipes and redirections in eshell.
I'd propose that set-process-filter gets extended in the following
way:
set-process-filter is a built-in function in `src/process.c'.
(set-process-filter PROCESS FILTER)
Give PROCESS the filter function FILTER; nil means no filter.
t means stop accepting output from the process.
A filter can be
1) a function which gets two arguments. [insert old description]
2) a buffer into which output gets inserted.
3) a file name for output.
4) t to stop accepting output.
5) a list of filter/file descriptor associations.
The car's of the elements of this list are an item from 1)-4) as
above, while the cdr is a list of file ids for which this item is
supposed to apply.
So to redirect output of stdout and stderr to /dev/null, you'd specify
(set-process-filter my-process '(("/dev/null" 1 2)))
If a list is specified in this manner, the operation of unspecified
file descriptors is not affected.
This does not yet do everything needed for a full-bodied eshell: input
redirections (including procedural input, equivalents to filter
functions) and output appending redirection (>>) are not covered
yet. But it would be a first step.
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum