aboutsummaryrefslogtreecommitdiff
path: root/toys/posix
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2023-12-15 04:44:53 -0600
committerRob Landley <rob@landley.net>2023-12-15 04:44:53 -0600
commit53d8a6707e3cf635004927a920c8b7fa967ea966 (patch)
tree656f72e097f423bcd4ec378782e1cbda3d46b2a2 /toys/posix
parentd908031520fb3a1b847dde5c55b1f0d698d49edf (diff)
downloadtoybox-53d8a6707e3cf635004927a920c8b7fa967ea966.tar.gz
Exit with (eventual) error if any characters failed to convert without -c.
Diffstat (limited to 'toys/posix')
-rw-r--r--toys/posix/iconv.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/toys/posix/iconv.c b/toys/posix/iconv.c
index 0674f3db..1d8f40b1 100644
--- a/toys/posix/iconv.c
+++ b/toys/posix/iconv.c
@@ -51,8 +51,11 @@ static void do_iconv(int fd, char *name)
iconv(TT.ic, &in, &inlen, &out, &outlen);
if (in == toybuf) {
// Skip first byte of illegal sequence to avoid endless loops
- if (toys.optflags & FLAG_c) in++;
- else *(out++) = *(in++);
+ if (FLAG(c)) in++;
+ else {
+ *(out++) = *(in++);
+ toys.exitval = 1;
+ }
inlen--;
}
if (out != outstart) xwrite(1, outstart, out-outstart);