Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 280780
b: refs/heads/master
c: 045ddc8
h: refs/heads/master
v: v3
  • Loading branch information
Alan Stern authored and Greg Kroah-Hartman committed Nov 27, 2011
1 parent c1dd406 commit e8460cb
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 24 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 568987116ed5fce7e9e9c731ffe5f5af193ab2e3
refs/heads/master: 045ddc8991698a8e9c5668c6190faa8b5d516dc0
46 changes: 23 additions & 23 deletions trunk/fs/nls/nls_base.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ static const struct utf8_table utf8_table[] =
#define SURROGATE_LOW 0x00000400
#define SURROGATE_BITS 0x000003ff

int utf8_to_utf32(const u8 *s, int len, unicode_t *pu)
int utf8_to_utf32(const u8 *s, int inlen, unicode_t *pu)
{
unsigned long l;
int c0, c, nc;
Expand All @@ -71,7 +71,7 @@ int utf8_to_utf32(const u8 *s, int len, unicode_t *pu)
*pu = (unicode_t) l;
return nc;
}
if (len <= nc)
if (inlen <= nc)
return -1;
s++;
c = (*s ^ 0x80) & 0xFF;
Expand All @@ -83,7 +83,7 @@ int utf8_to_utf32(const u8 *s, int len, unicode_t *pu)
}
EXPORT_SYMBOL(utf8_to_utf32);

int utf32_to_utf8(unicode_t u, u8 *s, int maxlen)
int utf32_to_utf8(unicode_t u, u8 *s, int maxout)
{
unsigned long l;
int c, nc;
Expand All @@ -97,7 +97,7 @@ int utf32_to_utf8(unicode_t u, u8 *s, int maxlen)
return -1;

nc = 0;
for (t = utf8_table; t->cmask && maxlen; t++, maxlen--) {
for (t = utf8_table; t->cmask && maxout; t++, maxout--) {
nc++;
if (l <= t->lmask) {
c = t->shift;
Expand Down Expand Up @@ -129,24 +129,24 @@ static inline void put_utf16(wchar_t *s, unsigned c, enum utf16_endian endian)
}
}

int utf8s_to_utf16s(const u8 *s, int len, enum utf16_endian endian,
wchar_t *pwcs, int maxlen)
int utf8s_to_utf16s(const u8 *s, int inlen, enum utf16_endian endian,
wchar_t *pwcs, int maxout)
{
u16 *op;
int size;
unicode_t u;

op = pwcs;
while (len > 0 && maxlen > 0 && *s) {
while (inlen > 0 && maxout > 0 && *s) {
if (*s & 0x80) {
size = utf8_to_utf32(s, len, &u);
size = utf8_to_utf32(s, inlen, &u);
if (size < 0)
return -EINVAL;
s += size;
len -= size;
inlen -= size;

if (u >= PLANE_SIZE) {
if (maxlen < 2)
if (maxout < 2)
break;
u -= PLANE_SIZE;
put_utf16(op++, SURROGATE_PAIR |
Expand All @@ -156,15 +156,15 @@ int utf8s_to_utf16s(const u8 *s, int len, enum utf16_endian endian,
SURROGATE_LOW |
(u & SURROGATE_BITS),
endian);
maxlen -= 2;
maxout -= 2;
} else {
put_utf16(op++, u, endian);
maxlen--;
maxout--;
}
} else {
put_utf16(op++, *s++, endian);
len--;
maxlen--;
inlen--;
maxout--;
}
}
return op - pwcs;
Expand All @@ -183,27 +183,27 @@ static inline unsigned long get_utf16(unsigned c, enum utf16_endian endian)
}
}

int utf16s_to_utf8s(const wchar_t *pwcs, int len, enum utf16_endian endian,
u8 *s, int maxlen)
int utf16s_to_utf8s(const wchar_t *pwcs, int inlen, enum utf16_endian endian,
u8 *s, int maxout)
{
u8 *op;
int size;
unsigned long u, v;

op = s;
while (len > 0 && maxlen > 0) {
while (inlen > 0 && maxout > 0) {
u = get_utf16(*pwcs, endian);
if (!u)
break;
pwcs++;
len--;
inlen--;
if (u > 0x7f) {
if ((u & SURROGATE_MASK) == SURROGATE_PAIR) {
if (u & SURROGATE_LOW) {
/* Ignore character and move on */
continue;
}
if (len <= 0)
if (inlen <= 0)
break;
v = get_utf16(*pwcs, endian);
if ((v & SURROGATE_MASK) != SURROGATE_PAIR ||
Expand All @@ -214,18 +214,18 @@ int utf16s_to_utf8s(const wchar_t *pwcs, int len, enum utf16_endian endian,
u = PLANE_SIZE + ((u & SURROGATE_BITS) << 10)
+ (v & SURROGATE_BITS);
pwcs++;
len--;
inlen--;
}
size = utf32_to_utf8(u, op, maxlen);
size = utf32_to_utf8(u, op, maxout);
if (size == -1) {
/* Ignore character and move on */
} else {
op += size;
maxlen -= size;
maxout -= size;
}
} else {
*op++ = (u8) u;
maxlen--;
maxout--;
}
}
return op - s;
Expand Down

0 comments on commit e8460cb

Please sign in to comment.