summaryrefslogtreecommitdiff
path: root/usr/src/common/unicode
diff options
context:
space:
mode:
authoris <none@none>2008-07-02 17:06:30 -0700
committeris <none@none>2008-07-02 17:06:30 -0700
commit85bb5f1d642e430b889478fb1200b511338085d7 (patch)
tree87b1fcd9ec47321a1fdb020c5aa607698e1bd13d /usr/src/common/unicode
parent2321aa36382ca9bc1d3f0437d553acc4e342c81b (diff)
downloadillumos-joyent-85bb5f1d642e430b889478fb1200b511338085d7.tar.gz
6622765 geniconvtbl.so cannot parse certain mapping operations resulting EILSEQ from iconv(3C)
6634992 Unicode text prep functions have 'errno' argument -- bad for readability at user-land 6660526 Combining acute accent character (U+0301) cannot be deleted by backspace
Diffstat (limited to 'usr/src/common/unicode')
-rw-r--r--usr/src/common/unicode/u8_textprep.c88
1 files changed, 44 insertions, 44 deletions
diff --git a/usr/src/common/unicode/u8_textprep.c b/usr/src/common/unicode/u8_textprep.c
index 37a01b83b1..8faf1a97e4 100644
--- a/usr/src/common/unicode/u8_textprep.c
+++ b/usr/src/common/unicode/u8_textprep.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -334,7 +334,7 @@ const uint8_t u8_valid_max_2nd_byte[0x100] = {
* specific to UTF-8 and Unicode.
*/
int
-u8_validate(char *u8str, size_t n, char **list, int flag, int *errno)
+u8_validate(char *u8str, size_t n, char **list, int flag, int *errnum)
{
uchar_t *ib;
uchar_t *ibtail;
@@ -371,13 +371,13 @@ u8_validate(char *u8str, size_t n, char **list, int flag, int *errno)
*/
sz = u8_number_of_bytes[*ib];
if (sz == U8_ILLEGAL_CHAR) {
- *errno = EILSEQ;
+ *errnum = EILSEQ;
return (-1);
}
if (sz == U8_OUT_OF_RANGE_CHAR ||
(validate_ucs2_range_only && sz > U8_MAX_BYTES_UCS2)) {
- *errno = ERANGE;
+ *errnum = ERANGE;
return (-1);
}
@@ -387,7 +387,7 @@ u8_validate(char *u8str, size_t n, char **list, int flag, int *errno)
* checking higher priority then EINVAL cases.
*/
if ((ibtail - ib) < sz) {
- *errno = EINVAL;
+ *errnum = EINVAL;
return (-1);
}
@@ -407,12 +407,12 @@ u8_validate(char *u8str, size_t n, char **list, int flag, int *errno)
if (second) {
if (*ib < u8_valid_min_2nd_byte[f] ||
*ib > u8_valid_max_2nd_byte[f]) {
- *errno = EILSEQ;
+ *errnum = EILSEQ;
return (-1);
}
second = B_FALSE;
} else if (U8_ILLEGAL_NEXT_BYTE_COMMON(*ib)) {
- *errno = EILSEQ;
+ *errnum = EILSEQ;
return (-1);
}
ib++;
@@ -432,7 +432,7 @@ u8_validate(char *u8str, size_t n, char **list, int flag, int *errno)
}
if (s1 >= ib && *s2 == '\0') {
- *errno = EBADF;
+ *errnum = EBADF;
return (-1);
}
}
@@ -566,7 +566,7 @@ do_case_conv(int uv, uchar_t *u8s, uchar_t *s, int sz, boolean_t is_it_toupper)
*/
static int
do_case_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1,
- size_t n2, boolean_t is_it_toupper, int *errno)
+ size_t n2, boolean_t is_it_toupper, int *errnum)
{
int f;
int sz1;
@@ -583,11 +583,11 @@ do_case_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1,
* Find out what would be the byte length for this UTF-8
* character at string s1 and also find out if this is
* an illegal start byte or not and if so, issue a proper
- * errno and yet treat this byte as a character.
+ * error number and yet treat this byte as a character.
*/
sz1 = u8_number_of_bytes[*s1];
if (sz1 < 0) {
- *errno = EILSEQ;
+ *errnum = EILSEQ;
sz1 = 1;
}
@@ -612,7 +612,7 @@ do_case_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1,
s1++;
u8s1[1] = '\0';
} else if ((i1 + sz1) > n1) {
- *errno = EINVAL;
+ *errnum = EINVAL;
for (j = 0; (i1 + j) < n1; )
u8s1[j++] = *s1++;
u8s1[j] = '\0';
@@ -624,7 +624,7 @@ do_case_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1,
/* Do the same for the string s2. */
sz2 = u8_number_of_bytes[*s2];
if (sz2 < 0) {
- *errno = EILSEQ;
+ *errnum = EILSEQ;
sz2 = 1;
}
@@ -636,7 +636,7 @@ do_case_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1,
s2++;
u8s2[1] = '\0';
} else if ((i2 + sz2) > n2) {
- *errno = EINVAL;
+ *errnum = EINVAL;
for (j = 0; (i2 + j) < n2; )
u8s2[j++] = *s2++;
u8s2[j] = '\0';
@@ -1383,7 +1383,7 @@ collect_a_seq(size_t uv, uchar_t *u8s, uchar_t **source, uchar_t *slast,
boolean_t canonical_decomposition,
boolean_t compatibility_decomposition,
boolean_t canonical_composition,
- int *errno, u8_normalization_states_t *state)
+ int *errnum, u8_normalization_states_t *state)
{
uchar_t *s;
int sz;
@@ -1426,7 +1426,7 @@ collect_a_seq(size_t uv, uchar_t *u8s, uchar_t **source, uchar_t *slast,
sz = u8_number_of_bytes[*s];
if (sz < 0) {
- *errno = EILSEQ;
+ *errnum = EILSEQ;
u8s[0] = *s++;
u8s[1] = '\0';
@@ -1446,7 +1446,7 @@ collect_a_seq(size_t uv, uchar_t *u8s, uchar_t **source, uchar_t *slast,
s++;
u8s[1] = '\0';
} else if ((s + sz) > slast) {
- *errno = EINVAL;
+ *errnum = EINVAL;
for (i = 0; s < slast; )
u8s[i++] = *s++;
@@ -1726,7 +1726,7 @@ TURN_STREAM_SAFE:
*/
static int
do_norm_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1, size_t n2,
- int flag, int *errno)
+ int flag, int *errnum)
{
int result;
size_t sz1;
@@ -1778,7 +1778,7 @@ do_norm_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1, size_t n2,
is_it_toupper, is_it_tolower,
canonical_decomposition,
compatibility_decomposition,
- canonical_composition, errno, &state);
+ canonical_composition, errnum, &state);
}
if (U8_ISASCII(*s2) && ((s2 + 1) >= s2last ||
@@ -1798,7 +1798,7 @@ do_norm_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1, size_t n2,
is_it_toupper, is_it_tolower,
canonical_decomposition,
compatibility_decomposition,
- canonical_composition, errno, &state);
+ canonical_composition, errnum, &state);
}
/*
@@ -1842,13 +1842,13 @@ do_norm_compare(size_t uv, uchar_t *s1, uchar_t *s2, size_t n1, size_t n2,
*/
int
u8_strcmp(const char *s1, const char *s2, size_t n, int flag, size_t uv,
- int *errno)
+ int *errnum)
{
int f;
size_t n1;
size_t n2;
- *errno = 0;
+ *errnum = 0;
/*
* Check on the requested Unicode version, case conversion, and
@@ -1856,7 +1856,7 @@ u8_strcmp(const char *s1, const char *s2, size_t n, int flag, size_t uv,
*/
if (uv > U8_UNICODE_LATEST) {
- *errno = ERANGE;
+ *errnum = ERANGE;
uv = U8_UNICODE_LATEST;
}
@@ -1869,14 +1869,14 @@ u8_strcmp(const char *s1, const char *s2, size_t n, int flag, size_t uv,
flag |= U8_STRCMP_CS;
} else if (f != U8_STRCMP_CS && f != U8_STRCMP_CI_UPPER &&
f != U8_STRCMP_CI_LOWER) {
- *errno = EBADF;
+ *errnum = EBADF;
flag = U8_STRCMP_CS;
}
f = flag & (U8_CANON_DECOMP | U8_COMPAT_DECOMP | U8_CANON_COMP);
if (f && f != U8_STRCMP_NFD && f != U8_STRCMP_NFC &&
f != U8_STRCMP_NFKD && f != U8_STRCMP_NFKC) {
- *errno = EBADF;
+ *errnum = EBADF;
flag = U8_STRCMP_CS;
}
}
@@ -1900,19 +1900,19 @@ u8_strcmp(const char *s1, const char *s2, size_t n, int flag, size_t uv,
*/
if (flag == U8_STRCMP_CI_UPPER) {
return (do_case_compare(uv, (uchar_t *)s1, (uchar_t *)s2,
- n1, n2, B_TRUE, errno));
+ n1, n2, B_TRUE, errnum));
} else if (flag == U8_STRCMP_CI_LOWER) {
return (do_case_compare(uv, (uchar_t *)s1, (uchar_t *)s2,
- n1, n2, B_FALSE, errno));
+ n1, n2, B_FALSE, errnum));
}
return (do_norm_compare(uv, (uchar_t *)s1, (uchar_t *)s2, n1, n2,
- flag, errno));
+ flag, errnum));
}
size_t
u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
- int flag, size_t unicode_version, int *errno)
+ int flag, size_t unicode_version, int *errnum)
{
int f;
int sz;
@@ -1934,20 +1934,20 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
u8_normalization_states_t state;
if (unicode_version > U8_UNICODE_LATEST) {
- *errno = ERANGE;
+ *errnum = ERANGE;
return ((size_t)-1);
}
f = flag & (U8_TEXTPREP_TOUPPER | U8_TEXTPREP_TOLOWER);
if (f == (U8_TEXTPREP_TOUPPER | U8_TEXTPREP_TOLOWER)) {
- *errno = EBADF;
+ *errnum = EBADF;
return ((size_t)-1);
}
f = flag & (U8_CANON_DECOMP | U8_COMPAT_DECOMP | U8_CANON_COMP);
if (f && f != U8_TEXTPREP_NFD && f != U8_TEXTPREP_NFC &&
f != U8_TEXTPREP_NFKD && f != U8_TEXTPREP_NFKC) {
- *errno = EBADF;
+ *errnum = EBADF;
return ((size_t)-1);
}
@@ -1955,7 +1955,7 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
return (0);
if (outarray == NULL) {
- *errno = E2BIG;
+ *errnum = E2BIG;
return ((size_t)-1);
}
@@ -1987,7 +1987,7 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
if (sz < 0) {
if (do_not_ignore_invalid) {
- *errno = EILSEQ;
+ *errnum = EILSEQ;
ret_val = (size_t)-1;
break;
}
@@ -1998,7 +1998,7 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
if (sz == 1) {
if (ob >= obtail) {
- *errno = E2BIG;
+ *errnum = E2BIG;
ret_val = (size_t)-1;
break;
}
@@ -2013,13 +2013,13 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
ob++;
} else if ((ib + sz) > ibtail) {
if (do_not_ignore_invalid) {
- *errno = EINVAL;
+ *errnum = EINVAL;
ret_val = (size_t)-1;
break;
}
if ((obtail - ob) < (ibtail - ib)) {
- *errno = E2BIG;
+ *errnum = E2BIG;
ret_val = (size_t)-1;
break;
}
@@ -2038,7 +2038,7 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
ib, sz, is_it_toupper);
if ((obtail - ob) < i) {
- *errno = E2BIG;
+ *errnum = E2BIG;
ret_val = (size_t)-1;
break;
}
@@ -2049,7 +2049,7 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
*ob++ = u8s[sz];
} else {
if ((obtail - ob) < sz) {
- *errno = E2BIG;
+ *errnum = E2BIG;
ret_val = (size_t)-1;
break;
}
@@ -2082,7 +2082,7 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
if (U8_ISASCII(*ib) && ((ib + 1) >= ibtail ||
((ib + 1) < ibtail && U8_ISASCII(*(ib + 1))))) {
if (ob >= obtail) {
- *errno = E2BIG;
+ *errnum = E2BIG;
ret_val = (size_t)-1;
break;
}
@@ -2096,7 +2096,7 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
ib++;
ob++;
} else {
- *errno = 0;
+ *errnum = 0;
state = U8_STATE_START;
j = collect_a_seq(unicode_version, u8s,
@@ -2106,15 +2106,15 @@ u8_textprep_str(char *inarray, size_t *inlen, char *outarray, size_t *outlen,
canonical_decomposition,
compatibility_decomposition,
canonical_composition,
- errno, &state);
+ errnum, &state);
- if (*errno && do_not_ignore_invalid) {
+ if (*errnum && do_not_ignore_invalid) {
ret_val = (size_t)-1;
break;
}
if ((obtail - ob) < j) {
- *errno = E2BIG;
+ *errnum = E2BIG;
ret_val = (size_t)-1;
break;
}