1 3d7e9092 2003-10-14 devnull #include "u.h"
2 3d7e9092 2003-10-14 devnull #include "libc.h"
3 3d7e9092 2003-10-14 devnull #include <sys/types.h>
4 3d7e9092 2003-10-14 devnull #include <sys/stat.h>
5 3d7e9092 2003-10-14 devnull #include <pwd.h>
6 3d7e9092 2003-10-14 devnull #include <grp.h>
8 3d7e9092 2003-10-14 devnull static void
9 3d7e9092 2003-10-14 devnull statconv(Dir *dir, struct stat *s)
11 3d7e9092 2003-10-14 devnull struct passwd *p;
12 3d7e9092 2003-10-14 devnull struct group *g;
15 3d7e9092 2003-10-14 devnull p = getpwuid(s->st_uid);
17 3d7e9092 2003-10-14 devnull strncpy(dir->uid, p->pw_name, NAMELEN);
18 3d7e9092 2003-10-14 devnull g = getgrgid(s->st_gid);
20 3d7e9092 2003-10-14 devnull strncpy(dir->gid, g->gr_name, NAMELEN);
22 3d7e9092 2003-10-14 devnull if(S_ISDIR(s->st_mode))
23 3d7e9092 2003-10-14 devnull q = CHDIR;
24 3d7e9092 2003-10-14 devnull q |= s->st_ino & 0x00FFFFFFUL;
25 3d7e9092 2003-10-14 devnull dir->qid.path = q;
26 3d7e9092 2003-10-14 devnull dir->qid.vers = s->st_mtime;
27 3d7e9092 2003-10-14 devnull dir->mode = (dir->qid.path&CHDIR)|(s->st_mode&0777);
28 3d7e9092 2003-10-14 devnull dir->atime = s->st_atime;
29 3d7e9092 2003-10-14 devnull dir->mtime = s->st_mtime;
30 3d7e9092 2003-10-14 devnull dir->length = s->st_size;
31 3d7e9092 2003-10-14 devnull dir->dev = s->st_dev;
32 3d7e9092 2003-10-14 devnull dir->type = 'M';
33 3d7e9092 2003-10-14 devnull if(S_ISFIFO(s->st_mode))
34 3d7e9092 2003-10-14 devnull dir->type = '|';
38 3d7e9092 2003-10-14 devnull dirfstat(int fd, Dir *d)
40 3d7e9092 2003-10-14 devnull struct stat sbuf;
42 3d7e9092 2003-10-14 devnull if(fstat(fd, &sbuf) < 0)
43 3d7e9092 2003-10-14 devnull return -1;
44 3d7e9092 2003-10-14 devnull statconv(d, &sbuf);
45 3d7e9092 2003-10-14 devnull return 0;
48 3d7e9092 2003-10-14 devnull static char *
49 3d7e9092 2003-10-14 devnull lelem(char *path)
51 3d7e9092 2003-10-14 devnull char *pr;
53 3d7e9092 2003-10-14 devnull pr = utfrrune(path, '/');
57 3d7e9092 2003-10-14 devnull pr = path;
58 3d7e9092 2003-10-14 devnull return pr;
62 3d7e9092 2003-10-14 devnull dirstat(char *f, Dir *d)
64 3d7e9092 2003-10-14 devnull struct stat sbuf;
66 3d7e9092 2003-10-14 devnull if(stat(f, &sbuf) < 0)
67 3d7e9092 2003-10-14 devnull return -1;
68 3d7e9092 2003-10-14 devnull statconv(d, &sbuf);
69 3d7e9092 2003-10-14 devnull strncpy(d->name, lelem(f), NAMELEN);
70 3d7e9092 2003-10-14 devnull return 0;
74 3d7e9092 2003-10-14 devnull dirfwstat(int fd, Dir *d)
76 3d7e9092 2003-10-14 devnull return -1;
80 3d7e9092 2003-10-14 devnull dirwstat(char *name, Dir *d)
82 3d7e9092 2003-10-14 devnull return -1;