diff options
-rw-r--r-- | rpm2archive.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/rpm2archive.c b/rpm2archive.c index 3b1a56559..d0d1e6649 100644 --- a/rpm2archive.c +++ b/rpm2archive.c @@ -187,22 +187,19 @@ static int process_package(rpmts ts, char * filename) int main(int argc, char *argv[]) { - int rc; - + int rc, i; + xsetprogname(argv[0]); /* Portability call -- see system.h */ rpmReadConfigFiles(NULL, NULL); - char * filename; - if (argc == 1) - filename = "-"; - else { - if (rstreq(argv[1], "-h") || rstreq(argv[1], "--help")) { - fprintf(stderr, "Usage: rpm2archive file.rpm\n"); - exit(EXIT_FAILURE); - } else { - filename = argv[1]; - } + + if (argc > 1 && (rstreq(argv[1], "-h") || rstreq(argv[1], "--help"))) { + fprintf(stderr, "Usage: %s [file.rpm ...]\n", argv[0]); + exit(EXIT_FAILURE); } + if (argc == 1) + argv[argc++] = "-"; /* abuse NULL pointer at the end of argv */ + rpmts ts = rpmtsCreate(); rpmVSFlags vsflags = 0; @@ -212,9 +209,13 @@ int main(int argc, char *argv[]) vsflags |= RPMVSF_NOHDRCHK; (void) rpmtsSetVSFlags(ts, vsflags); - rc = process_package(ts, filename); + for (i = 1; i < argc; i++) { - ts = rpmtsFree(ts); + rc = process_package(ts, argv[i]); + if (rc != 0) + return rc; + } + (void) rpmtsFree(ts); return rc; } |