Re: Bug#467249: man-db: over sensitive on the spell of locale
tags 467249 fixed-upstream
thanks
On Sun, Feb 24, 2008 at 12:10:35PM +0800, LI Daobing wrote:
> diff --git a/src/encodings.c b/src/encodings.c
> index 4ad6179..5617741 100644
> --- a/src/encodings.c
> +++ b/src/encodings.c
> @@ -600,12 +600,17 @@ const char *get_roff_encoding (const char
> *device, const char *source_encoding)
> */
> if (device && STREQ (device, "utf8") && !get_groff_preconv ()) {
> const char *ctype = setlocale (LC_CTYPE, NULL);
> - if (STREQ (ctype, "ja_JP.UTF-8") ||
> - STREQ (ctype, "ko_KR.UTF-8") ||
> - STREQ (ctype, "zh_CN.UTF-8") ||
> - STREQ (ctype, "zh_HK.UTF-8") ||
> - STREQ (ctype, "zh_SG.UTF-8") ||
> - STREQ (ctype, "zh_TW.UTF-8"))
> + if (strlen(ctype) > 6 &&
> + (strncmp(ctype, "ja_JP.", 6) == 0 ||
> + strncmp(ctype, "ko_KR.", 6) == 0 ||
> + strncmp(ctype, "zh_CN.", 6) == 0 ||
> + strncmp(ctype, "zh_HK.", 6) == 0 ||
> + strncmp(ctype, "zh_SG.", 6) == 0 ||
> + strncmp(ctype, "zh_TW.", 6) == 0) &&
> + (STREQ(ctype+6, "UTF-8") ||
> + STREQ(ctype+6, "utf-8") ||
> + STREQ(ctype+6, "UTF8") ||
> + STREQ(ctype+6, "utf8")))
> roff_encoding = "UTF-8";
> }
> #endif /* MULTIBYTE_GROFF */
Thanks for the patch. However, man-db already has a function for
canonicalising character set names and so it makes sense to use that
instead. I've done this; patch attached.
(Also, for future reference, please avoid gratuitously changing
whitespace conventions. Very few maintainers will accept that.)
=== modified file 'docs/ChangeLog'
--- docs/ChangeLog 2008-02-29 09:59:48 +0000
+++ docs/ChangeLog 2008-03-01 22:16:04 +0000
@@ -1,3 +1,9 @@
+Sat Mar 1 22:14:43 GMT 2008 Colin Watson <cjwatson@debian.org>
+
+ * src/encodings.c (get_roff_encoding): In the CJK UTF-8 special
+ case, check the canonicalised encoding in order that locale
+ specifications such as "zh_CN.utf8" work (Debian bug #467249).
+
Fri Feb 29 09:59:23 GMT 2008 Colin Watson <cjwatson@debian.org>
* autogen.sh: Run autoreconf with -f.
=== modified file 'src/encodings.c'
--- src/encodings.c 2008-01-27 22:52:29 +0000
+++ src/encodings.c 2008-03-01 22:16:04 +0000
@@ -598,14 +598,15 @@
* This is evil, but there's not much that can be done about it
* apart from waiting for groff 2.0.
*/
- if (device && STREQ (device, "utf8") && !get_groff_preconv ()) {
+ if (device && STREQ (device, "utf8") && !get_groff_preconv () &&
+ STREQ (get_locale_charset (), "UTF-8")) {
const char *ctype = setlocale (LC_CTYPE, NULL);
- if (STREQ (ctype, "ja_JP.UTF-8") ||
- STREQ (ctype, "ko_KR.UTF-8") ||
- STREQ (ctype, "zh_CN.UTF-8") ||
- STREQ (ctype, "zh_HK.UTF-8") ||
- STREQ (ctype, "zh_SG.UTF-8") ||
- STREQ (ctype, "zh_TW.UTF-8"))
+ if (STRNEQ (ctype, "ja_JP", 5) ||
+ STRNEQ (ctype, "ko_KR", 5) ||
+ STRNEQ (ctype, "zh_CN", 5) ||
+ STRNEQ (ctype, "zh_HK", 5) ||
+ STRNEQ (ctype, "zh_SG", 5) ||
+ STRNEQ (ctype, "zh_TW", 5))
roff_encoding = "UTF-8";
}
#endif /* MULTIBYTE_GROFF */
Thanks,
--
Colin Watson [cjwatson@debian.org]
Reply to: