hgfs: detect fncache repo format
This commit is contained in:
parent
3fce94e785
commit
6b2b4b58fb
|
@ -45,15 +45,19 @@ static Revlog manifest;
|
||||||
static Revlog *revlogs;
|
static Revlog *revlogs;
|
||||||
|
|
||||||
static char dothg[MAXPATH];
|
static char dothg[MAXPATH];
|
||||||
|
static int mangle = 0;
|
||||||
|
|
||||||
static Revlog*
|
static Revlog*
|
||||||
getrevlog(Revnode *nd)
|
getrevlog(Revnode *nd)
|
||||||
{
|
{
|
||||||
char buf[MAXPATH];
|
char buf[MAXPATH];
|
||||||
Revlog *rl;
|
Revlog *rl;
|
||||||
|
int mang;
|
||||||
|
|
||||||
|
mang = mangle;
|
||||||
|
Again:
|
||||||
nodepath(seprint(buf, buf+sizeof(buf), "%s/store/data", dothg),
|
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)
|
for(rl = revlogs; rl; rl = rl->next)
|
||||||
if(strcmp(buf, rl->path) == 0)
|
if(strcmp(buf, rl->path) == 0)
|
||||||
break;
|
break;
|
||||||
|
@ -62,10 +66,14 @@ getrevlog(Revnode *nd)
|
||||||
memset(rl, 0, sizeof(*rl));
|
memset(rl, 0, sizeof(*rl));
|
||||||
if(revlogopen(rl, buf, OREAD) < 0){
|
if(revlogopen(rl, buf, OREAD) < 0){
|
||||||
free(rl);
|
free(rl);
|
||||||
|
if(mang++ == 0)
|
||||||
|
goto Again;
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
rl->next = revlogs;
|
rl->next = revlogs;
|
||||||
revlogs = rl;
|
revlogs = rl;
|
||||||
|
if(mang)
|
||||||
|
mangle = 1;
|
||||||
} else
|
} else
|
||||||
revlogupdate(rl);
|
revlogupdate(rl);
|
||||||
incref(rl);
|
incref(rl);
|
||||||
|
|
Loading…
Reference in a new issue