Commit Diff


commit - 841d71b5c6be4851572a60c5a9f9dd239ea69e56
commit + ebda53e16b473c6ad8df070edd6f58e2e1e10994
blob - 0c26f38d97a751d7e87a50594a3553d99100f3e7
blob + d382acc4763660adbf6988eaf2f55b55679e3a9c
--- man/man1/dict.1
+++ man/man1/dict.1
@@ -146,6 +146,12 @@ the default command is
 .BR p .
 Otherwise, the default command is the previous command.
 .PP
+.I Dict
+searches for dictionaries in the directory named by
+.B $dictpath 
+(default
+.BR \*9/dict ).
+.PP
 .I Adict
 is a dictionary browser for
 .IR acme (1).
blob - 5942470708d3393e365affe6d71235a1617c1f69
blob + b1210b7b0ac83e79d9b5bd7cb9571d9227a8b8f9
--- src/cmd/9pfuse/fuse.c
+++ src/cmd/9pfuse/fuse.c
@@ -803,7 +803,9 @@ mountfuse(char *mtpt)
 		if(access(f="/System/Library/Extensions/fusefs.kext"
 			"/Contents/Resources/load_fusefs", 0) < 0 &&
 		   access(f="/Library/Extensions/fusefs.kext"
-		   	"/Contents/Resources/load_fusefs", 0) < 0){
+		   	"/Contents/Resources/load_fusefs", 0) < 0 &&
+		   access(f="/System/Library/Filesystems"
+		         "/fusefs.fs/Support/load_fusefs", 0) < 0){
 		   	werrstr("cannot find load_fusefs");
 		   	return -1;
 		}
