Blame


1 46f79934 2005-01-04 devnull #include <u.h>
2 46f79934 2005-01-04 devnull #include <libc.h>
3 46f79934 2005-01-04 devnull #include <fcall.h>
4 46f79934 2005-01-04 devnull #include <9pclient.h>
5 46f79934 2005-01-04 devnull #include "fsimpl.h"
6 46f79934 2005-01-04 devnull
7 73a5509a 2006-07-23 devnull int
8 73a5509a 2006-07-23 devnull fsfopen(CFid *fid, int mode)
9 73a5509a 2006-07-23 devnull {
10 73a5509a 2006-07-23 devnull Fcall tx, rx;
11 73a5509a 2006-07-23 devnull
12 73a5509a 2006-07-23 devnull tx.type = Topen;
13 73a5509a 2006-07-23 devnull tx.fid = fid->fid;
14 73a5509a 2006-07-23 devnull tx.mode = mode;
15 73a5509a 2006-07-23 devnull if(_fsrpc(fid->fs, &tx, &rx, 0) < 0)
16 73a5509a 2006-07-23 devnull return -1;
17 73a5509a 2006-07-23 devnull fid->mode = mode;
18 73a5509a 2006-07-23 devnull return 0;
19 73a5509a 2006-07-23 devnull }
20 73a5509a 2006-07-23 devnull
21 46f79934 2005-01-04 devnull CFid*
22 46f79934 2005-01-04 devnull fsopen(CFsys *fs, char *name, int mode)
23 46f79934 2005-01-04 devnull {
24 c31f81ac 2005-03-01 devnull char e[ERRMAX];
25 46f79934 2005-01-04 devnull CFid *fid;
26 46f79934 2005-01-04 devnull
27 73a5509a 2006-07-23 devnull if((fid = fswalk(fs->root, name)) == nil)
28 46f79934 2005-01-04 devnull return nil;
29 73a5509a 2006-07-23 devnull if(fsfopen(fid, mode) < 0){
30 c31f81ac 2005-03-01 devnull rerrstr(e, sizeof e);
31 46f79934 2005-01-04 devnull fsclose(fid);
32 c31f81ac 2005-03-01 devnull errstr(e, sizeof e);
33 46f79934 2005-01-04 devnull return nil;
34 46f79934 2005-01-04 devnull }
35 46f79934 2005-01-04 devnull fid->mode = mode;
36 46f79934 2005-01-04 devnull return fid;
37 46f79934 2005-01-04 devnull }