xzgrep: return 0 when at least one file matches
Resolves: #1109122 Version: 5.1.2-12alpha
This commit is contained in:
		
							parent
							
								
									19677d2183
								
							
						
					
					
						commit
						d23e30817f
					
				
							
								
								
									
										60
									
								
								xz-5.1.2alpha-xzgrep-exit-test.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								xz-5.1.2alpha-xzgrep-exit-test.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | |||||||
|  | commit 1e60f2c0a0ee6c18b02943ce56214799a70aac26 (HEAD, origin/master, origin/HEAD, master) | ||||||
|  | Author:     Lasse Collin <lasse.collin@tukaani.org> | ||||||
|  | AuthorDate: Wed Jun 11 21:03:25 2014 +0300 | ||||||
|  | Commit:     Lasse Collin <lasse.collin@tukaani.org> | ||||||
|  | CommitDate: Wed Jun 11 21:03:25 2014 +0300 | ||||||
|  | 
 | ||||||
|  |     xzgrep: Add a test for the previous fix. | ||||||
|  |      | ||||||
|  |     This is a simplified version of Pavel Raiskup's | ||||||
|  |     original patch. | ||||||
|  | 
 | ||||||
|  | diff --git a/tests/test_scripts.sh b/tests/test_scripts.sh
 | ||||||
|  | index 293929e..7ac1fea 100755
 | ||||||
|  | --- a/tests/test_scripts.sh
 | ||||||
|  | +++ b/tests/test_scripts.sh
 | ||||||
|  | @@ -12,16 +12,18 @@
 | ||||||
|  |  # If scripts weren't built, this test is skipped. | ||||||
|  |  XZ=../src/xz/xz | ||||||
|  |  XZDIFF=../src/scripts/xzdiff | ||||||
|  | -test -x "$XZ" || XZ=
 | ||||||
|  | -test -x "$XZDIFF" || XZDIFF=
 | ||||||
|  | -if test -z "$XZ" || test -z "$XZDIFF"; then
 | ||||||
|  | +XZGREP=../src/scripts/xzgrep
 | ||||||
|  | +
 | ||||||
|  | +for i in XZ XZDIFF XZGREP; do
 | ||||||
|  | +	eval test -x "\$$i" && continue
 | ||||||
|  |  	(exit 77) | ||||||
|  |  	exit 77 | ||||||
|  | -fi
 | ||||||
|  | +done
 | ||||||
|  |   | ||||||
|  |  PATH=`pwd`/../src/xz:$PATH | ||||||
|  |  export PATH | ||||||
|  |   | ||||||
|  | +test -z "$srcdir" && srcdir=.
 | ||||||
|  |  preimage=$srcdir/files/good-1-check-crc32.xz | ||||||
|  |  samepostimage=$srcdir/files/good-1-check-crc64.xz | ||||||
|  |  otherpostimage=$srcdir/files/good-1-lzma2-1.xz | ||||||
|  | @@ -50,5 +52,21 @@ if test "$status" != 2 ; then
 | ||||||
|  |  	exit 1 | ||||||
|  |  fi | ||||||
|  |   | ||||||
|  | +# The exit status must be 0 when a match was found at least from one file,
 | ||||||
|  | +# and 1 when no match was found in any file.
 | ||||||
|  | +for pattern in el Hello NOMATCH; do
 | ||||||
|  | +	for opts in "" "-l" "-h" "-H"; do
 | ||||||
|  | +		"$XZGREP" $opts $pattern \
 | ||||||
|  | +			"$srcdir/files/good-1-lzma2-1.xz" \
 | ||||||
|  | +			"$srcdir/files/good-2-lzma2.xz" > /dev/null 2>&1
 | ||||||
|  | +		status=$?
 | ||||||
|  | +		test $status = 0 && test $pattern != NOMATCH && continue
 | ||||||
|  | +		test $status = 1 && test $pattern = NOMATCH && continue
 | ||||||
|  | +		echo "wrong exit status from xzgrep"
 | ||||||
|  | +		(exit 1)
 | ||||||
|  | +		exit 1
 | ||||||
|  | +	done
 | ||||||
|  | +done
 | ||||||
|  | +
 | ||||||
|  |  (exit 0) | ||||||
|  |  exit 0 | ||||||
							
								
								
									
										50
									
								
								xz-5.1.2alpha-xzgrep-exit.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								xz-5.1.2alpha-xzgrep-exit.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | |||||||
|  | commit ceca37901783988204caaf40dff4623d535cc789 | ||||||
|  | Author:     Lasse Collin <lasse.collin@tukaani.org> | ||||||
|  | AuthorDate: Wed Jun 11 20:43:28 2014 +0300 | ||||||
|  | Commit:     Lasse Collin <lasse.collin@tukaani.org> | ||||||
|  | CommitDate: Wed Jun 11 20:43:28 2014 +0300 | ||||||
|  | 
 | ||||||
|  |     xzgrep: exit 0 when at least one file matches. | ||||||
|  |      | ||||||
|  |     Mimic the original grep behavior and return exit_success when | ||||||
|  |     at least one xz compressed file matches given pattern. | ||||||
|  |      | ||||||
|  |     Original bugreport: | ||||||
|  |     https://bugzilla.redhat.com/show_bug.cgi?id=1108085 | ||||||
|  |      | ||||||
|  |     Thanks to Pavel Raiskup for the patch. | ||||||
|  | 
 | ||||||
