View | Details | Raw Unified | Return to bug 224552 | Differences between
and this patch

Collapse All | Expand All

(-)b/usr.bin/hexdump/conv.c (-2 / +11 lines)
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
- 

Return to bug 224552