425 lines
14 KiB
Diff
425 lines
14 KiB
Diff
|
diff --git a/build/pack.c b/build/pack.c
|
||
|
index 523367b..c3b1245 100644
|
||
|
--- a/build/pack.c
|
||
|
+++ b/build/pack.c
|
||
|
@@ -379,13 +379,20 @@ rpmRC writeRPM(Header *hdrp, unsigned char ** pkgidp, const char *fileName,
|
||
|
|
||
|
if (strcmp(s+1, "gzdio") == 0) {
|
||
|
compr = "gzip";
|
||
|
+#if HAVE_BZLIB_H
|
||
|
} else if (strcmp(s+1, "bzdio") == 0) {
|
||
|
compr = "bzip2";
|
||
|
/* Add prereq on rpm version that understands bzip2 payloads */
|
||
|
(void) rpmlibNeedsFeature(h, "PayloadIsBzip2", "3.0.5-1");
|
||
|
+#endif
|
||
|
+#if HAVE_LZMA_H
|
||
|
+ } else if (strcmp(s+1, "xzdio") == 0) {
|
||
|
+ compr = "xz";
|
||
|
+ (void) rpmlibNeedsFeature(h, "PayloadIsXz", "5.2-1");
|
||
|
} else if (strcmp(s+1, "lzdio") == 0) {
|
||
|
compr = "lzma";
|
||
|
- (void) rpmlibNeedsFeature(h, "PayloadIsLzma", "4.4.90-1");
|
||
|
+ (void) rpmlibNeedsFeature(h, "PayloadIsLzma", "4.4.6-1");
|
||
|
+#endif
|
||
|
} else {
|
||
|
rpmlog(RPMLOG_ERR, _("Unknown payload compression: %s\n"),
|
||
|
rpmio_flags);
|
||
|
diff --git a/build/parsePrep.c b/build/parsePrep.c
|
||
|
index 52f192e..c14af1c 100644
|
||
|
--- a/build/parsePrep.c
|
||
|
+++ b/build/parsePrep.c
|
||
|
@@ -213,6 +213,9 @@ static char *doUntar(rpmSpec spec, uint32_t c, int quietly)
|
||
|
case COMPRESSED_LZMA:
|
||
|
t = "%{__lzma} -dc";
|
||
|
break;
|
||
|
+ case COMPRESSED_XZ:
|
||
|
+ t = "%{__xz} -dc";
|
||
|
+ break;
|
||
|
}
|
||
|
zipper = rpmGetPath(t, NULL);
|
||
|
if (needtar) {
|
||
|
diff --git a/configure.ac b/configure.ac
|
||
|
index a72dd3b..3c84b65 100644
|
||
|
--- a/configure.ac
|
||
|
+++ b/configure.ac
|
||
|
@@ -155,6 +155,7 @@ AC_SUBST(__ID_U)
|
||
|
|
||
|
AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
|
||
|
AC_PATH_PROG(__LZMA, lzma, /usr/bin/lzma, $MYPATH)
|
||
|
+AC_PATH_PROG(__XZ, xz, /usr/bin/xz, $MYPATH)
|
||
|
AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
|
||
|
AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
|
||
|
AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
|
||
|
@@ -224,7 +225,7 @@ AC_SUBST(WITH_BZ2_LIB)
|
||
|
# Check for lzma library.
|
||
|
|
||
|
AC_CHECK_HEADERS([lzma.h],[
|
||
|
- AC_CHECK_LIB(lzma, lzma_auto_decoder, [WITH_LZMA_LIB=-llzma])
|
||
|
+ AC_CHECK_LIB(lzma, lzma_easy_encoder, [WITH_LZMA_LIB=-llzma])
|
||
|
])
|
||
|
AC_SUBST(WITH_LZMA_LIB)
|
||
|
|
||
|
diff --git a/lib/psm.c b/lib/psm.c
|
||
|
index 9070c6d..d476d14 100644
|
||
|
--- a/lib/psm.c
|
||
|
+++ b/lib/psm.c
|
||
|
@@ -1706,6 +1706,8 @@ assert(psm->mi == NULL);
|
||
|
psm->rpmio_flags = "r.gzdio";
|
||
|
if (!strcmp(payload_compressor, "bzip2"))
|
||
|
psm->rpmio_flags = "r.bzdio";
|
||
|
+ if (!strcmp(payload_compressor, "xz"))
|
||
|
+ psm->rpmio_flags = "r.xzdio";
|
||
|
if (!strcmp(payload_compressor, "lzma"))
|
||
|
psm->rpmio_flags = "r.lzdio";
|
||
|
rpmtdFreeData(&pc);
|
||
|
diff --git a/lib/rpmds.c b/lib/rpmds.c
|
||
|
index 6b59a6c..4f4b0cd 100644
|
||
|
--- a/lib/rpmds.c
|
||
|
+++ b/lib/rpmds.c
|
||
|
@@ -984,9 +984,14 @@ static const struct rpmlibProvides_s rpmlibProvides[] = {
|
||
|
(RPMSENSE_RPMLIB|RPMSENSE_EQUAL),
|
||
|
N_("package payload can be compressed using bzip2.") },
|
||
|
#endif
|
||
|
- { "rpmlib(PayloadIsLzma)", "4.4.90-1",
|
||
|
+#if HAVE_LZMA_H
|
||
|
+ { "rpmlib(PayloadIsXz)", "5.2-1",
|
||
|
+ (RPMSENSE_RPMLIB|RPMSENSE_EQUAL),
|
||
|
+ N_("package payload can be compressed using xz.") },
|
||
|
+ { "rpmlib(PayloadIsLzma)", "4.4.2-1",
|
||
|
(RPMSENSE_RPMLIB|RPMSENSE_EQUAL),
|
||
|
N_("package payload can be compressed using lzma.") },
|
||
|
+#endif
|
||
|
{ "rpmlib(PayloadFilesHavePrefix)", "4.0-1",
|
||
|
(RPMSENSE_RPMLIB|RPMSENSE_EQUAL),
|
||
|
N_("package payload file(s) have \"./\" prefix.") },
|
||
|
diff --git a/macros.in b/macros.in
|
||
|
index 28a048c..d0a4208 100644
|
||
|
--- a/macros.in
|
||
|
+++ b/macros.in
|
||
|
@@ -47,6 +47,7 @@
|
||
|
%__install @__INSTALL@
|
||
|
%__ln_s @LN_S@
|
||
|
%__lzma @__LZMA@
|
||
|
+%__xz @__XZ@
|
||
|
%__make @__MAKE@
|
||
|
%__mkdir @__MKDIR@
|
||
|
%__mkdir_p @MKDIR_P@
|
||
|
@@ -322,7 +323,8 @@ package or when debugging this package.\
|
||
|
# Compression type and level for source/binary package payloads.
|
||
|
# "w9.gzdio" gzip level 9 (default).
|
||
|
# "w9.bzdio" bzip2 level 9.
|
||
|
-# "w7.lzdio" lzma level 7, lzma's default.
|
||
|
+# "w7.xzdio" xz level 7, xz's default.
|
||
|
+# "w7.lzdio" lzma-alone level 7, lzma's default
|
||
|
#
|
||
|
#%_source_payload w9.gzdio
|
||
|
#%_binary_payload w9.gzdio
|
||
|
diff --git a/rpm2cpio.c b/rpm2cpio.c
|
||
|
index 6674a72..eabefa1 100644
|
||
|
--- a/rpm2cpio.c
|
||
|
+++ b/rpm2cpio.c
|
||
|
@@ -78,6 +78,8 @@ int main(int argc, char *argv[])
|
||
|
rpmio_flags = "r.gzdio";
|
||
|
if (!strcmp(payload_compressor, "bzip2"))
|
||
|
rpmio_flags = "r.bzdio";
|
||
|
+ if (!strcmp(payload_compressor, "xz"))
|
||
|
+ rpmio_flags = "r.xzdio";
|
||
|
if (!strcmp(payload_compressor, "lzma"))
|
||
|
rpmio_flags = "r.lzdio";
|
||
|
rpmtdFreeData(&pc);
|
||
|
diff --git a/rpmio/macro.c b/rpmio/macro.c
|
||
|
index d1cbf93..9e7c3a5 100644
|
||
|
--- a/rpmio/macro.c
|
||
|
+++ b/rpmio/macro.c
|
||
|
@@ -981,6 +981,9 @@ doFoo(MacroBuf mb, int negate, const char * f, size_t fn,
|
||
|
case COMPRESSED_LZMA:
|
||
|
sprintf(be, "%%__lzma -dc %s", b);
|
||
|
break;
|
||
|
+ case COMPRESSED_XZ:
|
||
|
+ sprintf(be, "%%__xz -dc %s", b);
|
||
|
+ break;
|
||
|
}
|
||
|
b = be;
|
||
|
} else if (STREQ("S", f, fn)) {
|
||
|
diff --git a/rpmio/rpmfileutil.c b/rpmio/rpmfileutil.c
|
||
|
index de326e6..8286647 100644
|
||
|
--- a/rpmio/rpmfileutil.c
|
||
|
+++ b/rpmio/rpmfileutil.c
|
||
|
@@ -353,11 +353,11 @@ int rpmFileIsCompressed(const char * file, rpmCompressedMagic * compressed)
|
||
|
} else if ((magic[0] == 0120) && (magic[1] == 0113) &&
|
||
|
(magic[2] == 0003) && (magic[3] == 0004)) { /* pkzip */
|
||
|
*compressed = COMPRESSED_ZIP;
|
||
|
- } else if ((magic[0] == 0xff) && (magic[1] == 0x4c) &&
|
||
|
- (magic[2] == 0x5a) && (magic[3] == 0x4d) &&
|
||
|
- (magic[4] == 0x41) && (magic[5] == 0x00)) {
|
||
|
- /* new style lzma with magic */
|
||
|
- *compressed = COMPRESSED_LZMA;
|
||
|
+ } else if ((magic[0] == 0xfd) && (magic[1] == 0x37) &&
|
||
|
+ (magic[2] == 0x7a) && (magic[3] == 0x58) &&
|
||
|
+ (magic[4] == 0x5a) && (magic[5] == 0x00)) {
|
||
|
+ /* new style xz (lzma) with magic */
|
||
|
+ *compressed = COMPRESSED_XZ;
|
||
|
} else if (((magic[0] == 0037) && (magic[1] == 0213)) || /* gzip */
|
||
|
((magic[0] == 0037) && (magic[1] == 0236)) || /* old gzip */
|
||
|
((magic[0] == 0037) && (magic[1] == 0036)) || /* pack */
|
||
|
diff --git a/rpmio/rpmfileutil.h b/rpmio/rpmfileutil.h
|
||
|
index 7f92cbc..c39abf1 100644
|
||
|
--- a/rpmio/rpmfileutil.h
|
||
|
+++ b/rpmio/rpmfileutil.h
|
||
|
@@ -22,7 +22,8 @@ typedef enum rpmCompressedMagic_e {
|
||
|
COMPRESSED_OTHER = 1, /*!< gzip can handle */
|
||
|
COMPRESSED_BZIP2 = 2, /*!< bzip2 can handle */
|
||
|
COMPRESSED_ZIP = 3, /*!< unzip can handle */
|
||
|
- COMPRESSED_LZMA = 4 /*!< lzma can handle */
|
||
|
+ COMPRESSED_LZMA = 4, /*!< lzma can handle */
|
||
|
+ COMPRESSED_XZ = 5 /*!< xz can handle */
|
||
|
} rpmCompressedMagic;
|
||
|
|
||
|
/** \ingroup rpmfileutil
|
||
|
diff --git a/rpmio/rpmio.c b/rpmio/rpmio.c
|
||
|
index be9e99d..78a86c8 100644
|
||
|
--- a/rpmio/rpmio.c
|
||
|
+++ b/rpmio/rpmio.c
|
||
|
@@ -36,7 +36,7 @@ extern int h_errno;
|
||
|
#define FDONLY(fd) assert(fdGetIo(fd) == fdio)
|
||
|
#define GZDONLY(fd) assert(fdGetIo(fd) == gzdio)
|
||
|
#define BZDONLY(fd) assert(fdGetIo(fd) == bzdio)
|
||
|
-#define LZDONLY(fd) assert(fdGetIo(fd) == lzdio)
|
||
|
+#define LZDONLY(fd) assert(fdGetIo(fd) == xzdio || fdGetIo(fd) == lzdio)
|
||
|
|
||
|
#define UFDONLY(fd) /* assert(fdGetIo(fd) == ufdio) */
|
||
|
|
||
|
@@ -91,6 +91,7 @@ static const FDIO_t fpio;
|
||
|
static const FDIO_t ufdio;
|
||
|
static const FDIO_t gzdio;
|
||
|
static const FDIO_t bzdio;
|
||
|
+static const FDIO_t xzdio;
|
||
|
static const FDIO_t lzdio;
|
||
|
|
||
|
/**
|
||
|
@@ -140,6 +141,8 @@ static const char * fdbg(FD_t fd)
|
||
|
sprintf(be, "BZD %p fdno %d", fps->fp, fps->fdno);
|
||
|
#endif
|
||
|
#if HAVE_LZMA_H
|
||
|
+ } else if (fps->io == xzdio) {
|
||
|
+ sprintf(be, "XZD %p fdno %d", fps->fp, fps->fdno);
|
||
|
} else if (fps->io == lzdio) {
|
||
|
sprintf(be, "LZD %p fdno %d", fps->fp, fps->fdno);
|
||
|
#endif
|
||
|
@@ -1158,7 +1161,7 @@ static const char * getFdErrstr (FD_t fd)
|
||
|
} else
|
||
|
#endif /* HAVE_BZLIB_H */
|
||
|
#ifdef HAVE_LZMA_H
|
||
|
- if (fdGetIo(fd) == lzdio) {
|
||
|
+ if (fdGetIo(fd) == xzdio || fdGetIo(fd) == lzdio) {
|
||
|
errstr = fd->errcookie;
|
||
|
} else
|
||
|
#endif /* HAVE_LZMA_H */
|
||
|
@@ -1194,13 +1197,14 @@ typedef struct lzfile {
|
||
|
|
||
|
} LZFILE;
|
||
|
|
||
|
-static LZFILE *lzopen_internal(const char *path, const char *mode, int fd)
|
||
|
+static LZFILE *lzopen_internal(const char *path, const char *mode, int fd, int xz)
|
||
|
{
|
||
|
- int level = 5;
|
||
|
+ int level = 7; /* Use XZ's default compression level if unspecified */
|
||
|
int encoding = 0;
|
||
|
FILE *fp;
|
||
|
LZFILE *lzfile;
|
||
|
lzma_ret ret;
|
||
|
+ lzma_stream init_strm = LZMA_STREAM_INIT;
|
||
|
|
||
|
for (; *mode; mode++) {
|
||
|
if (*mode == 'w')
|
||
|
@@ -1221,17 +1225,21 @@ static LZFILE *lzopen_internal(const char *path, const char *mode, int fd)
|
||
|
fclose(fp);
|
||
|
return 0;
|
||
|
}
|
||
|
+
|
||
|
lzfile->file = fp;
|
||
|
lzfile->encoding = encoding;
|
||
|
lzfile->eof = 0;
|
||
|
- lzfile->strm = LZMA_STREAM_INIT_VAR;
|
||
|
+ lzfile->strm = init_strm;
|
||
|
if (encoding) {
|
||
|
- lzma_options_alone alone;
|
||
|
- alone.uncompressed_size = LZMA_VLI_VALUE_UNKNOWN;
|
||
|
- memcpy(&alone.lzma, &lzma_preset_lzma[level - 1], sizeof(alone.lzma));
|
||
|
- ret = lzma_alone_encoder(&lzfile->strm, &alone);
|
||
|
- } else {
|
||
|
- ret = lzma_auto_decoder(&lzfile->strm, 0, 0);
|
||
|
+ if (xz) {
|
||
|
+ ret = lzma_easy_encoder(&lzfile->strm, level, LZMA_CHECK_SHA256);
|
||
|
+ } else {
|
||
|
+ lzma_options_lzma options;
|
||
|
+ lzma_lzma_preset(&options, level);
|
||
|
+ ret = lzma_alone_encoder(&lzfile->strm, &options);
|
||
|
+ }
|
||
|
+ } else { /* lzma_easy_decoder_memusage(level) is not ready yet, use hardcoded limit for now */
|
||
|
+ ret = lzma_auto_decoder(&lzfile->strm, 100<<20, 0);
|
||
|
}
|
||
|
if (ret != LZMA_OK) {
|
||
|
fclose(fp);
|
||
|
@@ -1241,16 +1249,28 @@ static LZFILE *lzopen_internal(const char *path, const char *mode, int fd)
|
||
|
return lzfile;
|
||
|
}
|
||
|
|
||
|
+static LZFILE *xzopen(const char *path, const char *mode)
|
||
|
+{
|
||
|
+ return lzopen_internal(path, mode, -1, 1);
|
||
|
+}
|
||
|
+
|
||
|
+static LZFILE *xzdopen(int fd, const char *mode)
|
||
|
+{
|
||
|
+ if (fd < 0)
|
||
|
+ return 0;
|
||
|
+ return lzopen_internal(0, mode, fd, 1);
|
||
|
+}
|
||
|
+
|
||
|
static LZFILE *lzopen(const char *path, const char *mode)
|
||
|
{
|
||
|
- return lzopen_internal(path, mode, -1);
|
||
|
+ return lzopen_internal(path, mode, -1, 0);
|
||
|
}
|
||
|
|
||
|
static LZFILE *lzdopen(int fd, const char *mode)
|
||
|
{
|
||
|
if (fd < 0)
|
||
|
return 0;
|
||
|
- return lzopen_internal(0, mode, fd);
|
||
|
+ return lzopen_internal(0, mode, fd, 0);
|
||
|
}
|
||
|
|
||
|
static int lzflush(LZFILE *lzfile)
|
||
|
@@ -1352,7 +1372,7 @@ static inline void * lzdFileno(FD_t fd)
|
||
|
FDSANE(fd);
|
||
|
for (i = fd->nfps; i >= 0; i--) {
|
||
|
FDSTACK_t * fps = &fd->fps[i];
|
||
|
- if (fps->io != lzdio)
|
||
|
+ if (fps->io != xzdio && fps->io != lzdio)
|
||
|
continue;
|
||
|
rc = fps->fp;
|
||
|
break;
|
||
|
@@ -1361,6 +1381,33 @@ static inline void * lzdFileno(FD_t fd)
|
||
|
return rc;
|
||
|
}
|
||
|
|
||
|
+static FD_t xzdOpen(const char * path, const char * mode)
|
||
|
+{
|
||
|
+ FD_t fd;
|
||
|
+ LZFILE *lzfile;
|
||
|
+ if ((lzfile = xzopen(path, mode)) == NULL)
|
||
|
+ return NULL;
|
||
|
+ fd = fdNew("open (xzdOpen)");
|
||
|
+ fdPop(fd); fdPush(fd, xzdio, lzfile, -1);
|
||
|
+ return fdLink(fd, "xzdOpen");
|
||
|
+}
|
||
|
+
|
||
|
+static FD_t xzdFdopen(void * cookie, const char * fmode)
|
||
|
+{
|
||
|
+ FD_t fd = c2f(cookie);
|
||
|
+ int fdno;
|
||
|
+ LZFILE *lzfile;
|
||
|
+
|
||
|
+ if (fmode == NULL) return NULL;
|
||
|
+ fdno = fdFileno(fd);
|
||
|
+ fdSetFdno(fd, -1); /* XXX skip the fdio close */
|
||
|
+ if (fdno < 0) return NULL;
|
||
|
+ lzfile = xzdopen(fdno, fmode);
|
||
|
+ if (lzfile == NULL) return NULL;
|
||
|
+ fdPush(fd, xzdio, lzfile, fdno);
|
||
|
+ return fdLink(fd, "xzdFdopen");
|
||
|
+}
|
||
|
+
|
||
|
static FD_t lzdOpen(const char * path, const char * mode)
|
||
|
{
|
||
|
FD_t fd;
|
||
|
@@ -1368,7 +1415,7 @@ static FD_t lzdOpen(const char * path, const char * mode)
|
||
|
if ((lzfile = lzopen(path, mode)) == NULL)
|
||
|
return NULL;
|
||
|
fd = fdNew("open (lzdOpen)");
|
||
|
- fdPop(fd); fdPush(fd, lzdio, lzfile, -1);
|
||
|
+ fdPop(fd); fdPush(fd, xzdio, lzfile, -1);
|
||
|
return fdLink(fd, "lzdOpen");
|
||
|
}
|
||
|
|
||
|
@@ -1384,7 +1431,7 @@ static FD_t lzdFdopen(void * cookie, const char * fmode)
|
||
|
if (fdno < 0) return NULL;
|
||
|
lzfile = lzdopen(fdno, fmode);
|
||
|
if (lzfile == NULL) return NULL;
|
||
|
- fdPush(fd, lzdio, lzfile, fdno);
|
||
|
+ fdPush(fd, xzdio, lzfile, fdno);
|
||
|
return fdLink(fd, "lzdFdopen");
|
||
|
}
|
||
|
|
||
|
@@ -1468,17 +1515,22 @@ static int lzdClose(void * cookie)
|
||
|
|
||
|
DBGIO(fd, (stderr, "==>\tlzdClose(%p) rc %lx %s\n", cookie, (unsigned long)rc, fdbg(fd)));
|
||
|
|
||
|
- if (_rpmio_debug || rpmIsDebug()) fdstat_print(fd, "LZDIO", stderr);
|
||
|
+ if (_rpmio_debug || rpmIsDebug()) fdstat_print(fd, "XZDIO", stderr);
|
||
|
if (rc == 0)
|
||
|
fd = fdFree(fd, "open (lzdClose)");
|
||
|
return rc;
|
||
|
}
|
||
|
|
||
|
+static struct FDIO_s xzdio_s = {
|
||
|
+ lzdRead, lzdWrite, lzdSeek, lzdClose, NULL, NULL, NULL, fdFileno,
|
||
|
+ NULL, xzdOpen, lzdFileno, lzdFlush
|
||
|
+};
|
||
|
+static const FDIO_t xzdio = &xzdio_s;
|
||
|
+
|
||
|
static struct FDIO_s lzdio_s = {
|
||
|
lzdRead, lzdWrite, lzdSeek, lzdClose, NULL, NULL, NULL, fdFileno,
|
||
|
NULL, lzdOpen, lzdFileno, lzdFlush
|
||
|
};
|
||
|
-
|
||
|
static const FDIO_t lzdio = &lzdio_s;
|
||
|
|
||
|
#endif /* HAVE_LZMA_H */
|
||
|
@@ -1716,6 +1768,9 @@ fprintf(stderr, "*** Fdopen(%p,%s) %s\n", fd, fmode, fdbg(fd));
|
||
|
fd = bzdFdopen(fd, zstdio);
|
||
|
#endif
|
||
|
#if HAVE_LZMA_H
|
||
|
+ } else if (!strcmp(end, "xzdio")) {
|
||
|
+ iof = xzdio;
|
||
|
+ fd = xzdFdopen(fd, zstdio);
|
||
|
} else if (!strcmp(end, "lzdio")) {
|
||
|
iof = lzdio;
|
||
|
fd = lzdFdopen(fd, zstdio);
|
||
|
@@ -1847,7 +1902,7 @@ int Fflush(FD_t fd)
|
||
|
return bzdFlush(vh);
|
||
|
#endif
|
||
|
#if HAVE_LZMA_H
|
||
|
- if (vh && fdGetIo(fd) == lzdio)
|
||
|
+ if (vh && (fdGetIo(fd) == xzdio || fdGetIo(fd) == lzdio))
|
||
|
return lzdFlush(vh);
|
||
|
#endif
|
||
|
/* FIXME: If we get here, something went wrong above */
|
||
|
@@ -1876,9 +1931,9 @@ int Ferror(FD_t fd)
|
||
|
i--; /* XXX fdio under bzdio always has fdno == -1 */
|
||
|
#endif
|
||
|
#if HAVE_LZMA_H
|
||
|
- } else if (fps->io == lzdio) {
|
||
|
+ } else if (fps->io == xzdio || fps->io == lzdio) {
|
||
|
ec = (fd->syserrno || fd->errcookie != NULL) ? -1 : 0;
|
||
|
- i--; /* XXX fdio under lzdio always has fdno == -1 */
|
||
|
+ i--; /* XXX fdio under xzdio/lzdio always has fdno == -1 */
|
||
|
#endif
|
||
|
} else {
|
||
|
/* XXX need to check ufdio/gzdio/bzdio/fdio errors correctly. */
|
||
|
diff --git a/rpmio/rpmio_internal.h b/rpmio/rpmio_internal.h
|
||
|
index 25c6d5b..a6a6252 100644
|
||
|
--- a/rpmio/rpmio_internal.h
|
||
|
+++ b/rpmio/rpmio_internal.h
|
||
|
@@ -53,7 +53,7 @@ struct _FD_s {
|
||
|
ssize_t bytesRemain; /* ufdio: */
|
||
|
|
||
|
int syserrno; /* last system errno encountered */
|
||
|
- const void *errcookie; /* gzdio/bzdio/ufdio: */
|
||
|
+ const void *errcookie; /* gzdio/bzdio/ufdio/xzdio: */
|
||
|
|
||
|
FDSTAT_t stats; /* I/O statistics */
|
||
|
|