RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [email protected]
  Module: rpm                              Date:   30-May-2017 21:18:39
  Branch: rpm-5_4                          Handle: 2017053019183702

  Modified files:           (Branch: rpm-5_4)
    rpm                     CHANGES configure.ac
    rpm/build               pack.c parsePrep.c
    rpm/lib                 psm.c rpmds.c
    rpm/macros              macros.in
    rpm/rpmio               librpmio.vers macro.c rpmio.c rpmio.h

  Log:
    - zstd: stub in zstd compression framework.

  Summary:
    Revision    Changes     Path
    1.3501.2.567+1  -0      rpm/CHANGES
    2.324.2.22  +8  -0      rpm/build/pack.c
    2.132.2.13  +6  -0      rpm/build/parsePrep.c
    2.472.2.173 +169 -0     rpm/configure.ac
    2.399.2.27  +10 -8      rpm/lib/psm.c
    2.170.2.39  +5  -0      rpm/lib/rpmds.c
    1.39.2.51   +2  -1      rpm/macros/macros.in
    2.199.2.83  +1  -0      rpm/rpmio/librpmio.vers
    2.249.2.47  +8  -1      rpm/rpmio/macro.c
    1.230.2.54  +24 -4      rpm/rpmio/rpmio.c
    1.97.2.21   +4  -0      rpm/rpmio/rpmio.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3501.2.566 -r1.3501.2.567 CHANGES
  --- rpm/CHANGES       28 May 2017 20:18:15 -0000      1.3501.2.566
  +++ rpm/CHANGES       30 May 2017 19:18:37 -0000      1.3501.2.567
  @@ -1,4 +1,5 @@
   5.4.17 -> 5.4.18:
  +    - jbj: zstd: stub in zstd compression framework.
       - jbj: msqio: abstract out the AIO queue (AIOQ_t for now).
       - jbj: rpmaio: stub in an AIO aiocb pool.
       - jbj: msqio: replace pthreads monitor with yarn.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/pack.c
  ============================================================================
  $ cvs diff -u -r2.324.2.21 -r2.324.2.22 pack.c
  --- rpm/build/pack.c  16 May 2017 20:14:31 -0000      2.324.2.21
  +++ rpm/build/pack.c  30 May 2017 19:18:38 -0000      2.324.2.22
  @@ -694,6 +694,14 @@
            xx = headerPut(h, he, 0);
            he->p.ptr = _free(he->p.ptr);
            (void) rpmlibNeedsFeature(h, "PayloadIsXz", "5.2-1");
  +     } else if (s[1] == 'z' && s[2] == 's' && s[3] == 't') {
  +         he->tag = RPMTAG_PAYLOADCOMPRESSOR;
  +         he->t = RPM_STRING_TYPE;
  +         he->p.str = xstrdup("zstd");
  +         he->c = 1;
  +         xx = headerPut(h, he, 0);
  +         he->p.ptr = _free(he->p.ptr);
  +         (void) rpmlibNeedsFeature(h, "PayloadIsZstd", "5.4.18-1");
        }
        strncpy(buf, rpmio_flags, sizeof(buf)-1);
        buf[s - rpmio_flags] = '\0';
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parsePrep.c
  ============================================================================
  $ cvs diff -u -r2.132.2.12 -r2.132.2.13 parsePrep.c
  --- rpm/build/parsePrep.c     16 May 2017 20:14:31 -0000      2.132.2.12
  +++ rpm/build/parsePrep.c     30 May 2017 19:18:38 -0000      2.132.2.13
  @@ -164,6 +164,9 @@
        case COMPRESSED_XZ:
            zipper = "%{__xz}";
            break;
  +     case COMPRESSED_ZSTD:
  +         zipper = "%{__zstd}";
  +         break;
        }
        zipper = rpmGetPath(zipper, NULL);
   
  @@ -309,6 +312,9 @@
        case COMPRESSED_XZ:
            t = "%{__xz} -dc";
            break;
  +     case COMPRESSED_ZSTD:
  +         t = "%{__zstd} -dc";
  +         break;
        case COMPRESSED_LZIP:
            t = "%{__lzip} -dc";
            break;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/configure.ac
  ============================================================================
  $ cvs diff -u -r2.472.2.172 -r2.472.2.173 configure.ac
  --- rpm/configure.ac  20 May 2017 19:21:07 -0000      2.472.2.172
  +++ rpm/configure.ac  30 May 2017 19:18:38 -0000      2.472.2.173
  @@ -1166,6 +1166,7 @@
   AC_PATH_PROG(__TCLSH, tclsh, %{_bindir}/tclsh, $MYPATH)
   AC_PATH_PROG(__UNZIP, unzip, %{_bindir}/unzip, $MYPATH)
   AC_PATH_PROG(__XZ, xz, %{_bindir}/xz, $MYPATH)
  +AC_PATH_PROG(__ZSTD, zstd, %{_bindir}/zstd, $MYPATH)
   AC_PATH_PROG(__LD, ld, %{_bindir}/ld, $MYPATH)
   AC_PATH_PROG(__NM, nm, %{_bindir}/nm, $MYPATH)
   AC_PATH_PROG(__OBJCOPY, objcopy, %{_bindir}/objcopy, $MYPATH)
  @@ -2256,6 +2257,157 @@
       AC_MSG_ERROR([you have passed --without-{xz,bzip2,zlib} together but it 
isn't possible to build rpm without any form of compression library. At a 
minimum, i suggest adding --with-zlib if you want to actually build and install 
a *.rpm package])
   fi
   
  +dnl # Facebook Zstd
  +RPM_CHECK_LIB(
  +    [Facebook Zstd], [zstd],
  +    [zstd], [ZSTD_versionNumber], [zstd.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(COVER_optimizeTrainFromBuffer)
  +        AC_CHECK_FUNCS(COVER_trainFromBuffer)
  +        AC_CHECK_FUNCS(ZBUFF_compressContinue)
  +        AC_CHECK_FUNCS(ZBUFF_compressEnd)
  +        AC_CHECK_FUNCS(ZBUFF_compressFlush)
  +        AC_CHECK_FUNCS(ZBUFF_compressInit)
  +        AC_CHECK_FUNCS(ZBUFF_compressInit_advanced)
  +        AC_CHECK_FUNCS(ZBUFF_compressInitDictionary)
  +        AC_CHECK_FUNCS(ZBUFF_createCCtx)
  +        AC_CHECK_FUNCS(ZBUFF_createCCtx_advanced)
  +        AC_CHECK_FUNCS(ZBUFF_createDCtx)
  +        AC_CHECK_FUNCS(ZBUFF_createDCtx_advanced)
  +        AC_CHECK_FUNCS(ZBUFF_decompressContinue)
  +        AC_CHECK_FUNCS(ZBUFF_decompressInit)
  +        AC_CHECK_FUNCS(ZBUFF_decompressInitDictionary)
  +        AC_CHECK_FUNCS(ZBUFF_freeCCtx)
  +        AC_CHECK_FUNCS(ZBUFF_freeDCtx)
  +        AC_CHECK_FUNCS(ZBUFF_getErrorName)
  +        AC_CHECK_FUNCS(ZBUFF_isError)
  +        AC_CHECK_FUNCS(ZBUFF_recommendedCInSize)
  +        AC_CHECK_FUNCS(ZBUFF_recommendedCOutSize)
  +        AC_CHECK_FUNCS(ZBUFF_recommendedDInSize)
  +        AC_CHECK_FUNCS(ZBUFF_recommendedDOutSize)
  +        AC_CHECK_FUNCS(ZDICT_addEntropyTablesFromBuffer)
  +        AC_CHECK_FUNCS(ZDICT_finalizeDictionary)
  +        AC_CHECK_FUNCS(ZDICT_getDictID)
  +        AC_CHECK_FUNCS(ZDICT_getErrorName)
  +        AC_CHECK_FUNCS(ZDICT_isError)
  +        AC_CHECK_FUNCS(ZDICT_trainFromBuffer)
  +        AC_CHECK_FUNCS(ZDICT_trainFromBuffer_advanced)
  +        AC_CHECK_FUNCS(ZSTD_adjustCParams)
  +        AC_CHECK_FUNCS(ZSTD_checkCParams)
  +        AC_CHECK_FUNCS(ZSTD_compress)
  +        AC_CHECK_FUNCS(ZSTD_compress_advanced)
  +        AC_CHECK_FUNCS(ZSTD_compressBegin)
  +        AC_CHECK_FUNCS(ZSTD_compressBegin_advanced)
  +        AC_CHECK_FUNCS(ZSTD_compressBegin_usingCDict)
  +        AC_CHECK_FUNCS(ZSTD_compressBegin_usingCDict_advanced)
  +        AC_CHECK_FUNCS(ZSTD_compressBegin_usingDict)
  +        AC_CHECK_FUNCS(ZSTD_compressBlock)
  +        AC_CHECK_FUNCS(ZSTD_compressBound)
  +        AC_CHECK_FUNCS(ZSTD_compressCCtx)
  +        AC_CHECK_FUNCS(ZSTD_compressContinue)
  +        AC_CHECK_FUNCS(ZSTD_compressEnd)
  +        AC_CHECK_FUNCS(ZSTD_compressStream)
  +        AC_CHECK_FUNCS(ZSTD_compress_usingCDict)
  +        AC_CHECK_FUNCS(ZSTD_compress_usingCDict_advanced)
  +        AC_CHECK_FUNCS(ZSTD_compress_usingDict)
  +        AC_CHECK_FUNCS(ZSTD_copyCCtx)
  +        AC_CHECK_FUNCS(ZSTD_copyDCtx)
  +        AC_CHECK_FUNCS(ZSTD_createCCtx)
  +        AC_CHECK_FUNCS(ZSTD_createCCtx_advanced)
  +        AC_CHECK_FUNCS(ZSTD_createCDict)
  +        AC_CHECK_FUNCS(ZSTD_createCDict_advanced)
  +        AC_CHECK_FUNCS(ZSTD_createCDict_byReference)
  +        AC_CHECK_FUNCS(ZSTD_createCStream)
  +        AC_CHECK_FUNCS(ZSTD_createCStream_advanced)
  +        AC_CHECK_FUNCS(ZSTD_createDCtx)
  +        AC_CHECK_FUNCS(ZSTD_createDCtx_advanced)
  +        AC_CHECK_FUNCS(ZSTD_createDDict)
  +        AC_CHECK_FUNCS(ZSTD_createDDict_advanced)
  +        AC_CHECK_FUNCS(ZSTD_createDDict_byReference)
  +        AC_CHECK_FUNCS(ZSTD_createDStream)
  +        AC_CHECK_FUNCS(ZSTD_createDStream_advanced)
  +        AC_CHECK_FUNCS(ZSTD_CStreamInSize)
  +        AC_CHECK_FUNCS(ZSTD_CStreamOutSize)
  +        AC_CHECK_FUNCS(ZSTD_decompress)
  +        AC_CHECK_FUNCS(ZSTD_decompressBegin)
  +        AC_CHECK_FUNCS(ZSTD_decompressBegin_usingDDict)
  +        AC_CHECK_FUNCS(ZSTD_decompressBegin_usingDict)
  +        AC_CHECK_FUNCS(ZSTD_decompressBlock)
  +        AC_CHECK_FUNCS(ZSTD_decompressContinue)
  +        AC_CHECK_FUNCS(ZSTD_decompressDCtx)
  +        AC_CHECK_FUNCS(ZSTD_decompressStream)
  +        AC_CHECK_FUNCS(ZSTD_decompress_usingDDict)
  +        AC_CHECK_FUNCS(ZSTD_decompress_usingDict)
  +        AC_CHECK_FUNCS(ZSTD_DStreamInSize)
  +        AC_CHECK_FUNCS(ZSTD_DStreamOutSize)
  +        AC_CHECK_FUNCS(ZSTD_endStream)
  +        AC_CHECK_FUNCS(ZSTD_estimateCCtxSize)
  +        AC_CHECK_FUNCS(ZSTD_estimateCDictSize)
  +        AC_CHECK_FUNCS(ZSTD_estimateCStreamSize)
  +        AC_CHECK_FUNCS(ZSTD_estimateDCtxSize)
  +        AC_CHECK_FUNCS(ZSTD_estimateDDictSize)
  +        AC_CHECK_FUNCS(ZSTD_estimateDStreamSize)
  +        AC_CHECK_FUNCS(ZSTD_findDecompressedSize)
  +        AC_CHECK_FUNCS(ZSTD_findFrameCompressedSize)
  +        AC_CHECK_FUNCS(ZSTD_flushStream)
  +        AC_CHECK_FUNCS(ZSTD_freeCCtx)
  +        AC_CHECK_FUNCS(ZSTD_freeCDict)
  +        AC_CHECK_FUNCS(ZSTD_freeCStream)
  +        AC_CHECK_FUNCS(ZSTD_freeDCtx)
  +        AC_CHECK_FUNCS(ZSTD_freeDDict)
  +        AC_CHECK_FUNCS(ZSTD_freeDStream)
  +        AC_CHECK_FUNCS(ZSTD_getBlockSizeMax)
  +        AC_CHECK_FUNCS(ZSTD_getCParams)
  +        AC_CHECK_FUNCS(ZSTD_getDecompressedSize)
  +        AC_CHECK_FUNCS(ZSTD_getDictID_fromDDict)
  +        AC_CHECK_FUNCS(ZSTD_getDictID_fromDict)
  +        AC_CHECK_FUNCS(ZSTD_getDictID_fromFrame)
  +        AC_CHECK_FUNCS(ZSTD_getErrorCode)
  +        AC_CHECK_FUNCS(ZSTD_getErrorName)
  +        AC_CHECK_FUNCS(ZSTD_getErrorString)
  +        AC_CHECK_FUNCS(ZSTD_getFrameContentSize)
  +        AC_CHECK_FUNCS(ZSTD_getFrameHeader)
  +        AC_CHECK_FUNCS(ZSTD_getParams)
  +        AC_CHECK_FUNCS(ZSTD_initCStream)
  +        AC_CHECK_FUNCS(ZSTD_initCStream_advanced)
  +        AC_CHECK_FUNCS(ZSTD_initCStream_srcSize)
  +        AC_CHECK_FUNCS(ZSTD_initCStream_usingCDict)
  +        AC_CHECK_FUNCS(ZSTD_initCStream_usingCDict_advanced)
  +        AC_CHECK_FUNCS(ZSTD_initCStream_usingDict)
  +        AC_CHECK_FUNCS(ZSTD_initDStream)
  +        AC_CHECK_FUNCS(ZSTD_initDStream_usingDDict)
  +        AC_CHECK_FUNCS(ZSTD_initDStream_usingDict)
  +        AC_CHECK_FUNCS(ZSTD_insertBlock)
  +        AC_CHECK_FUNCS(ZSTD_isError)
  +        AC_CHECK_FUNCS(ZSTD_isFrame)
  +        AC_CHECK_FUNCS(ZSTD_maxCLevel)
  +        AC_CHECK_FUNCS(ZSTDMT_compressCCtx)
  +        AC_CHECK_FUNCS(ZSTDMT_compressStream)
  +        AC_CHECK_FUNCS(ZSTDMT_createCCtx)
  +        AC_CHECK_FUNCS(ZSTDMT_endStream)
  +        AC_CHECK_FUNCS(ZSTDMT_flushStream)
  +        AC_CHECK_FUNCS(ZSTDMT_freeCCtx)
  +        AC_CHECK_FUNCS(ZSTDMT_initCStream)
  +        AC_CHECK_FUNCS(ZSTDMT_initCStream_advanced)
  +        AC_CHECK_FUNCS(ZSTDMT_resetCStream)
  +        AC_CHECK_FUNCS(ZSTDMT_setMTCtxParameter)
  +        AC_CHECK_FUNCS(ZSTD_nextInputType)
  +        AC_CHECK_FUNCS(ZSTD_nextSrcSizeToDecompress)
  +        AC_CHECK_FUNCS(ZSTD_resetCStream)
  +        AC_CHECK_FUNCS(ZSTD_resetDStream)
  +        AC_CHECK_FUNCS(ZSTD_setCCtxParameter)
  +        AC_CHECK_FUNCS(ZSTD_setDStreamParameter)
  +        AC_CHECK_FUNCS(ZSTD_sizeof_CCtx)
  +        AC_CHECK_FUNCS(ZSTD_sizeof_CDict)
  +        AC_CHECK_FUNCS(ZSTD_sizeof_CStream)
  +        AC_CHECK_FUNCS(ZSTD_sizeof_DCtx)
  +        AC_CHECK_FUNCS(ZSTD_sizeof_DDict)
  +        AC_CHECK_FUNCS(ZSTD_sizeof_DStream)
  +        AC_CHECK_FUNCS(ZSTD_versionNumber)
  +        AC_CHECK_FUNCS(ZSTD_versionString)
  +    ], [])
  +
   dnl # BeeCrypt
   RPM_CHECK_LIB(
       [BeeCrypt], [beecrypt],
  @@ -4756,6 +4908,23 @@
       ], [])
   AC_SUBST(WITH_KEYUTILS_RPMKEY)
   
  +dnl # Linux libaio
  +RPM_CHECK_LIB(
  +    [Linux libaio], [libaio],
  +    [aio], [io_setup], [libaio.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_FUNCS(io_cancel)
  +        AC_CHECK_FUNCS(io_destroy)
  +        AC_CHECK_FUNCS(io_getevents)
  +        AC_CHECK_FUNCS(io_queue_init)
  +        AC_CHECK_FUNCS(io_queue_release)
  +        AC_CHECK_FUNCS(io_queue_run)
  +        AC_CHECK_FUNCS(io_queue_wait)
  +        AC_CHECK_FUNCS(io_setup)
  +        AC_CHECK_FUNCS(io_submit)
  +    ], [])
  +
   # later..
   dnl # CPUInfo
   RPM_CHECK_LIB(
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/psm.c
  ============================================================================
  $ cvs diff -u -r2.399.2.26 -r2.399.2.27 psm.c
  --- rpm/lib/psm.c     26 May 2017 20:49:25 -0000      2.399.2.26
  +++ rpm/lib/psm.c     30 May 2017 19:18:39 -0000      2.399.2.27
  @@ -2896,7 +2896,7 @@
       case PSM_RPMIO_FLAGS:
       {        const char * payload_compressor = NULL;
        const char * payload_format = NULL;
  -     char * t;
  +     char * te;
   
        he->tag = RPMTAG_PAYLOADCOMPRESSOR;
        xx = headerGet(fi->h, he, 0);
  @@ -2904,17 +2904,19 @@
        if (payload_compressor == NULL)
            payload_compressor = xstrdup("gzip");
   
  -     psm->rpmio_flags = t = (char *) xmalloc(sizeof("w9.gzdio"));
  -     *t = '\0';
  -     t = stpcpy(t, ((psm->goal == PSM_PKGSAVE) ? "w9" : "r"));
  +     psm->rpmio_flags = te = (char *) xmalloc(sizeof("w9.gzdio"));
  +     *te = '\0';
  +     te = stpcpy(te, ((psm->goal == PSM_PKGSAVE) ? "w9" : "r"));
        if (!strcmp(payload_compressor, "gzip"))
  -         t = stpcpy(t, ".gzdio");
  +         te = stpcpy(te, ".gzdio");
        if (!strcmp(payload_compressor, "bzip2"))
  -         t = stpcpy(t, ".bzdio");
  +         te = stpcpy(te, ".bzdio");
        if (!strcmp(payload_compressor, "lzma"))
  -         t = stpcpy(t, ".lzdio");
  +         te = stpcpy(te, ".lzdio");
        if (!strcmp(payload_compressor, "xz"))
  -         t = stpcpy(t, ".xzdio");
  +         te = stpcpy(te, ".xzdio");
  +     if (!strcmp(payload_compressor, "zstd"))
  +         te = stpcpy(te, ".zstio");
        payload_compressor = _free(payload_compressor);
   
        he->tag = RPMTAG_PAYLOADFORMAT;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmds.c
  ============================================================================
  $ cvs diff -u -r2.170.2.38 -r2.170.2.39 rpmds.c
  --- rpm/lib/rpmds.c   26 May 2017 20:49:25 -0000      2.170.2.38
  +++ rpm/lib/rpmds.c   30 May 2017 19:18:39 -0000      2.170.2.39
  @@ -1499,6 +1499,11 @@
       { "rpmlib(SetVersions)",         "4.0.4-alt98",
           (evrFlags)(RPMSENSE_RPMLIB|RPMSENSE_EQUAL),
       N_("dependencies support set/subset versions.") },
  +#if defined(WITH_ZSTD)
  +    { "rpmlib(PayloadIsZstd)",               "5.4.18-1",
  +     (evrFlags)(RPMSENSE_RPMLIB|RPMSENSE_EQUAL),
  +    N_("package payload can be compressed using zstd.") },
  +#endif
       { NULL,                          NULL, (evrFlags)0,      NULL }
   };
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/macros/macros.in
  ============================================================================
  $ cvs diff -u -r1.39.2.50 -r1.39.2.51 macros.in
  --- rpm/macros/macros.in      29 Jun 2016 12:17:58 -0000      1.39.2.50
  +++ rpm/macros/macros.in      30 May 2017 19:18:39 -0000      1.39.2.51
  @@ -1,7 +1,7 @@
   #/*! \page config_macros Default configuration: @USRLIBRPM@/macros
   # \verbatim
   #
  -# $Id: macros.in,v 1.39.2.50 2016/06/29 12:17:58 jbj Exp $
  +# $Id: macros.in,v 1.39.2.51 2017/05/30 19:18:39 jbj Exp $
   #
   # This is a global RPM configuration file. All changes made here will
   # be lost when the rpm package is upgraded. Any per-system configuration
  @@ -125,6 +125,7 @@
   %__unzip             @__UNZIP@
   %__vcheck            %{__perl} %{_rpmhome}/vcheck
   %__xz                        @__XZ@
  +%__zstd                      @__ZSTD@
   
   
#==============================================================================
   # ---- Required macros.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/librpmio.vers
  ============================================================================
  $ cvs diff -u -r2.199.2.82 -r2.199.2.83 librpmio.vers
  --- rpm/rpmio/librpmio.vers   29 May 2017 16:21:00 -0000      2.199.2.82
  +++ rpm/rpmio/librpmio.vers   30 May 2017 19:18:38 -0000      2.199.2.83
  @@ -1025,6 +1025,7 @@
       yarnRelease;
       yarnTwist;
       yarnWaitFor;
  +    zstio;
       bcon_append;
       bcon_append_ctx;
       bcon_append_ctx_init;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/macro.c
  ============================================================================
  $ cvs diff -u -r2.249.2.46 -r2.249.2.47 macro.c
  --- rpm/rpmio/macro.c 26 May 2017 20:49:22 -0000      2.249.2.46
  +++ rpm/rpmio/macro.c 30 May 2017 19:18:38 -0000      2.249.2.47
  @@ -1309,6 +1309,9 @@
        case 9: /* COMPRESSED_7ZIP */
            sprintf(be, "%%__7zip x %s", b);
            break;
  +     case 10: /* COMPRESSED_ZSTD */
  +         sprintf(be, "%%__zstd -dc %s", b);
  +         break;
        }
        b = be;
       } else if (STREQ("mkstemp", f, fn)) {
  @@ -3430,10 +3433,14 @@
        *compressed = COMPRESSED_LZMA;
        return 0;
       } else
  -    if (file_len > 4 && strcasecmp(file+file_len-3, ".xz") == 0) {
  +    if (file_len > 3 && strcasecmp(file+file_len-3, ".xz") == 0) {
        *compressed = COMPRESSED_XZ;
        return 0;
       } else
  +    if (file_len > 4 && strcasecmp(file+file_len-4, ".zst") == 0) {
  +     *compressed = COMPRESSED_ZSTD;
  +     return 0;
  +    } else
       if ((file_len > 4 && strcasecmp(file+file_len-4, ".tgz") == 0)
        || (file_len > 3 && strcasecmp(file+file_len-3, ".gz") == 0)
        || (file_len > 2 && strcasecmp(file+file_len-2, ".Z") == 0)) {
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.c
  ============================================================================
  $ cvs diff -u -r1.230.2.53 -r1.230.2.54 rpmio.c
  --- rpm/rpmio/rpmio.c 28 May 2017 18:01:53 -0000      1.230.2.53
  +++ rpm/rpmio/rpmio.c 30 May 2017 19:18:38 -0000      1.230.2.54
  @@ -39,10 +39,6 @@
   # include <netinet/in_systm.h>
   #endif
   
  -#if defined(WITH_XZ)
  -#include <lzma.h>
  -#endif
  -
   #include <rpmiotypes.h>
   #include <rpmmacro.h>                /* XXX rpmioAccess needs rpmCleanPath() 
*/
   
  @@ -221,6 +217,10 @@
        } else if (fps->io == xzdio) {
            sprintf(be, "XZD %p fdno %d", fps->fp, fps->fdno);
   #endif
  +#if defined(WITH_ZSTD)
  +     } else if (fps->io == zstio) {
  +         sprintf(be, "ZST %p fdno %d", fps->fp, fps->fdno);
  +#endif
   #if defined(WITH_MQ) || defined(WITH_MSQ)
        } else if (fps->io == msqio) {
            sprintf(be, "MSQ %p fdno %d", fps->fp, fps->fdno);
  @@ -2429,6 +2429,12 @@
       } else
   #endif
   
  +#if defined(WITH_ZSTD)
  +    if (fdGetIo(fd) == zstio) {
  +     errstr = (const char *)fd->errcookie;
  +    } else
  +#endif
  +
       {
        errstr = (fd->syserrno ? strerror(fd->syserrno) : "");
       }
  @@ -2834,6 +2840,11 @@
            iof = xzdio;
            fd = iof->_fdopen(fd, zstdio);
   #endif
  +#if defined(WITH_ZSTD)
  +     } else if (!strcmp(end, "zstio")) {
  +         iof = zstio;
  +         fd = iof->_fdopen(fd, zstdio);
  +#endif
   #if defined(WITH_MQ) || defined(WITH_MSQ)
        } else if (!strcmp(end, "msqio")) {
            iof = msqio;
  @@ -3027,6 +3038,10 @@
       if (vh && fdGetIo(fd) == xzdio && xzdio->_flush != NULL)
        return (*xzdio->_flush) ((void *)fd);
   #endif
  +#if defined(WITH_ZSTD)
  +    if (vh && fdGetIo(fd) == zstio && zstio->_flush != NULL)
  +     return (*bzdio->_flush) ((void *)fd);
  +#endif
   #if defined(WITH_MQ) || defined(WITH_MSQ)
       if (vh && fdGetIo(fd) == msqio && msqio->_flush != NULL)
        return (*msqio->_flush) ((void *)fd);
  @@ -3068,6 +3083,11 @@
            ec = (fd->syserrno  || fd->errcookie != NULL) ? -1 : 0;
            i--;        /* XXX fdio under xzdio always has fdno == -1 */
   #endif
  +#if defined(WITH_ZSTD)
  +     } else if (fps->io == zstio) {
  +         ec = (fd->syserrno  || fd->errcookie != NULL) ? -1 : 0;
  +         i--;        /* XXX fdio under zstio always has fdno == -1 */
  +#endif
   #if defined(WITH_MQ) || defined(WITH_MSQ)
        } else if (fps->io == msqio) {
            ec = (fd->syserrno  || fd->errcookie != NULL) ? -1 : 0;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.h
  ============================================================================
  $ cvs diff -u -r1.97.2.20 -r1.97.2.21 rpmio.h
  --- rpm/rpmio/rpmio.h 27 May 2017 14:22:18 -0000      1.97.2.20
  +++ rpm/rpmio/rpmio.h 30 May 2017 19:18:38 -0000      1.97.2.21
  @@ -713,6 +713,10 @@
   
   /**
    */
  +extern FDIO_t zstio;
  +
  +/**
  + */
   extern FDIO_t msqio;
   
   /*@}*/
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to