diff options
author | Petter Rodhelind <petter.rodhelind@gmail.com> | 2020-01-14 11:41:08 +0100 |
---|---|---|
committer | Petter Rodhelind <petter.rodhelind@gmail.com> | 2020-01-14 11:41:08 +0100 |
commit | 02d7aa8915f9c3a3288dab01f321eb94ba219e3b (patch) | |
tree | f053238978479e408a2b83571443e132f30586ab /src/cmd/vac | |
parent | c0c9d8f883dfd3a7f5a74499d91bb95884b15873 (diff) | |
parent | 3d1382b98a502d0c34d5ba2c462396acc515016e (diff) | |
download | plan9port-02d7aa8915f9c3a3288dab01f321eb94ba219e3b.tar.gz plan9port-02d7aa8915f9c3a3288dab01f321eb94ba219e3b.tar.bz2 plan9port-02d7aa8915f9c3a3288dab01f321eb94ba219e3b.zip |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src/cmd/vac')
-rw-r--r-- | src/cmd/vac/dat.h | 1 | ||||
-rw-r--r-- | src/cmd/vac/file.c | 89 | ||||
-rw-r--r-- | src/cmd/vac/glob.c | 9 | ||||
-rw-r--r-- | src/cmd/vac/pack.c | 26 | ||||
-rw-r--r-- | src/cmd/vac/testinc.c | 4 | ||||
-rw-r--r-- | src/cmd/vac/unvac.c | 14 | ||||
-rw-r--r-- | src/cmd/vac/vac.c | 31 | ||||
-rw-r--r-- | src/cmd/vac/vac.h | 5 | ||||
-rw-r--r-- | src/cmd/vac/vacfs.c | 9 |
9 files changed, 91 insertions, 97 deletions
diff --git a/src/cmd/vac/dat.h b/src/cmd/vac/dat.h index 000a762a..7182d52b 100644 --- a/src/cmd/vac/dat.h +++ b/src/cmd/vac/dat.h @@ -35,4 +35,3 @@ struct VacDirEnum int i, n; VacDir *buf; }; - diff --git a/src/cmd/vac/file.c b/src/cmd/vac/file.c index d9650289..e25f6cfc 100644 --- a/src/cmd/vac/file.c +++ b/src/cmd/vac/file.c @@ -8,21 +8,21 @@ /* * Vac file system. This is a simplified version of the same code in Fossil. - * + * * The locking order in the tree is upward: a thread can hold the lock * for a VacFile and then acquire the lock of f->up (the parent), * but not vice-versa. - * + * * A vac file is one or two venti files. Plain data files are one venti file, * while directores are two: a venti data file containing traditional - * directory entries, and a venti directory file containing venti + * directory entries, and a venti directory file containing venti * directory entries. The traditional directory entries in the data file * contain integers indexing into the venti directory entry file. * It's a little complicated, but it makes the data usable by standard * tools like venti/copy. * */ - + static int filemetaflush(VacFile*, char*); struct VacFile @@ -45,7 +45,7 @@ struct VacFile VtFile *msource; /* metadata for children in a directory */ VacFile *down; /* children */ int mode; - + uvlong qidoffset; /* qid offset */ }; @@ -215,7 +215,7 @@ vacfiledecref(VacFile *f) filefree(f); return 0; } - + filemetalock(f); f->ref--; if(f->ref > 0){ @@ -256,12 +256,12 @@ vacfiledecref(VacFile *f) } -/* - * Construct a vacfile for the root of a vac tree, given the - * venti file for the root information. That venti file is a +/* + * Construct a vacfile for the root of a vac tree, given the + * venti file for the root information. That venti file is a * directory file containing VtEntries for three more venti files: - * the two venti files making up the root directory, and a - * third venti file that would be the metadata half of the + * the two venti files making up the root directory, and a + * third venti file that would be the metadata half of the * "root's parent". * * Fossil generates slightly different vac files, due to a now @@ -273,7 +273,7 @@ VacFile* _vacfileroot(VacFs *fs, VtFile *r) { int redirected; - char err[ERRMAX]; + char err[ERRMAX]; VtBlock *b; VtFile *r0, *r1, *r2; MetaBlock mb; @@ -374,7 +374,7 @@ Err1: * to look at every block to find a given name. * Dirlookup looks in f for an element name elem. * It returns a new VacFile with the dir, boff, and mode - * filled in, but the sources (venti files) are not, and f is + * filled in, but the sources (venti files) are not, and f is * not yet linked into the tree. These details must be taken * care of by the caller. * @@ -535,8 +535,8 @@ Err: return nil; } -/* - * Open a path in the vac file system: +/* + * Open a path in the vac file system: * just walk each element one at a time. */ VacFile* @@ -696,12 +696,12 @@ vacfilegetsize(VacFile *f, uvlong *size) * Directory reading. * * A VacDirEnum is a buffer containing directory entries. - * Directory entries contain malloced strings and need to - * be cleaned up with vdcleanup. The invariant in the + * Directory entries contain malloced strings and need to + * be cleaned up with vdcleanup. The invariant in the * VacDirEnum is that the directory entries between * vde->i and vde->n are owned by the vde and need to * be cleaned up if it is closed. Those from 0 up to vde->i - * have been handed to the reader, and the reader must + * have been handed to the reader, and the reader must * take care of calling vdcleanup as appropriate. */ VacDirEnum* @@ -718,7 +718,7 @@ vdeopen(VacFile *f) /* * There might be changes to this directory's children * that have not been flushed out into the cache yet. - * Those changes are only available if we look at the + * Those changes are only available if we look at the * VacFile structures directory. But the directory reader * is going to read the cache blocks directly, so update them. */ @@ -912,19 +912,19 @@ vdeclose(VacDirEnum *vde) * On to mutation. If the vac file system has been opened * read-write, then the files and directories can all be edited. * Changes are kept in the in-memory cache until flushed out - * to venti, so we must be careful to explicitly flush data + * to venti, so we must be careful to explicitly flush data * that we're not likely to modify again. * * Each VacFile has its own copy of its VacDir directory entry * in f->dir, but otherwise the cache is the authoratative source - * for data. Thus, for the most part, it suffices if we just + * for data. Thus, for the most part, it suffices if we just * call vtfileflushbefore and vtfileflush when we modify things. * There are a few places where we have to remember to write * changed VacDirs back into the cache. If f->dir *is* out of sync, * then f->dirty should be set. * * The metadata in a directory is, to venti, a plain data file, - * but as mentioned above it is actually a sequence of + * but as mentioned above it is actually a sequence of * MetaBlocks that contain sorted lists of VacDir entries. * The filemetaxxx routines manipulate that stream. */ @@ -949,10 +949,10 @@ filemetaalloc(VacFile *fp, VacDir *dir, u32int start) int i, n; MetaEntry me; VtFile *ms; - + ms = fp->msource; n = vdsize(dir, VacDirVersion); - + /* Look for a block with room for a new entry of size n. */ nb = (vtfilegetsize(ms)+ms->dsize-1)/ms->dsize; if(start == NilBlock){ @@ -961,7 +961,7 @@ filemetaalloc(VacFile *fp, VacDir *dir, u32int start) else start = 0; } - + if(start > nb) start = nb; for(bo=start; bo<nb; bo++){ @@ -1015,7 +1015,7 @@ Err: } /* - * Update f's directory entry in the block cache. + * Update f's directory entry in the block cache. * We look for the directory entry by name; * if we're trying to rename the file, oelem is the old name. * @@ -1057,7 +1057,7 @@ filemetaflush(VacFile *f, char *oelem) goto Err; /* - * Check whether we can resize the entry and keep it + * Check whether we can resize the entry and keep it * in this block. */ n = vdsize(&f->dir, VacDirVersion); @@ -1076,20 +1076,20 @@ filemetaflush(VacFile *f, char *oelem) vdunpack(&f->dir, &me); mbinsert(&mb, i, &me); mbpack(&mb); - + /* Done */ vtblockput(b); vtfileunlock(fp->msource); f->dirty = 0; return 0; } - + /* * The entry must be moved to another block. * This can only really happen on renames that * make the name very long. */ - + /* Allocate a spot in a new block. */ if((bo = filemetaalloc(fp, &f->dir, f->boff+1)) == NilBlock){ /* mbresize above might have modified block */ @@ -1175,7 +1175,7 @@ vacfileflush(VacFile *f, int recursive) int ret; VacFile **kids, *p; int i, nkids; - + if(f->mode == VtOREAD) return 0; @@ -1218,7 +1218,7 @@ vacfileflush(VacFile *f, int recursive) /* * Now we can flush our own data. - */ + */ vtfilelock(f->source, -1); if(vtfileflush(f->source) < 0) ret = -1; @@ -1233,7 +1233,7 @@ vacfileflush(VacFile *f, int recursive) return ret; } - + /* * Create a new file named elem in fp with the given mode. * The mode can be changed later except for the ModeDir bit. @@ -1339,7 +1339,7 @@ vacfilecreate(VacFile *fp, char *elem, ulong mode) vacfileincref(fp); fileunlock(fp); - + filelock(ff); vtfilelock(ff->source, -1); vtfileunlock(ff->source); @@ -1375,7 +1375,7 @@ vacfilesetsize(VacFile *f, uvlong size) werrstr(ENotFile); return -1; } - + if(filelock(f) < 0) return -1; @@ -1534,7 +1534,7 @@ vacfilesetdir(VacFile *f, VacDir *dir) if(filelock(f) < 0) return -1; filemetalock(f); - + if(f->source->mode != VtORDWR){ werrstr(EReadOnly); goto Err; @@ -1777,7 +1777,7 @@ vacfsopen(VtConn *z, char *file, int mode, ulong cachemem) int fd; uchar score[VtScoreSize]; char *prefix; - + if(vtparsescore(file, &prefix, score) >= 0){ if(prefix == nil || strcmp(prefix, "vac") != 0){ werrstr("not a vac file"); @@ -1836,7 +1836,7 @@ if(debug) fprint(2, "bad type %s\n", rt.type); memmove(e.score, rt.score, VtScoreSize); e.gen = 0; - + // Don't waste cache memory on pointer blocks // when rt.blocksize is large. e.psize = (rt.blocksize/VtEntrySize)*VtEntrySize; @@ -1918,7 +1918,7 @@ int vacfsgetmaxqid(VacFs *fs, uvlong *maxqid) { VacDir vd; - + if(vacfilegetdir(fs->root, &vd) < 0) return -1; if(vd.qidspace) @@ -1955,7 +1955,7 @@ vacfscreate(VtConn *z, int bsize, ulong cachemem) VacDir vd; MetaEntry me; int psize; - + if((fs = vacfsalloc(z, bsize, cachemem, VtORDWR)) == nil) return nil; @@ -1989,7 +1989,7 @@ if(debug) fprint(2, "create bsize %d psize %d\n", bsize, psize); vtblockwrite(b); memmove(metascore, b->score, VtScoreSize); vtblockput(b); - + /* First entry: empty venti directory stream. */ memset(&e, 0, sizeof e); e.flags = VtEntryActive; @@ -1999,7 +1999,7 @@ if(debug) fprint(2, "create bsize %d psize %d\n", bsize, psize); memmove(e.score, vtzeroscore, VtScoreSize); vtentrypack(&e, buf, 0); vtfilewrite(f, buf, VtEntrySize, 0); - + /* Second entry: empty metadata stream. */ e.type = VtDataType; vtentrypack(&e, buf, 0); @@ -2013,7 +2013,7 @@ if(debug) fprint(2, "create bsize %d psize %d\n", bsize, psize); vtfileflush(f); vtfileunlock(f); - + /* Now open it as a vac fs. */ fs->root = _vacfileroot(fs, f); if(fs->root == nil){ @@ -2105,7 +2105,7 @@ sha1matches(VacFile *f, ulong b, uchar *buf, int n) { uchar fscore[VtScoreSize]; uchar bufscore[VtScoreSize]; - + if(vacfileblockscore(f, b, fscore) < 0) return 0; n = vtzerotruncate(VtDataType, buf, n); @@ -2114,4 +2114,3 @@ sha1matches(VacFile *f, ulong b, uchar *buf, int n) return 1; return 0; } - diff --git a/src/cmd/vac/glob.c b/src/cmd/vac/glob.c index 863eb848..69602ad7 100644 --- a/src/cmd/vac/glob.c +++ b/src/cmd/vac/glob.c @@ -89,7 +89,7 @@ glob2regexp(char *glob) *w++ = ')'; *w++ = '$'; *w = 0; - + re = regcomp(s); if(re == nil){ syntax: @@ -130,7 +130,7 @@ loadexcludefile(char *file) case '#': continue; } - + inc = 0; if(strncmp(p, "include ", 8) == 0){ inc = 1; @@ -157,7 +157,7 @@ void excludepattern(char *p) { Reprog *re; - + if((re = glob2regexp(p)) == nil) sysfatal("bad glob pattern %s", p); @@ -171,10 +171,9 @@ int includefile(char *file) { Pattern *p, *ep; - + for(p=pattern, ep=p+npattern; p<ep; p++) if(regexec(p->re, file, nil, 0)) return p->include; return 1; } - diff --git a/src/cmd/vac/pack.c b/src/cmd/vac/pack.c index 5555cc0e..1eca665d 100644 --- a/src/cmd/vac/pack.c +++ b/src/cmd/vac/pack.c @@ -36,7 +36,7 @@ stringunpack(char **s, uchar **p, int *n) if(*n < 2) return -1; - + nn = U16GET(*p); *p += 2; *n -= 2; @@ -187,7 +187,7 @@ if(0)print("eo = %d en = %d\n", eo, en); } p = mb->buf + eo; - + /* make sure entry looks ok and includes an elem name */ if(en < 8 || U32GET(p) != DirMagic || en < 8 + U16GET(p+6)) { werrstr("corrupted meta block entry"); @@ -317,7 +317,7 @@ mbcompact(MetaBlock *mb, MetaChunk *mc) int oo, o, n, i; oo = MetaHeaderSize + mb->maxindex*MetaIndexSize; - + for(i=0; i<mb->nindex; i++) { o = mc[i].offset; n = mc[i].size; @@ -375,7 +375,7 @@ int vdsize(VacDir *dir, int version) { int n; - + if(version < 8 || version > 9) sysfatal("bad version %d in vdpack", version); @@ -433,7 +433,7 @@ vdpack(VacDir *dir, MetaEntry *me, int version) sysfatal("bad version %d in vdpack", version); p = me->p; - + U32PUT(p, DirMagic); U16PUT(p+4, version); /* version */ p += 6; @@ -442,7 +442,7 @@ vdpack(VacDir *dir, MetaEntry *me, int version) U32PUT(p, dir->entry); p += 4; - + if(version == 9){ U32PUT(p, dir->gen); U32PUT(p+4, dir->mentry); @@ -456,7 +456,7 @@ vdpack(VacDir *dir, MetaEntry *me, int version) p += stringpack(dir->uid, p); p += stringpack(dir->gid, p); p += stringpack(dir->mid, p); - + U32PUT(p, dir->mtime); U32PUT(p+4, dir->mcount); U32PUT(p+8, dir->ctime); @@ -481,7 +481,7 @@ vdpack(VacDir *dir, MetaEntry *me, int version) U64PUT(p+8, dir->qidmax, t32); p += 16; } - + if(dir->gen && version < 9) { U8PUT(p, DirGenEntry); U16PUT(p+1, 4); @@ -498,7 +498,7 @@ vdunpack(VacDir *dir, MetaEntry *me) { int t, nn, n, version; uchar *p; - + p = me->p; n = me->size; @@ -517,7 +517,7 @@ vdunpack(VacDir *dir, MetaEntry *me) if(version < 7 || version > 9) goto Err; p += 2; - n -= 2; + n -= 2; /* elem */ if(stringunpack(&dir->elem, &p, &n) < 0) @@ -560,7 +560,7 @@ vdunpack(VacDir *dir, MetaEntry *me) p += VtScoreSize; n -= VtScoreSize; } - + /* uid */ if(stringunpack(&dir->uid, &p, &n) < 0) goto Err; @@ -678,7 +678,7 @@ mbsearch(MetaBlock *mb, char *elem, int *ri, MetaEntry *me) *ri = i; return 1; } - + if(x < 0) b = i+1; else /* x > 0 */ @@ -686,7 +686,7 @@ mbsearch(MetaBlock *mb, char *elem, int *ri, MetaEntry *me) } assert(b == t); - + *ri = b; /* b is the index to insert this entry */ memset(me, 0, sizeof(*me)); diff --git a/src/cmd/vac/testinc.c b/src/cmd/vac/testinc.c index 0cd43143..3049e34b 100644 --- a/src/cmd/vac/testinc.c +++ b/src/cmd/vac/testinc.c @@ -14,13 +14,13 @@ threadmain(int argc, char **argv) default: goto usage; }ARGEND - + if(argc != 1){ usage: fprint(2, "usage: testinc includefile\n"); threadexitsall("usage"); } - + loadexcludefile(argv[0]); Binit(&b, 0, OREAD); while((p = Brdline(&b, '\n')) != nil){ diff --git a/src/cmd/vac/unvac.c b/src/cmd/vac/unvac.c index 594a6a2e..a117a250 100644 --- a/src/cmd/vac/unvac.c +++ b/src/cmd/vac/unvac.c @@ -46,7 +46,7 @@ threadmain(int argc, char *argv[]) fmtinstall('F', vtfcallfmt); fmtinstall('t', mtimefmt); fmtinstall('M', dirmodefmt); - + host = nil; printstats = 0; @@ -94,7 +94,7 @@ threadmain(int argc, char *argv[]) if(vtconnect(conn) < 0) sysfatal("vtconnect: %r"); - fs = vacfsopen(conn, argv[0], VtOREAD, 4<<20); + fs = vacfsopen(conn, argv[0], VtOREAD, 128<<20); if(fs == nil) sysfatal("vacfsopen: %r"); @@ -104,7 +104,7 @@ threadmain(int argc, char *argv[]) if((f = vacfsgetroot(fs)) == nil) sysfatal("vacfsgetroot: %r"); - + unvac(f, nil, nil); for(i=0; i<nwant; i++){ if(want[i] && !found[i]){ @@ -125,7 +125,7 @@ writen(int fd, char *buf, int n) { int m; int oldn; - + oldn = n; while(n > 0){ m = write(fd, buf, n); @@ -141,7 +141,7 @@ int wantfile(char *name) { int i, namelen, n; - + if(nwant == 0) return 1; @@ -229,7 +229,7 @@ unvac(VacFile *f, char *name, VacDir *vdir) fprint(2, "warning: ignoring %s %s\n", what, name); return; } - + if(mode&ModeDir){ if((vde = vdeopen(f)) == nil){ fprint(2, "vdeopen %s: %r", name); @@ -342,7 +342,7 @@ int mtimefmt(Fmt *f) { Tm *tm; - + tm = localtime(va_arg(f->args, ulong)); fmtprint(f, "%04d-%02d-%02d %02d:%02d", tm->year+1900, tm->mon+1, tm->mday, diff --git a/src/cmd/vac/vac.c b/src/cmd/vac/vac.c index b54503e4..4555a907 100644 --- a/src/cmd/vac/vac.c +++ b/src/cmd/vac/vac.c @@ -15,7 +15,7 @@ usage(void) enum { BlockSize = 8*1024, - CacheSize = 4<<20, + CacheSize = 128<<20, }; struct @@ -48,7 +48,7 @@ static void removevacfile(void); #ifdef PLAN9PORT /* * We're between a rock and a hard place here. - * The pw library (getpwnam, etc.) reads the + * The pw library (getpwnam, etc.) reads the * password and group files into an on-stack buffer, * so if you have some huge groups, you overflow * the stack. Because of this, the thread library turns @@ -136,10 +136,10 @@ threadmain(int argc, char **argv) default: usage(); }ARGEND - + if(argc == 0 && !stdinname) usage(); - + if(archivefile && (vacfile || diffvac)){ fprint(2, "cannot use -a with -f, -d\n"); usage(); @@ -266,7 +266,7 @@ threadmain(int argc, char **argv) } if(fdiff) vacfiledecref(fdiff); - + /* * Record the maximum qid so that vacs can be merged * without introducing overlapping qids. Older versions @@ -313,7 +313,7 @@ recentarchive(VacFs *fs, char *path) char buf[10]; int year, mmdd, nn, n, n1; char *p; - + fp = vacfsgetroot(fs); de = vdeopen(fp); year = 0; @@ -339,7 +339,7 @@ recentarchive(VacFs *fs, char *path) return nil; } fp = f; - + de = vdeopen(fp); mmdd = 0; nn = 0; @@ -440,7 +440,7 @@ enum { /* * Archive the file named name, which has stat info d, - * into the vac directory fp (p = parent). + * into the vac directory fp (p = parent). * * If we're doing a vac -d against another archive, the * equivalent directory to fp in that archive is diffp. @@ -469,7 +469,7 @@ vac(VacFile *fp, VacFile *diffp, char *name, Dir *d) if(merge && vacmerge(fp, name) >= 0) return; - + if(verbose) fprint(2, "%s%s\n", name, (d->mode&DMDIR) ? "/" : ""); @@ -551,7 +551,7 @@ vac(VacFile *fp, VacFile *diffp, char *name, Dir *d) if(vacfilegetentries(fdiff, &e, nil) >= 0) if(vacfilesetentries(f, &e, nil) >= 0){ bsize = e.dsize; - + /* * Or if -q is set, and the metadata looks the same, * don't even bother reading the file. @@ -565,7 +565,7 @@ vac(VacFile *fp, VacFile *diffp, char *name, Dir *d) vdcleanup(&vddiff); goto Out; } - + /* * Skip over presumably-unchanged prefix * of an append-only file. @@ -631,7 +631,7 @@ vacstdin(VacFile *fp, char *name) warn("vacfilecreate %s: %r", name); return; } - + off = 0; while((n = read(0, buf, sizeof buf)) > 0){ if(vacfilewrite(f, buf, n, off) < 0){ @@ -660,7 +660,7 @@ vacmergefile(VacFile *fp, VacFile *mp, VacDir *d, char *vacfile, VtEntry ed, em; VacFile *mf; VacFile *f; - + mf = vacfilewalk(mp, d->elem); if(mf == nil){ warn("could not walk %s in %s", d->elem, vacfile); @@ -671,7 +671,7 @@ vacmergefile(VacFile *fp, VacFile *mp, VacDir *d, char *vacfile, vacfiledecref(mf); return -1; } - + if((f = vacfilecreate(fp, d->elem, d->mode)) == nil){ warn("vacfilecreate %s: %r", d->elem); vacfiledecref(mf); @@ -693,7 +693,7 @@ vacmergefile(VacFile *fp, VacFile *mp, VacDir *d, char *vacfile, vacfiledecref(f); return -1; } - + vacfiledecref(mf); vacfiledecref(f); return 0; @@ -778,4 +778,3 @@ warn(char *fmt, ...) fprint(2, "\n"); va_end(arg); } - diff --git a/src/cmd/vac/vac.h b/src/cmd/vac/vac.h index 0edd41e4..bbed4931 100644 --- a/src/cmd/vac/vac.h +++ b/src/cmd/vac/vac.h @@ -13,7 +13,7 @@ typedef struct VacDirEnum VacDirEnum; */ enum { - ModeOtherExec = (1<<0), + ModeOtherExec = (1<<0), ModeOtherWrite = (1<<1), ModeOtherRead = (1<<2), ModeGroupExec = (1<<3), @@ -64,7 +64,7 @@ struct VacDir ulong mgen; /* generation of meta entry */ uvlong size; /* size of file */ uvlong qid; /* unique file id */ - + char *uid; /* owner id */ char *gid; /* group id */ char *mid; /* last modified by */ @@ -144,4 +144,3 @@ int vdeunread(VacDirEnum*); int vacfiledsize(VacFile *f); int sha1matches(VacFile *f, ulong b, uchar *buf, int n); - diff --git a/src/cmd/vac/vacfs.c b/src/cmd/vac/vacfs.c index b4525729..05baf66e 100644 --- a/src/cmd/vac/vacfs.c +++ b/src/cmd/vac/vacfs.c @@ -149,7 +149,7 @@ threadmain(int argc, char *argv[]) fmtinstall('H', encodefmt); fmtinstall('V', vtscorefmt); fmtinstall('F', vtfcallfmt); - + defmnt = nil; defsrv = nil; ARGBEGIN{ @@ -620,7 +620,7 @@ rstat(Fid *f) VacDir dir; static uchar statbuf[1024]; VacFile *parent; - + if(!f->busy) return vtstrdup(Enotexist); parent = vacfilegetparent(f->file); @@ -671,7 +671,7 @@ vacstat(VacFile *parent, VacDir *vd, uchar *p, int np) dir.qid.type |= QTDIR; dir.mode |= DMDIR; } - + #ifdef PLAN9PORT if(vd->mode & (ModeLink|ModeDevice|ModeNamedPipe)){ vf = vacfilewalk(parent, vd->elem); @@ -695,7 +695,7 @@ vacstat(VacFile *parent, VacDir *vd, uchar *p, int np) dir.mode |= DMNAMEDPIPE; } #endif - + dir.atime = vd->atime; dir.mtime = vd->mtime; dir.length = vd->size; @@ -862,4 +862,3 @@ vacshutdown(void) vacfsclose(fs); vthangup(conn); } - |