From 275e90b3334b313c037d253640844308c8820b4f Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 29 Jul 1999 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1999-07-29 --- port/devroot.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/port/devroot.c b/port/devroot.c index d6717c25a1ec590f5b04953576e1429b07f88fc1..2bbd1b68c8bb68070781bbe9df5d7906686a851b 100644 --- a/port/devroot.c +++ b/port/devroot.c @@ -76,6 +76,25 @@ addrootfile(char *name, uchar *contents, ulong len) nroot++; } +/* + * add a root file + */ +static void +addrootdir(char *name) +{ + Dirtab *d; + + if(nroot >= Nfiles) + panic("too many root files"); + rootdata[nroot] = nil; + d = &rootdir[nroot]; + strcpy(d->name, name); + d->length = 0; + d->perm = 0; + d->qid.path = nroot+1; + nroot++; +} + static void rootreset(void) { @@ -217,6 +236,20 @@ rootwrite(Chan *c, void *buf, long n, vlong) return 0; } +static void +rootcreate(Chan *c, char *name, int mode, ulong perm) +{ + if(!iseve()) + error(Eperm); + if(c->qid.path != (CHDIR|Qdir)) + error(Eperm); + perm &= 0777|CHDIR; + if((perm & CHDIR) == 0) + error(Eperm); + c->flag |= COPEN; + c->mode = mode & ~OWRITE; +} + Dev rootdevtab = { '/', "root", @@ -228,7 +261,7 @@ Dev rootdevtab = { rootwalk, rootstat, rootopen, - devcreate, + rootcreate, rootclose, rootread, devbread,