Caolan McNamara 8bb8d83
diff -ru hunspell-1.2.8.orig/man/hunspell.1 hunspell-1.2.8/man/hunspell.1
Caolan McNamara 8bb8d83
--- hunspell-1.2.8.orig/man/hunspell.1	2008-06-12 09:50:43.000000000 +0100
Caolan McNamara 8bb8d83
+++ hunspell-1.2.8/man/hunspell.1	2009-05-01 09:05:15.000000000 +0100
Caolan McNamara 8bb8d83
@@ -309,9 +309,10 @@
Caolan McNamara 8bb8d83
 
Caolan McNamara 8bb8d83
 .IP \fB\-p\ dict\fR
Caolan McNamara 8bb8d83
 Set path of personal dictionary.
Caolan McNamara 8bb8d83
-Default dictionary depends from the locale settings.
Caolan McNamara 8bb8d83
-Without locale support, the default personal dictionary is
Caolan McNamara 8bb8d83
-the $HOME/.hunspell_default.
Caolan McNamara 8bb8d83
+The default dictionary depends on the locale settings. The
Caolan McNamara 4663cc4
+following environment variables are searched: LC_ALL,
Caolan McNamara 8bb8d83
+LC_MESSAGES, and LANG. If none are set then the default personal
Caolan McNamara 8bb8d83
+dictionary is $HOME/.hunspell_default.
Caolan McNamara 8bb8d83
 
Caolan McNamara 8bb8d83
 Setting
Caolan McNamara 8bb8d83
 .I \-d
Caolan McNamara 8bb8d83
@@ -360,6 +361,11 @@
Caolan McNamara 8bb8d83
 Equivalent to 
Caolan McNamara 8bb8d83
 .I \-p.
Caolan McNamara 8bb8d83
 .SH FILES
Caolan McNamara 8bb8d83
+The default dictionary depends on the locale settings. The
Caolan McNamara 4663cc4
+following environment variables are searched: LC_ALL,
Caolan McNamara 8bb8d83
+LC_MESSAGES, and LANG. If none are set then the following
Caolan McNamara 8bb8d83
+fallbacks are used:
Caolan McNamara 8bb8d83
+
Caolan McNamara 8bb8d83
 .BI /usr/share/myspell/default.aff
Caolan McNamara 8bb8d83
 Path of default affix file. See hunspell(4).
Caolan McNamara 8bb8d83
 .PP
Caolan McNamara 8bb8d83
diff -ru hunspell-1.2.8.orig/src/tools/hunspell.cxx hunspell-1.2.8/src/tools/hunspell.cxx
Caolan McNamara 8bb8d83
--- hunspell-1.2.8.orig/src/tools/hunspell.cxx	2008-09-04 14:44:19.000000000 +0100
Caolan McNamara 8bb8d83
+++ hunspell-1.2.8/src/tools/hunspell.cxx	2009-05-01 09:15:33.000000000 +0100
Caolan McNamara 8bb8d83
@@ -168,7 +168,6 @@
Caolan McNamara 8bb8d83
 int printgood = 0; // print only good words and lines
Caolan McNamara 8bb8d83
 int showpath = 0;  // show detected path of the dictionary
Caolan McNamara 8bb8d83
 int checkurl = 0;  // check URLs and mail addresses
Caolan McNamara 8bb8d83
-char * ui_lang = NULL; // locale for default dic_name
Caolan McNamara 8bb8d83
 const char * ui_enc = NULL;  // locale character encoding (default for I/O)
Caolan McNamara 8bb8d83
 const char * io_enc = NULL;  // I/O character encoding
Caolan McNamara 8bb8d83
 
Caolan McNamara 8bb8d83
@@ -1383,7 +1382,7 @@
Caolan McNamara 8bb8d83
 	
Caolan McNamara 8bb8d83
 #ifdef ENABLE_NLS
Caolan McNamara 8bb8d83
 #ifdef HAVE_LOCALE_H
Caolan McNamara 8bb8d83
-	ui_lang = setlocale(LC_ALL, "");
Caolan McNamara 8bb8d83
+	setlocale(LC_ALL, "");
Caolan McNamara 8bb8d83
 	textdomain("hunspell");
Caolan McNamara 8bb8d83
         ui_enc = nl_langinfo(CODESET);
Caolan McNamara 8bb8d83
 #endif
Caolan McNamara f7c186f
@@ -1557,13 +1556,26 @@
Caolan McNamara 8bb8d83
 	
