Blame


1 058b0118 2005-01-03 devnull .TH 9PCLIENT 3
2 058b0118 2005-01-03 devnull .SH NAME
3 73a5509a 2006-07-23 devnull CFid, CFsys, fsinit, fsmount, fsroot, fssetroot, fsunmount, nsinit, nsmount, fsversion, fsauth, fsattach, fsclose, fscreate, fsfcreate, fsremove, fsfremove, fsaccess, fsdirread, fsdirreadall, fsdirstat, fsdirfstat, fsdirwstat, fsdirfwstat, fsopen, fsfopen, nsopen, fsopenfd, fspread, fspwrite, fsread, fsreadn, fsseek, fswrite, fsprint, fsvprint \- 9P client library
4 058b0118 2005-01-03 devnull .SH SYNOPSIS
5 058b0118 2005-01-03 devnull .B #include <u.h>
6 058b0118 2005-01-03 devnull .PP
7 058b0118 2005-01-03 devnull .B #include <libc.h>
8 058b0118 2005-01-03 devnull .PP
9 058b0118 2005-01-03 devnull .B #include <fcall.h>
10 40a2ff6f 2006-01-30 devnull .PP
11 40a2ff6f 2006-01-30 devnull .B #include <thread.h>
12 058b0118 2005-01-03 devnull .PP
13 058b0118 2005-01-03 devnull .B #include <9pclient.h>
14 c8b6342d 2005-01-13 devnull .ta +\w'\fLCFsys* 'u
15 058b0118 2005-01-03 devnull .PP
16 058b0118 2005-01-03 devnull .B
17 058b0118 2005-01-03 devnull CFsys* fsmount(int fd, char *aname)
18 058b0118 2005-01-03 devnull .PP
19 058b0118 2005-01-03 devnull .B
20 058b0118 2005-01-03 devnull CFsys* nsmount(char *name, char *aname)
21 058b0118 2005-01-03 devnull .PP
22 058b0118 2005-01-03 devnull .B
23 058b0118 2005-01-03 devnull CFid* fsroot(CFsys *fsys)
24 058b0118 2005-01-03 devnull .PP
25 058b0118 2005-01-03 devnull .B
26 058b0118 2005-01-03 devnull void fsunmount(CFsys *fsys)
27 058b0118 2005-01-03 devnull .PP
28 058b0118 2005-01-03 devnull .B
29 058b0118 2005-01-03 devnull CFsys* fsinit(int fd)
30 058b0118 2005-01-03 devnull .PP
31 058b0118 2005-01-03 devnull .B
32 d93fca6a 2005-02-11 devnull CFsys* nsinit(char *name)
33 d93fca6a 2005-02-11 devnull .PP
34 d93fca6a 2005-02-11 devnull .B
35 058b0118 2005-01-03 devnull int fsversion(CFsys *fsys, int msize, char *version, int nversion)
36 058b0118 2005-01-03 devnull .PP
37 058b0118 2005-01-03 devnull .B
38 e4d62adf 2005-01-18 devnull CFid* fsauth(CFsys *fsys, char *uname, char *aname)
39 058b0118 2005-01-03 devnull .PP
40 058b0118 2005-01-03 devnull .B
41 e4d62adf 2005-01-18 devnull CFid* fsattach(CFsys *fsys, CFid *afid, char *uname, char *aname)
42 058b0118 2005-01-03 devnull .PP
43 058b0118 2005-01-03 devnull .B
44 058b0118 2005-01-03 devnull void fssetroot(CFsys *fsys, CFid *fid)
45 058b0118 2005-01-03 devnull .PP
46 058b0118 2005-01-03 devnull .B
47 058b0118 2005-01-03 devnull void fsclose(CFid *fid)
48 058b0118 2005-01-03 devnull .PP
49 058b0118 2005-01-03 devnull .B
50 e4d62adf 2005-01-18 devnull CFid* fscreate(CFsys *fs, char *path, int mode, ulong perm)
51 058b0118 2005-01-03 devnull .PP
52 058b0118 2005-01-03 devnull .B
53 73a5509a 2006-07-23 devnull int fsfcreate(CFid *fid, char *path, int mode, ulong perm)
54 73a5509a 2006-07-23 devnull .PP
55 73a5509a 2006-07-23 devnull .B
56 5af8dd63 2006-03-19 devnull int fsremove(CFSys *fs, char *path)
57 5af8dd63 2006-03-19 devnull .PP
58 5af8dd63 2006-03-19 devnull .B
59 5af8dd63 2006-03-19 devnull int fsfremove(CFid *fid)
60 5af8dd63 2006-03-19 devnull .PP
61 5af8dd63 2006-03-19 devnull .B
62 5af8dd63 2006-03-19 devnull int fsaccess(CFsys *fs, char *path, int amode)
63 5af8dd63 2006-03-19 devnull .PP
64 5af8dd63 2006-03-19 devnull .B
65 058b0118 2005-01-03 devnull CFid* fsopen(CFsys *fs, char *path, int mode)
66 058b0118 2005-01-03 devnull .PP
67 058b0118 2005-01-03 devnull .B
68 73a5509a 2006-07-23 devnull int fsfopen(CFid *fid, char *path, int mode)
69 73a5509a 2006-07-23 devnull .PP
70 73a5509a 2006-07-23 devnull .B
71 058b0118 2005-01-03 devnull long fspread(CFid *fid, void *buf, long n, vlong offset)
72 058b0118 2005-01-03 devnull .PP
73 058b0118 2005-01-03 devnull .B
74 058b0118 2005-01-03 devnull long fspwrite(CFid *fid, void *buf, long n, vlong offset)
75 058b0118 2005-01-03 devnull .PP
76 058b0118 2005-01-03 devnull .B
77 058b0118 2005-01-03 devnull long fsread(CFid *fid, void *buf, long n)
78 058b0118 2005-01-03 devnull .PP
79 058b0118 2005-01-03 devnull .B
80 058b0118 2005-01-03 devnull long fsreadn(CFid *fid, void *buf, long n)
81 058b0118 2005-01-03 devnull .PP
82 058b0118 2005-01-03 devnull .B
83 058b0118 2005-01-03 devnull long fswrite(CFid *fid, void *buf, long n)
84 058b0118 2005-01-03 devnull .PP
85 058b0118 2005-01-03 devnull .B
86 5af8dd63 2006-03-19 devnull int fsprint(CFid *fid, char *fmt, ...)
87 5af8dd63 2006-03-19 devnull .PP
88 5af8dd63 2006-03-19 devnull .B
89 5af8dd63 2006-03-19 devnull int fsvprint(CFid *fid, char *fmt, ...)
90 5af8dd63 2006-03-19 devnull .PP
91 5af8dd63 2006-03-19 devnull .B
92 e4d62adf 2005-01-18 devnull vlong fsseek(CFid *Fid, vlong n, int type)
93 e4d62adf 2005-01-18 devnull .PP
94 e4d62adf 2005-01-18 devnull .B
95 73a5509a 2006-07-23 devnull Qid fsqid(CFid *fid)
96 73a5509a 2006-07-23 devnull .PP
97 73a5509a 2006-07-23 devnull .B
98 058b0118 2005-01-03 devnull long fsdirread(CFid *fid, Dir **d)
99 058b0118 2005-01-03 devnull .PP
100 058b0118 2005-01-03 devnull .B
101 058b0118 2005-01-03 devnull long fsdirreadall(CFid *fid, Dir **d)
102 058b0118 2005-01-03 devnull .PP
103 058b0118 2005-01-03 devnull .B
104 058b0118 2005-01-03 devnull Dir* fsdirstat(CFsys *fs, char *path)
105 058b0118 2005-01-03 devnull .PP
106 058b0118 2005-01-03 devnull .B
107 058b0118 2005-01-03 devnull Dir* fsdirfstat(CFid *fid)
108 058b0118 2005-01-03 devnull .PP
109 058b0118 2005-01-03 devnull .B
110 058b0118 2005-01-03 devnull int fsdirwstat(CFsys *fs, char *path, Dir *d)
111 058b0118 2005-01-03 devnull .PP
112 058b0118 2005-01-03 devnull .B
113 058b0118 2005-01-03 devnull int fsdirfwstat(CFid *fid, Dir *d)
114 058b0118 2005-01-03 devnull .PP
115 058b0118 2005-01-03 devnull .B
116 058b0118 2005-01-03 devnull int fsopenfd(CFsys *fs, char *path, int mode)
117 d93fca6a 2005-02-11 devnull .PP
118 d93fca6a 2005-02-11 devnull .B
119 d93fca6a 2005-02-11 devnull CFsys* nsopen(char *name, char *aname, char *path, int mode)
120 73a5509a 2006-07-23 devnull .PP
121 73a5509a 2006-07-23 devnull .B
122 73a5509a 2006-07-23 devnull extern int chatty9pclient;
123 73a5509a 2006-07-23 devnull .PP
124 73a5509a 2006-07-23 devnull .B
125 73a5509a 2006-07-23 devnull extern int eofkill9pclient;
126 058b0118 2005-01-03 devnull .SH DESCRIPTION
127 058b0118 2005-01-03 devnull The
128 058b0118 2005-01-03 devnull .I 9pclient
129 058b0118 2005-01-03 devnull library helps client programs interact with 9P servers.
130 058b0118 2005-01-03 devnull .PP
131 058b0118 2005-01-03 devnull A
132 058b0118 2005-01-03 devnull .B CFsys*
133 058b0118 2005-01-03 devnull represents a connection to a 9P server.
134 058b0118 2005-01-03 devnull A
135 058b0118 2005-01-03 devnull .B CFid*
136 058b0118 2005-01-03 devnull represents an active fid on some connection;
137 058b0118 2005-01-03 devnull see
138 058b0118 2005-01-03 devnull .IR intro (9p).
139 058b0118 2005-01-03 devnull .PP
140 058b0118 2005-01-03 devnull A new connection to a 9P server is typically established by
141 058b0118 2005-01-03 devnull .I fsmount
142 058b0118 2005-01-03 devnull or
143 058b0118 2005-01-03 devnull .IR nsmount .
144 058b0118 2005-01-03 devnull .I Fsmount
145 058b0118 2005-01-03 devnull initializes a new 9P conversation on the open file descriptor
146 058b0118 2005-01-03 devnull .IR fd ;
147 058b0118 2005-01-03 devnull .I nsmount
148 058b0118 2005-01-03 devnull connects to a service named
149 058b0118 2005-01-03 devnull .I name
150 058b0118 2005-01-03 devnull in the current name space directory
151 058b0118 2005-01-03 devnull (see
152 d32deab1 2020-08-16 rsc .MR intro (4) ).
153 058b0118 2005-01-03 devnull Both attach to the root of the file system
154 058b0118 2005-01-03 devnull using the attach name
155 058b0118 2005-01-03 devnull .IR aname .
156 058b0118 2005-01-03 devnull .I Fsroot
157 058b0118 2005-01-03 devnull returns the
158 058b0118 2005-01-03 devnull .B CFid*
159 058b0118 2005-01-03 devnull corresponding to this root.
160 058b0118 2005-01-03 devnull .PP
161 058b0118 2005-01-03 devnull .IR Fsinit ,
162 d93fca6a 2005-02-11 devnull .IR nsinit ,
163 058b0118 2005-01-03 devnull .IR fsversion ,
164 058b0118 2005-01-03 devnull .IR fsauth ,
165 058b0118 2005-01-03 devnull .IR fsattach ,
166 058b0118 2005-01-03 devnull and
167 058b0118 2005-01-03 devnull .I fssetroot
168 058b0118 2005-01-03 devnull provide more detailed control over the file system connection
169 058b0118 2005-01-03 devnull than
170 058b0118 2005-01-03 devnull .I fsmount
171 058b0118 2005-01-03 devnull and
172 058b0118 2005-01-03 devnull .IR nsmount .
173 058b0118 2005-01-03 devnull .I Fsinit
174 058b0118 2005-01-03 devnull allocates a new
175 058b0118 2005-01-03 devnull .B CFsys*
176 058b0118 2005-01-03 devnull corresponding to a 9P conversation on the file descriptor
177 d93fca6a 2005-02-11 devnull .I fd
178 d93fca6a 2005-02-11 devnull and then calls
179 d93fca6a 2005-02-11 devnull .IR fsversion
180 d93fca6a 2005-02-11 devnull to initialize the connection.
181 d93fca6a 2005-02-11 devnull .I Nsinit
182 d93fca6a 2005-02-11 devnull does the same for name space services.
183 058b0118 2005-01-03 devnull .I Fsversion
184 058b0118 2005-01-03 devnull executes a
185 058b0118 2005-01-03 devnull .IR version (9p)
186 058b0118 2005-01-03 devnull transaction to establish
187 058b0118 2005-01-03 devnull maximum message size and 9P version.
188 058b0118 2005-01-03 devnull .I Fsauth
189 058b0118 2005-01-03 devnull executes an
190 058b0118 2005-01-03 devnull .IR auth (9p)
191 058b0118 2005-01-03 devnull transaction, returning the new auth fid.
192 058b0118 2005-01-03 devnull .RI ( Fsread
193 058b0118 2005-01-03 devnull and
194 058b0118 2005-01-03 devnull .I fswrite
195 058b0118 2005-01-03 devnull can then be used to run the authentication protocol over the fid.)
196 058b0118 2005-01-03 devnull .I Fsattach
197 058b0118 2005-01-03 devnull executes an
198 058b0118 2005-01-03 devnull .IR attach (9p)
199 058b0118 2005-01-03 devnull transaction to connect to the root of a file tree served by the server.
200 058b0118 2005-01-03 devnull It presents
201 058b0118 2005-01-03 devnull .I afid
202 058b0118 2005-01-03 devnull (which may be nil)
203 058b0118 2005-01-03 devnull to establish identity.
204 058b0118 2005-01-03 devnull .I Fssetroot
205 058b0118 2005-01-03 devnull sets the root fid used by
206 058b0118 2005-01-03 devnull .IR fsopen ,
207 058b0118 2005-01-03 devnull .IR fsopenfd ,
208 058b0118 2005-01-03 devnull .IR fsdirstat ,
209 058b0118 2005-01-03 devnull and
210 058b0118 2005-01-03 devnull .IR fsdirwstat ,
211 058b0118 2005-01-03 devnull which evaluate rooted path names.
212 058b0118 2005-01-03 devnull .PP
213 058b0118 2005-01-03 devnull When a fid
214 058b0118 2005-01-03 devnull is no longer needed, it should be clunked by calling
215 058b0118 2005-01-03 devnull .I fsclose
216 058b0118 2005-01-03 devnull and then considered freed.
217 058b0118 2005-01-03 devnull Similarly, when the connection to the server is no longer needed,
218 058b0118 2005-01-03 devnull it should be closed by calling
219 058b0118 2005-01-03 devnull .IR fsunmount ,
220 058b0118 2005-01-03 devnull which will take care of calling
221 058b0118 2005-01-03 devnull .I fsclose
222 058b0118 2005-01-03 devnull on the current root fid.
223 058b0118 2005-01-03 devnull Once all fids have been clunked
224 058b0118 2005-01-03 devnull .I and
225 058b0118 2005-01-03 devnull the connection has been closed
226 058b0118 2005-01-03 devnull (the order is not important),
227 058b0118 2005-01-03 devnull the allocated structures will be freed and the
228 058b0118 2005-01-03 devnull file descriptor corresponding to the connection
229 058b0118 2005-01-03 devnull will be closed
230 058b0118 2005-01-03 devnull (see
231 d32deab1 2020-08-16 rsc .MR close (2) ).
232 058b0118 2005-01-03 devnull Fids are not reference counted: when
233 058b0118 2005-01-03 devnull .I fsclose
234 058b0118 2005-01-03 devnull is called, the clunk transaction and freeing of storage
235 058b0118 2005-01-03 devnull happen immediately.
236 73a5509a 2006-07-23 devnull Despite its name,
237 73a5509a 2006-07-23 devnull .I fsclose
238 73a5509a 2006-07-23 devnull can be used to clunk fids that are not open for I/O.
239 058b0118 2005-01-03 devnull .PP
240 058b0118 2005-01-03 devnull .I Fscreate
241 058b0118 2005-01-03 devnull and
242 058b0118 2005-01-03 devnull .I fsopen
243 058b0118 2005-01-03 devnull establish new fids using the
244 058b0118 2005-01-03 devnull .IR walk ,
245 058b0118 2005-01-03 devnull .I create
246 058b0118 2005-01-03 devnull and
247 058b0118 2005-01-03 devnull .I open
248 058b0118 2005-01-03 devnull transactions
249 058b0118 2005-01-03 devnull (see
250 058b0118 2005-01-03 devnull .IR walk (9p)
251 058b0118 2005-01-03 devnull and
252 058b0118 2005-01-03 devnull .IR open (9p)).
253 058b0118 2005-01-03 devnull The
254 058b0118 2005-01-03 devnull .I path
255 058b0118 2005-01-03 devnull argument is evaluated relative to the
256 058b0118 2005-01-03 devnull .B CFsys
257 058b0118 2005-01-03 devnull root
258 058b0118 2005-01-03 devnull (see
259 058b0118 2005-01-03 devnull .I fsroot
260 058b0118 2005-01-03 devnull and
261 058b0118 2005-01-03 devnull .I fssetroot
262 058b0118 2005-01-03 devnull above).
263 058b0118 2005-01-03 devnull The path is parsed as a slash-separated sequence of path elements,
264 058b0118 2005-01-03 devnull as on Unix and Plan 9.
265 058b0118 2005-01-03 devnull Elements that are empty or
266 058b0118 2005-01-03 devnull dot
267 c8b6342d 2005-01-13 devnull .RB ( . )
268 058b0118 2005-01-03 devnull are ignored.
269 058b0118 2005-01-03 devnull .PP
270 73a5509a 2006-07-23 devnull Alternately,
271 73a5509a 2006-07-23 devnull .I fswalk
272 73a5509a 2006-07-23 devnull walks from a fid to a given name
273 73a5509a 2006-07-23 devnull to create a new fid.
274 73a5509a 2006-07-23 devnull The name may be nil, corresponding to a walk with no names.
275 73a5509a 2006-07-23 devnull Otherwise the name is taken as a slash-separated sequence
276 73a5509a 2006-07-23 devnull of path elements.
277 73a5509a 2006-07-23 devnull .I Fsfcreate
278 73a5509a 2006-07-23 devnull and
279 73a5509a 2006-07-23 devnull .I fsfopen
280 73a5509a 2006-07-23 devnull issue
281 73a5509a 2006-07-23 devnull .I create
282 73a5509a 2006-07-23 devnull and
283 73a5509a 2006-07-23 devnull .I open
284 73a5509a 2006-07-23 devnull transactions using the passed fid argument,
285 73a5509a 2006-07-23 devnull which should have been obtained by calling
286 73a5509a 2006-07-23 devnull .IR fswalk .
287 73a5509a 2006-07-23 devnull .PP
288 73a5509a 2006-07-23 devnull Once opened, fids can be read and written using
289 058b0118 2005-01-03 devnull .I fspread
290 058b0118 2005-01-03 devnull and
291 058b0118 2005-01-03 devnull .IR fspwrite ,
292 058b0118 2005-01-03 devnull which execute
293 058b0118 2005-01-03 devnull .I read
294 058b0118 2005-01-03 devnull and
295 058b0118 2005-01-03 devnull .I write
296 058b0118 2005-01-03 devnull transactions
297 058b0118 2005-01-03 devnull (see
298 058b0118 2005-01-03 devnull .IR read (9p)).
299 058b0118 2005-01-03 devnull The library maintains an offset for each fid,
300 058b0118 2005-01-03 devnull analagous to the offset maintained by the kernel for each open file descriptor.
301 058b0118 2005-01-03 devnull .I Fsread
302 058b0118 2005-01-03 devnull and
303 058b0118 2005-01-03 devnull .I fswrite
304 058b0118 2005-01-03 devnull read and write from this offset, and update it after successful calls.
305 e4d62adf 2005-01-18 devnull .I Fsseek
306 e4d62adf 2005-01-18 devnull sets the offset; the
307 e4d62adf 2005-01-18 devnull .I n
308 e4d62adf 2005-01-18 devnull and
309 e4d62adf 2005-01-18 devnull .I type
310 e4d62adf 2005-01-18 devnull arguments are used as in
311 d32deab1 2020-08-16 rsc .MR seek (3) .
312 058b0118 2005-01-03 devnull Calling
313 058b0118 2005-01-03 devnull .I fspread
314 058b0118 2005-01-03 devnull or
315 058b0118 2005-01-03 devnull .I fspwrite
316 058b0118 2005-01-03 devnull with an
317 058b0118 2005-01-03 devnull .I offset
318 058b0118 2005-01-03 devnull of \-1
319 058b0118 2005-01-03 devnull is identical to calling
320 058b0118 2005-01-03 devnull .I fsread
321 058b0118 2005-01-03 devnull or
322 058b0118 2005-01-03 devnull .IR fswrite .
323 058b0118 2005-01-03 devnull .I Fsreadn
324 058b0118 2005-01-03 devnull calls
325 058b0118 2005-01-03 devnull .I fsread
326 058b0118 2005-01-03 devnull repeatedly to obtain exactly
327 058b0118 2005-01-03 devnull .I n
328 058b0118 2005-01-03 devnull bytes of data, unless it encounters end-of-file or an error.
329 058b0118 2005-01-03 devnull .PP
330 73a5509a 2006-07-23 devnull .IR Attach ,
331 73a5509a 2006-07-23 devnull .IR walk ,
332 73a5509a 2006-07-23 devnull .IR create ,
333 73a5509a 2006-07-23 devnull and
334 73a5509a 2006-07-23 devnull .I open
335 73a5509a 2006-07-23 devnull transactions include in their replies an updated qid for the
336 73a5509a 2006-07-23 devnull fid being manipulated.
337 73a5509a 2006-07-23 devnull .I Fsqid
338 73a5509a 2006-07-23 devnull returns the most recent qid returned by one of these transactions
339 73a5509a 2006-07-23 devnull for the given fid.
340 73a5509a 2006-07-23 devnull .PP
341 5af8dd63 2006-03-19 devnull .I Fsaccess
342 5af8dd63 2006-03-19 devnull behaves like Unix's
343 d32deab1 2020-08-16 rsc .MR access (2) .
344 5af8dd63 2006-03-19 devnull .I Fsremove
345 5af8dd63 2006-03-19 devnull removes the named path.
346 5af8dd63 2006-03-19 devnull .I Fsfremove
347 5af8dd63 2006-03-19 devnull removes the path corresponding to an open
348 5af8dd63 2006-03-19 devnull .BR CFid* .
349 5af8dd63 2006-03-19 devnull .PP
350 058b0118 2005-01-03 devnull Reading an open a directory returns directory entries encoded as described in
351 058b0118 2005-01-03 devnull .IR stat (9p).
352 5af8dd63 2006-03-19 devnull .PP
353 5af8dd63 2006-03-19 devnull .I Fsprint
354 5af8dd63 2006-03-19 devnull and
355 5af8dd63 2006-03-19 devnull .I fsvprint
356 5af8dd63 2006-03-19 devnull are like
357 5af8dd63 2006-03-19 devnull .I fprint
358 5af8dd63 2006-03-19 devnull and
359 5af8dd63 2006-03-19 devnull .I vfprint
360 5af8dd63 2006-03-19 devnull (see
361 d32deab1 2020-08-16 rsc .MR print (3) )
362 5af8dd63 2006-03-19 devnull but write to
363 5af8dd63 2006-03-19 devnull .BR CFid* s.
364 5af8dd63 2006-03-19 devnull .PP
365 058b0118 2005-01-03 devnull .I Fsdirread
366 058b0118 2005-01-03 devnull calls
367 058b0118 2005-01-03 devnull .I fsread
368 058b0118 2005-01-03 devnull and then parses the encoded entries into an array of
369 058b0118 2005-01-03 devnull .B Dir*
370 058b0118 2005-01-03 devnull data structures,
371 058b0118 2005-01-03 devnull storing a pointer to the array in
372 058b0118 2005-01-03 devnull .BI *d
373 058b0118 2005-01-03 devnull and returning the number of entries.
374 058b0118 2005-01-03 devnull .I Fsdirreadall
375 058b0118 2005-01-03 devnull is similar but reads the entire directory.
376 058b0118 2005-01-03 devnull The returned pointer should be freed with
377 058b0118 2005-01-03 devnull .I free
378 058b0118 2005-01-03 devnull (see
379 d32deab1 2020-08-16 rsc .MR malloc (3) )
380 058b0118 2005-01-03 devnull when no longer needed.
381 058b0118 2005-01-03 devnull .PP
382 058b0118 2005-01-03 devnull .I Fsdirfstat
383 058b0118 2005-01-03 devnull and
384 058b0118 2005-01-03 devnull .I fsdirfwstat
385 058b0118 2005-01-03 devnull execute
386 058b0118 2005-01-03 devnull .I stat
387 058b0118 2005-01-03 devnull and
388 058b0118 2005-01-03 devnull .I wstat
389 058b0118 2005-01-03 devnull (see
390 058b0118 2005-01-03 devnull .IR stat (9p))
391 058b0118 2005-01-03 devnull transactions.
392 058b0118 2005-01-03 devnull The
393 058b0118 2005-01-03 devnull .B Dir
394 058b0118 2005-01-03 devnull structure returned by
395 058b0118 2005-01-03 devnull .I fsdirfstat
396 058b0118 2005-01-03 devnull should be freed with
397 058b0118 2005-01-03 devnull .I free
398 058b0118 2005-01-03 devnull (see
399 d32deab1 2020-08-16 rsc .MR malloc (3) )
400 058b0118 2005-01-03 devnull when no longer needed.
401 058b0118 2005-01-03 devnull .PP
402 058b0118 2005-01-03 devnull .I Fsdirstat
403 058b0118 2005-01-03 devnull and
404 058b0118 2005-01-03 devnull .I fsdirwstat
405 058b0118 2005-01-03 devnull are similar to
406 058b0118 2005-01-03 devnull .I fsdirfstat
407 058b0118 2005-01-03 devnull and
408 058b0118 2005-01-03 devnull .I fsdirfwstat
409 058b0118 2005-01-03 devnull but operate on paths relative to the file system root
410 058b0118 2005-01-03 devnull (see
411 058b0118 2005-01-03 devnull .I fsopen
412 058b0118 2005-01-03 devnull and
413 058b0118 2005-01-03 devnull .I fscreate
414 058b0118 2005-01-03 devnull above).
415 058b0118 2005-01-03 devnull .PP
416 058b0118 2005-01-03 devnull .I Fsopenfd
417 058b0118 2005-01-03 devnull opens a file on the 9P server
418 058b0118 2005-01-03 devnull for reading or writing but returns a Unix file descriptor
419 058b0118 2005-01-03 devnull instead of a fid structure.
420 058b0118 2005-01-03 devnull The file descriptor is actually one end of a
421 d32deab1 2020-08-16 rsc .MR pipe (2) .
422 058b0118 2005-01-03 devnull A proxy process on the other end is ferrying data
423 058b0118 2005-01-03 devnull between the pipe and the 9P fid.
424 058b0118 2005-01-03 devnull Because of the implementation as a pipe,
425 058b0118 2005-01-03 devnull the only signal of a read or write error is the closing of the pipe.
426 058b0118 2005-01-03 devnull The file descriptor remains valid even after the
427 058b0118 2005-01-03 devnull .B CFsys
428 058b0118 2005-01-03 devnull is unmounted.
429 d93fca6a 2005-02-11 devnull .PP
430 d93fca6a 2005-02-11 devnull .I Nsopen
431 d93fca6a 2005-02-11 devnull opens a single file on a name space server: it runs
432 d93fca6a 2005-02-11 devnull .IR nsmount ,
433 d93fca6a 2005-02-11 devnull .IR fsopen ,
434 d93fca6a 2005-02-11 devnull and then
435 d93fca6a 2005-02-11 devnull .IR fsunmount .
436 73a5509a 2006-07-23 devnull .PP
437 73a5509a 2006-07-23 devnull If the
438 73a5509a 2006-07-23 devnull .B chatty9pclient
439 73a5509a 2006-07-23 devnull flag is set, the library prints all 9P messages
440 73a5509a 2006-07-23 devnull to standard error.
441 73a5509a 2006-07-23 devnull If the
442 73a5509a 2006-07-23 devnull .B eofkill9pclient
443 73a5509a 2006-07-23 devnull flag is set, the library calls
444 73a5509a 2006-07-23 devnull .I threadexitsall
445 73a5509a 2006-07-23 devnull (see
446 d32deab1 2020-08-16 rsc .MR thread (3) )
447 73a5509a 2006-07-23 devnull when it detects EOF on a 9P connection.
448 058b0118 2005-01-03 devnull .SH SOURCE
449 c3674de4 2005-01-11 devnull .B \*9/src/lib9pclient
450 058b0118 2005-01-03 devnull .SH SEE ALSO
451 d32deab1 2020-08-16 rsc .MR intro (4) ,
452 d93fca6a 2005-02-11 devnull .IR intro (9p),
453 d93fca6a 2005-02-11 devnull .I fsaopen
454 d93fca6a 2005-02-11 devnull and
455 d93fca6a 2005-02-11 devnull .I nsaopen
456 d93fca6a 2005-02-11 devnull in
457 d32deab1 2020-08-16 rsc .MR auth (3)
458 058b0118 2005-01-03 devnull .SH BUGS
459 058b0118 2005-01-03 devnull The implementation
460 058b0118 2005-01-03 devnull should use a special version string to distinguish between
461 058b0118 2005-01-03 devnull servers that support
462 058b0118 2005-01-03 devnull .IR openfd (9p)
463 058b0118 2005-01-03 devnull and servers that do not.
464 058b0118 2005-01-03 devnull .PP
465 058b0118 2005-01-03 devnull The interface does not provide access to the
466 058b0118 2005-01-03 devnull .IR walk (9p)
467 058b0118 2005-01-03 devnull transaction, or to
468 058b0118 2005-01-03 devnull .I open
469 058b0118 2005-01-03 devnull and
470 058b0118 2005-01-03 devnull .I create
471 058b0118 2005-01-03 devnull on already-established fids.