term% cat index.txt PIPEFILE(1) General Commands Manual 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 pro‐
grams 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 ALSO
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.
PIPEFILE(1)