--- ./applydeltarpm.c.orig 2007-03-20 16:17:29.291156000 +0000 +++ ./applydeltarpm.c 2007-04-23 15:37:12.959694000 +0000 @@ -1115,8 +1115,9 @@ main(int argc, char **argv) int seqmatches = 1; FILE *vfp; struct deltarpm d; + char *arch = 0; - while ((c = getopt(argc, argv, "cCisvpr:")) != -1) + while ((c = getopt(argc, argv, "cCisvpr:a:")) != -1) { switch(c) { @@ -1144,6 +1145,9 @@ main(int argc, char **argv) checkflags = SEQCHECK_SIZE; check = 1; break; + case 'a': + arch = optarg; + break; default: fprintf(stderr, "usage: applydeltarpm [-r ] deltarpm rpm\n"); exit(1); @@ -1328,7 +1332,10 @@ main(int argc, char **argv) dup2(pi[1], 1); close(pi[1]); } - execlp(RPMDUMPHEADER, RPMDUMPHEADER, d.nevr, (char *)0); + if (arch) + execlp(RPMDUMPHEADER, RPMDUMPHEADER, "-a", arch, d.nevr, (char *)0); + else + execlp(RPMDUMPHEADER, RPMDUMPHEADER, d.nevr, (char *)0); perror(RPMDUMPHEADER); _exit(1); } --- ./rpmdumpheader.c.orig 2007-03-02 13:53:59.600823000 +0000 +++ ./rpmdumpheader.c 2007-04-23 15:40:34.057415000 +0000 @@ -23,7 +23,14 @@ int main(int argc, char **argv) char *e; char *v; char *r; + char *a = NULL; + if (argc > 2 && !strcmp(argv[1], "-a")) + { + a = argv[2]; + argc -= 2; + argv += 2; + } if (argc != 2) { fprintf(stderr, "usage: rpmdumpheader package\n"); @@ -62,6 +69,9 @@ int main(int argc, char **argv) rpmdbSetIteratorRE(mi, RPMTAG_EPOCH, RPMMIRE_STRCMP, e); rpmdbSetIteratorRE(mi, RPMTAG_VERSION, RPMMIRE_STRCMP, v); rpmdbSetIteratorRE(mi, RPMTAG_RELEASE, RPMMIRE_STRCMP, r); + if (a) + rpmdbSetIteratorRE(mi, RPMTAG_ARCH, RPMMIRE_STRCMP, a); + if ((h = rpmdbNextIterator(mi)) != NULL) { fdo = Fopen("-", "w.ufdio"); @@ -70,9 +80,9 @@ int main(int argc, char **argv) else { if (e) - fprintf(stderr, "%s-%s:%s-%s is not installed\n", n, e, v, r); + fprintf(stderr, "%s-%s:%s-%s%s%s is not installed\n", n, e, v, r, a ? "." : "", a ? a : ""); else - fprintf(stderr, "%s-%s-%s is not installed\n", n, v, r); + fprintf(stderr, "%s-%s-%s%s%s is not installed\n", n, v, r, a ? "." : "", a ? a : ""); ret = 1; } mi = rpmdbFreeIterator(mi);