9ns: Use an int for perm and mode -1 means "don't change the mode." That was 0x00000000ffffffff, which is not ~0UL (0xffffffffffffffff). Just use an int and don't play games with the sizeof longs and whatnot. Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
diff --git a/kern/drivers/dev/pipe.c b/kern/drivers/dev/pipe.c index be2593b..b2e24cf 100644 --- a/kern/drivers/dev/pipe.c +++ b/kern/drivers/dev/pipe.c
@@ -507,7 +507,7 @@ error(EEXIST, ERROR_FIXME); strncpy(p->pipedir[1 + d1].name, d->name, KNAMELEN); } - if (d->mode != ~0UL) + if (d->mode != -1) p->pipedir[d1 + 1].perm = d->mode & 0777; poperror(); kfree(d);
diff --git a/kern/drivers/dev/proc.c b/kern/drivers/dev/proc.c index f4f9150..4212f8b 100644 --- a/kern/drivers/dev/proc.c +++ b/kern/drivers/dev/proc.c
@@ -693,7 +693,7 @@ else proc_set_username(p, d->uid); } - if (d->mode != ~0UL) + if (d->mode != -1) p->procmode = d->mode & 0777; poperror();
diff --git a/kern/drivers/dev/root.c b/kern/drivers/dev/root.c index 08a16e4..33275ca 100644 --- a/kern/drivers/dev/root.c +++ b/kern/drivers/dev/root.c
@@ -442,7 +442,7 @@ if (!emptystr(dir->name)) printk("[%s] attempted rename of %s to %s\n", __FUNCTION__, file->name, dir->name); /* strncpy for this btw */ - if (dir->mode != ~0UL) + if (dir->mode != -1) file->perm = dir->mode | (file->qid.type == QTDIR ? DMDIR : 0); kfree(dir); return m_sz;
diff --git a/kern/drivers/dev/sd.c b/kern/drivers/dev/sd.c index 6022cc9..6259f23 100644 --- a/kern/drivers/dev/sd.c +++ b/kern/drivers/dev/sd.c
@@ -1451,7 +1451,7 @@ error(EIO, "Short status"); if (!emptystr(d[0].uid)) kstrdup(&perm->user, d[0].uid); - if (d[0].mode != (uint32_t)~0UL) + if (d[0].mode != -1) perm->perm = (perm->perm & ~0777) | (d[0].mode & 0777); kfree(d);
diff --git a/kern/include/ns.h b/kern/include/ns.h index 9dad04e..eb7fa9c 100644 --- a/kern/include/ns.h +++ b/kern/include/ns.h
@@ -139,7 +139,7 @@ unsigned int dev; /* server subtype */ /* file data */ struct qid qid; /* unique id from server */ - uint32_t mode; /* permissions */ + int mode; /* permissions */ uint32_t atime; /* last read time */ uint32_t mtime; /* last write time */ int64_t length; /* file length: see <u.h> */ @@ -475,7 +475,7 @@ char name[KNAMELEN]; struct qid qid; int64_t length; - long perm; + int perm; }; struct walkqid {
diff --git a/kern/src/net/devip.c b/kern/src/net/devip.c index 63d5289..717bd3e 100644 --- a/kern/src/net/devip.c +++ b/kern/src/net/devip.c
@@ -618,7 +618,7 @@ error(EPERM, ERROR_FIXME); if (!emptystr(d->uid)) kstrdup(&cv->owner, d->uid); - if (d->mode != ~0UL) + if (d->mode != -1) cv->perm = d->mode & 0777; poperror(); kfree(d);
diff --git a/kern/src/net/netif.c b/kern/src/net/netif.c index 89567ab..a66555b 100644 --- a/kern/src/net/netif.c +++ b/kern/src/net/netif.c
@@ -471,7 +471,7 @@ } if (!emptystr(dir[0].uid)) strlcpy(f->owner, dir[0].uid, KNAMELEN); - if (dir[0].mode != ~0UL) + if (dir[0].mode != -1) f->mode = dir[0].mode; kfree(dir); return m;