diff options
| -rw-r--r-- | unicode/book.xml | 17 | ||||
| -rw-r--r-- | unicode/courier-unicode.h | 10 | ||||
| -rw-r--r-- | unicode/unicode.c | 57 | ||||
| -rw-r--r-- | unicode/unicodecpp.C | 15 | 
4 files changed, 26 insertions, 73 deletions
| diff --git a/unicode/book.xml b/unicode/book.xml index 3c5d758..b9a7000 100644 --- a/unicode/book.xml +++ b/unicode/book.xml @@ -2380,11 +2380,6 @@ std::copy(beg_iter, end_iter, std::back_insert_iterator<std::vector<int>  	    </funcprototype>  	    <funcprototype> -              <funcdef>void <function>unicode::tolower</function></funcdef> -	      <paramdef>std::vector<unicode_char> &<parameter>u</parameter></paramdef> -	    </funcprototype> - -	    <funcprototype>                <funcdef>std::string <function>unicode::toupper</function></funcdef>  	      <paramdef>const std::string &<parameter>string</parameter></paramdef>  	    </funcprototype> @@ -2399,11 +2394,6 @@ std::copy(beg_iter, end_iter, std::back_insert_iterator<std::vector<int>                <funcdef>std::vector<unicode_char> <function>unicode::toupper</function></funcdef>  	      <paramdef>const std::vector<unicode_char> &<parameter>u</parameter></paramdef>  	    </funcprototype> - -	    <funcprototype> -              <funcdef>void <function>unicode::toupper</function></funcdef> -	      <paramdef>std::vector<unicode_char> &<parameter>u</parameter></paramdef> -	    </funcprototype>  	  </funcsynopsis>  	</refsynopsisdiv> @@ -2428,11 +2418,10 @@ std::copy(beg_iter, end_iter, std::back_insert_iterator<std::vector<int>  	  </para>  	  <para> -	    An alternative is to pass a -	    <classname>std::vector<unicode_char> &</classname> -	    that gets converted in-place, or a +	    Passing a  	    <classname>const std::vector<unicode_char> &</classname> -	    that gets converted, and returned. +	    directly also converts it accordingly, returning the converted +	    unicode string.  	  </para>  	</refsect1> diff --git a/unicode/courier-unicode.h b/unicode/courier-unicode.h index 3d3715c..3315f75 100644 --- a/unicode/courier-unicode.h +++ b/unicode/courier-unicode.h @@ -37,7 +37,7 @@ extern const char *unicode_default_chset();  ** The current locale character set.  */ -extern const char *unicode_locale_charset(); +extern const char *unicode_locale_chset();  /* Unicode upper/lower/title case conversion functions */ @@ -1848,18 +1848,10 @@ std::string toupper(const std::string &string,  //! Convert unicode to lowercase -void tolower(std::vector<unicode_char> &u); - -//! Convert unicode to lowercase -  std::vector<unicode_char> tolower(const std::vector<unicode_char> &u);  //! Convert unicode to uppercase -void toupper(std::vector<unicode_char> &u); - -//! Convert unicode to uppercase -  std::vector<unicode_char> toupper(const std::vector<unicode_char> &u);  #if 0 diff --git a/unicode/unicode.c b/unicode/unicode.c index 551854d..ab138f6 100644 --- a/unicode/unicode.c +++ b/unicode/unicode.c @@ -24,13 +24,27 @@  static char default_chset_buf[32]; -const char *unicode_locale_charset() +const char *unicode_locale_chset()  { +	const char *c; +  #if	USE_LIBCHARSET -	return locale_charset(); +	c=locale_charset();  #else -	return nl_langinfo(CODESET); +	c=nl_langinfo(CODESET);  #endif + +	if (!c) +		c="US-ASCII"; + +	if (c && + +	    /* Map GNU libc iconv oddity to us-ascii */ + +	    (strcmp(c, "ANSI_X3.4") == 0 || +	     strncmp(c, "ANSI_X3.4-", 10) == 0)) +		c="US-ASCII"; +	return c;  }  static void init_default_chset() @@ -49,45 +63,12 @@ static void init_default_chset()  	{  		old_locale=setlocale(LC_ALL, "");  		locale_cpy=old_locale ? strdup(old_locale):NULL; -		chset=unicode_locale_charset(); +		chset=unicode_locale_chset();  	}  	memset(buf, 0, sizeof(buf)); -	if (chset && - -	    /* Map GNU libc iconv oddity to us-ascii */ - -	    (strcmp(chset, "ANSI_X3.4") == 0 || -	     strncmp(chset, "ANSI_X3.4-", 10) == 0)) -		chset="US-ASCII"; - -	if (chset) -	{ -		strncat(buf, chset, sizeof(buf)-1); -	} -	else -	{ -		const char *p=getenv("LANG"); - -		/* LANG is xx_yy.CHARSET@modifier */ - -		if (p && *p && (p=strchr(p, '.')) != NULL) -		{ -			const char *q=strchr(++p, '@'); - -			if (!q) -				q=p+strlen(p); - -			if (q-p >= sizeof(buf)-1) -				q=p+sizeof(buf)-1; - -			memcpy(buf, p, q-p); -			buf[q-p]=0; -		} -		else -			strcpy(buf, "US-ASCII"); -	} +	strncat(buf, chset, sizeof(buf)-1);  	memcpy(default_chset_buf, buf, sizeof(buf)); diff --git a/unicode/unicodecpp.C b/unicode/unicodecpp.C index 214eb5d..48ea759 100644 --- a/unicode/unicodecpp.C +++ b/unicode/unicodecpp.C @@ -529,15 +529,10 @@ std::vector<unicode_char> unicode::tolower(const std::vector<unicode_char> &u)  {  	std::vector<unicode_char> copy=u; -	tolower(copy); +	std::transform(copy.begin(), copy.end(), copy.begin(), unicode_lc);  	return copy;  } -void unicode::tolower(std::vector<unicode_char> &uc) -{ -	std::transform(uc.begin(), uc.end(), uc.begin(), unicode_lc); -} -  std::string unicode::toupper(const std::string &string)  {  	return toupper(string, unicode_default_chset()); @@ -559,11 +554,7 @@ std::vector<unicode_char> unicode::toupper(const std::vector<unicode_char> &u)  {  	std::vector<unicode_char> copy=u; -	toupper(copy); -	return copy; -} +	std::transform(copy.begin(), copy.end(), copy.begin(), unicode_uc); -void unicode::toupper(std::vector<unicode_char> &uc) -{ -	std::transform(uc.begin(), uc.end(), uc.begin(), unicode_uc); +	return copy;  } | 
