diff --git a/bzip2-handle_pipe_input_with-f_option.patch b/bzip2-handle_pipe_input_with-f_option.patch new file mode 100644 index 0000000..ee997ba --- /dev/null +++ b/bzip2-handle_pipe_input_with-f_option.patch @@ -0,0 +1,38 @@ +Index: bzip2-1.0.6/bzip2.c +=================================================================== +--- bzip2-1.0.6.orig/bzip2.c 2010-09-11 01:04:53.000000000 +0200 ++++ bzip2-1.0.6/bzip2.c 2014-07-31 16:23:22.366495659 +0200 +@@ -504,6 +504,11 @@ Bool uncompressStream ( FILE *zStream, F + trycat: + if (forceOverwrite) { + rewind(zStream); ++ if (errno == EBADF || errno == ESPIPE) { ++ /* zStream is not seekable, probably a pipe, ++ so we print what we already have in the obuf buffer */ ++ fwrite ( obuf, sizeof(UChar), nread, stream ); ++ } + while (True) { + if (myfeof(zStream)) break; + nread = fread ( obuf, sizeof(UChar), 5000, zStream ); +Index: bzip2-1.0.6/bzlib.c +=================================================================== +--- bzip2-1.0.6.orig/bzlib.c 2014-07-31 14:50:19.492469544 +0200 ++++ bzip2-1.0.6/bzlib.c 2014-07-31 16:25:28.271012325 +0200 +@@ -1198,6 +1198,17 @@ int BZ_API(BZ2_bzRead) + + ret = BZ2_bzDecompress ( &(bzf->strm) ); + ++ /* Unknown format. If the -f option was specified, ++ we want to write out the input data as it is. ++ However, as we can't rewind the stream in pipe, ++ we have to copy to the output buf the data ++ which were already read */ ++ if (ret == BZ_DATA_ERROR_MAGIC) { ++ strncpy(buf, bzf->buf, n); ++ BZ_SETERR(BZ_DATA_ERROR_MAGIC); ++ return n; ++ } ++ + if (ret != BZ_OK && ret != BZ_STREAM_END) + { BZ_SETERR(ret); return 0; }; + diff --git a/bzip2.changes b/bzip2.changes index d7191d0..5b29ea1 100644 --- a/bzip2.changes +++ b/bzip2.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Aug 5 10:39:56 UTC 2014 - vcizek@suse.com + +- handle pipe input with the -f option (bnc#884004) + * added bzip2-handle_pipe_input_with-f_option.patch + ------------------------------------------------------------------- Thu Jul 31 12:39:28 UTC 2014 - dimstar@opensuse.org diff --git a/bzip2.spec b/bzip2.spec index 4e4258c..a1554a9 100644 --- a/bzip2.spec +++ b/bzip2.spec @@ -34,6 +34,8 @@ Patch3: bzip2-faster.patch Patch5: bzip2-unsafe_strcpy.patch Patch6: bzip2-point-to-doc-pkg.patch Patch7: bzip2-ocloexec.patch +# PATCH-FIX-SUSE bzip2-handle_pipe_input_with-f_option.patch +Patch8: bzip2-handle_pipe_input_with-f_option.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: autoconf >= 2.57 BuildRequires: libtool @@ -83,6 +85,7 @@ The bzip2 runtime library development files. %patch5 %patch6 -p1 %patch7 +%patch8 -p1 %build profile_bzip2()