#include <u.h> | |
#define NOPLAN9DEFINES | |
#include <libc.h> | |
#include <sys/stat.h> | |
extern int _p9dir(struct stat*, struct stat*, char*, Dir*, char**, char*); | |
Dir* | |
dirfstat(int fd) | |
{ | |
struct stat st; | |
int nstr; | |
Dir *d; | |
char *str, tmp[100]; | |
if(fstat(fd, &st) < 0) | |
return nil; | |
snprint(tmp, sizeof tmp, "/dev/fd/%d", fd); | |
nstr = _p9dir(&st, &st, tmp, nil, nil, nil); | |
d = mallocz(sizeof(Dir)+nstr, 1); | |
if(d == nil) | |
return nil; | |
str = (char*)&d[1]; | |
_p9dir(&st, &st, tmp, d, &str, str+nstr); | |
return d; | |
} | |