summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--unicode/.gitignore1
-rw-r--r--unicode/Makefile.am2
-rw-r--r--unicode/configure.ac9
-rw-r--r--unicode/courier-unicode.h.in (renamed from unicode/courier-unicode.h)5
-rw-r--r--unicode/unicode.c12
5 files changed, 26 insertions, 3 deletions
diff --git a/unicode/.gitignore b/unicode/.gitignore
index aebfba2..9e600eb 100644
--- a/unicode/.gitignore
+++ b/unicode/.gitignore
@@ -15,6 +15,7 @@
/config.cache
/config.guess
/config.sub
+/courier-unicode.h
/courier-unicode.spec
/depcomp
/enttest
diff --git a/unicode/Makefile.am b/unicode/Makefile.am
index 61ee291..84b95c2 100644
--- a/unicode/Makefile.am
+++ b/unicode/Makefile.am
@@ -58,7 +58,7 @@ include_HEADERS=courier-unicode.h \
man_MANS=$(srcdir)/man/courier-unicode.7 $(srcdir)/man/unicode[\:][\:]iconvert[\:][\:]convert.3 $(srcdir)/man/unicode[\:][\:]iconvert[\:][\:]convert_tocase.3 $(srcdir)/man/unicode[\:][\:]iconvert[\:][\:]fromu.3 $(srcdir)/man/unicode[\:][\:]iconvert[\:][\:]tou.3 $(srcdir)/man/unicode[\:][\:]iso_8859_1.3 $(srcdir)/man/unicode[\:][\:]linebreak_callback_base.3 $(srcdir)/man/unicode[\:][\:]linebreak_callback_save_buf.3 $(srcdir)/man/unicode[\:][\:]linebreak_iter.3 $(srcdir)/man/unicode[\:][\:]linebreakc_callback_base.3 $(srcdir)/man/unicode[\:][\:]linebreakc_iter.3 $(srcdir)/man/unicode[\:][\:]tolower.3 $(srcdir)/man/unicode[\:][\:]toupper.3 $(srcdir)/man/unicode[\:][\:]ucs_2.3 $(srcdir)/man/unicode[\:][\:]ucs_4.3 $(srcdir)/man/unicode[\:][\:]utf_8.3 $(srcdir)/man/unicode[\:][\:]wordbreak_callback_base.3 $(srcdir)/man/unicode_category_lookup.3 $(srcdir)/man/unicode_convert.3 $(srcdir)/man/unicode_convert_deinit.3 $(srcdir)/man/unicode_convert_fromu_init.3 $(srcdir)/man/unicode_convert_fromu_tobuf.3 $(srcdir)/man/unicode_convert_fromutf8.3 $(srcdir)/man/unicode_convert_init.3 $(srcdir)/man/unicode_convert_tobuf.3 $(srcdir)/man/unicode_convert_tocase.3 $(srcdir)/man/unicode_convert_tocbuf_fromutf8_init.3 $(srcdir)/man/unicode_convert_tocbuf_init.3 $(srcdir)/man/unicode_convert_tocbuf_toutf8_init.3 $(srcdir)/man/unicode_convert_tou_init.3 $(srcdir)/man/unicode_convert_tou_tobuf.3 $(srcdir)/man/unicode_convert_toutf8.3 $(srcdir)/man/unicode_convert_uc.3 $(srcdir)/man/unicode_default_chset.3 $(srcdir)/man/unicode_grapheme_break.3 $(srcdir)/man/unicode_html40ent_lookup.3 $(srcdir)/man/unicode_isalnum.3 $(srcdir)/man/unicode_isalpha.3 $(srcdir)/man/unicode_isblank.3 $(srcdir)/man/unicode_isdigit.3 $(srcdir)/man/unicode_isgraph.3 $(srcdir)/man/unicode_islower.3 $(srcdir)/man/unicode_ispunct.3 $(srcdir)/man/unicode_isspace.3 $(srcdir)/man/unicode_isupper.3 $(srcdir)/man/unicode_lb_end.3 $(srcdir)/man/unicode_lb_init.3 $(srcdir)/man/unicode_lb_next.3 $(srcdir)/man/unicode_lb_next_cnt.3 $(srcdir)/man/unicode_lb_set_opts.3 $(srcdir)/man/unicode_lbc_end.3 $(srcdir)/man/unicode_lbc_init.3 $(srcdir)/man/unicode_lbc_next.3 $(srcdir)/man/unicode_lbc_next_cnt.3 $(srcdir)/man/unicode_lbc_set_opts.3 $(srcdir)/man/unicode_lc.3 $(srcdir)/man/unicode_locale_chset.3 $(srcdir)/man/unicode_script.3 $(srcdir)/man/unicode_tc.3 $(srcdir)/man/unicode_u_ucs2_native.3 $(srcdir)/man/unicode_u_ucs4_native.3 $(srcdir)/man/unicode_uc.3 $(srcdir)/man/unicode_wb_end.3 $(srcdir)/man/unicode_wb_init.3 $(srcdir)/man/unicode_wb_next.3 $(srcdir)/man/unicode_wb_next_cnt.3 $(srcdir)/man/unicode_wbscan_end.3 $(srcdir)/man/unicode_wbscan_init.3 $(srcdir)/man/unicode_wbscan_next.3
-libcourier_unicode_la_SOURCES=courier-unicode.h \
+libcourier_unicode_la_SOURCES=\
courier-unicode-categories-tab.h \
courier-unicode-script-tab.h \
unicode.c unicodebuf.c \
diff --git a/unicode/configure.ac b/unicode/configure.ac
index d90dfc9..f2e5227 100644
--- a/unicode/configure.ac
+++ b/unicode/configure.ac
@@ -34,7 +34,12 @@ AC_CHECK_HEADERS(stddef.h wchar.h)
dnl Checks for typedefs, structures, and compiler characteristics.
dnl Checks for library functions.
-
+AC_CHECK_FUNC(nl_langinfo_l, [
+ AC_DEFINE(HAVE_LANGINFO_L,1,[nl_langinfo_l implemented])
+ AC_SUBST(LANGINFO_L,1)
+ ], [
+ AC_SUBST(LANGINFO_L,0)
+ ])
AM_CONDITIONAL(UPDATE_UNICODE, test -f ${srcdir}/UnicodeData.txt)
AC_SYS_LARGEFILE
@@ -77,4 +82,4 @@ CFLAGS="-I.. -I$srcdir/.. $CFLAGS"
CXXFLAGS="-I.. -I$srcdir/.. $CXXFLAGS"
AM_CONDITIONAL(HAVE_DOCS,[test -f $srcdir/docbook/icon.gif])
-AC_OUTPUT(Makefile courier-unicode.spec)
+AC_OUTPUT(Makefile courier-unicode.spec courier-unicode.h)
diff --git a/unicode/courier-unicode.h b/unicode/courier-unicode.h.in
index 3315f75..9b58f5c 100644
--- a/unicode/courier-unicode.h
+++ b/unicode/courier-unicode.h.in
@@ -24,6 +24,7 @@ extern "C" {
#include <stdio.h>
#include <stdint.h>
#include <sys/types.h>
+#include <locale.h>
typedef uint32_t unicode_char;
@@ -39,6 +40,10 @@ extern const char *unicode_default_chset();
extern const char *unicode_locale_chset();
+#if @LANGINFO_L@
+extern const char *unicode_locale_chset_l(locale_t l);
+#endif
+
/* Unicode upper/lower/title case conversion functions */
extern unicode_char unicode_uc(unicode_char);
diff --git a/unicode/unicode.c b/unicode/unicode.c
index ab138f6..462ca2b 100644
--- a/unicode/unicode.c
+++ b/unicode/unicode.c
@@ -23,6 +23,7 @@
#endif /* USE_LIBCHARSET */
static char default_chset_buf[32];
+static const char *fix_charset(const char *);
const char *unicode_locale_chset()
{
@@ -33,7 +34,18 @@ const char *unicode_locale_chset()
#else
c=nl_langinfo(CODESET);
#endif
+ return fix_charset(c);
+}
+
+#if HAVE_LANGINFO_L
+const char *unicode_locale_chset_l(locale_t l)
+{
+ return fix_charset(nl_langinfo_l(CODESET, l));
+}
+#endif
+static const char *fix_charset(const char *c)
+{
if (!c)
c="US-ASCII";