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;