diff options
| author | Sam Varshavchik | 2015-07-31 08:30:25 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2015-07-31 08:30:25 -0400 | 
| commit | 84dd6e55bc0069a816d303e51e1f237a36b0c7a5 (patch) | |
| tree | dde23184f469a31a49812771f1a6a0e3563e6386 | |
| parent | 228f4c614680f27acceb807074857c01c753e100 (diff) | |
| download | courier-libs-84dd6e55bc0069a816d303e51e1f237a36b0c7a5.tar.bz2 | |
Implement unicode_locale_chset_l()
| -rw-r--r-- | unicode/.gitignore | 1 | ||||
| -rw-r--r-- | unicode/Makefile.am | 2 | ||||
| -rw-r--r-- | unicode/configure.ac | 9 | ||||
| -rw-r--r-- | unicode/courier-unicode.h.in (renamed from unicode/courier-unicode.h) | 5 | ||||
| -rw-r--r-- | unicode/unicode.c | 12 | 
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"; | 
