]>
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 | |
7 | +++ rpm.c 25 Aug 2004 12:12:36 -0000 | |
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)) | |
29 | - continue; | |
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); | |
51 | @@ -467,6 +481,18 @@ | |
52 | } | |
53 | } | |
54 | rpmdb_it_destroy(&it); | |
55 | + return n; | |
56 | +} | |
57 | + | |
58 | +int rpm_get_obsoletedby_cap(rpmdb db, tn_array *dbpkgs, struct capreq *cap, | |
59 | + unsigned ldflags) | |
60 | +{ | |
61 | + int n; | |
62 | + | |
63 | + n = get_obsoletedby_cap(db, RPMITER_NAME, dbpkgs, cap, ldflags); | |
64 | +#ifdef HAVE_RPM_4_1 | |
65 | + n += get_obsoletedby_cap(db, RPMITER_CAP, dbpkgs, cap, ldflags); | |
66 | +#endif | |
67 | return n; | |
68 | } | |
69 |