Blob


1 #include <u.h>
2 #define NOPLAN9DEFINES
3 #include <libc.h>
5 #include <sys/stat.h>
7 extern int _p9dir(struct stat*, struct stat*, char*, Dir*, char**, char*);
9 Dir*
10 dirfstat(int fd)
11 {
12 struct stat st;
13 int nstr;
14 Dir *d;
15 char *str, tmp[100];
17 if(fstat(fd, &st) < 0)
18 return nil;
20 snprint(tmp, sizeof tmp, "/dev/fd/%d", fd);
21 nstr = _p9dir(&st, &st, tmp, nil, nil, nil);
22 d = mallocz(sizeof(Dir)+nstr, 1);
23 if(d == nil)
24 return nil;
25 str = (char*)&d[1];
26 _p9dir(&st, &st, tmp, d, &str, str+nstr);
27 return d;
28 }