]>
Commit | Line | Data |
---|---|---|
2d9209ac MM |
1 | --- poldek-0.18.6.orig/./shell/shell.c 2004-09-07 11:47:47.000000000 +0000 |
2 | +++ poldek-0.18.6/./shell/shell.c 2004-09-07 11:15:33.000000000 +0000 | |
3 | @@ -997,7 +1013,7 @@ | |
4 | return 0; | |
5 | ||
6 | if (compare_ver == 0) | |
7 | - *cmprc = pkg_cmp_evr(lshpkg->pkg, shpkg->pkg); | |
8 | + *cmprc = pkg_cmp_dist_evr(lshpkg->pkg, shpkg->pkg); | |
9 | else | |
10 | *cmprc = pkg_cmp_ver(lshpkg->pkg, shpkg->pkg); | |
11 | ||
12 | --- poldek-0.18.6.orig/./pkg.c 2004-05-05 16:56:43.000000000 +0000 | |
13 | +++ poldek-0.18.6/./pkg.c 2004-09-07 00:08:12.000000000 +0000 | |
14 | @@ -49,13 +49,13 @@ | |
15 | struct pkg *pkg_new(const char *name, int32_t epoch, | |
16 | const char *version, const char *release, | |
17 | const char *arch, const char *os, | |
18 | - const char *fn, | |
19 | + const char *fn, const char *dist, | |
20 | uint32_t size, uint32_t fsize, | |
21 | uint32_t btime) | |
22 | { | |
23 | struct pkg *pkg; | |
24 | int name_len = 0, version_len = 0, release_len = 0, | |
25 | - arch_len = 0, os_len = 0, fn_len = 0; | |
26 | + arch_len = 0, os_len = 0, fn_len = 0, dist_len = 0; | |
27 | char *buf; | |
28 | int len; | |
29 | ||
30 | @@ -85,6 +85,11 @@ | |
31 | len += os_len + 1; | |
32 | } | |
33 | ||
34 | + if(dist) { | |
35 | + dist_len = strlen(dist); | |
36 | + len += dist_len + 1; | |
37 | + } | |
38 | + | |
39 | if (fn && arch) { | |
40 | char pkg_fn[1024]; | |
41 | ||
42 | @@ -141,7 +146,15 @@ | |
43 | buf += os_len; | |
44 | *buf++ = '\0'; | |
45 | } | |
46 | ||
47 | + pkg->dist=NULL; | |
48 | + if(dist) { | |
49 | + pkg->dist = buf; | |
50 | + memcpy(buf, dist, dist_len); | |
51 | + buf += dist_len; | |
52 | + *buf++ = '\0'; | |
53 | + } | |
54 | + | |
55 | pkg->fn = NULL; | |
56 | if (fn) { | |
57 | pkg->fn = buf; | |
58 | @@ -248,6 +261,7 @@ | |
59 | struct pkg *pkg; | |
60 | uint32_t *epoch, *size, *btime; | |
61 | char *name, *version, *release, *arch = NULL, *os = NULL; | |
62 | + char *dist = NULL; | |
63 | int type; | |
64 | ||
65 | headerNVR(h, (void*)&name, (void*)&version, (void*)&release); | |
00af45ce | 66 | @@ -267,6 +281,13 @@ |
2d9209ac MM |
67 | if (type != RPM_STRING_TYPE) |
68 | arch = NULL; | |
69 | ||
70 | + if (!headerGetEntry(h, RPMTAG_DISTRIBUTION, &type, (void *)&dist, NULL)) { | |
00af45ce | 71 | + dist = NULL; |
2d9209ac MM |
72 | + } |
73 | + | |
74 | + if (type != RPM_STRING_TYPE) | |
75 | + dist = NULL; | |
76 | + | |
77 | if (!headerGetEntry(h, RPMTAG_OS, &type, (void *)&os, NULL)) { | |
78 | if (verbose > 1) | |
79 | logn(LOGWARN, _("%s: missing OS tag"), fname); | |
80 | @@ -282,7 +304,7 @@ | |
81 | btime = NULL; | |
82 | ||
83 | pkg = pkg_new(name, epoch ? *epoch : 0, version, release, arch, os, | |
84 | - fname ? n_basenam(fname) : NULL, | |
85 | + fname ? n_basenam(fname) : NULL, dist, | |
86 | size ? *size : 0, fsize, btime ? *btime : 0); | |
87 | ||
88 | if (pkg == NULL) | |
89 | @@ -444,6 +475,19 @@ | |
90 | return pkg_cmp_ver(p1, p2); | |
91 | } | |
92 | ||
93 | +int pkg_cmp_dist_evr(const struct pkg *p1, const struct pkg *p2) | |
94 | +{ | |
95 | + int rc; | |
96 | + | |
97 | + if(p1->dist && p2->dist) | |
98 | + { | |
99 | + rc = rpmdistcmp(p1->dist, p2->dist); | |
100 | + if(rc != 0) | |
101 | + return rc; | |
102 | + } | |
103 | + | |
104 | + return pkg_cmp_evr(p1, p2); | |
105 | +} | |
106 | ||
107 | int pkg_cmp_evr(const struct pkg *p1, const struct pkg *p2) | |
108 | { | |
109 | @@ -487,6 +531,15 @@ | |
110 | //return rc; | |
111 | } | |
112 | ||
113 | +int pkg_cmp_name_dist_evr_rev(const struct pkg *p1, const struct pkg *p2) | |
114 | +{ | |
115 | + register int rc; | |
116 | + | |
117 | + if ((rc = pkg_cmp_name(p1, p2))) | |
118 | + return rc; | |
119 | + | |
120 | + return -pkg_cmp_dist_evr(p1, p2); | |
121 | +} | |
122 | ||
123 | int pkg_cmp_name_evr_rev_srcpri(const struct pkg *p1, const struct pkg *p2) | |
124 | { | |
125 | @@ -612,6 +665,15 @@ | |
126 | return pkg_cmp_name_evr_rev(p1, p2); | |
127 | } | |
128 | ||
129 | +int pkg_cmp_dist_pri(struct pkg *p1, struct pkg *p2) | |
130 | +{ | |
131 | + register int cmprc = 0; | |
132 | + | |
133 | + if ((cmprc = p1->pri - p2->pri)) | |
134 | + return cmprc; | |
135 | + | |
136 | + return pkg_cmp_name_dist_evr_rev(p1, p2); | |
137 | +} | |
138 | ||
139 | int pkg_cmp_btime(struct pkg *p1, struct pkg *p2) | |
140 | { | |
4d355c1b MM |
141 | @@ -1406,7 +1406,7 @@ |
142 | tn_array *arr; | |
2d9209ac | 143 | |
4d355c1b MM |
144 | arr = n_array_new(size, (tn_fn_free)pkg_free, |
145 | - (tn_fn_cmp)pkg_cmp_name_evr_rev); | |
146 | + (tn_fn_cmp)pkg_cmp_name_dist_evr_rev); | |
147 | n_array_ctl(arr, TN_ARRAY_AUTOSORTED); | |
148 | return arr; | |
149 | } | |
2d9209ac MM |
150 | --- poldek-0.18.6.orig/./usrset.c 2004-09-07 11:47:47.000000000 +0000 |
151 | +++ poldek-0.18.6/./usrset.c 2004-09-02 23:30:43.000000000 +0000 | |
152 | @@ -185,7 +185,7 @@ | |
153 | release = ""; | |
154 | ||
155 | pdef->pkg = pkg_new(name, epoch, version, release, NULL, NULL, NULL, | |
156 | - 0, 0, 0); | |
157 | + NULL, 0, 0, 0); | |
158 | } | |
159 | ||
160 | if (virtname) | |
161 | --- poldek-0.18.6.orig/./test_match.c 2004-05-05 16:57:09.000000000 +0000 | |
162 | +++ poldek-0.18.6/./test_match.c 2004-09-02 23:32:58.000000000 +0000 | |
163 | @@ -49,7 +49,7 @@ | |
164 | struct capreq *cap; | |
165 | ||
166 | pkg = pkg_new("poldek", epoch, versions[i], relases[j], | |
167 | - NULL, NULL, NULL, 0, 0, 0); | |
168 | + NULL, NULL, NULL, NULL, 0, 0, 0); | |
169 | cap = capreq_new("poldek", epoch, versions[i++], relases[j++], | |
170 | REL_EQ, 0); | |
171 | k = 0; | |
172 | @@ -83,7 +83,7 @@ | |
173 | struct capreq *req, *cap; | |
174 | int rc; | |
175 | ||
176 | - pkg = pkg_new("poldek", epoch, ver, rel, NULL, NULL, NULL, 0, 0, 0); | |
177 | + pkg = pkg_new("poldek", epoch, ver, rel, NULL, NULL, NULL, NULL, 0, 0, 0); | |
178 | cap = capreq_new("poldek", epoch, ver, rel, REL_EQ, 0); | |
179 | ||
180 | req = capreq_new_evr("poldek", n_strdup(evr), relation, 0); | |
181 | --- poldek-0.18.6.orig/./pkgdir.c 2004-05-06 07:57:31.000000000 +0000 | |
182 | +++ poldek-0.18.6/./pkgdir.c 2004-09-07 10:45:51.000000000 +0000 | |
183 | @@ -69,6 +69,7 @@ | |
184 | #define PKGT_HAS_BTIME (1 << 11) | |
185 | #define PKGT_HAS_GROUPID (1 << 12) | |
186 | #define PKGT_HAS_FN (1 << 13) | |
187 | +#define PKGT_HAS_DIST (1 << 14) | |
188 | ||
189 | struct pkgtags_s { | |
190 | unsigned flags; | |
191 | @@ -77,6 +78,7 @@ | |
192 | char arch[64]; | |
193 | char os[64]; | |
194 | char fn[1024]; | |
195 | + char dist[64]; | |
196 | uint32_t size; | |
197 | uint32_t fsize; | |
198 | uint32_t btime; | |
199 | @@ -1093,6 +1095,7 @@ | |
200 | case 'A': | |
201 | case 'O': | |
202 | case 'n': | |
203 | + case 'D': | |
204 | if (!add2pkgtags(&pkgt, *line, val, pkgdir->path, offs)) { | |
205 | nerr++; | |
206 | goto l_end; | |
207 | @@ -1320,6 +1323,16 @@ | |
208 | } | |
209 | break; | |
210 | ||
211 | + case 'D': | |
212 | + if (pkgt->flags & PKGT_HAS_DIST) { | |
213 | + logn(LOGERR, errmg_double_tag, pathname, offs, tag); | |
214 | + err++; | |
215 | + } else { | |
216 | + memcpy(pkgt->dist, value, sizeof(pkgt->dist) - 1); | |
217 | + pkgt->dist[ sizeof(pkgt->dist) - 1 ] = '\0'; | |
218 | + pkgt->flags |= PKGT_HAS_DIST; | |
219 | + } | |
220 | + break; | |
221 | ||
222 | case 'S': | |
223 | if (pkgt->flags & PKGT_HAS_SIZE) { | |
224 | @@ -1393,7 +1406,7 @@ | |
225 | struct pkg *pkg_new_from_tags(struct pkgtags_s *pkgt) | |
226 | { | |
227 | struct pkg *pkg; | |
228 | - char *version, *release, *arch = NULL, *os = NULL, *fn = NULL; | |
229 | + char *version, *release, *arch = NULL, *os = NULL, *fn = NULL, *dist = NULL; | |
230 | int32_t epoch; | |
231 | ||
232 | if (!(pkgt->flags & (PKGT_HAS_NAME | PKGT_HAS_EVR))) | |
233 | @@ -1407,6 +1420,9 @@ | |
234 | ||
235 | if (pkgt->flags & PKGT_HAS_FN) | |
236 | fn = pkgt->fn; | |
237 | + | |
238 | + if (pkgt->flags & PKGT_HAS_DIST) | |
239 | + dist = pkgt->dist; | |
240 | ||
241 | if (*pkgt->name == '\0' || *pkgt->evr == '\0' || *pkgt->arch == '\0') | |
242 | return NULL; | |
243 | @@ -1419,7 +1435,7 @@ | |
244 | return NULL; | |
245 | } | |
246 | ||
247 | - pkg = pkg_new(pkgt->name, epoch, version, release, arch, os, fn, | |
248 | + pkg = pkg_new(pkgt->name, epoch, version, release, arch, os, fn, dist, | |
249 | pkgt->size, pkgt->fsize, pkgt->btime); | |
250 | pkg->groupid = pkgt->groupid; | |
251 | ||
252 | @@ -1488,7 +1504,7 @@ | |
253 | ||
254 | if (*p && parse_nevr(p, &name, &epoch, &ver, &rel)) { | |
255 | struct pkg *pkg = pkg_new(name, epoch, ver, rel, NULL, NULL, NULL, | |
256 | - 0, 0, 0); | |
257 | + NULL, 0, 0, 0); | |
258 | n_array_push(pkgs, pkg); | |
259 | } | |
260 | } | |
261 | --- poldek-0.18.6.orig/./pkgset-install.c 2004-09-07 11:47:47.000000000 +0000 | |
262 | +++ poldek-0.18.6/./pkgset-install.c 2004-09-07 12:05:41.000000000 +0000 | |
263 | @@ -1998,7 +1998,7 @@ | |
264 | if (is_installed == 0) | |
265 | n_array_push(iinf->uninstalled_pkgs, | |
266 | pkg_new(pkg->name, pkg->epoch, pkg->ver, pkg->rel, | |
267 | - pkg->arch, pkg->os, NULL, | |
268 | + pkg->arch, pkg->os, NULL, NULL, | |
269 | pkg->size, pkg->fsize, | |
270 | pkg->btime)); | |
271 | } | |
2d9209ac MM |
272 | @@ -2189,10 +2189,14 @@ |
273 | struct upgrade_s *upg = upgptr; | |
274 | struct pkg *pkg, tmpkg; | |
275 | uint32_t *epoch; | |
276 | - int i, cmprc; | |
277 | + int i, cmprc, type, count; | |
278 | ||
279 | ||
280 | recno = recno; | |
281 | + | |
282 | + if (!(headerGetEntry(h, RPMTAG_DISTRIBUTION, &type, (void *)&tmpkg.dist, | |
283 | + &count) && type == RPM_STRING_TYPE && count == 1)) | |
284 | + tmpkg.dist=NULL; | |
285 | ||
286 | if (!rpmhdr_nevr(h, &tmpkg.name, &epoch, &tmpkg.ver, &tmpkg.rel)) { | |
287 | logn(LOGERR, _("db package header corrupted (!?)")); | |
288 | @@ -2208,7 +2212,7 @@ | |
289 | } | |
290 | ||
291 | pkg = n_array_nth(upg->avpkgs, i); | |
292 | - cmprc = pkg_cmp_evr(pkg, &tmpkg); | |
293 | + cmprc = pkg_cmp_dist_evr(pkg, &tmpkg); | |
294 | if (verbose) { | |
295 | if (cmprc == 0) | |
296 | msg(3, "%-32s up to date\n", pkg_snprintf_s(&tmpkg)); | |
2d9209ac MM |
297 | --- poldek-0.18.6.orig/./rpm.c 2004-09-07 11:47:47.000000000 +0000 |
298 | +++ poldek-0.18.6/./rpm.c 2004-09-02 23:53:05.000000000 +0000 | |
299 | @@ -497,6 +497,36 @@ | |
300 | return n; | |
301 | } | |
302 | ||
303 | +static | |
304 | +int hdr_pkg_cmp_dist_evr(Header h, const struct pkg *pkg) | |
305 | +{ | |
306 | + int rc; | |
307 | + struct pkg tmpkg; | |
308 | + uint32_t *epoch; | |
309 | + int count; | |
310 | + int type; | |
311 | + | |
312 | + if (!(headerGetEntry(h, RPMTAG_DISTRIBUTION, &type, (void *)&tmpkg.dist, | |
313 | + &count) && type == RPM_STRING_TYPE && count == 1)) | |
314 | + tmpkg.dist=NULL; | |
315 | + | |
316 | + headerNVR(h, (void*)&tmpkg.name, (void*)&tmpkg.ver, | |
317 | + (void*)&tmpkg.rel); | |
318 | + | |
319 | + if (tmpkg.name == NULL || tmpkg.ver == NULL || tmpkg.rel == NULL) { | |
320 | + logn(LOGERR, "headerNVR() failed"); | |
321 | + return 0; | |
322 | + } | |
323 | + | |
324 | + if (headerGetEntry(h, RPMTAG_EPOCH, &rc, (void *)&epoch, NULL)) | |
325 | + tmpkg.epoch = *epoch; | |
326 | + else | |
327 | + tmpkg.epoch = 0; | |
328 | + | |
329 | + rc = pkg_cmp_dist_evr(&tmpkg, pkg); | |
330 | + | |
331 | + return rc; | |
332 | +} | |
333 | ||
334 | static | |
335 | int hdr_pkg_cmp_evr(Header h, const struct pkg *pkg) | |
336 | @@ -544,7 +574,7 @@ | |
337 | ||
338 | } else { | |
339 | if (cmprc) | |
340 | - *cmprc = -hdr_pkg_cmp_evr(dbrec->h, pkg); | |
341 | + *cmprc = -hdr_pkg_cmp_dist_evr(dbrec->h, pkg); | |
342 | ||
343 | if (dbrecp) { | |
344 | dbrecp->recno = dbrec->recno; | |
345 | --- poldek-0.18.6.orig/./pkg.h 2004-03-22 17:31:51.000000000 +0000 | |
346 | +++ poldek-0.18.6/./pkg.h 2004-09-06 22:43:19.000000000 +0000 | |
347 | @@ -107,6 +107,7 @@ | |
348 | char *arch; | |
349 | char *os; | |
350 | char *fn; | |
351 | + char *dist; | |
352 | ||
353 | tn_array *caps; /* capabilities */ | |
354 | tn_array *reqs; /* requirements */ | |
355 | @@ -144,7 +145,7 @@ | |
356 | struct pkg *pkg_new(const char *name, int32_t epoch, | |
357 | const char *version, const char *release, | |
358 | const char *arch, const char *os, | |
359 | - const char *fn, | |
360 | + const char *fn, const char *dist, | |
361 | uint32_t size, uint32_t fsize, | |
362 | uint32_t btime); | |
363 | ||
364 | @@ -181,6 +182,7 @@ | |
365 | int pkg_cmp_name_evr_rev_srcpri(const struct pkg *p1, const struct pkg *p2); | |
366 | ||
367 | int pkg_cmp_pri(struct pkg *p1, struct pkg *p2); | |
368 | +int pkg_cmp_dist_pri(struct pkg *p1, struct pkg *p2); | |
369 | ||
370 | int pkg_cmp_btime(struct pkg *p1, struct pkg *p2); | |
371 | int pkg_cmp_btime_rev(struct pkg *p1, struct pkg *p2); | |
372 | --- poldek-0.18.6.orig/./pkgset-order.c 2004-09-07 11:47:47.000000000 +0000 | |
373 | +++ poldek-0.18.6/./pkgset-order.c 2004-09-06 22:46:32.000000000 +0000 | |
374 | @@ -235,7 +235,7 @@ | |
375 | tn_array *ordered = NULL; | |
376 | int nloops, verbose_; | |
377 | ||
378 | - n_array_isort_ex(pkgs, (tn_fn_cmp)pkg_cmp_pri); | |
4d355c1b | 379 | + n_array_isort_ex(pkgs, (tn_fn_cmp)pkg_cmp_pri); |
2d9209ac MM |
380 | |
381 | verbose_ = verbose; | |
382 | verbose = -10; | |
383 | --- poldek-0.18.6.orig/./pkgdir_save.c 2004-05-05 16:56:43.000000000 +0000 | |
384 | +++ poldek-0.18.6/./pkgdir_save.c 2004-09-07 10:30:15.000000000 +0000 | |
385 | @@ -170,6 +170,9 @@ | |
386 | ||
387 | if (pkg->fn) | |
388 | fprintf(stream, "n: %s\n", pkg->fn); | |
389 | + | |
390 | + if (pkg->dist) | |
391 | + fprintf(stream, "D: %s\n", pkg->dist); | |
392 | ||
393 | fprintf(stream, "F:\n"); | |
394 | store_pkg_fields(stream, pkg->size, pkg->fsize, pkg->btime, pkg->groupid); | |
4d355c1b | 395 |