Start abstracting compressed I/O.

CVS patchset: 2552
CVS date: 1998/11/22 19:48:48
This commit is contained in:
jbj 1998-11-22 19:48:48 +00:00
parent a15a36abd1
commit eb0436b4b2
22 changed files with 255 additions and 56 deletions

View File

@ -30,12 +30,12 @@ rpm_SOURCES = build.c checksig.c ftp.c install.c rpm.c url.c \
verify.c verify.c
rpm_LDADD = -lrpmbuild -lpopt -lrpm @LIBMISC@ rpm_LDADD = -lrpmbuild -lpopt -lrpm @LIBMISC@
rpm.o: rpm.c #rpm.o: rpm.c
$(COMPILE) \ # $(COMPILE) \
-DLOCALEDIR=\"$(LOCALEDIR)\" \ # -DLOCALEDIR=\"$(LOCALEDIR)\" \
-DLIBRPMALIAS_FILENAME=\"$(LIBRPMALIAS_FILENAME)\" \ # -DLIBRPMALIAS_FILENAME=\"$(LIBRPMALIAS_FILENAME)\" \
-DRPMCONFIGDIR="\"$(RPMCONFIGDIR)"\" \ # -DRPMCONFIGDIR="\"$(RPMCONFIGDIR)"\" \
-c $< # -c $<
include ./Makefile.inc include ./Makefile.inc

View File

@ -92,6 +92,7 @@ LIBRPMALIAS_FILENAME = @LIBRPMALIAS_FILENAME@
LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@ LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@
LIBS = @LIBS@ LIBS = @LIBS@
LN_S = @LN_S@ LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
MACROFILES = @MACROFILES@ MACROFILES = @MACROFILES@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MISCDIR = @MISCDIR@ MISCDIR = @MISCDIR@
@ -682,12 +683,12 @@ clean-generic maintainer-clean-generic clean mostlyclean distclean \
maintainer-clean maintainer-clean
rpm.o: rpm.c #rpm.o: rpm.c
$(COMPILE) \ # $(COMPILE) \
-DLOCALEDIR=\"$(LOCALEDIR)\" \ # -DLOCALEDIR=\"$(LOCALEDIR)\" \
-DLIBRPMALIAS_FILENAME=\"$(LIBRPMALIAS_FILENAME)\" \ # -DLIBRPMALIAS_FILENAME=\"$(LIBRPMALIAS_FILENAME)\" \
-DRPMCONFIGDIR="\"$(RPMCONFIGDIR)"\" \ # -DRPMCONFIGDIR="\"$(RPMCONFIGDIR)"\" \
-c $< # -c $<
include ./Makefile.inc include ./Makefile.inc

View File

@ -14,7 +14,7 @@ LIBRPMRC_FILENAME=$(RPMCONFIGDIR)/rpmrc
LIBRPMALIAS_FILENAME=$(RPMCONFIGDIR)/rpmpopt LIBRPMALIAS_FILENAME=$(RPMCONFIGDIR)/rpmpopt
MACROFILES=$(RPMCONFIGDIR)/macros MACROFILES=$(RPMCONFIGDIR)/macros
LOCALEDIR=@datadir@/locale LOCALEDIR=@LOCALEDIR@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
VERSION = @VERSION@ VERSION = @VERSION@

View File

@ -90,6 +90,9 @@
/* Define this to be whatever root's primary group is, in double quotes */ /* Define this to be whatever root's primary group is, in double quotes */
#undef ROOT_GROUP #undef ROOT_GROUP
/* Full path to rpm locale directory (usually /usr/share/locale) */
#undef LOCALEDIR
/* Full path to rpm configuration directory (usually /usr/lib/rpm) */ /* Full path to rpm configuration directory (usually /usr/lib/rpm) */
#undef RPMCONFIGDIR #undef RPMCONFIGDIR

View File

@ -92,6 +92,7 @@ LIBRPMALIAS_FILENAME = @LIBRPMALIAS_FILENAME@
LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@ LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@
LIBS = @LIBS@ LIBS = @LIBS@
LN_S = @LN_S@ LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
MACROFILES = @MACROFILES@ MACROFILES = @MACROFILES@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MISCDIR = @MISCDIR@ MISCDIR = @MISCDIR@

View File

