fossil: move from liboventi to libthread and libventi
R=rsc https://codereview.appspot.com/13504049
This commit is contained in:
parent
6f4d00ee45
commit
4b57665805
38 changed files with 1360 additions and 1424 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue