123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- .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.
|