#endif
-#if defined(HAIKU)
+#if defined(HAIKU) || defined(MULTI_SEMANTICS)
static int
solv_cmp_version_part_haiku(const char *s1, const char *q1, const char *s2,
while (part1 + 1 < s1 && *part1 == '0')
part1++;
- while (part2 + 1 < s1 && *part2 == '0')
+ while (part2 + 1 < s2 && *part2 == '0')
part2++;
len1 = s1 - part1;
int cmp;
/* find pre-release separator */
- while (pre1 != q1 && *pre1 != '/')
+ while (pre1 != q1 && *pre1 != '~')
pre1++;
- while (pre2 != q2 && *pre2 != '/')
+ while (pre2 != q2 && *pre2 != '~')
pre2++;
/* compare main versions */
if (pre2 == q2)
return -1;
- return solv_cmp_version_part_haiku(pre1 + 1, q1, pre2 + 1, q2);
cmp = solv_cmp_version_part_haiku(pre1 + 1, q1, pre2 + 1, q2);
return cmp == 0 ? 0 : cmp < 0 ? -1 : 1; /* must return -1, 0, or 1 */
}
#endif /* HAIKU */
-
-
-/*
+
+
+/*
* the solv_vercmp variant your system uses.
*/
int
}
#if defined(MULTI_SEMANTICS)
-# define solv_vercmp (*(pool->disttype == DISTTYPE_DEB ? &solv_vercmp_deb : &solv_ver##cmp_rpm))
+# define solv_vercmp (*(pool->disttype == DISTTYPE_DEB ? &solv_vercmp_deb : \
+ pool->disttype == DISTTYPE_HAIKU ? solv_vercmp_haiku : \
+ &solv_ver##cmp_rpm))
#elif defined(DEBIAN)
# define solv_vercmp solv_vercmp_deb
#elif defined(ARCHLINUX)
# define solv_vercmp solv_vercmp_rpm_notilde
+#elif defined(HAIKU)
+# define solv_vercmp solv_vercmp_haiku
#else
# define solv_vercmp solv_vercmp_rpm
#endif
for (s2 = evr2, r2 = 0; *s2; s2++)
if (*s2 == '-')
r2 = s2;
-
r = 0;
if (mode != EVRCMP_MATCH || (evr1 != (r1 ? r1 : s1) && evr2 != (r2 ? r2 : s2)))
r = solv_vercmp(evr1, r1 ? r1 : s1, evr2, r2 ? r2 : s2);