summaryrefslogtreecommitdiff
path: root/lib/util/charset
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2008-10-24 16:00:43 +0200
committerJelmer Vernooij <jelmer@samba.org>2008-10-24 16:00:43 +0200
commitc3415b3e57717cfb96b9df7caa1a27fbc26bde21 (patch)
tree4217157469cf5162c97c515e0288b963cf457437 /lib/util/charset
parent264277b555a7bd9d2308ef6ec24ecef77fa1d401 (diff)
downloadsamba-c3415b3e57717cfb96b9df7caa1a27fbc26bde21.tar.gz
samba-c3415b3e57717cfb96b9df7caa1a27fbc26bde21.tar.bz2
samba-c3415b3e57717cfb96b9df7caa1a27fbc26bde21.zip
Add version of next_codepoint without iconv_convenience.
Diffstat (limited to 'lib/util/charset')
-rw-r--r--lib/util/charset/charcnv.c2
-rw-r--r--lib/util/charset/charset.h4
-rw-r--r--lib/util/charset/tests/iconv.c2
-rw-r--r--lib/util/charset/util_unistr.c30
4 files changed, 23 insertions, 15 deletions
diff --git a/lib/util/charset/charcnv.c b/lib/util/charset/charcnv.c
index d63a9ce194..2ae16c3250 100644
--- a/lib/util/charset/charcnv.c
+++ b/lib/util/charset/charcnv.c
@@ -321,7 +321,7 @@ _PUBLIC_ ssize_t convert_string_talloc_convenience(TALLOC_CTX *ctx,
return INVALID_CODEPOINT if the next character cannot be converted
*/
-_PUBLIC_ codepoint_t next_codepoint(struct smb_iconv_convenience *ic,
+_PUBLIC_ codepoint_t next_codepoint_convenience(struct smb_iconv_convenience *ic,
const char *str, size_t *size)
{
/* it cannot occupy more than 4 bytes in UTF16 format */
diff --git a/lib/util/charset/charset.h b/lib/util/charset/charset.h
index 51e0193173..f8b3f65548 100644
--- a/lib/util/charset/charset.h
+++ b/lib/util/charset/charset.h
@@ -124,8 +124,10 @@ ssize_t convert_string(charset_t from, charset_t to,
extern struct smb_iconv_convenience *global_iconv_convenience;
+_PUBLIC_ codepoint_t next_codepoint(const char *str, size_t *size);
+
/* codepoints */
-codepoint_t next_codepoint(struct smb_iconv_convenience *ic,
+codepoint_t next_codepoint_convenience(struct smb_iconv_convenience *ic,
const char *str, size_t *size);
ssize_t push_codepoint(struct smb_iconv_convenience *ic,
char *str, codepoint_t c);
diff --git a/lib/util/charset/tests/iconv.c b/lib/util/charset/tests/iconv.c
index aeb42c2fa1..40e223b28f 100644
--- a/lib/util/charset/tests/iconv.c
+++ b/lib/util/charset/tests/iconv.c
@@ -299,7 +299,7 @@ static bool test_codepoint(struct torture_context *tctx, unsigned int codepoint)
buf[size+2] = random();
buf[size+3] = random();
- c = next_codepoint(lp_iconv_convenience(tctx->lp_ctx), (char *)buf, &size2);
+ c = next_codepoint_convenience(lp_iconv_convenience(tctx->lp_ctx), (char *)buf, &size2);
torture_assert(tctx, c == codepoint,
talloc_asprintf(tctx,
diff --git a/lib/util/charset/util_unistr.c b/lib/util/charset/util_unistr.c
index a40b4298a4..c90b675ded 100644
--- a/lib/util/charset/util_unistr.c
+++ b/lib/util/charset/util_unistr.c
@@ -45,8 +45,8 @@ _PUBLIC_ int strcasecmp_m(const char *s1, const char *s2)
if (s2 == NULL) return 1;
while (*s1 && *s2) {
- c1 = next_codepoint(iconv_convenience, s1, &size1);
- c2 = next_codepoint(iconv_convenience, s2, &size2);
+ c1 = next_codepoint_convenience(iconv_convenience, s1, &size1);
+ c2 = next_codepoint_convenience(iconv_convenience, s2, &size2);
s1 += size1;
s2 += size2;
@@ -132,8 +132,8 @@ _PUBLIC_ int strncasecmp_m(const char *s1, const char *s2, size_t n)
while (*s1 && *s2 && n) {
n--;
- c1 = next_codepoint(iconv_convenience, s1, &size1);
- c2 = next_codepoint(iconv_convenience, s2, &size2);
+ c1 = next_codepoint_convenience(iconv_convenience, s1, &size1);
+ c2 = next_codepoint_convenienceconv_convenience, s2, &size2);
s1 += size1;
s2 += size2;
@@ -193,7 +193,7 @@ _PUBLIC_ void string_replace_m(char *s, char oldc, char newc)
struct smb_iconv_convenience *ic = get_iconv_convenience();
while (s && *s) {
size_t size;
- codepoint_t c = next_codepoint(ic, s, &size);
+ codepoint_t c = next_codepoint_convenience(ic, s, &size);
if (c == oldc) {
*s = newc;
}
@@ -314,7 +314,7 @@ _PUBLIC_ char *strchr_m(const char *s, char c)
while (*s) {
size_t size;
- codepoint_t c2 = next_codepoint(ic, s, &size);
+ codepoint_t c2 = next_codepoint_convenience(ic, s, &size);
if (c2 == c) {
return discard_const_p(char, s);
}
@@ -365,7 +365,7 @@ _PUBLIC_ bool strhaslower(const char *string)
codepoint_t s;
codepoint_t t;
- s = next_codepoint(ic, string, &c_size);
+ s = next_codepoint_convenience(ic, string, &c_size);
string += c_size;
t = toupper_m(s);
@@ -389,7 +389,7 @@ _PUBLIC_ bool strhasupper(const char *string)
codepoint_t s;
codepoint_t t;
- s = next_codepoint(ic, string, &c_size);
+ s = next_codepoint_convenience(ic, string, &c_size);
string += c_size;
t = tolower_m(s);
@@ -420,7 +420,7 @@ _PUBLIC_ char *strlower_talloc(TALLOC_CTX *ctx, const char *src)
while (*src) {
size_t c_size;
- codepoint_t c = next_codepoint(iconv_convenience, src, &c_size);
+ codepoint_t c = next_codepoint_convenience(iconv_convenience, src, &c_size);
src += c_size;
c = tolower_m(c);
@@ -531,7 +531,7 @@ _PUBLIC_ void strlower_m(char *s)
while (*s) {
size_t c_size, c_size2;
- codepoint_t c = next_codepoint(iconv_convenience, s, &c_size);
+ codepoint_t c = next_codepoint_convenience(iconv_convenience, s, &c_size);
c_size2 = push_codepoint(iconv_convenience, d, tolower_m(c));
if (c_size2 > c_size) {
DEBUG(0,("FATAL: codepoint 0x%x (0x%x) expanded from %d to %d bytes in strlower_m\n",
@@ -570,7 +570,7 @@ _PUBLIC_ void strupper_m(char *s)
while (*s) {
size_t c_size, c_size2;
- codepoint_t c = next_codepoint(iconv_convenience, s, &c_size);
+ codepoint_t c = next_codepoint_convenience(iconv_convenience, s, &c_size);
c_size2 = push_codepoint(iconv_convenience, d, toupper_m(c));
if (c_size2 > c_size) {
DEBUG(0,("FATAL: codepoint 0x%x (0x%x) expanded from %d to %d bytes in strupper_m\n",
@@ -594,7 +594,7 @@ _PUBLIC_ size_t count_chars_m(const char *s, char c)
while (*s) {
size_t size;
- codepoint_t c2 = next_codepoint(ic, s, &size);
+ codepoint_t c2 = next_codepoint_convenience(ic, s, &size);
if (c2 == c) count++;
s += size;
}
@@ -958,3 +958,9 @@ _PUBLIC_ ssize_t convert_string_talloc(TALLOC_CTX *ctx,
return convert_string_talloc_convenience(ctx, get_iconv_convenience(),
from, to, src, srclen, dest);
}
+
+
+_PUBLIC_ codepoint_t next_codepoint(const char *str, size_t *size)
+{
+ return next_codepoint_convenience(get_iconv_convenience(), str, size);
+}