version 1.78, 2015/11/14 10:56:31 |
version 1.79, 2015/11/14 11:45:43 |
|
|
struct utf8_data ud; |
struct utf8_data ud; |
u_char *ptr; |
u_char *ptr; |
size_t left, size = 0; |
size_t left, size = 0; |
int more; |
enum utf8_state more; |
|
|
va_start(ap, fmt); |
va_start(ap, fmt); |
xvasprintf(&msg, fmt, ap); |
xvasprintf(&msg, fmt, ap); |
|
|
|
|
ptr = msg; |
ptr = msg; |
while (*ptr != '\0') { |
while (*ptr != '\0') { |
if (*ptr > 0x7f && utf8_open(&ud, *ptr)) { |
if (*ptr > 0x7f && utf8_open(&ud, *ptr) == UTF8_MORE) { |
ptr++; |
ptr++; |
|
|
left = strlen(ptr); |
left = strlen(ptr); |
if (left < (size_t)ud.size - 1) |
if (left < (size_t)ud.size - 1) |
break; |
break; |
while ((more = utf8_append(&ud, *ptr)) == 1) |
while ((more = utf8_append(&ud, *ptr)) == UTF8_MORE) |
ptr++; |
ptr++; |
ptr++; |
ptr++; |
|
|
if (more == 0) |
if (more == UTF8_DONE) |
size += ud.width; |
size += ud.width; |
} else { |
} else { |
if (*ptr > 0x1f && *ptr < 0x7f) |
if (*ptr > 0x1f && *ptr < 0x7f) |
|
|
struct utf8_data ud; |
struct utf8_data ud; |
u_char *ptr; |
u_char *ptr; |
size_t left, size = 0; |
size_t left, size = 0; |
int more; |
enum utf8_state more; |
|
|
xvasprintf(&msg, fmt, ap); |
xvasprintf(&msg, fmt, ap); |
|
|
ptr = msg; |
ptr = msg; |
while (*ptr != '\0') { |
while (*ptr != '\0') { |
if (*ptr > 0x7f && utf8_open(&ud, *ptr)) { |
if (*ptr > 0x7f && utf8_open(&ud, *ptr) == UTF8_MORE) { |
ptr++; |
ptr++; |
|
|
left = strlen(ptr); |
left = strlen(ptr); |
if (left < (size_t)ud.size - 1) |
if (left < (size_t)ud.size - 1) |
break; |
break; |
while ((more = utf8_append(&ud, *ptr)) == 1) |
while ((more = utf8_append(&ud, *ptr)) == UTF8_MORE) |
ptr++; |
ptr++; |
ptr++; |
ptr++; |
|
|
if (more == 0) { |
if (more == UTF8_DONE) { |
if (maxlen > 0 && |
if (maxlen > 0 && |
size + ud.width > (size_t) maxlen) { |
size + ud.width > (size_t) maxlen) { |
while (size < (size_t) maxlen) { |
while (size < (size_t) maxlen) { |
|
|
char *msg; |
char *msg; |
u_char *ptr, *last; |
u_char *ptr, *last; |
size_t left, size = 0; |
size_t left, size = 0; |
int more; |
enum utf8_state more; |
|
|
va_start(ap, fmt); |
va_start(ap, fmt); |
xvasprintf(&msg, fmt, ap); |
xvasprintf(&msg, fmt, ap); |
|
|
continue; |
continue; |
} |
} |
|
|
if (*ptr > 0x7f && utf8_open(&ud, *ptr)) { |
if (*ptr > 0x7f && utf8_open(&ud, *ptr) == UTF8_MORE) { |
ptr++; |
ptr++; |
|
|
left = strlen(ptr); |
left = strlen(ptr); |
if (left < (size_t)ud.size - 1) |
if (left < (size_t)ud.size - 1) |
break; |
break; |
while ((more = utf8_append(&ud, *ptr)) == 1) |
while ((more = utf8_append(&ud, *ptr)) == UTF8_MORE) |
ptr++; |
ptr++; |
ptr++; |
ptr++; |
|
|
if (more == 0) { |
if (more == UTF8_DONE) { |
if (maxlen > 0 && |
if (maxlen > 0 && |
size + ud.width > (size_t) maxlen) { |
size + ud.width > (size_t) maxlen) { |
while (size < (size_t) maxlen) { |
while (size < (size_t) maxlen) { |