diff options
Diffstat (limited to 'src/cmd/fossil/9srv.c')
-rw-r--r-- | src/cmd/fossil/9srv.c | 52 |
1 files changed, 25 insertions, 27 deletions
diff --git a/src/cmd/fossil/9srv.c b/src/cmd/fossil/9srv.c index 84696268..94e67245 100644 --- a/src/cmd/fossil/9srv.c +++ b/src/cmd/fossil/9srv.c @@ -14,7 +14,7 @@ struct Srv { }; static struct { - VtLock* lock; + RWLock lock; Srv* head; Srv* tail; @@ -33,11 +33,11 @@ srvFd(char* name, int mode, int fd, char** mntpnt) */ p = smprint("/srv/%s", name); if((srvfd = create(p, ORCLOSE|OWRITE, mode)) < 0){ - vtMemFree(p); + vtfree(p); p = smprint("#s/%s", name); if((srvfd = create(p, ORCLOSE|OWRITE, mode)) < 0){ - vtSetError("create %s: %r", p); - vtMemFree(p); + werrstr("create %s: %r", p); + vtfree(p); return -1; } } @@ -45,8 +45,8 @@ srvFd(char* name, int mode, int fd, char** mntpnt) n = snprint(buf, sizeof(buf), "%d", fd); if(write(srvfd, buf, n) < 0){ close(srvfd); - vtSetError("write %s: %r", p); - vtMemFree(p); + werrstr("write %s: %r", p); + vtfree(p); return -1; } @@ -69,9 +69,9 @@ srvFree(Srv* srv) if(srv->srvfd != -1) close(srv->srvfd); - vtMemFree(srv->service); - vtMemFree(srv->mntpnt); - vtMemFree(srv); + vtfree(srv->service); + vtfree(srv->mntpnt); + vtfree(srv); } static Srv* @@ -82,7 +82,7 @@ srvAlloc(char* service, int mode, int fd) int srvfd; char *mntpnt; - vtLock(sbox.lock); + wlock(&sbox.lock); for(srv = sbox.head; srv != nil; srv = srv->next){ if(strcmp(srv->service, service) != 0) continue; @@ -92,8 +92,8 @@ srvAlloc(char* service, int mode, int fd) */ if((dir = dirfstat(srv->srvfd)) != nil){ free(dir); - vtSetError("srv: already serving '%s'", service); - vtUnlock(sbox.lock); + werrstr("srv: already serving '%s'", service); + wunlock(&sbox.lock); return nil; } srvFree(srv); @@ -101,14 +101,14 @@ srvAlloc(char* service, int mode, int fd) } if((srvfd = srvFd(service, mode, fd, &mntpnt)) < 0){ - vtUnlock(sbox.lock); + wunlock(&sbox.lock); return nil; } close(fd); - srv = vtMemAllocZ(sizeof(Srv)); + srv = vtmallocz(sizeof(Srv)); srv->srvfd = srvfd; - srv->service = vtStrDup(service); + srv->service = vtstrdup(service); srv->mntpnt = mntpnt; if(sbox.tail != nil){ @@ -120,7 +120,7 @@ srvAlloc(char* service, int mode, int fd) srv->prev = nil; } sbox.tail = srv; - vtUnlock(sbox.lock); + wunlock(&sbox.lock); return srv; } @@ -168,7 +168,7 @@ cmdSrv(int argc, char* argv[]) }ARGEND if(pflag && (conflags&ConNoPermCheck)){ - vtSetError("srv: cannot use -P with -p"); + werrstr("srv: cannot use -P with -p"); return 0; } @@ -176,27 +176,27 @@ cmdSrv(int argc, char* argv[]) default: return cliError(usage); case 0: - vtRLock(sbox.lock); + rlock(&sbox.lock); for(srv = sbox.head; srv != nil; srv = srv->next) consPrint("\t%s\t%d\n", srv->service, srv->srvfd); - vtRUnlock(sbox.lock); + runlock(&sbox.lock); return 1; case 1: if(!dflag) break; - vtLock(sbox.lock); + wlock(&sbox.lock); for(srv = sbox.head; srv != nil; srv = srv->next){ if(strcmp(srv->service, argv[0]) != 0) continue; srvFree(srv); break; } - vtUnlock(sbox.lock); + wunlock(&sbox.lock); if(srv == nil){ - vtSetError("srv: '%s' not found", argv[0]); + werrstr("srv: '%s' not found", argv[0]); return 0; } @@ -204,7 +204,7 @@ cmdSrv(int argc, char* argv[]) } if(pipe(fd) < 0){ - vtSetError("srv pipe: %r"); + werrstr("srv pipe: %r"); return 0; } if((srv = srvAlloc(argv[0], mode, fd[0])) == nil){ @@ -223,9 +223,9 @@ cmdSrv(int argc, char* argv[]) } if(r == 0){ close(fd[1]); - vtLock(sbox.lock); + wlock(&sbox.lock); srvFree(srv); - vtUnlock(sbox.lock); + wunlock(&sbox.lock); } return r; @@ -234,8 +234,6 @@ cmdSrv(int argc, char* argv[]) int srvInit(void) { - sbox.lock = vtLockAlloc(); - cliAddCmd("srv", cmdSrv); return 1; |