@@ -110,9 +110,10 @@ struct parsedata {
110110 Id handle ;
111111 Solvable * solvable ;
112112 time_t buildtime ;
113- Id collhandle ;
113+ Id pkghandle ;
114114 struct solv_xmlparser xmlp ;
115115 struct joindata jd ;
116+ Id collhandle ;
116117};
117118
118119/*
@@ -287,6 +288,12 @@ startElement(struct solv_xmlparser *xmlp, int state, const char *name, const cha
287288 }
288289 break ;
289290
291+ case STATE_COLLECTION :
292+ {
293+ pd -> collhandle = repodata_new_handle (pd -> data );
294+ }
295+ break ;
296+
290297 /* <package arch="ppc64" name="imlib-debuginfo" release="6.fc8"
291298 * src="http://download.fedoraproject.org/pub/fedora/linux/updates/8/ppc64/imlib-debuginfo-1.9.15-6.fc8.ppc64.rpm"
292299 * version="1.9.15">
@@ -326,12 +333,12 @@ startElement(struct solv_xmlparser *xmlp, int state, const char *name, const cha
326333 solvable -> conflicts = repo_addid_dep (pd -> repo , solvable -> conflicts , id , 0 );
327334 }
328335
329- /* who needs the collection anyway? */
330- pd -> collhandle = repodata_new_handle (pd -> data );
331- repodata_set_id (pd -> data , pd -> collhandle , UPDATE_COLLECTION_NAME , n );
332- repodata_set_id (pd -> data , pd -> collhandle , UPDATE_COLLECTION_EVR , evr );
336+ /* UPDATE_COLLECTION is misnamed, it should have been UPDATE_PACKAGE */
337+ pd -> pkghandle = repodata_new_handle (pd -> data );
338+ repodata_set_id (pd -> data , pd -> pkghandle , UPDATE_COLLECTION_NAME , n );
339+ repodata_set_id (pd -> data , pd -> pkghandle , UPDATE_COLLECTION_EVR , evr );
333340 if (a )
334- repodata_set_id (pd -> data , pd -> collhandle , UPDATE_COLLECTION_ARCH , a );
341+ repodata_set_id (pd -> data , pd -> pkghandle , UPDATE_COLLECTION_ARCH , a );
335342 break ;
336343 }
337344 case STATE_MODULE :
@@ -364,6 +371,7 @@ startElement(struct solv_xmlparser *xmlp, int state, const char *name, const cha
364371 if (arch )
365372 repodata_set_poolstr (pd -> data , module_handle , UPDATE_MODULE_ARCH , arch );
366373 repodata_add_flexarray (pd -> data , pd -> handle , UPDATE_MODULE , module_handle );
374+ repodata_add_flexarray (pd -> data , pd -> collhandle , UPDATE_MODULE , module_handle );
367375 break ;
368376 }
369377
@@ -427,15 +435,21 @@ endElement(struct solv_xmlparser *xmlp, int state, char *content)
427435 repodata_set_str (pd -> data , pd -> handle , UPDATE_MESSAGE , content );
428436 break ;
429437
430- case STATE_PACKAGE :
431- repodata_add_flexarray (pd -> data , pd -> handle , UPDATE_COLLECTION , pd -> collhandle );
438+ case STATE_COLLECTION :
439+ repodata_add_flexarray (pd -> data , pd -> handle , UPDATE_COLLECTIONLIST , pd -> collhandle );
432440 pd -> collhandle = 0 ;
433441 break ;
434442
443+ case STATE_PACKAGE :
444+ repodata_add_flexarray (pd -> data , pd -> handle , UPDATE_COLLECTION , pd -> pkghandle );
445+ repodata_add_flexarray (pd -> data , pd -> collhandle , UPDATE_COLLECTION , pd -> pkghandle );
446+ pd -> pkghandle = 0 ;
447+ break ;
448+
435449 /* <filename>libntlm-0.4.2-1.fc8.x86_64.rpm</filename> */
436450 /* <filename>libntlm-0.4.2-1.fc8.x86_64.rpm</filename> */
437451 case STATE_FILENAME :
438- repodata_set_str (pd -> data , pd -> collhandle , UPDATE_COLLECTION_FILENAME , content );
452+ repodata_set_str (pd -> data , pd -> pkghandle , UPDATE_COLLECTION_FILENAME , content );
439453 break ;
440454
441455 /* <reboot_suggested>True</reboot_suggested> */
@@ -444,7 +458,7 @@ endElement(struct solv_xmlparser *xmlp, int state, char *content)
444458 {
445459 /* FIXME: this is per-package, the global flag should be computed at runtime */
446460 repodata_set_void (pd -> data , pd -> handle , UPDATE_REBOOT );
447- repodata_set_void (pd -> data , pd -> collhandle , UPDATE_REBOOT );
461+ repodata_set_void (pd -> data , pd -> pkghandle , UPDATE_REBOOT );
448462 }
449463 break ;
450464
@@ -454,7 +468,7 @@ endElement(struct solv_xmlparser *xmlp, int state, char *content)
454468 {
455469 /* FIXME: this is per-package, the global flag should be computed at runtime */
456470 repodata_set_void (pd -> data , pd -> handle , UPDATE_RESTART );
457- repodata_set_void (pd -> data , pd -> collhandle , UPDATE_RESTART );
471+ repodata_set_void (pd -> data , pd -> pkghandle , UPDATE_RESTART );
458472 }
459473 break ;
460474
@@ -464,7 +478,7 @@ endElement(struct solv_xmlparser *xmlp, int state, char *content)
464478 {
465479 /* FIXME: this is per-package, the global flag should be computed at runtime */
466480 repodata_set_void (pd -> data , pd -> handle , UPDATE_RELOGIN );
467- repodata_set_void (pd -> data , pd -> collhandle , UPDATE_RELOGIN );
481+ repodata_set_void (pd -> data , pd -> pkghandle , UPDATE_RELOGIN );
468482 }
469483 break ;
470484 default :
0 commit comments