Merge branch 'master' of gitorious.org:opensuse/sat-solver
[platform/upstream/libsolv.git] / ext / repo_products.c
index 7325cd7..56e2733 100644 (file)
@@ -45,6 +45,7 @@ enum state {
   STATE_RELEASE,         // 5
   STATE_ARCH,            // 6
   STATE_SUMMARY,         // 7
+  STATE_SHORTSUMMARY,
   STATE_DESCRIPTION,     // 8
   STATE_UPDATEREPOKEY,   // 9 should go away
   STATE_CPEID,         // 9
@@ -77,6 +78,7 @@ static struct stateswitch stateswitches[] = {
   { STATE_PRODUCT,   "arch",          STATE_ARCH,          1 },
   { STATE_PRODUCT,   "productline",   STATE_PRODUCTLINE,   1 },
   { STATE_PRODUCT,   "summary",       STATE_SUMMARY,       1 },
+  { STATE_PRODUCT,   "shortsummary",  STATE_SHORTSUMMARY,  1 },
   { STATE_PRODUCT,   "description",   STATE_DESCRIPTION,   1 },
   { STATE_PRODUCT,   "register",      STATE_REGISTER,      0 },
   { STATE_PRODUCT,   "urls",          STATE_URLS,          0 },
@@ -293,7 +295,9 @@ endElement(void *userData, const char *name)
       pd->tmprel = sat_free((void *)pd->tmprel);
       if (!s->arch)
        s->arch = ARCH_NOARCH;
-      if (s->arch != ARCH_SRC && s->arch != ARCH_NOSRC)
+      if (!s->evr)
+       s->evr = ID_EMPTY;
+      if (s->name && s->arch != ARCH_SRC && s->arch != ARCH_NOSRC)
        s->provides = repo_addid_dep(pd->repo, s->provides, rel2id(pd->pool, s->name, s->evr, REL_EQ, 1), 0);
       pd->solvable = 0;
       break;
@@ -322,6 +326,9 @@ endElement(void *userData, const char *name)
       repodata_set_str(pd->data, pd->handle, langtag(pd, SOLVABLE_SUMMARY, pd->tmplang), pd->content);
       pd->tmplang = sat_free((void *)pd->tmplang);
       break;
+    case STATE_SHORTSUMMARY:
+      repodata_set_str(pd->data, pd->handle, PRODUCT_SHORTLABEL, pd->content);
+      break;
     case STATE_DESCRIPTION:
       repodata_set_str(pd->data, pd->handle, langtag(pd, SOLVABLE_DESCRIPTION, pd->tmplang), pd->content );
       pd->tmplang = sat_free((void *)pd->tmplang);
@@ -342,7 +349,7 @@ endElement(void *userData, const char *name)
       break;
     case STATE_CPEID:
       if (pd->content)
-        repodata_set_str(pd->data, pd->handle, SOLVABLE_CPE_ID, pd->content);
+        repodata_set_str(pd->data, pd->handle, SOLVABLE_CPEID, pd->content);
     default:
       break;
     }
@@ -435,10 +442,7 @@ repo_add_code11_products(Repo *repo, const char *dirpath, int flags)
   DIR *dir;
   int i;
 
-  if (!(flags & REPO_REUSE_REPODATA))
-    data = repo_add_repodata(repo, 0);
-  else
-    data = repo_last_repodata(repo);
+  data = repo_add_repodata(repo, flags);
 
   memset(&pd, 0, sizeof(pd));
   pd.repo = repo;
@@ -536,7 +540,7 @@ repo_add_products(Repo *repo, const char *proddir, const char *root, int flags)
       join_freemem();
       return;
     }
-  
+
   /* code11 didn't work, try -release files parsing */
   fullpath = root ? join2(root, "", "/etc") : "/etc";
   dir = opendir(fullpath);