PIPEFILE(1)PIPEFILE(1)
NAME
pipefile – attach filter to file in name space
SYNOPSIS
pipefile
[
-d
] [
-r
command
] [
-w
command
]
file
DESCRIPTION
Pipefile
uses
bind(2)
to attach a pair of pipes to
file,
using them to
interpose filter
commands
between the true file and the simulated file that subsequently
appears in the name space.
Option
-r
interposes a filter that will affect the data delivered to programs that read from
file;
-w
interposes a filter that will affect the data written by programs to
file.
At least one
command
must be specified;
pipefile
will insert a
cat(1)
process in the other direction.
After
pipefile
has been run, the filters are established for programs that subsequently
open the
file;
programs already using the
file
are unaffected.
Pipefile
opens the
file
twice, once for each direction. If the
file
is a single-use device, such as
/dev/mouse,
use the
-d
flag to specify that the file is to be opened once, in
ORDWR
mode.
EXAMPLES
Simulate an old terminal:
% pipefile -w 'tr a-z A-Z' /dev/cons
% rc -i </dev/cons >/dev/cons >[2=1]
% echo hello
HELLO
%
Really simulate an old terminal:
% pipefile -r 'tr A-Z a-z' -w 'tr a-z A-Z' /dev/cons
% rc -i </dev/cons >/dev/cons >[2=1]
% DATE
THU OCT 12 10:13:45 EDT 2000
%
SOURCE
/sys/src/cmd/pipefile.c
SEE
mouse(8)
BUGS
The I/O model of
pipefile
is peculiar; it doesn’t work well on plain files.
It is really intended for use with continuous devices such as
/dev/cons
and
/dev/mouse.
Pipefile
should be rewritten to be a user-level file system.
If the program using the file managed by
pipefile
exits, the filter will see EOF and exit, and the file will be unusable
until the name space is repaired.