--- ./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 <rpm>] 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);