| plan 9 kernel history: overview | file list | diff list |
2001/0403/ip/devip.c (diff list | history)
| 2001/0306/sys/src/9/ip/devip.c:82,90 – 2001/0403/sys/src/9/ip/devip.c:82,90 (short | long | prev | next) | ||
| 1997/0327 | devdir(c, q, "err", qlen(cv->eq), cv->owner, cv->perm, dp); return 1; case Qlisten: | |
| 2001/0403 | devdir(c, q, "listen", qlen(cv->eq), cv->owner, cv->perm, dp); return 1; | |
| 1997/0327 | case Qlocal: p = "local"; q = (Qid){QID(PROTO(c->qid), CONV(c->qid), Qlocal), 0}; | |
| 2001/0306/sys/src/9/ip/devip.c:98,104 – 2001/0403/sys/src/9/ip/devip.c:98,104 | ||
| 1997/0327 | q = (Qid){QID(PROTO(c->qid), CONV(c->qid), Qstatus), 0}; break; } | |
| 1998/0306 |
| |
| 2001/0403 | devdir(c, q, p, 0, cv->owner, 0444, dp); | |
| 1997/0327 | return 1; } | |
| 2001/0306/sys/src/9/ip/devip.c:419,424 – 2001/0403/sys/src/9/ip/devip.c:419,432 | ||
| 1997/0327 | break; case Qlisten: | |
| 1998/0313 | cv = f->p[PROTO(c->qid)]->conv[CONV(c->qid)]; | |
| 2001/0403 | if((perm & (cv->perm>>6)) != perm) { if(strcmp(commonuser(), cv->owner) != 0) error(Eperm); if((perm & cv->perm) != perm) error(Eperm); } | |
| 1997/0327 | if(cv->state != Announced) error("not announced"); | |
| 2001/0306/sys/src/9/ip/devip.c:470,478 – 2001/0403/sys/src/9/ip/devip.c:478,511 | ||
| 1997/0327 | } static void | |
| 2001/0403 | ipwstat(Chan *c, char *dp) | |
| 1997/0327 | { | |
| 2001/0403 | Dir d; Conv *cv; Fs *f; Proto *p; f = ipfs[c->dev]; switch(TYPE(c->qid)) { default: error(Eperm); break; case Qctl: case Qdata: break; } convM2D(dp, &d); p = f->p[PROTO(c->qid)]; cv = p->conv[CONV(c->qid)]; if(!iseve() && strcmp(commonuser(), cv->owner) != 0) error(Eperm); if(d.uid[0]){ strncpy(cv->owner, d.uid, sizeof(cv->owner)); cv->owner[sizeof(cv->owner)-1] = 0; } cv->perm = d.mode & 0777; | |
| 1997/0327 | } | |
| 1999/0910 | void | |