aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2024-09-20 13:10:54 +0200
committerFlorian Weimer <fweimer@redhat.com>2024-09-20 13:51:09 +0200
commit75819cdd29a193cc2db980878bec305905b22bbc (patch)
tree3892d3e4843021cb24a8ba57f0cec020b01a1031
parent8ef3cff9d1ceafe369f982d980678d749fb93bd2 (diff)
downloadglibc-75819cdd29a193cc2db980878bec305905b22bbc.zip
glibc-75819cdd29a193cc2db980878bec305905b22bbc.tar.gz
glibc-75819cdd29a193cc2db980878bec305905b22bbc.tar.bz2
iconv: Multiple - on command line should not fail (bug 32050)
Usually, the second and subsequent - return EOF immediately and do not contribute to the output, but this is not an error. Reviewed-by: DJ Delorie <dj@redhat.com>
-rw-r--r--iconv/iconv_prog.c3
-rw-r--r--iconv/tst-iconv_prog-buffer.sh5
2 files changed, 7 insertions, 1 deletions
diff --git a/iconv/iconv_prog.c b/iconv/iconv_prog.c
index 3e02db7..dd4bc3a 100644
--- a/iconv/iconv_prog.c
+++ b/iconv/iconv_prog.c
@@ -287,7 +287,8 @@ conversions from `%s' and to `%s' are not supported"),
ret = process_fd (cd, fd);
/* Now close the file. */
- close (fd);
+ if (fd != STDIN_FILENO)
+ close (fd);
if (ret != 0)
{
diff --git a/iconv/tst-iconv_prog-buffer.sh b/iconv/tst-iconv_prog-buffer.sh
index 54ff871..a9c3729 100644
--- a/iconv/tst-iconv_prog-buffer.sh
+++ b/iconv/tst-iconv_prog-buffer.sh
@@ -265,6 +265,11 @@ expect_exit 1 run_iconv -o "$tmp/out" "$tmp/abc" "$tmp/0xff" "$tmp/def"
expect_exit 1 run_iconv -o "$tmp/out" "$tmp/abc" - < "$tmp/0xff" "$tmp/def"
! test -e "$tmp/out"
+# Listing standard input multiple times should not fail (bug 32050).
+
+run_iconv -o "$tmp/out" "$tmp/xy" - - "$tmp/zt" < "$tmp/abc"
+expect_files xy abc zt
+
if $failure ; then
exit 1
fi