shithub: riscv

Download patch

ref: 6b2b4b58fba2ce432bda596a53355b4daabd5612
parent: 3fce94e7850ab80d14fa15f2f393ae71259376e5
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Thu Oct 27 20:54:26 EDT 2011

hgfs: detect fncache repo format

--- a/sys/src/cmd/hgfs/fs.c
+++ b/sys/src/cmd/hgfs/fs.c
@@ -45,6 +45,7 @@
 static Revlog *revlogs;
 
 static char dothg[MAXPATH];
+static int mangle = 0;
 
 static Revlog*
 getrevlog(Revnode *nd)
@@ -51,9 +52,12 @@
 {
 	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 @@
 		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);
--