+++ /dev/null
-diff -urN poldek-0.20.1-cvs20070108.22.org/pm/rpm/misc.c poldek-0.20.1-cvs20070108.22/pm/rpm/misc.c
---- poldek-0.20.1-cvs20070108.22.org/pm/rpm/misc.c 2007-01-08 22:14:18.000000000 +0100
-+++ poldek-0.20.1-cvs20070108.22/pm/rpm/misc.c 2007-05-21 08:01:00.385663226 +0200
-@@ -22,6 +22,7 @@
- #include <stdint.h>
- #include <string.h>
-
-+#define _RPMPRCO_INTERNAL 1
- #include <rpm/rpmlib.h>
- #if HAVE_RPMDSRPMLIB
- # include <rpm/rpmds.h>
-@@ -73,6 +74,24 @@
-
- typedef int (*rpmcap_fn)(rpmds *ds, void *);
-
-+#ifdef HAVE_RPMDSSYSINFO
-+static int pm_rpmdsSysinfo(rpmds * dsp, const char * fn) {
-+ int ret;
-+// XXX: better test welcome
-+#define RPM_VERSION(a,b,c) ((a)*65536+(b)*256+(c))
-+#if RPM_VERSION(RPM_FORMAT_VERSION,RPM_MAJOR_VERSION,RPM_MINOR_VERSION) >= RPM_VERSION(4,4,8)
-+ rpmPRCO PRCO = rpmdsNewPRCO(NULL);
-+ PRCO->Pdsp = dsp;
-+ ret = rpmdsSysinfo(PRCO, fn);
-+ PRCO->Pdsp = NULL;
-+ rpmdsFreePRCO(PRCO);
-+#else
-+ ret = rpmdsSysinfo(dsp, fn);
-+#endif
-+ return ret;
-+}
-+#endif
-+
- static int get_rpmlib_caps(tn_array *caps)
- {
- rpmds ds = NULL;
-@@ -86,7 +105,7 @@
- (rpmcap_fn)rpmdsGetconf,
- #endif
- #ifdef HAVE_RPMDSSYSINFO
-- (rpmcap_fn)rpmdsSysinfo,
-+ (rpmcap_fn)pm_rpmdsSysinfo,
- #endif
- #ifdef HAVE_RPMDSUNAME
- (rpmcap_fn)rpmdsUname,
+++ /dev/null
-diff -urN poldek-0.20.1-cvs20070108.22.org/configure.in poldek-0.20.1-cvs20070108.22/configure.in
---- poldek-0.20.1-cvs20070108.22.org/configure.in 2007-06-16 20:02:10.545517000 +0200
-+++ poldek-0.20.1-cvs20070108.22/configure.in 2007-06-16 20:02:53.024324896 +0200
-@@ -302,6 +302,7 @@
- dnl rpm 4.4.7
- dnl - killed rpmMachineScore and rpmGetVar
- AC_CHECK_FUNCS(rpmMachineScore)
-+AC_CHECK_FUNCS(rpmPlatformScore)
- AC_CHECK_FUNCS(rpmGetVar)
- AC_CHECK_FUNCS(rpmioAccess)
- dnl - new _rpmvercmp()
-diff -urN poldek-0.20.1-cvs20070108.22.org/pm/rpm/misc.c poldek-0.20.1-cvs20070108.22/pm/rpm/misc.c
---- poldek-0.20.1-cvs20070108.22.org/pm/rpm/misc.c 2007-06-16 20:02:10.545517000 +0200
-+++ poldek-0.20.1-cvs20070108.22/pm/rpm/misc.c 2007-06-16 20:02:53.024324896 +0200
-@@ -48,7 +48,7 @@
- struct capreq *cr;
- uint32_t flags, crflags;
-
-- name = rpmdsN(ds);
-+ name = rpmdsDNEVR(ds)+2;
- evr = rpmdsEVR(ds);
- flags = rpmdsFlags(ds);
-
-@@ -182,8 +182,39 @@
- return caps;
- }
-
-+#ifdef HAVE_RPMPLATFORMSCORE
-+static int machine_score(int tag, const char *val) {
-+ int rc;
-+ char *cpu, *vendor, *os;
-
--#ifdef HAVE_RPMMACHINESCORE
-+ cpu = rpmExpand("%{_host_cpu}", NULL);
-+ vendor = rpmExpand("%{_host_vendor}", NULL);
-+ os = rpmExpand("%{_host_os}", NULL);
-+
-+ if (cpu && vendor && os) {
-+ int size = strlen(cpu) + strlen(vendor) + strlen(os) + 2;
-+ char *p = n_malloc(size);
-+ switch (tag) {
-+ case PMMSTAG_ARCH:
-+ snprintf(p, size, "%s-%s-%s", val, vendor, os);
-+ break;
-+ case PMMSTAG_OS:
-+ snprintf(p, size, "%s-%s-%s", cpu, vendor, val);
-+ break;
-+ default:
-+ snprintf(p, size, "%s", val);
-+ break;
-+ }
-+ rc = rpmPlatformScore(p, platpat, nplatpat);
-+ n_free(p);
-+ } else
-+ rc = rpmPlatformScore(val, platpat, nplatpat);
-+ n_free(cpu);
-+ n_free(vendor);
-+ n_free(os);
-+ return rc;
-+}
-+#elif defined(HAVE_RPMMACHINESCORE)
- static int machine_score(int tag, const char *val)
- {
- int rpmtag = 0, rc;
-@@ -250,8 +281,10 @@
-
- if (arch == NULL)
- return 0;
--
--#ifdef HAVE_RPMMACHINESCORE
-+
-+#ifdef HAVE_RPMPLATFORMSCORE
-+ rc = rpmPlatformScore(arch, platpat, nplatpat);
-+#elif defined(HAVE_RPMMACHINESCORE)
- rc = rpmMachineScore(RPM_MACHTABLE_INSTARCH, arch);
- #else
- rc = 9;
-diff -urN poldek-0.20.1-cvs20070108.22.org/pm/rpm/pm_rpm.h poldek-0.20.1-cvs20070108.22/pm/rpm/pm_rpm.h
---- poldek-0.20.1-cvs20070108.22.org/pm/rpm/pm_rpm.h 2007-01-08 15:59:16.000000000 +0100
-+++ poldek-0.20.1-cvs20070108.22/pm/rpm/pm_rpm.h 2007-06-16 20:02:53.027658397 +0200
-@@ -2,6 +2,7 @@
- #define POLDEK_PM_RPM_MODULE_H
-
- #include <rpm/rpmlib.h>
-+#include <rpm/rpmevr.h>
- #ifdef HAVE_RPM_4_0_4
- # include <rpm/rpmcli.h>
- #endif
-diff -urN poldek-0.20.1-cvs20070108.22.org/pm/rpm/rpm.c poldek-0.20.1-cvs20070108.22/pm/rpm/rpm.c
---- poldek-0.20.1-cvs20070108.22.org/pm/rpm/rpm.c 2006-12-18 09:53:02.000000000 +0100
-+++ poldek-0.20.1-cvs20070108.22/pm/rpm/rpm.c 2007-06-16 20:02:53.027658397 +0200
-@@ -402,10 +402,6 @@
- #endif /* HAVE_RPMLOG */
-
-
--#ifndef HAVE__RPMVERCMP /* _rpmvercmp - new in rpm 4.4.7 */
--extern int rpmvercmp(const char *one, const char *two);
--#endif
--
- int pm_rpm_vercmp(const char *one, const char *two)
- {
- return rpmvercmp(one, two);
-diff -urN poldek-0.20.1-cvs20070108.22.org/pm/rpm/rpmvercmp.c poldek-0.20.1-cvs20070108.22/pm/rpm/rpmvercmp.c
---- poldek-0.20.1-cvs20070108.22.org/pm/rpm/rpmvercmp.c 2006-12-18 09:52:40.000000000 +0100
-+++ poldek-0.20.1-cvs20070108.22/pm/rpm/rpmvercmp.c 2007-06-16 20:03:14.682083082 +0200
-@@ -6,14 +6,10 @@
- #include <stdlib.h>
- #include <string.h>
- #include <rpm/rpmlib.h>
-+#include <rpm/rpmevr.h>
-
- #include "i18n.h"
-
--#ifndef HAVE__RPMVERCMP /* _rpmvercmp - new in rpm 4.4.7 */
--extern int rpmvercmp(const char *one, const char *two);
--#endif
--
--
- int main(int argc, char *argv[])
- {
- int cmprc, is_test = 0;
-diff -u -r1.11 -r1.12
---- poldek/pm/rpm/misc.c 2007/06/16 16:24:08 1.11
-+++ poldek/pm/rpm/misc.c 2007/06/16 20:16:40 1.12
-@@ -43,14 +43,20 @@
- {
- ds = rpmdsInit(ds);
- while (rpmdsNext(ds) >= 0) {
-- const char *name, *evr;
-- char tmp[256], *tmpptr;
-+ const char *evr, *p;
-+ char *name, tmp[256], *tmpptr;
- struct capreq *cr;
- uint32_t flags, crflags;
-
-- name = rpmdsDNEVR(ds)+2;
-+ p = rpmdsDNEVR(ds)+2;
-+ n_strdupap(p, &name);
-+ if ((p = strchr(name, ' '))) /* cut afer name */
-+ *(char*)p = '\0';
-+
- evr = rpmdsEVR(ds);
- flags = rpmdsFlags(ds);
-+
-+ DBGF("%s, %s\n", name, evr);
-
- if ((flags & RPMSENSE_EQUAL)) {
- n_strncpy(tmp, evr, 128);