Blame


1 46f79934 2005-01-04 devnull /* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
2 46f79934 2005-01-04 devnull /* See COPYRIGHT */
3 46f79934 2005-01-04 devnull
4 46f79934 2005-01-04 devnull #include <u.h>
5 46f79934 2005-01-04 devnull #include <libc.h>
6 46f79934 2005-01-04 devnull #include <fcall.h>
7 46f79934 2005-01-04 devnull #include <9pclient.h>
8 46f79934 2005-01-04 devnull #include "fsimpl.h"
9 46f79934 2005-01-04 devnull
10 46f79934 2005-01-04 devnull int
11 46f79934 2005-01-04 devnull fsdirwstat(CFsys *fs, char *name, Dir *d)
12 46f79934 2005-01-04 devnull {
13 46f79934 2005-01-04 devnull int n;
14 46f79934 2005-01-04 devnull CFid *fid;
15 46f79934 2005-01-04 devnull
16 73a5509a 2006-07-23 devnull if((fid = fswalk(fs->root, name)) == nil)
17 46f79934 2005-01-04 devnull return -1;
18 fa325e9b 2020-01-10 cross
19 46f79934 2005-01-04 devnull n = fsdirfwstat(fid, d);
20 46f79934 2005-01-04 devnull fsclose(fid);
21 46f79934 2005-01-04 devnull return n;
22 46f79934 2005-01-04 devnull }
23 46f79934 2005-01-04 devnull
24 46f79934 2005-01-04 devnull int
25 46f79934 2005-01-04 devnull fsdirfwstat(CFid *fid, Dir *d)
26 46f79934 2005-01-04 devnull {
27 46f79934 2005-01-04 devnull uchar *a;
28 46f79934 2005-01-04 devnull int n, nn;
29 46f79934 2005-01-04 devnull Fcall tx, rx;
30 46f79934 2005-01-04 devnull
31 74dd0321 2010-12-07 rsc n = sizeD2M(d);
32 46f79934 2005-01-04 devnull a = malloc(n);
33 46f79934 2005-01-04 devnull if(a == nil)
34 46f79934 2005-01-04 devnull return -1;
35 74dd0321 2010-12-07 rsc nn = convD2M(d, a, n);
36 46f79934 2005-01-04 devnull if(n != nn){
37 46f79934 2005-01-04 devnull werrstr("convD2M and sizeD2M disagree");
38 46f79934 2005-01-04 devnull free(a);
39 46f79934 2005-01-04 devnull return -1;
40 46f79934 2005-01-04 devnull }
41 46f79934 2005-01-04 devnull
42 46f79934 2005-01-04 devnull tx.type = Twstat;
43 46f79934 2005-01-04 devnull tx.fid = fid->fid;
44 46f79934 2005-01-04 devnull tx.stat = a;
45 46f79934 2005-01-04 devnull tx.nstat = n;
46 46f79934 2005-01-04 devnull n = _fsrpc(fid->fs, &tx, &rx, 0);
47 46f79934 2005-01-04 devnull free(a);
48 46f79934 2005-01-04 devnull return n;
49 46f79934 2005-01-04 devnull }