Blob


1 #include <u.h>
2 #include <libc.h>
3 #include <fcall.h>
4 #include <thread.h>
5 #include <9p.h>
7 /*
8 * simplistic permission checking. assume that
9 * each user is the leader of her own group.
10 */
11 int
12 hasperm(File *f, char *uid, int p)
13 {
14 int m;
16 m = f->dir.mode & 7; /* other */
17 if((p & m) == p)
18 return 1;
20 if(strcmp(f->dir.uid, uid) == 0) {
21 m |= (f->dir.mode>>6) & 7;
22 if((p & m) == p)
23 return 1;
24 }
26 if(strcmp(f->dir.gid, uid) == 0) {
27 m |= (f->dir.mode>>3) & 7;
28 if((p & m) == p)
29 return 1;
30 }
32 return 0;
33 }