1 #include "logfsos.h"
2 #include "logfs.h"
3 #include "local.h"
4
5 int
logfsuserpermcheck(LogfsServer * s,Entry * e,Fid * f,ulong permmask)6 logfsuserpermcheck(LogfsServer *s, Entry *e, Fid *f, ulong permmask)
7 {
8 if(s->openflags & LogfsOpenFlagNoPerm)
9 return 1;
10 if((e->perm & permmask) == permmask)
11 /* the whole world can do this */
12 return 1;
13 if(((e->perm >> 6) & permmask) == permmask) {
14 /* maybe we're the owner */
15 char *uname = logfsisfindnamefromid(s->is, e->uid);
16 if(uname == f->uname)
17 return 1;
18 }
19 if(((e->perm >> 3) & permmask) == permmask) {
20 /* maybe we're in the group */
21 Group *g = logfsisfindgroupfromid(s->is, e->gid);
22 return g && logfsisgroupunameismember(s->is, g, f->uname);
23 }
24 return 0;
25 }
26