Imported Upstream version 0.7.4
[platform/upstream/libsolv.git] / ext / repo_updateinfoxml.c
index ff84d32..f375727 100644 (file)
@@ -37,6 +37,7 @@
  *     <pkglist>
  *       <collection short="F8">
  *         <name>Fedora 8</name>
+ *         <module name="pki-deps" stream="10.6" version="20181019123559" context="9edba152" arch="x86_64"/>
  *         <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">
  *           <filename>imlib-debuginfo-1.9.15-6.fc8.ppc64.rpm</filename>
  *           <reboot_suggested>True</reboot_suggested>
@@ -70,6 +71,7 @@ enum state {
   STATE_RELOGIN,
   STATE_RIGHTS,
   STATE_SEVERITY,
+  STATE_MODULE,
   NUMSTATES
 };
 
@@ -92,6 +94,7 @@ static struct solv_xmlparser_element stateswitches[] = {
   { STATE_PKGLIST,     "collection",      STATE_COLLECTION,  0 },
   { STATE_COLLECTION,  "name",            STATE_NAME,        1 },
   { STATE_COLLECTION,  "package",         STATE_PACKAGE,     0 },
+  { STATE_COLLECTION,  "module",          STATE_MODULE,      0 },
   { STATE_PACKAGE,     "filename",        STATE_FILENAME,    1 },
   { STATE_PACKAGE,     "reboot_suggested",STATE_REBOOT,      1 },
   { STATE_PACKAGE,     "restart_suggested",STATE_RESTART,    1 },
@@ -321,6 +324,38 @@ startElement(struct solv_xmlparser *xmlp, int state, const char *name, const cha
          repodata_set_id(pd->data, pd->collhandle, UPDATE_COLLECTION_ARCH, a);
         break;
       }
+    case STATE_MODULE:
+      {
+        const char *name = 0, *stream = 0, *version = 0, *context = 0, *arch = 0;
+        Id module_handle;
+
+        for (; *atts; atts += 2)
+          {
+            if (!strcmp(*atts, "arch"))
+              arch = atts[1];
+            else if (!strcmp(*atts, "name"))
+              name = atts[1];
+            else if (!strcmp(*atts, "stream"))
+              stream = atts[1];
+            else if (!strcmp(*atts, "version"))
+              version = atts[1];
+            else if (!strcmp(*atts, "context"))
+              context = atts[1];
+          }
+        module_handle = repodata_new_handle(pd->data);
+       if (name)
+          repodata_set_poolstr(pd->data, module_handle, UPDATE_MODULE_NAME, name);
+       if (stream)
+          repodata_set_poolstr(pd->data, module_handle, UPDATE_MODULE_STREAM, stream);
+       if (version)
+          repodata_set_poolstr(pd->data, module_handle, UPDATE_MODULE_VERSION, version);
+       if (context)
+          repodata_set_poolstr(pd->data, module_handle, UPDATE_MODULE_CONTEXT, context);
+        if (arch)
+          repodata_set_poolstr(pd->data, module_handle, UPDATE_MODULE_ARCH, arch);
+        repodata_add_flexarray(pd->data, pd->handle, UPDATE_MODULE, module_handle);
+        break;
+      }
 
     default:
       break;