use evrid2vrstr inline function
authorMichael Schroeder <mls@suse.de>
Mon, 8 Oct 2012 13:25:31 +0000 (15:25 +0200)
committerMichael Schroeder <mls@suse.de>
Mon, 8 Oct 2012 13:25:31 +0000 (15:25 +0200)
ext/repo_susetags.c
src/repodata.c
src/solvable.c

index 2eb42e0..8edce44 100644 (file)
@@ -152,7 +152,7 @@ add_source(struct parsedata *pd, char *line, Solvable *s, Id handle)
       const char *p;
       for (p = sevr; *p >= '0' && *p <= '9'; p++)
        ;
-      if (*p == ':' && p[1])
+      if (p != sevr && *p == ':' && p[1])
        sevr = p;
     }
   if (name == s->name)
index 1574eb5..d2e56f2 100644 (file)
@@ -2221,7 +2221,7 @@ evrid2vrstr(Pool *pool, Id evrid)
     return evr;
   for (p = evr; *p >= '0' && *p <= '9'; p++)
     ;
-  return p != evr && *p == ':' ? p + 1 : evr;
+  return p != evr && *p == ':' && p[1] ? p + 1 : evr;
 }
 
 void
@@ -2331,16 +2331,7 @@ repodata_set_sourcepkg(Repodata *data, Id solvid, const char *sourcepkg)
   else
     repodata_set_id(data, solvid, SOLVABLE_SOURCENAME, pool_strn2id(pool, sourcepkg, sevr - sourcepkg - 1, 1));
 
-  evr = pool_id2str(pool, s->evr);
-  if (evr)
-    {
-      /* strip epoch */
-      const char *pp;
-      for (pp = evr; *pp >= '0' && *pp <= '9'; pp++)
-        ;
-      if (*pp == ':' && pp[1])
-        evr = pp + 1;
-    }
+  evr = evrid2vrstr(pool, s->evr);
   if (evr && !strncmp(sevr, evr, sarch - sevr - 1) && evr[sarch - sevr - 1] == 0)
     repodata_set_void(data, solvid, SOLVABLE_SOURCEEVR);
   else
index 99fe788..71ffa71 100644 (file)
@@ -265,7 +265,7 @@ evrid2vrstr(Pool *pool, Id evrid)
     return evr;
   for (p = evr; *p >= '0' && *p <= '9'; p++)
     ;
-  return p != evr && *p == ':' ? p + 1 : evr;
+  return p != evr && *p == ':' && p[1] ? p + 1 : evr;
 }
 
 const char *
@@ -334,18 +334,7 @@ solvable_lookup_sourcepkg(Solvable *s)
     return 0;
   archid = solvable_lookup_id(s, SOLVABLE_SOURCEARCH);
   if (solvable_lookup_void(s, SOLVABLE_SOURCEEVR))
-    {
-      evr = pool_id2str(pool, s->evr);
-      if (evr && (archid == ARCH_SRC || archid == ARCH_NOSRC))
-       {
-         /* assume rpm, strip epoch */
-         const char *p;
-         for (p = evr; *p >= '0' && *p <= '9'; p++)
-           ;
-         if (*p == ':' && p[1])
-           evr = p + 1;
-       }
-    }
+    evr = evrid2vrstr(pool, s->evr);
   else
     evr = solvable_lookup_str(s, SOLVABLE_SOURCEEVR);
   if (archid == ARCH_SRC || archid == ARCH_NOSRC)