@ -394,10 +394,10 @@ static int cpio_gzip(FD_t fdo, CSA_t *csa) {
char *failedFile; char *failedFile;
cfd->cpioIoType = cpioIoTypeGzFd; cfd->cpioIoType = cpioIoTypeGzFd;
cfd->cpioGzFd = gzdopen(dup(fdFileno(fdo)), "w9"); cfd->cpioGzFd = gzdFdopen(fdDup(fdFileno(fdo)), "w9");
rc = cpioBuildArchive(cfd, csa->cpioList, csa->cpioCount, NULL, NULL, rc = cpioBuildArchive(cfd, csa->cpioList, csa->cpioCount, NULL, NULL,
&csa->cpioArchiveSize, &failedFile); &csa->cpioArchiveSize, &failedFile);
gzclose(cfd->cpioGzFd); gzdClose(cfd->cpioGzFd);
if (rc) { if (rc) {
if (rc & CPIO_CHECK_ERRNO) if (rc & CPIO_CHECK_ERRNO)

View File

@ -320,6 +320,16 @@ for zlib in z gz ; do
) )
done done
BZ2LIB=
for bz2lib in bz2 ; do
AC_CHECK_LIB(${bz2lib}, bzread,
[LIBS="$LIBS -l${bz2lib}"; break],
[if test ${bz2lib} = bz2; then
AC_MSG_WARN([missing libbz2.a (from the bzip2 package)])
fi]
)
done
dnl XXX these are needed only by rpmgettext right now dnl XXX these are needed only by rpmgettext right now
AM_FUNC_ERROR_AT_LINE AM_FUNC_ERROR_AT_LINE
@ -344,6 +354,7 @@ AC_CHECK_HEADERS(netinet/in_systm.h)
AC_CHECK_HEADERS(machine/types.h) AC_CHECK_HEADERS(machine/types.h)
AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h) AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/vmount.h) AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/vmount.h)
AC_CHECK_HEADERS(bzlib.h libio.h zlib.h)
AC_C_BIGENDIAN AC_C_BIGENDIAN
AC_C_INLINE AC_C_INLINE
@ -583,6 +594,9 @@ if test -n "$LIBOBJS" ; then
MISCPATH=misc/libmisc.a MISCPATH=misc/libmisc.a
fi fi
LOCALEDIR="`echo ${prefix}/share/locale`"
AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR")
AC_SUBST(LOCALEDIR)
RPMCONFIGDIR="`echo ${prefix}/lib/rpm`" RPMCONFIGDIR="`echo ${prefix}/lib/rpm`"
AC_DEFINE_UNQUOTED(RPMCONFIGDIR, "$RPMCONFIGDIR") AC_DEFINE_UNQUOTED(RPMCONFIGDIR, "$RPMCONFIGDIR")
AC_SUBST(RPMCONFIGDIR) AC_SUBST(RPMCONFIGDIR)

View File

@ -92,6 +92,7 @@ LIBRPMALIAS_FILENAME = @LIBRPMALIAS_FILENAME@
LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@ LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@
LIBS = @LIBS@ LIBS = @LIBS@
LN_S = @LN_S@ LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
MACROFILES = @MACROFILES@ MACROFILES = @MACROFILES@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MISCDIR = @MISCDIR@ MISCDIR = @MISCDIR@

View File

@ -77,7 +77,7 @@ static inline off_t saferead(CFD_t *cfd, void * vbuf, size_t amount) {
nb *= amount; nb *= amount;
break; break;
case cpioIoTypeGzFd: case cpioIoTypeGzFd:
nb = gzread(cfd->cpioGzFd, buf, amount); nb = gzdRead(cfd->cpioGzFd, buf, amount);
break; break;
} }
if (nb <= 0) if (nb <= 0)
@ -132,7 +132,7 @@ static inline off_t safewrite(CFD_t *cfd, void * vbuf, size_t amount) {
nb *= amount; nb *= amount;
break; break;
case cpioIoTypeGzFd: case cpioIoTypeGzFd:
nb = gzwrite(cfd->cpioGzFd, buf, amount); nb = gzdWrite(cfd->cpioGzFd, buf, amount);
break; break;
} }
if (nb <= 0) if (nb <= 0)

View File

@ -60,7 +60,7 @@ typedef struct CFD {
#define cpioFd _cfdu._cfdu_fd #define cpioFd _cfdu._cfdu_fd
FILE * _cfdu_fp; FILE * _cfdu_fp;
#define cpioFp _cfdu._cfdu_fp #define cpioFp _cfdu._cfdu_fp
gzFile _cfdu_gzfd; FD_t _cfdu_gzfd;
#define cpioGzFd _cfdu._cfdu_gzfd #define cpioGzFd _cfdu._cfdu_gzfd
} _cfdu; } _cfdu;
int cpioPos; int cpioPos;

