3737 * <pkglist>
3838 * <collection short="F8">
3939 * <name>Fedora 8</name>
40+ * <module name="pki-deps" stream="10.6" version="20181019123559" context="9edba152" arch="x86_64"/>
4041 * <package arch="ppc64" name="imlib-debuginfo" release="6.fc8" src="http://download.fedoraproject.org/pub/fedora/linux/updates/8/ppc64/imlib-debuginfo-1.9.15-6.fc8.ppc64.rpm" version="1.9.15">
4142 * <filename>imlib-debuginfo-1.9.15-6.fc8.ppc64.rpm</filename>
4243 * <reboot_suggested>True</reboot_suggested>
@@ -70,6 +71,7 @@ enum state {
7071 STATE_RELOGIN ,
7172 STATE_RIGHTS ,
7273 STATE_SEVERITY ,
74+ STATE_MODULE ,
7375 NUMSTATES
7476};
7577
@@ -92,6 +94,7 @@ static struct solv_xmlparser_element stateswitches[] = {
9294 { STATE_PKGLIST , "collection" , STATE_COLLECTION , 0 },
9395 { STATE_COLLECTION , "name" , STATE_NAME , 1 },
9496 { STATE_COLLECTION , "package" , STATE_PACKAGE , 0 },
97+ { STATE_COLLECTION , "module" , STATE_MODULE , 0 },
9598 { STATE_PACKAGE , "filename" , STATE_FILENAME , 1 },
9699 { STATE_PACKAGE , "reboot_suggested" ,STATE_REBOOT , 1 },
97100 { STATE_PACKAGE , "restart_suggested" ,STATE_RESTART , 1 },
@@ -321,6 +324,40 @@ startElement(struct solv_xmlparser *xmlp, int state, const char *name, const cha
321324 repodata_set_id (pd -> data , pd -> collhandle , UPDATE_COLLECTION_ARCH , a );
322325 break ;
323326 }
327+ case STATE_MODULE :
328+ {
329+ const char * name = 0 , * stream = 0 , * version = 0 , * context = 0 , * arch = 0 ;
330+ Id name_id , stream_id , version_id , context_id , arch_id = 0 ;
331+ for (; * atts ; atts += 2 )
332+ {
333+ if (!strcmp (* atts , "arch" ))
334+ arch = atts [1 ];
335+ else if (!strcmp (* atts , "name" ))
336+ name = atts [1 ];
337+ else if (!strcmp (* atts , "stream" ))
338+ stream = atts [1 ];
339+ else if (!strcmp (* atts , "version" ))
340+ version = atts [1 ];
341+ else if (!strcmp (* atts , "context" ))
342+ context = atts [1 ];
343+ }
344+ name_id = pool_str2id (pool , name , 1 );
345+ if (arch )
346+ arch_id = pool_str2id (pool , arch , 1 );
347+ stream_id = pool_str2id (pool , stream , 1 );
348+ version_id = pool_str2id (pool , version , 1 );
349+ context_id = pool_str2id (pool , context , 1 );
350+
351+ Id module_handle = repodata_new_handle (pd -> data );
352+ repodata_set_id (pd -> data , module_handle , UPDATE_MODULE_NAME , name_id );
353+ repodata_set_id (pd -> data , module_handle , UPDATE_MODULE_STREAM , stream_id );
354+ repodata_set_id (pd -> data , module_handle , UPDATE_MODULE_VERSION , version_id );
355+ repodata_set_id (pd -> data , module_handle , UPDATE_MODULE_CONTEXT , context_id );
356+ if (arch_id )
357+ repodata_set_id (pd -> data , module_handle , UPDATE_MODULE_ARCH , arch_id );
358+ repodata_add_flexarray (pd -> data , pd -> handle , UPDATE_MODULE , module_handle );
359+ break ;
360+ }
324361
325362 default :
326363 break ;
0 commit comments