diff options
| -rw-r--r-- | sys/src/ape/lib/ap/plan9/_envsetup.c | 4 | ||||
| -rw-r--r-- | sys/src/ape/lib/ap/plan9/_fdinfo.c | 2 | ||||
| -rw-r--r-- | sys/src/ape/lib/ap/plan9/_getpw.c | 15 | ||||
| -rw-r--r-- | sys/src/ape/lib/ap/plan9/access.c | 24 | ||||
| -rw-r--r-- | sys/src/ape/lib/ap/plan9/getppid.c | 8 | ||||
| -rw-r--r-- | sys/src/ape/lib/ap/plan9/rename.c | 6 | ||||
| -rw-r--r-- | sys/src/ape/lib/ap/plan9/time.c | 2 |
7 files changed, 34 insertions, 27 deletions
diff --git a/sys/src/ape/lib/ap/plan9/_envsetup.c b/sys/src/ape/lib/ap/plan9/_envsetup.c index 11f53dc81..21d6be3f4 100644 --- a/sys/src/ape/lib/ap/plan9/_envsetup.c +++ b/sys/src/ape/lib/ap/plan9/_envsetup.c @@ -44,7 +44,7 @@ _envsetup(void) nohandle = 0; fdinited = 0; cnt = 0; - dfd = _OPEN("/env", 0); + dfd = _OPEN("/env", OREAD); if(dfd < 0) goto done; psize = Envhunk; @@ -63,7 +63,7 @@ _envsetup(void) } strcpy(p, "/env/"); memcpy(p+5, d9->name, n+1); - f = _OPEN(p, 0); + f = _OPEN(p, OREAD); memset(p, 0, n+6); memcpy(p, d9->name, n); p[n] = '='; diff --git a/sys/src/ape/lib/ap/plan9/_fdinfo.c b/sys/src/ape/lib/ap/plan9/_fdinfo.c index 51d034898..0252fb6d1 100644 --- a/sys/src/ape/lib/ap/plan9/_fdinfo.c +++ b/sys/src/ape/lib/ap/plan9/_fdinfo.c @@ -41,7 +41,7 @@ readprocfdinit(void) strcpy(buf, "/proc/"); _ultoa(buf+6, getpid()); strcat(buf, "/fd"); - pfd = _OPEN(buf, 0); + pfd = _OPEN(buf, OREAD); if(pfd < 0) return -1; memset(buf, 0, sizeof buf); diff --git a/sys/src/ape/lib/ap/plan9/_getpw.c b/sys/src/ape/lib/ap/plan9/_getpw.c index 151d7f3c8..2c6a740a7 100644 --- a/sys/src/ape/lib/ap/plan9/_getpw.c +++ b/sys/src/ape/lib/ap/plan9/_getpw.c @@ -153,20 +153,19 @@ _grpmems(char *list) char **v; char *p; static char *holdvec[200]; - static char holdlist[1000]; + static char holdlist[1024]; - p = list; v = holdvec; - if(p) { - strncpy(holdlist, list, sizeof(holdlist)); + if(list != 0){ + memset(holdlist, 0, sizeof(holdlist)); + strncpy(holdlist, list, sizeof(holdlist)-1); + p = holdlist; while(v< &holdvec[sizeof(holdvec)]-1 && *p){ *v++ = p; p = strchr(p, ','); - if(p){ - p++; - *p = 0; - }else + if(p == 0) break; + *p++ = 0; } } *v = 0; diff --git a/sys/src/ape/lib/ap/plan9/access.c b/sys/src/ape/lib/ap/plan9/access.c index c51b37d6c..c96db0228 100644 --- a/sys/src/ape/lib/ap/plan9/access.c +++ b/sys/src/ape/lib/ap/plan9/access.c @@ -24,8 +24,6 @@ access(const char *name, int mode) 2, 2 }; - char tname[1024]; - if(mode == 0){ db = _dirstat(name); if(db == nil){ @@ -48,13 +46,23 @@ access(const char *name, int mode) close(fd); } if(mode & W_OK){ - strncpy(tname, name, sizeof(tname)-9); - strcat(tname, "/_AcChAcK"); - fd = creat(tname, 0666); - if(fd < 0) + char *tname; + int nname; + nname = strlen(name); + tname = malloc(nname+32); + if(tname == 0) return -1; - close(fd); - _REMOVE(tname); + memset(tname, 0, nname+32); + memcpy(tname, name, n); + memcpy(tname+nname, "/_AcChAcK", 9); + _ultoa(tname+nname+9, getpid()); + fd = _CREATE(tname, ORCLOSE, 0666); + if(fd < 0){ + free(tname); + return -1; + } + _CLOSE(fd); + free(tname); } return 0; } diff --git a/sys/src/ape/lib/ap/plan9/getppid.c b/sys/src/ape/lib/ap/plan9/getppid.c index 6d40a3cc9..ad38e2c7b 100644 --- a/sys/src/ape/lib/ap/plan9/getppid.c +++ b/sys/src/ape/lib/ap/plan9/getppid.c @@ -3,7 +3,7 @@ #include <fcntl.h> #include <stdlib.h> #include <unistd.h> -#include <errno.h> +#include <string.h> #include "sys9.h" pid_t @@ -13,10 +13,10 @@ getppid(void) int f; memset(b, 0, sizeof(b)); - f = open("/dev/ppid", 0); + f = _OPEN("/dev/ppid", OREAD); if(f >= 0) { - read(f, b, sizeof(b)); - close(f); + _PREAD(f, b, sizeof(b), 0); + _CLOSE(f); } return atol(b); } diff --git a/sys/src/ape/lib/ap/plan9/rename.c b/sys/src/ape/lib/ap/plan9/rename.c index dddfea328..73d051b11 100644 --- a/sys/src/ape/lib/ap/plan9/rename.c +++ b/sys/src/ape/lib/ap/plan9/rename.c @@ -49,13 +49,13 @@ rename(const char *from, const char *to) int ffd, tfd; char buf[8192]; - if((ffd = _OPEN(from, 0)) < 0 || - (tfd = _CREATE(to, 1, d->mode)) < 0){ + if((ffd = _OPEN(from, OREAD)) < 0 || + (tfd = _CREATE(to, OWRITE, d->mode)) < 0){ _CLOSE(ffd); _syserrno(); n = -1; } - while(n>=0 && (n = _READ(ffd, buf, 8192)) > 0) + while(n>=0 && (n = _READ(ffd, buf, sizeof(buf))) > 0) if(_WRITE(tfd, buf, n) != n){ _syserrno(); n = -1; diff --git a/sys/src/ape/lib/ap/plan9/time.c b/sys/src/ape/lib/ap/plan9/time.c index 85a1e72b2..2a8463334 100644 --- a/sys/src/ape/lib/ap/plan9/time.c +++ b/sys/src/ape/lib/ap/plan9/time.c @@ -15,7 +15,7 @@ time(time_t *tp) time_t t; memset(b, 0, sizeof(b)); - f = _OPEN("/dev/time", 0); + f = _OPEN("/dev/time", OREAD); if(f >= 0) { _PREAD(f, b, sizeof(b), 0); _CLOSE(f); |
