From bb5fa1b0143503c7d9e9287ef180c3465ba8a44f Mon Sep 17 00:00:00 2001 From: Frank Schreiner Date: Mon, 29 Feb 2016 21:25:34 +0100 Subject: [PATCH] tags for old suse versions --- src/parsehdr.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/parsehdr.c b/src/parsehdr.c index 2f6a79e..95a3df6 100644 --- a/src/parsehdr.c +++ b/src/parsehdr.c @@ -31,6 +31,8 @@ #define RPM_WEAK_DEPS_SUPPORT 1 #endif +#define RPMSENSE_STRONG (1 << 27) + typedef enum DepType_e { DEP_PROVIDES, DEP_CONFLICTS, @@ -40,6 +42,8 @@ typedef enum DepType_e { DEP_ENHANCES, DEP_RECOMMENDS, DEP_SUPPLEMENTS, + DEP_OLDSUGGESTS, + DEP_OLDENHANCES, DEP_SENTINEL } DepType; @@ -57,10 +61,12 @@ static DepItem dep_items[] = { { DEP_OBSOLETES, RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEFLAGS, RPMTAG_OBSOLETEVERSION }, { DEP_REQUIRES, RPMTAG_REQUIRENAME, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIREVERSION }, #ifdef RPM_WEAK_DEPS_SUPPORT - { DEP_SUGGESTS, RPMTAG_SUGGESTNAME, RPMTAG_SUGGESTFLAGS, RPMTAG_SUGGESTVERSION }, - { DEP_ENHANCES, RPMTAG_ENHANCENAME, RPMTAG_ENHANCEFLAGS, RPMTAG_ENHANCEVERSION }, - { DEP_RECOMMENDS, RPMTAG_RECOMMENDNAME, RPMTAG_RECOMMENDFLAGS, RPMTAG_RECOMMENDVERSION }, - { DEP_SUPPLEMENTS, RPMTAG_SUPPLEMENTNAME, RPMTAG_SUPPLEMENTFLAGS, RPMTAG_SUPPLEMENTVERSION }, + { DEP_SUGGESTS, RPMTAG_SUGGESTNAME, RPMTAG_SUGGESTFLAGS, RPMTAG_SUGGESTVERSION }, + { DEP_ENHANCES, RPMTAG_ENHANCENAME, RPMTAG_ENHANCEFLAGS, RPMTAG_ENHANCEVERSION }, + { DEP_RECOMMENDS, RPMTAG_RECOMMENDNAME, RPMTAG_RECOMMENDFLAGS, RPMTAG_RECOMMENDVERSION }, + { DEP_SUPPLEMENTS, RPMTAG_SUPPLEMENTNAME, RPMTAG_SUPPLEMENTFLAGS, RPMTAG_SUPPLEMENTVERSION }, + { DEP_OLDSUGGESTS, RPMTAG_OLDSUGGESTSNAME, RPMTAG_OLDSUGGESTSFLAGS, RPMTAG_OLDSUGGESTSVERSION }, + { DEP_OLDENHANCES, RPMTAG_OLDENHANCESNAME, RPMTAG_OLDENHANCESFLAGS, RPMTAG_OLDENHANCESVERSION }, #endif { DEP_SENTINEL, 0, 0, 0 }, }; @@ -451,6 +457,20 @@ cr_package_from_header(Header hdr, case DEP_SUPPLEMENTS: pkg->supplements = g_slist_prepend(pkg->supplements, dependency); break; + case DEP_OLDSUGGESTS: + if ( num_flags & RPMSENSE_STRONG ) { + pkg->recommends = g_slist_prepend(pkg->recommends, dependency); + } else { + pkg->suggests = g_slist_prepend(pkg->suggests, dependency); + } + break; + case DEP_OLDENHANCES: + if ( num_flags & RPMSENSE_STRONG ) { + pkg->supplements = g_slist_prepend(pkg->supplements, dependency); + } else { + pkg->enhances = g_slist_prepend(pkg->enhances, dependency); + } + break; } // Switch end } // While end -- 2.34.1