|
@@ -1,160 +0,0 @@
|
|
|
-Upstream-Status: Pending
|
|
|
-
|
|
|
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
|
|
|
-
|
|
|
-diff -Naur man-1.6e.orig/catopen/catopen.c man-1.6e/catopen/catopen.c
|
|
|
---- man-1.6e.orig/catopen/catopen.c 2005-08-20 20:26:06.000000000 -0300
|
|
|
-+++ man-1.6e/catopen/catopen.c 2007-05-18 11:31:05.000000000 -0300
|
|
|
-@@ -9,22 +9,63 @@
|
|
|
- extern char *index (const char *, int); /* not always in <string.h> */
|
|
|
- extern char *my_malloc(int); /* in util.c */
|
|
|
-
|
|
|
-+/* if the program has sgid/suid privileges then getenv doesn't return
|
|
|
-+ * NLSPATH; so we set here a good default value.
|
|
|
-+ */
|
|
|
- #ifndef DEFAULT_NLSPATH
|
|
|
- # if __GLIBC__ >= 2
|
|
|
--# define DEFAULT_NLSPATH "/usr/share/locale/%L/%N"
|
|
|
-+# define DEFAULT_NLSPATH "/usr/share/locale/%L/%N:/usr/share/locale/%l_%t/%N:/usr/share/locale/%l/%N"
|
|
|
- # else
|
|
|
- # define DEFAULT_NLSPATH "/usr/lib/locale/%N/%L"
|
|
|
- # endif
|
|
|
- #endif
|
|
|
-
|
|
|
--static nl_catd my_catopenpath(char *name, char *path);
|
|
|
-+static nl_catd my_catopenpath(char *name, char *path, char *lang);
|
|
|
-
|
|
|
- static /* this source included in gripes.c */
|
|
|
- nl_catd
|
|
|
- my_catopen(char *name, int oflag) {
|
|
|
-- nl_catd fd;
|
|
|
-+ nl_catd fd = (nl_catd) -1;
|
|
|
-+
|
|
|
-+ /* using first the my_catopenpath, which looks with LANGUAGE
|
|
|
-+ * and only if it fails ressort to catopen, it gives better i18n
|
|
|
-+ */
|
|
|
-+ {
|
|
|
-+ char *nlspath, *lang, *s;
|
|
|
-
|
|
|
-- fd = catopen(name, oflag);
|
|
|
-+ /*
|
|
|
-+ * "If NLSPATH does not exist in the environment, or if a
|
|
|
-+ * message catalog cannot be opened in any of the paths specified
|
|
|
-+ * by NLSPATH, then an implementation defined default path is used"
|
|
|
-+ */
|
|
|
-+ nlspath = getenv("NLSPATH");
|
|
|
-+ if (!nlspath)
|
|
|
-+ nlspath = DEFAULT_NLSPATH;
|
|
|
-+
|
|
|
-+ lang = getenv("LANGUAGE");
|
|
|
-+ if (!lang)
|
|
|
-+ lang = getenv("LC_ALL");
|
|
|
-+ if (!lang)
|
|
|
-+ lang = getenv("LC_MESSAGES");
|
|
|
-+ if (!lang)
|
|
|
-+ lang = getenv("LANG");
|
|
|
-+ if (!lang)
|
|
|
-+ lang = "";
|
|
|
-+
|
|
|
-+ while(*lang && (fd == (nl_catd) -1)) {
|
|
|
-+ s = index(lang, ':');
|
|
|
-+ if (s) *s = 0;
|
|
|
-+ fd = my_catopenpath(name, nlspath, lang);
|
|
|
-+ if (s) lang=s+1;
|
|
|
-+ else lang = "";
|
|
|
-+ }
|
|
|
-+ if (fd == (nl_catd) -1)
|
|
|
-+ fd = my_catopenpath(name, nlspath, "en");
|
|
|
-+ }
|
|
|
-+
|
|
|
-+ /* still not found, use the system catopen */
|
|
|
-+ if (fd == (nl_catd) -1)
|
|
|
-+ fd = catopen(name, oflag);
|
|
|
-
|
|
|
- if (fd == (nl_catd) -1 && oflag) {
|
|
|
- oflag = 0;
|
|
|
-@@ -32,8 +73,6 @@
|
|
|
- }
|
|
|
-
|
|
|
- if (fd == (nl_catd) -1) {
|
|
|
-- char *nlspath;
|
|
|
--
|
|
|
- /* The libc catopen fails - let us see if we can do better */
|
|
|
- /* The quotes below are from X/Open, XPG 1987, Vol. 3. */
|
|
|
-
|
|
|
-@@ -58,17 +97,6 @@
|
|
|
- #endif
|
|
|
- }
|
|
|
-
|
|
|
-- /*
|
|
|
-- * "If NLSPATH does not exist in the environment, or if a
|
|
|
-- * message catalog cannot be opened in any of the paths specified
|
|
|
-- * by NLSPATH, then an implementation defined default path is used"
|
|
|
-- */
|
|
|
--
|
|
|
-- nlspath = getenv("NLSPATH");
|
|
|
-- if (nlspath)
|
|
|
-- fd = my_catopenpath(name, nlspath);
|
|
|
-- if (fd == (nl_catd) -1)
|
|
|
-- fd = my_catopenpath(name, DEFAULT_NLSPATH);
|
|
|
- }
|
|
|
- return fd;
|
|
|
- }
|
|
|
-@@ -90,15 +118,13 @@
|
|
|
- *
|
|
|
- */
|
|
|
- static nl_catd
|
|
|
--my_catopenpath(char *name, char *nlspath) {
|
|
|
-- int fd;
|
|
|
-+my_catopenpath(char *name, char *nlspath, char *lang) {
|
|
|
- nl_catd cfd = (nl_catd) -1;
|
|
|
-- char *path0, *path, *s, *file, *lang, *lang_l, *lang_t, *lang_c;
|
|
|
-+ char *path0, *path, *s, *file, *lang_l, *lang_t, *lang_c;
|
|
|
- int langsz, namesz, sz, lang_l_sz, lang_t_sz, lang_c_sz;
|
|
|
-
|
|
|
- namesz = strlen(name);
|
|
|
-
|
|
|
-- lang = getenv("LANG");
|
|
|
- if (!lang)
|
|
|
- lang = "";
|
|
|
- langsz = strlen(lang);
|
|
|
-@@ -194,14 +220,9 @@
|
|
|
- path = s+1;
|
|
|
- } else
|
|
|
- path = 0;
|
|
|
-- fd = open(file, O_RDONLY);
|
|
|
-- if (fd != -1) {
|
|
|
-- /* we found the right catalog - but we don't know the
|
|
|
-- type of nl_catd, so close it again and ask libc */
|
|
|
-- close(fd);
|
|
|
-- cfd = catopen(file, 0);
|
|
|
-- break;
|
|
|
-- }
|
|
|
-+ cfd = catopen(file, 0);
|
|
|
-+ if (cfd != (nl_catd) -1)
|
|
|
-+ break;
|
|
|
- }
|
|
|
-
|
|
|
- free(path0);
|
|
|
-diff -Naur man-1.6e.orig/src/manpath.c man-1.6e/src/manpath.c
|
|
|
---- man-1.6e.orig/src/manpath.c 2006-08-03 18:18:33.000000000 -0300
|
|
|
-+++ man-1.6e/src/manpath.c 2007-05-18 11:02:48.000000000 -0300
|
|
|
-@@ -282,13 +282,14 @@
|
|
|
- /* We cannot use "lang = setlocale(LC_MESSAGES, NULL)" or so:
|
|
|
- the return value of setlocale is an opaque string. */
|
|
|
- /* POSIX prescribes the order: LC_ALL, LC_MESSAGES, LANG */
|
|
|
-- if((lang = getenv("LC_ALL")) != NULL)
|
|
|
-+ /* LANGUAGE is GNU/Linux and overrules all */
|
|
|
-+ if((lang = getenv("LANGUAGE")) != NULL)
|
|
|
- split2(dir, lang, add_to_mandirlist_x, perrs);
|
|
|
-- if((lang = getenv("LC_MESSAGES")) != NULL)
|
|
|
-+ else if((lang = getenv("LC_ALL")) != NULL)
|
|
|
- split2(dir, lang, add_to_mandirlist_x, perrs);
|
|
|
-- if((lang = getenv("LANG")) != NULL)
|
|
|
-+ else if((lang = getenv("LC_MESSAGES")) != NULL)
|
|
|
- split2(dir, lang, add_to_mandirlist_x, perrs);
|
|
|
-- if((lang = getenv("LANGUAGE")) != NULL)
|
|
|
-+ else if((lang = getenv("LANG")) != NULL)
|
|
|
- split2(dir, lang, add_to_mandirlist_x, perrs);
|
|
|
- add_to_mandirlist_x(dir, 0, perrs);
|
|
|
- }
|