|  | diff --git a/src/scripts/xzgrep.in b/src/scripts/xzgrep.in
 | ||||||
|  | index 951266b..018915f 100644
 | ||||||
|  | --- a/src/scripts/xzgrep.in
 | ||||||
|  | +++ b/src/scripts/xzgrep.in
 | ||||||
|  | @@ -147,7 +147,9 @@ if test $# -eq 0; then
 | ||||||
|  |  fi | ||||||
|  |   | ||||||
|  |  exec 3>&1 | ||||||
|  | -res=0
 | ||||||
|  | +
 | ||||||
|  | +# res=1 means that no file matched yet
 | ||||||
|  | +res=1
 | ||||||
|  |   | ||||||
|  |  for i; do | ||||||
|  |    case $i in | ||||||
|  | @@ -195,8 +197,17 @@ for i; do
 | ||||||
|  |      fi >&3 5>&- | ||||||
|  |    ) | ||||||
|  |    r=$? | ||||||
|  | +
 | ||||||
|  | +  # fail occured previously, nothing worse can happen
 | ||||||
|  | +  test $res -gt 1 && continue
 | ||||||
|  | +
 | ||||||
|  |    test "$xz_status" -eq 0 || test "$xz_status" -eq 2 \ | ||||||
|  |        || test "$(kill -l "$xz_status" 2> /dev/null)" = "PIPE" || r=2 | ||||||
|  | -  test $res -lt $r && res=$r
 | ||||||
|  | +
 | ||||||
|  | +  # still no match
 | ||||||
|  | +  test $r -eq 1 && continue
 | ||||||
|  | +
 | ||||||
|  | +  # 0 == match, >=2 == fail
 | ||||||
|  | +  res=$r
 | ||||||
|  |  done | ||||||
|  |  exit $res | ||||||
							
								
								
									
										14
									
								
								xz.spec
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								xz.spec
									
									
									
									
									
								
							| @ -3,7 +3,7 @@ | |||||||
| Summary:	LZMA compression utilities | Summary:	LZMA compression utilities | ||||||
| Name:		xz | Name:		xz | ||||||
| Version:	5.1.2 | Version:	5.1.2 | ||||||
| Release:	11alpha%{?dist} | Release:	12alpha%{?dist} | ||||||
| License:	LGPLv2+ | License:	LGPLv2+ | ||||||
| Group:		Applications/File | Group:		Applications/File | ||||||
| # official upstream release | # official upstream release | ||||||
| @ -29,6 +29,13 @@ Patch1:		xz-5.1.2alpha-xzgrep-and-h-option.patch | |||||||
| # ~> #1015924 | # ~> #1015924 | ||||||
| Patch2:		xz-5.1.2alpha-less-version-check.patch | Patch2:		xz-5.1.2alpha-less-version-check.patch | ||||||
| 
 | 
 | ||||||
|  | # xzgrep: return 0 when at least one file matches (+ test) | ||||||
|  | # ~> upstream (ceca37901783) | ||||||
|  | # ~> #1109122 | ||||||
|  | Patch3:		xz-5.1.2alpha-xzgrep-exit.patch | ||||||
|  | Patch4:		xz-5.1.2alpha-xzgrep-exit-test.patch | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| %description | %description | ||||||
| XZ Utils are an attempt to make LZMA compression easy to use on free (as in | XZ Utils are an attempt to make LZMA compression easy to use on free (as in | ||||||
| freedom) operating systems. This is achieved by providing tools and libraries | freedom) operating systems. This is achieved by providing tools and libraries | ||||||
| @ -93,6 +100,8 @@ commands that deal with the older LZMA format. | |||||||
| %patch0  -p1 -b .man-page-day | %patch0  -p1 -b .man-page-day | ||||||
| %patch1  -p1 -b .xzgrep-and-h-option | %patch1  -p1 -b .xzgrep-and-h-option | ||||||
| %patch2  -p1 -b .less-version-check | %patch2  -p1 -b .less-version-check | ||||||
|  | %patch3  -p1 -b .xzgrep-exit-status | ||||||
|  | %patch4  -p1 -b .xzgrep-exit-status-test | ||||||
| 
 | 
 | ||||||
| for i in `find . -name config.sub`; do | for i in `find . -name config.sub`; do | ||||||
|   perl -pi -e "s/ppc64-\*/ppc64-\* \| ppc64p7-\*/" $i |   perl -pi -e "s/ppc64-\*/ppc64-\* \| ppc64p7-\*/" $i | ||||||
| @ -174,6 +183,9 @@ rm -rf %{buildroot} | |||||||
| %{_mandir}/man1/*lz* | %{_mandir}/man1/*lz* | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Fri Jun 13 2014 Pavel Raiskup <praiskup@redhat.com> - 5.1.2-12alpha | ||||||
|  | - xzgrep: return 0 when at least one file matches (#1109122) | ||||||
|  | 
 | ||||||
| * Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.2-11alpha | * Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.2-11alpha | ||||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild | - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user