diff options
author | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-10-28 00:54:26 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-10-28 00:54:26 +0200 |
commit | 6b2b4b58fba2ce432bda596a53355b4daabd5612 (patch) | |
tree | dd1282e3cb85540b2eb7b2b2ac7a26bd057f74ec /sys/src/cmd/hgfs/fs.c | |
parent | 3fce94e7850ab80d14fa15f2f393ae71259376e5 (diff) |
hgfs: detect fncache repo format
Diffstat (limited to 'sys/src/cmd/hgfs/fs.c')
-rw-r--r-- | sys/src/cmd/hgfs/fs.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/src/cmd/hgfs/fs.c b/sys/src/cmd/hgfs/fs.c index 9bc314577..cf425ef29 100644 --- a/sys/src/cmd/hgfs/fs.c +++ b/sys/src/cmd/hgfs/fs.c @@ -45,15 +45,19 @@ static Revlog manifest; static Revlog *revlogs; static char dothg[MAXPATH]; +static int mangle = 0; static Revlog* getrevlog(Revnode *nd) { char buf[MAXPATH]; Revlog *rl; + int mang; + mang = mangle; +Again: nodepath(seprint(buf, buf+sizeof(buf), "%s/store/data", dothg), - buf+sizeof(buf), nd, 1); + buf+sizeof(buf), nd, mang); for(rl = revlogs; rl; rl = rl->next) if(strcmp(buf, rl->path) == 0) break; @@ -62,10 +66,14 @@ getrevlog(Revnode *nd) memset(rl, 0, sizeof(*rl)); if(revlogopen(rl, buf, OREAD) < 0){ free(rl); + if(mang++ == 0) + goto Again; return nil; } rl->next = revlogs; revlogs = rl; + if(mang) + mangle = 1; } else revlogupdate(rl); incref(rl); |