ref: d31b10c42e29ba0befe9290164ec587d2a3ebb1e
dir: /sys/man/1/pipefile/
.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.