fossil: move from liboventi to libthread and libventi

R=rsc
https://codereview.appspot.com/13504049
This commit is contained in:
David du Colombier 2013-09-23 23:16:25 +02:00
parent 6f4d00ee45
commit 4b57665805
38 changed files with 1360 additions and 1424 deletions

View file

@ -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;