version 1.10, 2020/08/03 14:45:54 |
version 1.11, 2020/08/08 07:18:08 |
|
|
size_t srclen, int utf8) |
size_t srclen, int utf8) |
{ |
{ |
size_t octetlength, i = 0, j = 0; |
size_t octetlength, i = 0, j = 0; |
|
size_t prefixlen; |
unsigned long ulval; |
unsigned long ulval; |
int clen; |
int clen; |
char *displayformat; |
char *displayformat; |
|
const char *prefix; |
char *rbuf, *dst; |
char *rbuf, *dst; |
wchar_t wc; |
wchar_t wc; |
|
|
|
prefix = print_hint ? "STRING: " : ""; |
|
prefixlen = strlen(prefix); |
|
|
errno = 0; |
errno = 0; |
ulval = strtoul(tc->tc_display_hint, &displayformat, 10); |
ulval = strtoul(tc->tc_display_hint, &displayformat, 10); |
octetlength = ulval; |
octetlength = ulval; |
|
|
return NULL; |
return NULL; |
} |
} |
|
|
if (displayformat[0] == 't') { |
if (displayformat[0] == 't' || displayformat[0] == 'a') { |
if (print_hint) { |
if ((rbuf = malloc(prefixlen + octetlength + 1)) == NULL) |
rbuf = malloc(octetlength + sizeof("STRING: ")); |
return NULL; |
if (rbuf == NULL) |
(void)strlcpy(rbuf, prefix, prefixlen + octetlength + 1); |
return NULL; |
dst = rbuf + prefixlen; |
memcpy(rbuf, "STRING: ", sizeof("STRING: ") - 1); |
|
dst = rbuf + sizeof("STRING: ") - 1; |
|
} else { |
|
dst = rbuf = malloc(octetlength + 1); |
|
if (rbuf == NULL) |
|
return NULL; |
|
} |
|
while (j < octetlength && i < srclen) { |
while (j < octetlength && i < srclen) { |
clen = mbtowc(&wc, &(src[i]), srclen - i); |
clen = mbtowc(&wc, &(src[i]), srclen - i); |
|
if (displayformat[0] == 'a' && clen > 1) |
|
clen = -1; |
switch (clen) { |
switch (clen) { |
case 0: |
case 0: |
dst[j++] = '.'; |
dst[j++] = '.'; |