Blame


1 d3df3087 2003-12-06 devnull #include <u.h>
2 d3df3087 2003-12-06 devnull #include <libc.h>
3 d3df3087 2003-12-06 devnull #include <fcall.h>
4 d3df3087 2003-12-06 devnull #include <fs.h>
5 d3df3087 2003-12-06 devnull #include "fsimpl.h"
6 d3df3087 2003-12-06 devnull
7 d3df3087 2003-12-06 devnull Fid*
8 d3df3087 2003-12-06 devnull fscreate(Fsys *fs, char *name, int mode, ulong perm)
9 d3df3087 2003-12-06 devnull {
10 d3df3087 2003-12-06 devnull Fid *fid;
11 d3df3087 2003-12-06 devnull Fcall tx, rx;
12 d3df3087 2003-12-06 devnull
13 d3df3087 2003-12-06 devnull if((fid = fswalk(fs->root, name)) == nil)
14 d3df3087 2003-12-06 devnull return nil;
15 d3df3087 2003-12-06 devnull tx.type = Tcreate;
16 d3df3087 2003-12-06 devnull tx.fid = fid->fid;
17 d3df3087 2003-12-06 devnull tx.mode = mode;
18 d3df3087 2003-12-06 devnull tx.perm = perm;
19 d3df3087 2003-12-06 devnull if(fsrpc(fs, &tx, &rx, 0) < 0){
20 d3df3087 2003-12-06 devnull fsclose(fid);
21 d3df3087 2003-12-06 devnull return nil;
22 d3df3087 2003-12-06 devnull }
23 d3df3087 2003-12-06 devnull fid->mode = mode;
24 d3df3087 2003-12-06 devnull return fid;
25 d3df3087 2003-12-06 devnull }