diff --git a/sys/src/cmd/vac/file.c b/sys/src/cmd/vac/file.c index cc88eabd2..119e07cde 100644 --- a/sys/src/cmd/vac/file.c +++ b/sys/src/cmd/vac/file.c @@ -1592,6 +1592,11 @@ vacfilesetdir(VacFile *f, VacDir *dir) f->dir.gid = vtstrdup(dir->gid); } + if(strcmp(f->dir.mid, dir->mid) != 0){ + vtfree(f->dir.mid); + f->dir.mid = vtstrdup(dir->mid); + } + f->dir.mtime = dir->mtime; f->dir.atime = dir->atime; @@ -1774,7 +1779,7 @@ vacfsopen(VtConn *z, char *file, int mode, int ncache) char *prefix; if(vtparsescore(file, &prefix, score) >= 0){ - if(strcmp(prefix, "vac") != 0){ + if(prefix == nil || strcmp(prefix, "vac") != 0){ werrstr("not a vac file"); return nil; } diff --git a/sys/src/cmd/vac/vacfs.c b/sys/src/cmd/vac/vacfs.c index e4697c92a..164bf8060 100644 --- a/sys/src/cmd/vac/vacfs.c +++ b/sys/src/cmd/vac/vacfs.c @@ -200,12 +200,6 @@ threadmain(int argc, char *argv[]) mfd[0] = p[0]; mfd[1] = p[0]; srvfd = p[1]; - } - - procrfork(srv, 0, Stacksize, RFFDG|RFNAMEG|RFNOTEG); - - if(!stdio){ - close(p[0]); if(defsrv){ srvname = smprint("/srv/%s", defsrv); fd = create(srvname, OWRITE|ORCLOSE, 0666); @@ -215,6 +209,12 @@ threadmain(int argc, char *argv[]) sysfatal("write %s: %r", srvname); free(srvname); } + } + + procrfork(srv, 0, Stacksize, RFFDG|RFNAMEG|RFNOTEG); + + if(!stdio){ + close(p[0]); if(defmnt){ if(mount(srvfd, -1, defmnt, MREPL|MCREATE, "") < 0) sysfatal("mount %s: %r", defmnt); diff --git a/sys/src/libventi/server.c b/sys/src/libventi/server.c index 10b0665fd..d24ea1f93 100644 --- a/sys/src/libventi/server.c +++ b/sys/src/libventi/server.c @@ -180,7 +180,9 @@ vtgetreq(VtSrv *srv) VtReq *r; r = _vtqrecv(srv->q); - vtlog(VtServerLog, "%T %s: vtgetreq %F
\n", ((VtSconn*)r->sc)->c->addr, &r->tx); + if (r != nil) + vtlog(VtServerLog, "%T %s: vtgetreq %F
\n", + ((VtSconn*)r->sc)->c->addr, &r->tx); return r; }