Changeset View
Changeset View
Standalone View
Standalone View
usr.bin/iconv/iconv.c
Show First 20 Lines • Show All 71 Lines • ▼ Show 20 Lines | |||||
#define OUTBUFSIZE (INBUFSIZE * 2) | #define OUTBUFSIZE (INBUFSIZE * 2) | ||||
static int | static int | ||||
do_conv(FILE *fp, iconv_t cd, bool silent, bool hide_invalid) | do_conv(FILE *fp, iconv_t cd, bool silent, bool hide_invalid) | ||||
{ | { | ||||
char inbuf[INBUFSIZE], outbuf[OUTBUFSIZE], *in, *out; | char inbuf[INBUFSIZE], outbuf[OUTBUFSIZE], *in, *out; | ||||
unsigned long long invalids; | unsigned long long invalids; | ||||
size_t inbytes, outbytes, ret; | size_t inbytes, outbytes, ret; | ||||
/* | |||||
* Don't touch ICONV_SET_DISCARD_ILSEQ if -c wasn't specified. It may | |||||
* be that the user has specified //IGNORE in the -t specification, and | |||||
* we don't want to clobber that. | |||||
*/ | |||||
if (hide_invalid) { | |||||
int arg = (int)hide_invalid; | int arg = (int)hide_invalid; | ||||
if (iconvctl(cd, ICONV_SET_DISCARD_ILSEQ, (void *)&arg) == -1) | if (iconvctl(cd, ICONV_SET_DISCARD_ILSEQ, (void *)&arg) == -1) | ||||
err(EXIT_FAILURE, "iconvctl(DISCARD_ILSEQ, %d)", arg); | err(EXIT_FAILURE, "iconvctl(DISCARD_ILSEQ, %d)", arg); | ||||
} | |||||
invalids = 0; | invalids = 0; | ||||
while ((inbytes = fread(inbuf, 1, INBUFSIZE, fp)) > 0) { | while ((inbytes = fread(inbuf, 1, INBUFSIZE, fp)) > 0) { | ||||
in = inbuf; | in = inbuf; | ||||
while (inbytes > 0) { | while (inbytes > 0) { | ||||
size_t inval; | size_t inval; | ||||
out = outbuf; | out = outbuf; | ||||
▲ Show 20 Lines • Show All 153 Lines • Show Last 20 Lines |