Commit Diff


commit - 783aadbdcd39e3850c61528c77fcf878448824f4
commit + 49f498ae1193d4e2e867d809fd1dab774ff9f8b8
blob - 26142e28ed54f2986fb4f18a252dd638adecf427
blob + 1d4a3da242d7ba506e2506aa9ee9ec64af4be86f
--- src/cmd/factotum/dat.h
+++ src/cmd/factotum/dat.h
@@ -221,5 +221,7 @@ extern int		xiowrite(int, void*, int);
 extern int		xioasrdresp(int, void*, int);
 extern int		xioasgetticket(int, char*, char*);
 
+extern int		extrafactotumdir;
+
 int		havesecstore(void);
 int		secstorefetch(void);
blob - 1d801b42adaa3790987bb2f7daca05b55366a2ac
blob + f9ad785be85abca7d31c939827ad8b9617240f97
--- src/cmd/factotum/fs.c
+++ src/cmd/factotum/fs.c
@@ -15,6 +15,8 @@ enum
 	Qconv,
 };
 
+static int qtop;
+
 Qid
 mkqid(int type, int path)
 {
@@ -106,7 +108,7 @@ fswalk1(Fid *fid, char *name, Qid *qid)
 				return nil;
 			}
 		if(strcmp(name, "..") == 0){
-			*qid = mkqid(QTDIR, Qroot);
+			*qid = mkqid(QTDIR, qtop);
 			fid->qid = *qid;
 			return nil;
 		}
@@ -482,7 +484,7 @@ fsproc(void *v)
 static void
 fsattach(Req *r)
 {
-	r->fid->qid = mkqid(QTDIR, Qroot);
+	r->fid->qid = mkqid(QTDIR, qtop);
 	r->ofcall.qid = r->fid->qid;
 	respond(r, nil);
 }
@@ -505,6 +507,10 @@ fsstart(Srv *s)
 {
 	USED(s);
 
+	if(extrafactotumdir)
+		qtop = Qroot;
+	else
+		qtop = Qfactotum;
 	creq = chancreate(sizeof(Req*), 0);
 	cfid = chancreate(sizeof(Fid*), 0);
 	cfidr = chancreate(sizeof(Fid*), 0);
blob - a2647da9e78920b05cbd3ce336e4454655e873fb
blob + a258684d06e72c1d7d79c21209e8cf1a357d38fb
--- src/cmd/factotum/main.c
+++ src/cmd/factotum/main.c
@@ -1,6 +1,7 @@
 #include "std.h"
 #include "dat.h"
 
+int extrafactotumdir;
 int debug;
 int trysecstore = 1;
 char *factname = "factotum";
@@ -57,6 +58,9 @@ threadmain(int argc, char *argv[])
 	case 'n':
 		trysecstore = 0;
 		break;
+	case 'x':
+		extrafactotumdir = 1;
+		break;
 	}ARGEND
 
 	if(argc != 0)