]>
Commit | Line | Data |
---|---|---|
38a4dd2b JB |
1 | Index: rpm.c |
2 | =================================================================== | |
3 | RCS file: /cvsroot/installer/poldek/Attic/rpm.c,v | |
4 | retrieving revision 1.41.4.6 | |
5 | diff -u -r1.41.4.6 rpm.c | |
6 | --- rpm.c 14 Aug 2004 20:40:46 -0000 1.41.4.6 | |
737bfe25 | 7 | +++ rpm.c 27 Aug 2004 19:15:44 -0000 |
38a4dd2b JB |
8 | @@ -446,20 +446,34 @@ |
9 | return n; | |
10 | } | |
11 | ||
12 | - | |
13 | -int rpm_get_obsoletedby_cap(rpmdb db, tn_array *dbpkgs, struct capreq *cap, | |
14 | - unsigned ldflags) | |
15 | +static | |
16 | +int get_obsoletedby_cap(rpmdb db, int tag, tn_array *dbpkgs, struct capreq *cap, | |
17 | + unsigned ldflags) | |
18 | { | |
19 | struct rpmdb_it it; | |
20 | const struct dbrec *dbrec; | |
21 | int n = 0; | |
22 | - | |
23 | - rpmdb_it_init(db, &it, RPMITER_NAME, capreq_name(cap)); | |
24 | + | |
25 | + rpmdb_it_init(db, &it, tag, capreq_name(cap)); | |
26 | while ((dbrec = rpmdb_it_get(&it)) != NULL) { | |
27 | + int add = 0; | |
28 | if (dbpkg_array_has(dbpkgs, dbrec->recno)) | |
dd7fd593 | 29 | - continue; |
38a4dd2b JB |
30 | - |
31 | - if (header_evr_match_req(dbrec->h, cap)) { | |
32 | + continue; | |
33 | + | |
34 | + switch (tag) { | |
35 | + case RPMITER_NAME: | |
36 | + add = header_evr_match_req(dbrec->h, cap); | |
37 | + break; | |
38 | + | |
39 | + case RPMITER_CAP: | |
40 | + add = header_cap_match_req(dbrec->h, cap, 1); | |
41 | + break; | |
42 | + | |
43 | + default: | |
44 | + n_assert(0); | |
45 | + break; | |
46 | + } | |
47 | + if (add) { | |
48 | struct dbpkg *dbpkg = dbpkg_new(dbrec->recno, dbrec->h, ldflags); | |
49 | n_array_push(dbpkgs, dbpkg); | |
50 | n_array_sort(dbpkgs); | |
737bfe25 JB |
51 | @@ -470,6 +484,11 @@ |
52 | return n; | |
53 | } | |
54 | ||
38a4dd2b JB |
55 | +int rpm_get_obsoletedby_cap(rpmdb db, tn_array *dbpkgs, struct capreq *cap, |
56 | + unsigned ldflags) | |
57 | +{ | |
737bfe25 JB |
58 | + return get_obsoletedby_cap(db, RPMITER_NAME, dbpkgs, cap, ldflags); |
59 | +} | |
60 | ||
61 | int rpm_get_obsoletedby_pkg(rpmdb db, tn_array *dbpkgs, const struct pkg *pkg, | |
62 | unsigned ldflags) | |
63 | @@ -482,7 +501,7 @@ | |
64 | REL_EQ | REL_LT, 0); | |
65 | n = rpm_get_obsoletedby_cap(db, dbpkgs, self_cap, ldflags); | |
66 | capreq_free(self_cap); | |
67 | - | |
38a4dd2b | 68 | + |
737bfe25 JB |
69 | if (pkg->cnfls == NULL) |
70 | return n; | |
71 | ||
72 | @@ -493,6 +512,9 @@ | |
73 | continue; | |
74 | ||
75 | n += rpm_get_obsoletedby_cap(db, dbpkgs, cnfl, ldflags); | |
38a4dd2b | 76 | +#ifdef HAVE_RPM_4_1 |
737bfe25 | 77 | + n += get_obsoletedby_cap(db, RPMITER_CAP, dbpkgs, cnfl, ldflags); |
38a4dd2b | 78 | +#endif |
737bfe25 JB |
79 | } |
80 | ||
38a4dd2b | 81 | return n; |