summaryrefslogtreecommitdiffstats
path: root/unicode
diff options
context:
space:
mode:
authorSam Varshavchik2015-07-29 08:28:34 -0400
committerSam Varshavchik2015-07-29 08:28:34 -0400
commitf2db754527106a53afde3acfae7f24844755face (patch)
tree1c03b85fa1b9985cd32a52f7d266fda816d75eab /unicode
parentf9e2606abe105d7183b69e50da8a156a547d65e0 (diff)
downloadcourier-libs-f2db754527106a53afde3acfae7f24844755face.tar.bz2
Clean up the API.
Diffstat (limited to 'unicode')
-rw-r--r--unicode/book.xml17
-rw-r--r--unicode/courier-unicode.h10
-rw-r--r--unicode/unicode.c57
-rw-r--r--unicode/unicodecpp.C15
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&gt
</funcprototype>
<funcprototype>
- <funcdef>void <function>unicode::tolower</function></funcdef>
- <paramdef>std::vector&lt;unicode_char&gt; &amp;<parameter>u</parameter></paramdef>
- </funcprototype>
-
- <funcprototype>
<funcdef>std::string <function>unicode::toupper</function></funcdef>
<paramdef>const std::string &amp;<parameter>string</parameter></paramdef>
</funcprototype>
@@ -2399,11 +2394,6 @@ std::copy(beg_iter, end_iter, std::back_insert_iterator&lt;std::vector&lt;int&gt
<funcdef>std::vector&lt;unicode_char&gt; <function>unicode::toupper</function></funcdef>
<paramdef>const std::vector&lt;unicode_char&gt; &amp;<parameter>u</parameter></paramdef>
</funcprototype>
-
- <funcprototype>
- <funcdef>void <function>unicode::toupper</function></funcdef>
- <paramdef>std::vector&lt;unicode_char&gt; &amp;<parameter>u</parameter></paramdef>
- </funcprototype>
</funcsynopsis>
</refsynopsisdiv>
@@ -2428,11 +2418,10 @@ std::copy(beg_iter, end_iter, std::back_insert_iterator&lt;std::vector&lt;int&gt
</para>
<para>
- An alternative is to pass a
- <classname>std::vector&lt;unicode_char&gt; &amp;</classname>
- that gets converted in-place, or a
+ Passing a
<classname>const std::vector&lt;unicode_char&gt; &amp;</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;
}