Blame


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