|
Lines 56-61
conv_c(PR *pr, u_char *p, size_t bufsize)
Link Here
|
| 56 |
size_t clen, oclen; |
56 |
size_t clen, oclen; |
| 57 |
int converr, pad, width; |
57 |
int converr, pad, width; |
| 58 |
u_char peekbuf[MB_LEN_MAX]; |
58 |
u_char peekbuf[MB_LEN_MAX]; |
|
|
59 |
u_char *op; |
| 59 |
|
60 |
|
| 60 |
if (pr->mbleft > 0) { |
61 |
if (pr->mbleft > 0) { |
| 61 |
str = "**"; |
62 |
str = "**"; |
|
Lines 107-112
conv_c(PR *pr, u_char *p, size_t bufsize)
Link Here
|
| 107 |
else if (clen == (size_t)-1 || (clen == (size_t)-2 && |
108 |
else if (clen == (size_t)-1 || (clen == (size_t)-2 && |
| 108 |
p == peekbuf)) { |
109 |
p == peekbuf)) { |
| 109 |
memset(&pr->mbstate, 0, sizeof(pr->mbstate)); |
110 |
memset(&pr->mbstate, 0, sizeof(pr->mbstate)); |
|
|
111 |
if (p == peekbuf) { |
| 112 |
/* |
| 113 |
* We peeked ahead, but still can't complete; |
| 114 |
* restore original character. |
| 115 |
*/ |
| 116 |
oclen = 0; |
| 117 |
p = op; |
| 118 |
} |
| 110 |
wc = *p; |
119 |
wc = *p; |
| 111 |
clen = 1; |
120 |
clen = 1; |
| 112 |
converr = 1; |
121 |
converr = 1; |
|
Lines 116-121
conv_c(PR *pr, u_char *p, size_t bufsize)
Link Here
|
| 116 |
* can complete it. |
125 |
* can complete it. |
| 117 |
*/ |
126 |
*/ |
| 118 |
oclen = bufsize; |
127 |
oclen = bufsize; |
|
|
128 |
op = p; |
| 119 |
bufsize = peek(p = peekbuf, MB_CUR_MAX); |
129 |
bufsize = peek(p = peekbuf, MB_CUR_MAX); |
| 120 |
goto retry; |
130 |
goto retry; |
| 121 |
} |
131 |
} |
|
Lines 128-134
conv_c(PR *pr, u_char *p, size_t bufsize)
Link Here
|
| 128 |
if (!odmode) { |
138 |
if (!odmode) { |
| 129 |
*pr->cchar = 'c'; |
139 |
*pr->cchar = 'c'; |
| 130 |
(void)printf(pr->fmt, (int)wc); |
140 |
(void)printf(pr->fmt, (int)wc); |
| 131 |
} else { |
141 |
} else { |
| 132 |
*pr->cchar = 'C'; |
142 |
*pr->cchar = 'C'; |
| 133 |
assert(strcmp(pr->fmt, "%3C") == 0); |
143 |
assert(strcmp(pr->fmt, "%3C") == 0); |
| 134 |
width = wcwidth(wc); |
144 |
width = wcwidth(wc); |
| 135 |
- |
|
|