]> git.lizzy.rs Git - plan9front.git/blob - sys/man/1/pipefile
merge
[plan9front.git] / sys / man / 1 / pipefile
1 .TH PIPEFILE 1
2 .SH NAME
3 pipefile \- attach filter to file in name space
4 .SH SYNOPSIS
5 .B pipefile
6 [
7 .B -d
8 ] [
9 .B -r
10 .I command
11 ] [
12 .B -w
13 .I command
14 ]
15 .I file
16 .SH DESCRIPTION
17 .I Pipefile
18 uses
19 .IR bind (2)
20 to attach a pair of pipes to
21 .IR file ,
22 using them to
23 interpose filter
24 .I commands
25 between the true file and the simulated file that subsequently
26 appears in the name space.
27 Option
28 .B -r
29 interposes a filter that will affect the data delivered to programs that read from
30 .IR file ;
31 .B -w
32 interposes a filter that will affect the data written by programs to
33 .IR file .
34 At least one
35 .I command
36 must be specified;
37 .I pipefile
38 will insert a
39 .IR cat (1)
40 process in the other direction.
41 .PP
42 After
43 .I pipefile
44 has been run, the filters are established for programs that subsequently
45 open the
46 .IR file ;
47 programs already using the
48 .I file
49 are unaffected.
50 .PP
51 .I Pipefile
52 opens the
53 .I file
54 twice, once for each direction.  If the
55 .I file
56 is a single-use device, such as
57 .BR /dev/mouse ,
58 use the
59 .B -d
60 flag to specify that the file is to be opened once, in
61 .B ORDWR
62 mode.
63 .SH EXAMPLES
64 Simulate an old terminal:
65 .EX
66 .IP
67 % pipefile -w 'tr a-z A-Z' /dev/cons
68 % rc -i </dev/cons >/dev/cons >[2=1]
69 % echo hello
70 HELLO
71 %
72 .EE
73 .PP
74 Really simulate an old terminal:
75 .EX
76 .IP
77 % pipefile -r 'tr A-Z a-z' -w 'tr a-z A-Z' /dev/cons
78 % rc -i </dev/cons >/dev/cons >[2=1]
79 % DATE
80 THU OCT 12 10:13:45 EDT 2000
81 %
82 .EE
83 .SH SOURCE
84 .B /sys/src/cmd/pipefile.c
85 .SH SEE ALSO
86 .IR mouse (8)
87 .SH BUGS
88 The I/O model of
89 .I pipefile
90 is peculiar; it doesn't work well on plain files.
91 It is really intended for use with continuous devices such as
92 .I /dev/cons
93 and
94 .IR /dev/mouse .
95 .I Pipefile
96 should be rewritten to be a user-level file system.
97 .PP
98 If the program using the file managed by
99 .I pipefile
100 exits, the filter will see EOF and exit, and the file will be unusable
101 until the name space is repaired.