From 6b2b4b58fba2ce432bda596a53355b4daabd5612 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Fri, 28 Oct 2011 00:54:26 +0200 Subject: hgfs: detect fncache repo format --- sys/src/cmd/hgfs/fs.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3