View File

@ -320,7 +320,7 @@ Header headerRead(FD_t fd, int magicp)
return h; return h;
} }
void headerGzWrite(gzFile fd, Header h, int magicp) void headerGzWrite(FD_t fd, Header h, int magicp)
{ {
void * p; void * p;
int length; int length;
@ -329,17 +329,17 @@ void headerGzWrite(gzFile fd, Header h, int magicp)
p = doHeaderUnload(h, &length); p = doHeaderUnload(h, &length);
if (magicp) { if (magicp) {
gzwrite(fd, header_magic, sizeof(header_magic)); gzdWrite(fd, header_magic, sizeof(header_magic));
l = htonl(0); l = htonl(0);
gzwrite(fd, &l, sizeof(l)); gzdWrite(fd, &l, sizeof(l));
} }
gzwrite(fd, p, length); gzdWrite(fd, p, length);
free(p); free(p);
} }
Header headerGzRead(gzFile fd, int magicp) Header headerGzRead(FD_t fd, int magicp)
{ {
int_32 reserved; int_32 reserved;
int_32 * p; int_32 * p;
@ -350,24 +350,24 @@ Header headerGzRead(gzFile fd, int magicp)
int totalSize; int totalSize;
if (magicp == HEADER_MAGIC_YES) { if (magicp == HEADER_MAGIC_YES) {
if (gzread(fd, &magic, sizeof(magic)) != sizeof(magic)) if (gzdRead(fd, &magic, sizeof(magic)) != sizeof(magic))
return NULL; return NULL;
if (memcmp(&magic, header_magic, sizeof(magic))) { if (memcmp(&magic, header_magic, sizeof(magic))) {
return NULL; return NULL;
} }
if (gzread(fd, &reserved, sizeof(reserved)) != sizeof(reserved)) if (gzdRead(fd, &reserved, sizeof(reserved)) != sizeof(reserved))
return NULL; return NULL;
} }
/* First read the index length (count of index entries) */ /* First read the index length (count of index entries) */
if (gzread(fd, &il, sizeof(il)) != sizeof(il)) if (gzdRead(fd, &il, sizeof(il)) != sizeof(il))
return NULL; return NULL;
il = ntohl(il); il = ntohl(il);
/* Then read the data length (number of bytes) */ /* Then read the data length (number of bytes) */
if (gzread(fd, &dl, sizeof(dl)) != sizeof(dl)) if (gzdRead(fd, &dl, sizeof(dl)) != sizeof(dl))
return NULL; return NULL;
dl = ntohl(dl); dl = ntohl(dl);
@ -380,7 +380,7 @@ Header headerGzRead(gzFile fd, int magicp)
*p++ = htonl(dl); *p++ = htonl(dl);
totalSize -= sizeof(int_32) + sizeof(int_32); totalSize -= sizeof(int_32) + sizeof(int_32);
if (gzread(fd, p, totalSize) != totalSize) if (gzdRead(fd, p, totalSize) != totalSize)
return NULL; return NULL;
h = headerLoad(block); h = headerLoad(block);

View File

@ -72,8 +72,8 @@ extern const struct headerSprintfExtension headerDefaultFormats[];
/* read and write a header from a file */ /* read and write a header from a file */
Header headerRead(FD_t fd, int magicp); Header headerRead(FD_t fd, int magicp);
void headerWrite(FD_t fd, Header h, int magicp); void headerWrite(FD_t fd, Header h, int magicp);
Header headerGzRead(gzFile fd, int magicp); Header headerGzRead(FD_t fd, int magicp);
void headerGzWrite(gzFile fd, Header h, int magicp); void headerGzWrite(FD_t fd, Header h, int magicp);
unsigned int headerSizeof(Header h, int magicp); unsigned int headerSizeof(Header h, int magicp);
#define HEADER_MAGIC_NO 0 #define HEADER_MAGIC_NO 0

View File

@ -1009,12 +1009,12 @@ static int installArchive(FD_t fd, struct fileInfo * files,
{ CFD_t cfdbuf, *cfd = &cfdbuf; { CFD_t cfdbuf, *cfd = &cfdbuf;
cfd->cpioIoType = cpioIoTypeGzFd; cfd->cpioIoType = cpioIoTypeGzFd;
cfd->cpioGzFd = gzdopen(fdFileno(fd), "r"); cfd->cpioGzFd = gzdFdopen(fd, "r"); /* XXX cpioGzFd == fd */
rc = cpioInstallArchive(cfd, map, mappedFiles, rc = cpioInstallArchive(cfd, map, mappedFiles,
((notify && archiveSize) || specFile) ? ((notify && archiveSize) || specFile) ?
callback : NULL, callback : NULL,
&info, &failedFile); &info, &failedFile);
gzclose(cfd->cpioGzFd); gzdClose(cfd->cpioGzFd);
} }
if (rc) { if (rc) {

View File

@ -5,6 +5,9 @@
typedef /*@abstract@*/ struct { typedef /*@abstract@*/ struct {
int fd_fd; int fd_fd;
void * fd_bzd;
void * fd_gzd;
} *FD_t; } *FD_t;
#ifdef __cplusplus #ifdef __cplusplus
@ -19,6 +22,8 @@ extern inline /*@null@*/ FD_t fdNew(void) {
if (fd == NULL) if (fd == NULL)
return NULL; return NULL;
fd->fd_fd = -1; fd->fd_fd = -1;
fd->fd_bzd = NULL;
fd->fd_gzd = NULL;
return fd; return fd;
} }
@ -54,9 +59,9 @@ extern inline /*@null@*/ FD_t fdDup(int fdno) {
return fd; return fd;
} }
extern inline ssize_t fdLseek(FD_t fd, off_t off, int op); extern inline off_t fdLseek(FD_t fd, off_t offset, int whence);
extern inline ssize_t fdLseek(FD_t fd, off_t off, int op) { extern inline off_t fdLseek(FD_t fd, off_t offset, int whence) {
return lseek(fdFileno(fd), off, op); return lseek(fdFileno(fd), offset, whence);
} }
extern inline ssize_t fdRead(FD_t fd, void * buf, size_t count); extern inline ssize_t fdRead(FD_t fd, void * buf, size_t count);
@ -94,6 +99,174 @@ extern inline /*@shared@*/ FILE *fdFdopen(/*@owned@*/ FD_t fd, const char *mode)
} }
/*@=mustfree*/ /*@=mustfree*/
/*
* Support for GZIP library.
*/
#ifdef HAVE_ZLIB_H
#include <zlib.h>
extern inline gzFile * gzdFileno(FD_t fd);
extern inline gzFile * gzdFileno(FD_t fd) {
return (fd != NULL ? ((gzFile *)fd->fd_gzd) : NULL);
}
extern inline /*@null@*/ FD_t gzdOpen(const char *pathname, const char *mode);
extern inline /*@null@*/ FD_t gzdOpen(const char *pathname, const char *mode) {
FD_t fd;
gzFile *gzfile;;
if ((gzfile = gzopen(pathname, mode)) == NULL)
return NULL;
fd = fdNew();
fd->fd_gzd = gzfile;
return fd;
}
extern inline /*@shared@*/ FD_t gzdFdopen(FD_t fd, const char *mode);
extern inline /*@shared@*/ FD_t gzdFdopen(FD_t fd, const char *mode) {
gzFile *gzfile = gzdopen(fdFileno(fd), mode);
if (gzfile != NULL) {
fd->fd_fd = -1;
fd->fd_gzd = gzfile;
return fd;
}
return NULL;
}
extern inline ssize_t gzdRead(FD_t fd, void * buf, size_t count);
extern inline ssize_t gzdRead(FD_t fd, void * buf, size_t count) {
return gzread(gzdFileno(fd), buf, count);
}
extern inline ssize_t gzdWrite(FD_t fd, const void * buf, size_t count);
extern inline ssize_t gzdWrite(FD_t fd, const void * buf, size_t count) {
return gzwrite(gzdFileno(fd), (void *)buf, count);
}
extern inline off_t gzdLseek(FD_t fd, off_t offset, int whence);
extern inline off_t gzdLseek(FD_t fd, off_t offset, int whence) {
return gzseek(gzdFileno(fd), offset, whence);
}
extern inline int gzdFlush(FD_t fd);
extern inline int gzdFlush(FD_t fd) {
return gzflush(gzdFileno(fd), Z_SYNC_FLUSH); /* XXX W2DO? */
}
extern inline char * gzdStrerror(FD_t fd);
extern inline char * gzdStrerror(FD_t fd) {
static char *zlib_err [] = {
"OK"
"Errno",
"Stream",
"Data",
"Memory",
"Buffer",
"Version"
};
int zerror;
gzerror(gzdFileno(fd), &zerror);
switch (zerror) {
case Z_ERRNO:
return strerror(errno);
break;
default:
break;
}
return zlib_err[-zerror];
}
extern inline int gzdClose(/*@only@*/ FD_t fd);
extern inline int gzdClose(/*@only@*/ FD_t fd) {
gzFile *gzfile;
int zerror;
if (fd != NULL && (gzfile = gzdFileno(fd)) != NULL) {
fd->fd_fd = -1;
fd->fd_bzd = NULL;
fd->fd_gzd = NULL;
free(fd);
zerror = gzclose(gzfile);
return 0;
}
return -2;
}
#endif /* HAVE_BZLIB_H */
/*
* Support for BZIP2 library.
*/
#ifdef HAVE_BZLIB_H
#include <bzlib.h>
extern inline BZFILE * bzdFileno(FD_t fd);
extern inline BZFILE * bzdFileno(FD_t fd) {
return (fd != NULL ? ((BZFILE *)fd->fd_bzd) : NULL);
}
extern inline /*@null@*/ FD_t bzdOpen(const char *pathname, const char *mode);
extern inline /*@null@*/ FD_t bzdOpen(const char *pathname, const char *mode) {
FD_t fd;
BZFILE *bzfile;;
if ((bzfile = bzopen(pathname, mode)) == NULL)
return NULL;
fd = fdNew();
fd->fd_bzd = bzfile;
return fd;
}
extern inline /*@shared@*/ FD_t bzdFdopen(FD_t fd, const char *mode);
extern inline /*@shared@*/ FD_t bzdFdopen(FD_t fd, const char *mode) {
BZFILE *bzfile = bzdopen(fdFileno(fd), mode);
if (bzfile != NULL) {
fd->fd_fd = -1;
fd->fd_bzd = bzfile;
return fd;
}
return NULL;
}
extern inline ssize_t bzdRead(FD_t fd, void * buf, size_t count);
extern inline ssize_t bzdRead(FD_t fd, void * buf, size_t count) {
return bzread(bzdFileno(fd), buf, count);
}
extern inline ssize_t bzdWrite(FD_t fd, const void * buf, size_t count);
extern inline ssize_t bzdWrite(FD_t fd, const void * buf, size_t count) {
return bzwrite(bzdFileno(fd), (void *)buf, count);
}
extern inline int bzdFlush(FD_t fd);
extern inline int bzdFlush(FD_t fd) {
return bzflush(bzdFileno(fd));
}
extern inline char * bzdStrerror(FD_t fd);
extern inline char * bzdStrerror(FD_t fd) {
int bzerr;
return (char *)bzerror(bzdFileno(fd), &bzerr);
}
extern inline int bzdClose(/*@only@*/ FD_t fd);
extern inline int bzdClose(/*@only@*/ FD_t fd) {
BZFILE *bzfile;
if (fd != NULL && (bzfile = bzdFileno(fd)) != NULL) {
fd->fd_fd = -1;
fd->fd_bzd = NULL;
fd->fd_gzd = NULL;
free(fd);
bzclose(bzfile);
return 0;
}
return -2;
}
#endif /* HAVE_BZLIB_H */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -92,6 +92,7 @@ LIBRPMALIAS_FILENAME = @LIBRPMALIAS_FILENAME@
LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@ LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@
LIBS = @LIBS@ LIBS = @LIBS@
LN_S = @LN_S@ LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
MACROFILES = @MACROFILES@ MACROFILES = @MACROFILES@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MISCDIR = @MISCDIR@ MISCDIR = @MISCDIR@

View File

@ -7,7 +7,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 1998-11-20 14:56-0500\n" "POT-Creation-Date: 1998-11-22 14:35-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -1353,11 +1353,11 @@ msgstr ""
msgid "error looking for package %s\n" msgid "error looking for package %s\n"
msgstr "" msgstr ""
#: ../rpm2cpio.c:39 #: ../rpm2cpio.c:42
msgid "argument is not an RPM package\n" msgid "argument is not an RPM package\n"
msgstr "" msgstr ""
#: ../rpm2cpio.c:42 #: ../rpm2cpio.c:46
msgid "error reading header from package\n" msgid "error reading header from package\n"
msgstr "" msgstr ""

View File

@ -43,7 +43,7 @@ mkdir -p $RPM_BUILD_ROOT/usr/src/redhat/BUILD
mkdir -p $RPM_BUILD_ROOT/usr/src/redhat/RPMS/${RPM_ARCH} mkdir -p $RPM_BUILD_ROOT/usr/src/redhat/RPMS/${RPM_ARCH}
mkdir -p $RPM_BUILD_ROOT/usr/src/redhat/RPMS/noarch mkdir -p $RPM_BUILD_ROOT/usr/src/redhat/RPMS/noarch
make installprefix="$RPM_BUILD_ROOT" install make DESTDIR="$RPM_BUILD_ROOT" install
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT

View File

@ -20,7 +20,7 @@ int main(int argc, char **argv)
int rc, isSource; int rc, isSource;
char buffer[1024]; char buffer[1024];
int ct; int ct;
gzFile stream; FD_t gzdi;
if (argc == 1) { if (argc == 1) {
fdi = fdDup(STDIN_FILENO); fdi = fdDup(STDIN_FILENO);
@ -35,32 +35,33 @@ int main(int argc, char **argv)
fdo = fdDup(STDOUT_FILENO); fdo = fdDup(STDOUT_FILENO);
rc = rpmReadPackageHeader(fdi, &hd, &isSource, NULL, NULL); rc = rpmReadPackageHeader(fdi, &hd, &isSource, NULL, NULL);
if (rc == 1) { switch (rc) {
case 0:
break;
case 1:
fprintf(stderr, _("argument is not an RPM package\n")); fprintf(stderr, _("argument is not an RPM package\n"));
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} else if (rc) { break;
default:
fprintf(stderr, _("error reading header from package\n")); fprintf(stderr, _("error reading header from package\n"));
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
break;
} }
stream = gzdopen(fdFileno(fdi), "r"); gzdi = gzdFdopen(fdi, "r"); /* XXX gzdi == fdi */
while ((ct = gzread(stream, &buffer, 1024)) > 0) { while ((ct = gzdRead(gzdi, &buffer, sizeof(buffer))) > 0) {
fdWrite(fdo, &buffer, ct); fdWrite(fdo, &buffer, ct);
} }
if (ct < 0){
int zerror; if (ct < 0) {
fprintf (stderr, "rpm2cpio: zlib: %s\n", gzdStrerror(gzdi));
gzerror (stream, &zerror); rc = EXIT_FAILURE;
if (zerror == Z_ERRNO){ } else {
perror ("While uncompressing"); rc = EXIT_SUCCESS;
gzclose(stream);
return 1;
}
fprintf (stderr, "rpm2cpio: zlib: %s error\n", zlib_err [-zerror - 1]);
} }
gzclose(stream); gzdClose(gzdi);
return 0; return rc;
} }

View File

@ -92,6 +92,7 @@ LIBRPMALIAS_FILENAME = @LIBRPMALIAS_FILENAME@
LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@ LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@
LIBS = @LIBS@ LIBS = @LIBS@
LN_S = @LN_S@ LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
MACROFILES = @MACROFILES@ MACROFILES = @MACROFILES@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MISCDIR = @MISCDIR@ MISCDIR = @MISCDIR@

View File

@ -90,6 +90,7 @@ LIBRPMALIAS_FILENAME = @LIBRPMALIAS_FILENAME@
LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@ LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@
LIBS = @LIBS@ LIBS = @LIBS@
LN_S = @LN_S@ LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
MACROFILES = @MACROFILES@ MACROFILES = @MACROFILES@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MISCDIR = @MISCDIR@ MISCDIR = @MISCDIR@

View File

@ -90,6 +90,7 @@ LIBRPMALIAS_FILENAME = @LIBRPMALIAS_FILENAME@
LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@ LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@
LIBS = @LIBS@ LIBS = @LIBS@
LN_S = @LN_S@ LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
MACROFILES = @MACROFILES@ MACROFILES = @MACROFILES@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MISCDIR = @MISCDIR@ MISCDIR = @MISCDIR@

View File

@ -92,6 +92,7 @@ LIBRPMALIAS_FILENAME = @LIBRPMALIAS_FILENAME@
LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@ LIBRPMRC_FILENAME = @LIBRPMRC_FILENAME@
LIBS = @LIBS@ LIBS = @LIBS@
LN_S = @LN_S@ LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
MACROFILES = @MACROFILES@ MACROFILES = @MACROFILES@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MISCDIR = @MISCDIR@ MISCDIR = @MISCDIR@