blob - 9e196b118c4209c007f7062a3f86df922d8f9e19
blob + d9cdca624f5314c9f4a7a4647810962c9d2609c9
--- src/cmd/dict/dict.c
+++ src/cmd/dict/dict.c
@@ -68,7 +68,7 @@ main(int argc, char **argv)
 	dict = 0;
 
 	for(i=0; dicts[i].name; i++){
-		if(access(unsharp(dicts[i].path), 0)>=0 && access(unsharp(dicts[i].indexpath), 0)>=0){
+		if(access(dictfile(dicts[i].path), 0)>=0 && access(dictfile(dicts[i].indexpath), 0)>=0){
 			dict = &dicts[i];
 			break;
 		}
@@ -119,8 +119,8 @@ main(int argc, char **argv)
 		line = malloc(strlen(p)+5);
 		sprint(line, "/%s/P\n", p);
 	}
-	dict->path = unsharp(dict->path);
-	dict->indexpath = unsharp(dict->indexpath);
+	dict->path = dictfile(dict->path);
+	dict->indexpath = dictfile(dict->indexpath);
 	bdict = Bopen(dict->path, OREAD);
 	if(!bdict) {
 		err("can't open dictionary %s", dict->path);
@@ -171,7 +171,7 @@ usage(void)
 	Bprint(bout, "dictionaries (brackets mark dictionaries not present on this system):\n");
 	for(i = 0; dicts[i].name; i++){
 		a = b = "";
-		if(access(unsharp(dicts[i].path), 0)<0 || access(unsharp(dicts[i].indexpath), 0)<0){
+		if(access(dictfile(dicts[i].path), 0)<0 || access(dictfile(dicts[i].indexpath), 0)<0){
 			a = "[";
 			b = "]";
 		}
@@ -675,3 +675,24 @@ setdotprev(void)
 	dot->n = 1;
 	dot->cur = 0;
 }
+
+/*
+ * find the specified file and return a path.
+ * default location is #9/dict, but can be 
+ * in $dictdir instead.
+ */
+char*
+dictfile(char *f)
+{
+	static char *dict;
+	static int did;
+	
+	if(!did){
+		dict = getenv("dictpath");
+		did = 1;
+	}
+	
+	if(dict)
+		return smprint("%s/%s", dict, f);
+	return unsharp(smprint("#9/dict/%s", f));
+}
blob - bf7a80c32483bd89fd0527938a8fc937b2f66955
blob + 4359767470db1b656c52c886c6c1c42f3c174d07
--- src/cmd/dict/dict.h
+++ src/cmd/dict/dict.h
@@ -115,6 +115,7 @@ void	outnl(int);
 void	outpiece(char *, char *);
 void	runescpy(Rune*, Rune*);
 long	runetol(Rune*);
+char	*dictfile(char*);
 
 long	oednextoff(long);
 void	oedprintentry(Entry, int);
blob - 877c3b130f53446c1019175f7881769228e4091c
blob + 96e71e34b5b61796a6f40d67225160b3c526d92a
--- src/cmd/dict/robert.c
+++ src/cmd/dict/robert.c
@@ -84,10 +84,10 @@ initsubtab(void)
 #define	GSHORT(p)	(((p)[0]<<8) | (p)[1])
 #define	GLONG(p)	(((p)[0]<<24) | ((p)[1]<<16) | ((p)[2]<<8) | (p)[3])
 
-static char	cfile[] = "#9/dict/robert/cits.rob";
-static char	dfile[] = "#9/dict/robert/defs.rob";
-static char	efile[] = "#9/dict/robert/etym.rob";
-static char	kfile[] = "#9/dict/robert/_phon";
+static char	cfile[] = "robert/cits.rob";
+static char	dfile[] = "robert/defs.rob";
+static char	efile[] = "robert/etym.rob";
+static char	kfile[] = "robert/_phon";
 
 static Biobuf *	cb;
 static Biobuf *	db;
@@ -316,7 +316,7 @@ Bouvrir(char *fichier)
 {
 	Biobuf *db;
 
-	fichier = unsharp(fichier);
+	fichier = dictfile(fichier);
 	db = Bopen(fichier, OREAD);
 	if(db == 0){
 		fprint(2, "%s: impossible d'ouvrir %s: %r\n", argv0, fichier);
blob - d7033d37fc6a73705332ed64c906dbfcb8b51c14
blob + d60d0bb92fd997621ccdf03cf02b07c3c998b37d
--- src/cmd/dict/utils.c
+++ src/cmd/dict/utils.c
@@ -5,163 +5,163 @@
 
 Dict dicts[] = {
 	{"oed",		"Oxford English Dictionary, 2nd Ed.",
-	 "#9/dict/oed2",	"#9/dict/oed2index",
+	 "oed2",	"oed2index",
 	 oednextoff,	oedprintentry,		oedprintkey},
 	{"ahd",		"American Heritage Dictionary, 2nd College Ed.",
-	 "#9/dict/ahd/DICT.DB",	"#9/dict/ahd/index",
+	 "ahd/DICT.DB",	"ahd/index",
 	 ahdnextoff,	ahdprintentry,		ahdprintkey},
 	{"pgw",		"Project Gutenberg Webster Dictionary",
-	 "#9/dict/pgw",	"#9/dict/pgwindex",
+	 "pgw",	"pgwindex",
 	 pgwnextoff,	pgwprintentry,		pgwprintkey},
 	{"thesaurus",	"Collins Thesaurus",
-	 "#9/dict/thesaurus",	"#9/dict/thesindex",
+	 "thesaurus",	"thesindex",
 	 thesnextoff,	thesprintentry,	thesprintkey},
 	{"roget",		"Project Gutenberg Roget's Thesaurus",
-	 "#9/dict/roget", "#9/dict/rogetindex",
+	 "roget", "rogetindex",
 	 rogetnextoff,	rogetprintentry,	rogetprintkey},
 
 	{"ce",		"Gendai Chinese->English",
-	 "#9/dict/world/sansdata/sandic24.dat",
-	 "#9/dict/world/sansdata/ceindex",
+	 "world/sansdata/sandic24.dat",
+	 "world/sansdata/ceindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"ceh",		"Gendai Chinese->English (Hanzi index)",
-	 "#9/dict/world/sansdata/sandic24.dat",
-	 "#9/dict/world/sansdata/cehindex",
+	 "world/sansdata/sandic24.dat",
+	 "world/sansdata/cehindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"ec",		"Gendai English->Chinese",
-	 "#9/dict/world/sansdata/sandic24.dat",
-	 "#9/dict/world/sansdata/ecindex",
+	 "world/sansdata/sandic24.dat",
+	 "world/sansdata/ecindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 
 	{"dae",		"Gyldendal Danish->English",
-	 "#9/dict/world/gylddata/sandic30.dat",
-	 "#9/dict/world/gylddata/daeindex",
+	 "world/gylddata/sandic30.dat",
+	 "world/gylddata/daeindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"eda",		"Gyldendal English->Danish",
-	 "#9/dict/world/gylddata/sandic29.dat",
-	 "#9/dict/world/gylddata/edaindex",
+	 "world/gylddata/sandic29.dat",
+	 "world/gylddata/edaindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 
 	{"due",		"Wolters-Noordhoff Dutch->English",
-	 "#9/dict/world/woltdata/sandic07.dat",
-	 "#9/dict/world/woltdata/deindex",
+	 "world/woltdata/sandic07.dat",
+	 "world/woltdata/deindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"edu",		"Wolters-Noordhoff English->Dutch",
-	 "#9/dict/world/woltdata/sandic06.dat",
-	 "#9/dict/world/woltdata/edindex",
+	 "world/woltdata/sandic06.dat",
+	 "world/woltdata/edindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 
 	{"fie",		"WSOY Finnish->English",
-	 "#9/dict/world/werndata/sandic32.dat",
-	 "#9/dict/world/werndata/fieindex",
+	 "world/werndata/sandic32.dat",
+	 "world/werndata/fieindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"efi",		"WSOY English->Finnish",
-	 "#9/dict/world/werndata/sandic31.dat",
-	 "#9/dict/world/werndata/efiindex",
+	 "world/werndata/sandic31.dat",
+	 "world/werndata/efiindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 
 	{"fe",		"Collins French->English",
-	 "#9/dict/fe",	"#9/dict/feindex",
+	 "fe",	"feindex",
 	 pcollnextoff,	pcollprintentry,	pcollprintkey},
 	{"ef",		"Collins English->French",
-	 "#9/dict/ef",	"#9/dict/efindex",
+	 "ef",	"efindex",
 	 pcollnextoff,	pcollprintentry,	pcollprintkey},
 
 	{"ge",		"Collins German->English",
-	 "#9/dict/ge",	"#9/dict/geindex",
+	 "ge",	"geindex",
 	 pcollgnextoff,	pcollgprintentry,	pcollgprintkey},
 	{"eg",		"Collins English->German",
-	 "#9/dict/eg",	"#9/dict/egindex",
+	 "eg",	"egindex",
 	 pcollgnextoff,	pcollgprintentry,	pcollgprintkey},
 
 	{"ie",		"Collins Italian->English",
-	 "#9/dict/ie",	"#9/dict/ieindex",
+	 "ie",	"ieindex",
 	 pcollnextoff,	pcollprintentry,	pcollprintkey},
 	{"ei",		"Collins English->Italian",
-	 "#9/dict/ei",	"#9/dict/eiindex",
+	 "ei",	"eiindex",
 	 pcollnextoff,	pcollprintentry,	pcollprintkey},
 
 	{"je",		"Sanshusha Japanese->English",
-	 "#9/dict/world/sansdata/sandic18.dat",
-	 "#9/dict/world/sansdata/jeindex",
+	 "world/sansdata/sandic18.dat",
+	 "world/sansdata/jeindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"jek",		"Sanshusha Japanese->English (Kanji index)",
-	 "#9/dict/world/sansdata/sandic18.dat",
-	 "#9/dict/world/sansdata/jekindex",
+	 "world/sansdata/sandic18.dat",
+	 "world/sansdata/jekindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"ej",		"Sanshusha English->Japanese",
-	 "#9/dict/world/sansdata/sandic18.dat",
-	 "#9/dict/world/sansdata/ejindex",
+	 "world/sansdata/sandic18.dat",
+	 "world/sansdata/ejindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 
 	{"tjeg",	"Sanshusha technical Japanese->English,German",
-	 "#9/dict/world/sansdata/sandic16.dat",
-	 "#9/dict/world/sansdata/tjegindex",
+	 "world/sansdata/sandic16.dat",
+	 "world/sansdata/tjegindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"tjegk",	"Sanshusha technical Japanese->English,German (Kanji index)",
-	 "#9/dict/world/sansdata/sandic16.dat",
-	 "#9/dict/world/sansdata/tjegkindex",
+	 "world/sansdata/sandic16.dat",
+	 "world/sansdata/tjegkindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"tegj",	"Sanshusha technical English->German,Japanese",
-	 "#9/dict/world/sansdata/sandic16.dat",
-	 "#9/dict/world/sansdata/tegjindex",
+	 "world/sansdata/sandic16.dat",
+	 "world/sansdata/tegjindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"tgje",	"Sanshusha technical German->Japanese,English",
-	 "#9/dict/world/sansdata/sandic16.dat",
-	 "#9/dict/world/sansdata/tgjeindex",
+	 "world/sansdata/sandic16.dat",
+	 "world/sansdata/tgjeindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 
 	{"ne",		"Kunnskapforlaget Norwegian->English",
-	 "#9/dict/world/kunndata/sandic28.dat",
-	 "#9/dict/world/kunndata/neindex",
+	 "world/kunndata/sandic28.dat",
+	 "world/kunndata/neindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"en",		"Kunnskapforlaget English->Norwegian",
-	 "#9/dict/world/kunndata/sandic27.dat",
-	 "#9/dict/world/kunndata/enindex",
+	 "world/kunndata/sandic27.dat",
+	 "world/kunndata/enindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 
 	{"re",		"Leon Ungier Russian->English",
-	 "#9/dict/re",	"#9/dict/reindex",
+	 "re",	"reindex",
 	 simplenextoff,	simpleprintentry,	simpleprintkey},
 	{"er",		"Leon Ungier English->Russian",
-	 "#9/dict/re",	"#9/dict/erindex",
+	 "re",	"erindex",
 	 simplenextoff,	simpleprintentry,	simpleprintkey},
 
 	{"se",		"Collins Spanish->English",
-	 "#9/dict/se",	"#9/dict/seindex",
+	 "se",	"seindex",
 	 pcollnextoff,	pcollprintentry,	pcollprintkey},
 	{"es",		"Collins English->Spanish",
-	 "#9/dict/es",	"#9/dict/esindex",
+	 "es",	"esindex",
 	 pcollnextoff,	pcollprintentry,	pcollprintkey},
 
 	{"swe",		"Esselte Studium Swedish->English",
-	 "#9/dict/world/essedata/sandic34.dat",
-	 "#9/dict/world/essedata/sweindex",
+	 "world/essedata/sandic34.dat",
+	 "world/essedata/sweindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 	{"esw",		"Esselte Studium English->Swedish",
-	 "#9/dict/world/essedata/sandic33.dat",
-	 "#9/dict/world/essedata/eswindex",
+	 "world/essedata/sandic33.dat",
+	 "world/essedata/eswindex",
 	 worldnextoff,	worldprintentry,	worldprintkey},
 
 	{"movie",	"Movies -- by title",
-	 "movie/data",	"#9/dict/movtindex",
+	 "movie/data",	"movtindex",
 	 movienextoff,	movieprintentry,	movieprintkey},
 	{"moviea",	"Movies -- by actor",
-	 "movie/data",	"#9/dict/movaindex",
+	 "movie/data",	"movaindex",
 	 movienextoff,	movieprintentry,	movieprintkey},
 	{"movied",	"Movies -- by director",
-	 "movie/data",	"#9/dict/movdindex",
+	 "movie/data",	"movdindex",
 	 movienextoff,	movieprintentry,	movieprintkey},
 
 	{"slang",	"English Slang",
-	 "#9/dict/slang",	"#9/dict/slangindex",
+	 "slang",	"slangindex",
 	 slangnextoff,	slangprintentry,	slangprintkey},
 
 	{"robert",	"Robert Électronique",
-	 "#9/dict/robert/_pointers",	"#9/dict/robert/_index",
+	 "robert/_pointers",	"robert/_index",
 	 robertnextoff,	robertindexentry,	robertprintkey},
 	{"robertv",	"Robert Électronique - formes des verbes",
-	 "#9/dict/robert/flex.rob",	"#9/dict/robert/_flexindex",
+	 "robert/flex.rob",	"robert/_flexindex",
 	 robertnextflex,	robertflexentry,	robertprintkey},
 
 	{0, 0, 0, 0, 0}