summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2017-05-31 21:54:21 +0000
committerjilles <jilles@FreeBSD.org>2017-05-31 21:54:21 +0000
commitf610ca91ebdbfbf7f7ffc54f1688ea44c99496e1 (patch)
treea86dd3d393bdf3a3197c3f6c50f9e787a41e2898
parentc3b5aa85d2ebaa5534d6bf0ee2f879309c1bfd6e (diff)
downloadFreeBSD-src-f610ca91ebdbfbf7f7ffc54f1688ea44c99496e1.zip
FreeBSD-src-f610ca91ebdbfbf7f7ffc54f1688ea44c99496e1.tar.gz
MFC r318592: compress: Allow uncompress -c with multiple pathnames,
as required by POSIX. Per POSIX, allow passing multiple pathnames to uncompress -c, concatenating the uncompressed data. Passing multiple pathnames to compress -c remains disallowed, since the result cannot be decompressed. PR: 219387
-rw-r--r--usr.bin/compress/compress.c2
-rwxr-xr-xusr.bin/compress/tests/compress_test.sh22
2 files changed, 23 insertions, 1 deletions
diff --git a/usr.bin/compress/compress.c b/usr.bin/compress/compress.c
index 2d2efb3..87494e3 100644
--- a/usr.bin/compress/compress.c
+++ b/usr.bin/compress/compress.c
@@ -129,7 +129,7 @@ main(int argc, char *argv[])
exit (eval);
}
- if (cat == 1 && argc > 1)
+ if (cat == 1 && style == COMPRESS && argc > 1)
errx(1, "the -c option permits only a single file argument");
for (; *argv; ++argv)
diff --git a/usr.bin/compress/tests/compress_test.sh b/usr.bin/compress/tests/compress_test.sh
index ddcfbb0..147f842 100755
--- a/usr.bin/compress/tests/compress_test.sh
+++ b/usr.bin/compress/tests/compress_test.sh
@@ -161,6 +161,27 @@ compress_uncompress_file_2_body()
atf_check cmp file2 expectfile2
}
+atf_test_case compress_uncompress_file_minusc_1
+compress_uncompress_file_minusc_1_head()
+{
+ atf_set "descr" \
+ "Test compressing and uncompressing some data, passing two filenames to uncompress -c"
+}
+compress_uncompress_file_minusc_1_body()
+{
+ printf '%01000d\n' 7 8 >expectfile1
+ printf '%01000d\n' 8 7 >expectfile2
+ cp expectfile1 file1
+ cp expectfile2 file2
+ atf_check compress file1 file2
+ atf_check -s exit:1 cmp -s file1.Z expectfile1
+ atf_check -s exit:1 cmp -s file2.Z expectfile2
+ atf_check -s exit:1 cmp -s file1.Z file2.Z
+ atf_check -x 'uncompress -c file1.Z file2.Z >all'
+ atf_check -x 'cat expectfile1 expectfile2 >expectall'
+ atf_check cmp all expectall
+}
+
atf_init_test_cases()
{
atf_add_test_case uncompress_file_1
@@ -171,4 +192,5 @@ atf_init_test_cases()
atf_add_test_case compress_uncompress_minusc_1
atf_add_test_case compress_uncompress_file_1
atf_add_test_case compress_uncompress_file_2
+ atf_add_test_case compress_uncompress_file_minusc_1
}
OpenPOWER on IntegriCloud