{
FD_t fdi, fdo;
Header h;
- char * rpmio_flags;
+ char * rpmio_flags = NULL;
rpmRC rc;
FD_t gzdi;
setprogname(argv[0]); /* Retrofit glibc __progname */
+ rpmReadConfigFiles(NULL, NULL);
if (argc == 1)
fdi = fdDup(STDIN_FILENO);
else {
- if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) {
+ if (rstreq(argv[1], "-h") || rstreq(argv[1], "--help")) {
fprintf(stderr, "Usage: rpm2cpio file.rpm\n");
exit(EXIT_FAILURE);
}
exit(EXIT_FAILURE);
}
fdo = fdDup(STDOUT_FILENO);
- rpmReadConfigFiles(NULL, NULL);
{ rpmts ts = rpmtsCreate();
rpmVSFlags vsflags = 0;
}
/* Retrieve type of payload compression. */
- { const char * payload_compressor = NULL;
- struct rpmtd_s pc;
-
- headerGet(h, RPMTAG_PAYLOADCOMPRESSOR, &pc, HEADERGET_DEFAULT);
- payload_compressor = rpmtdGetString(&pc);
- if (!payload_compressor)
- payload_compressor = "gzip";
-
- if (!strcmp(payload_compressor, "gzip"))
- 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);
+ { const char *compr = headerGetString(h, RPMTAG_PAYLOADCOMPRESSOR);
+ rpmio_flags = rstrscat(NULL, "r.", compr ? compr : "gzip", NULL);
}
gzdi = Fdopen(fdi, rpmio_flags); /* XXX gzdi == fdi */
+ free(rpmio_flags);
+
if (gzdi == NULL) {
fprintf(stderr, _("cannot re-open payload: %s\n"), Fstrerror(gzdi));
exit(EXIT_FAILURE);