Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 May 2017 14:35:16 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r318592 - in head/usr.bin/compress: . tests
Message-ID:  <201705211435.v4LEZG53052330@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Sun May 21 14:35:16 2017
New Revision: 318592
URL: https://svnweb.freebsd.org/changeset/base/318592

Log:
  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
  Reported by:	Jörg Schilling

Modified:
  head/usr.bin/compress/compress.c
  head/usr.bin/compress/tests/compress_test.sh

Modified: head/usr.bin/compress/compress.c
==============================================================================
--- head/usr.bin/compress/compress.c	Sun May 21 14:05:32 2017	(r318591)
+++ head/usr.bin/compress/compress.c	Sun May 21 14:35:16 2017	(r318592)
@@ -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)

Modified: head/usr.bin/compress/tests/compress_test.sh
==============================================================================
--- head/usr.bin/compress/tests/compress_test.sh	Sun May 21 14:05:32 2017	(r318591)
+++ head/usr.bin/compress/tests/compress_test.sh	Sun May 21 14:35:16 2017	(r318592)
@@ -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
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201705211435.v4LEZG53052330>