Caolan McNamara 8bb8d83
 	if (! dicname) {
Caolan McNamara 8bb8d83
 		if (! (dicname=getenv("DICTIONARY"))) {
Caolan McNamara 8bb8d83
-			if ((dicname=ui_lang) || (dicname=getenv("LANG"))) {
Caolan McNamara 8bb8d83
-			    dicname = mystrdup(dicname);
Caolan McNamara 8bb8d83
-			    char * dot = strchr(dicname, '.');
Caolan McNamara 8bb8d83
-			    if (dot) *dot = '\0';
Caolan McNamara 8bb8d83
-			    char * at = strchr(dicname, '@');
Caolan McNamara 8bb8d83
-			    if (at) *at = '\0';
Caolan McNamara 8bb8d83
-			} else {
Caolan McNamara 8bb8d83
+			/*
Caolan McNamara 4663cc4
+			 * Search in order of LC_ALL, LC_MESSAGES &
Caolan McNamara 8bb8d83
+			 * LANG
Caolan McNamara 8bb8d83
+			*/
Caolan McNamara 4663cc4
+			const char *tests[] = { "LC_ALL", "LC_MESSAGES", "LANG" };
Caolan McNamara f7c186f
+			for (size_t i = 0; i < sizeof(tests) / sizeof(const char*); ++i) {
Caolan McNamara f7c186f
+				if ((dicname=getenv(tests[i])) && strcmp(dicname, "") != 0) {
Caolan McNamara 8bb8d83
+					dicname = mystrdup(dicname);
Caolan McNamara 8bb8d83
+					char * dot = strchr(dicname, '.');
Caolan McNamara 8bb8d83
+					if (dot) *dot = '\0';
Caolan McNamara 8bb8d83
+					char * at = strchr(dicname, '@');
Caolan McNamara 8bb8d83
+					if (at) *at = '\0';
Caolan McNamara 8bb8d83
+					break;
Caolan McNamara 8bb8d83
+				}
Caolan McNamara 8bb8d83
+			}
Caolan McNamara 8bb8d83
+
Caolan McNamara 21191eb
+			if ((strcmp(dicname, "C") == 0) || (strcmp(dicname, "POSIX") == 0))
Caolan McNamara 34d3b33
+			    dicname=mystrdup("en_US");
Caolan McNamara 34d3b33
+
Caolan McNamara 8bb8d83
+			if (! dicname) {
Caolan McNamara 8bb8d83
 		            dicname=mystrdup(DEFAULTDICNAME);
Caolan McNamara 8bb8d83
 			}
Caolan McNamara 8bb8d83
 		} else {
Caolan McNamara f7c186f
@@ -1577,6 +1589,12 @@
Caolan McNamara 8bb8d83
 	path = add(add(add(add(path, HOME), DIRSEP), USEROOODIR), PATHSEP);
Caolan McNamara 8bb8d83
 	path = add(path, OOODIR);
Caolan McNamara 8bb8d83
 
Caolan McNamara 8bb8d83
+	if (showpath) {
Caolan McNamara 8bb8d83
+		fprintf(stderr, gettext("SEARCH PATH:\n%s\n"), path);
Caolan McNamara 1233a63
+		fprintf(stderr, gettext("AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n"));
Caolan McNamara 8bb8d83
+		search(path, NULL, NULL);
Caolan McNamara 8bb8d83
+	}
Caolan McNamara 8bb8d83
+
Caolan McNamara 8bb8d83
 	if (!privdicname) privdicname = mystrdup(getenv("WORDLIST"));
Caolan McNamara 8bb8d83
 
Caolan McNamara 8bb8d83
         int diclen = strlen(dicname);
Caolan McNamara f7c186f
@@ -1586,9 +1604,6 @@
Caolan McNamara 8bb8d83
 	char * dic = search(path, dicname, ".dic");
Caolan McNamara 8bb8d83
 	if (aff && dic) {
Caolan McNamara 8bb8d83
 		if (showpath) {
Caolan McNamara 8bb8d83
-			fprintf(stderr, gettext("SEARCH PATH:\n%s\n"), path);
Caolan McNamara 8bb8d83
-			fprintf(stderr, gettext("AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n"), path);
Caolan McNamara 8bb8d83
-			search(path, NULL, NULL);
Caolan McNamara 8bb8d83
 			fprintf(stderr, gettext("LOADED DICTIONARY:\n%s\n%s\n"), aff, dic);
Caolan McNamara 8bb8d83
 		}
Caolan McNamara 8bb8d83
 		pMS[0] = new Hunspell(aff, dic, key);
Caolan McNamara f7c186f
@@ -1611,7 +1626,7 @@
Caolan McNamara 8bb8d83
                     } else if (dic) pMS[dmax-1]->add_dic(dic);
Caolan McNamara 8bb8d83
 		}
Caolan McNamara 8bb8d83
 	} else {
Caolan McNamara 8bb8d83
-		fprintf(stderr,gettext("Can't open affix or dictionary files.\n"));
Caolan McNamara 8bb8d83
+		fprintf(stderr,gettext("Can't open affix or dictionary files for dictionary named \"%s\".\n"), dicname);
Caolan McNamara 8bb8d83
 		exit(1);
Caolan McNamara 8bb8d83
 	}
Caolan McNamara 8bb8d83