aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/fossil/9srv.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/fossil/9srv.c')
-rw-r--r--src/cmd/fossil/9srv.c52
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;