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