Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 07e56ec36f5b6db53acae40086fcf8ad > files > 26

rpm-4.4.2.3-20mnb2.src.rpm

--- rpm-4.4.2.2/python/rpmmodule.c.pix	2007-09-11 08:28:15.000000000 +0200
+++ rpm-4.4.2.2/python/rpmmodule.c	2007-12-14 15:00:18.000000000 +0100
@@ -433,7 +433,7 @@ void init_rpm(void)
     REGISTER_ENUM(RPMSENSE_RPMLIB);
     REGISTER_ENUM(RPMSENSE_TRIGGERPREIN);
     REGISTER_ENUM(RPMSENSE_KEYRING);
-    REGISTER_ENUM(RPMSENSE_PATCHES);
+    REGISTER_ENUM(RPMSENSE_STRONG);
     REGISTER_ENUM(RPMSENSE_CONFIG);
 
     REGISTER_ENUM(RPMTRANS_FLAG_TEST);
--- rpm-4.4.2.2/build/parsePreamble.c.pix	2007-09-11 08:28:12.000000000 +0200
+++ rpm-4.4.2.2/build/parsePreamble.c	2007-12-14 15:01:07.000000000 +0100
@@ -129,6 +129,8 @@ static struct tokenBits_s installScriptB
     { "post",		RPMSENSE_SCRIPT_POST },
     { "rpmlib",		RPMSENSE_RPMLIB },
     { "verify",		RPMSENSE_SCRIPT_VERIFY },
+    { "hint",		RPMSENSE_MISSINGOK },
+    { "strong",		RPMSENSE_STRONG },
     { NULL, 0 }
 };
 
@@ -140,6 +142,8 @@ static struct tokenBits_s buildScriptBit
     { "build",		RPMSENSE_SCRIPT_BUILD },
     { "install",	RPMSENSE_SCRIPT_INSTALL },
     { "clean",		RPMSENSE_SCRIPT_CLEAN },
+    { "hint",		RPMSENSE_MISSINGOK },
+    { "strong",		RPMSENSE_STRONG },
     { NULL, 0 }
 };
 
@@ -692,6 +696,16 @@ static int handlePreambleTag(Spec spec, 
 	if ((rc = parseRCPOT(spec, pkg, field, tag, 0, tagflags)))
 	    return rc;
 	break;
+    case RPMTAG_SUGGESTSFLAGS:
+    case RPMTAG_ENHANCESFLAGS:
+	tagflags = RPMSENSE_MISSINGOK;
+	if (macro && (!strcmp(macro, "recommends")))
+	    tagflags |= RPMSENSE_STRONG;
+	if (macro && (!strcmp(macro, "supplements")))
+	    tagflags |= RPMSENSE_STRONG;
+	if ((rc = parseRCPOT(spec, pkg, field, tag, 0, tagflags)))
+	    return rc;
+	break;
     case RPMTAG_EXCLUDEARCH:
     case RPMTAG_EXCLUSIVEARCH:
     case RPMTAG_EXCLUDEOS:
@@ -783,6 +797,10 @@ static struct PreambleRec_s preambleList
     {RPMTAG_DISTTAG,		0, 0, 0, "disttag"},
     {RPMTAG_CVSID,		0, 0, 0, "cvsid"},
     {RPMTAG_SVNID,		0, 0, 0, "svnid"},
+    {RPMTAG_SUGGESTSFLAGS,	0, 0, 0, "recommends"},
+    {RPMTAG_SUGGESTSFLAGS,	0, 0, 0, "suggests"},
+    {RPMTAG_ENHANCESFLAGS,	0, 0, 0, "supplements"},
+    {RPMTAG_ENHANCESFLAGS,	0, 0, 0, "enhances"},
     /*@-nullassign@*/	/* LCL: can't add null annotation */
     {0, 0, 0, 0, 0}
     /*@=nullassign@*/
--- rpm-4.4.2.2/build/parseReqs.c.pix	2007-09-11 08:28:12.000000000 +0200
+++ rpm-4.4.2.2/build/parseReqs.c	2007-12-14 15:01:31.000000000 +0100
@@ -81,6 +81,10 @@ int parseRCPOT(Spec spec, Package pkg, c
 	tagflags |= RPMSENSE_ANY;
 	h = spec->buildRestrictions;
 	break;
+    case RPMTAG_SUGGESTSFLAGS:
+    case RPMTAG_ENHANCESFLAGS:
+	h = pkg->header;
+	break;
     default:
     case RPMTAG_REQUIREFLAGS:
 	tagflags |= RPMSENSE_ANY;
--- rpm-4.4.2.2/build/reqprov.c.pix	2007-09-11 08:28:12.000000000 +0200
+++ rpm-4.4.2.2/build/reqprov.c	2007-12-14 15:02:29.000000000 +0100
@@ -48,6 +48,16 @@ int addReqProv(/*@unused@*/ Spec spec, H
 	flagtag = RPMTAG_TRIGGERFLAGS;
 	indextag = RPMTAG_TRIGGERINDEX;
 	extra = Flags & RPMSENSE_TRIGGER;
+    } else if (tagN == RPMTAG_SUGGESTSFLAGS) {
+	nametag = RPMTAG_SUGGESTSNAME;
+	versiontag = RPMTAG_SUGGESTSVERSION;
+	flagtag = RPMTAG_SUGGESTSFLAGS;
+	extra = Flags & _ALL_REQUIRES_MASK;
+    } else if (tagN == RPMTAG_ENHANCESFLAGS) {
+	nametag = RPMTAG_ENHANCESNAME;
+	versiontag = RPMTAG_ENHANCESVERSION;
+	flagtag = RPMTAG_ENHANCESFLAGS;
+	extra = Flags & _ALL_REQUIRES_MASK;
     } else {
 	nametag = RPMTAG_REQUIRENAME;
 	versiontag = RPMTAG_REQUIREVERSION;
--- rpm-4.4.2.2/build/rpmfc.c.pix	2007-12-14 15:00:18.000000000 +0100
+++ rpm-4.4.2.2/build/rpmfc.c	2007-12-14 15:00:18.000000000 +0100
@@ -1385,6 +1385,12 @@ static struct DepMsg_s depMsgs[] = {
   { "Obsoletes",	{ "%{?__find_obsoletes}", NULL, NULL, NULL },
 	RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_OBSOLETEFLAGS,
 	0, -1 },
+  { "Enhances",		{ "%{?__find_enhances}", NULL, NULL, NULL },
+	RPMTAG_ENHANCESNAME, RPMTAG_ENHANCESVERSION, RPMTAG_ENHANCESFLAGS,
+	RPMSENSE_STRONG, RPMSENSE_STRONG },
+  { "Supplements",	{ "%{?__find_supplements}", NULL, NULL, NULL },
+	RPMTAG_ENHANCESNAME, RPMTAG_ENHANCESVERSION, RPMTAG_ENHANCESFLAGS,
+	RPMSENSE_STRONG, 0 },
   { NULL,		{ NULL, NULL, NULL, NULL },	0, 0, 0, 0, 0 }
 };
 
@@ -1480,6 +1486,14 @@ static int rpmfcGenerateDependsHelper(co
 	    failnonzero = 0;
 	    tagflags = RPMSENSE_FIND_REQUIRES;
 	    /*@switchbreak@*/ break;
+	case RPMTAG_ENHANCESFLAGS:
+	    if (!pkg->autoProv)
+		continue;
+	    failnonzero = 0;
+	    tagflags = RPMSENSE_FIND_REQUIRES | RPMSENSE_MISSINGOK;
+	    if (strcmp(dm->msg, "Supplements") == 0)
+		tagflags |= RPMSENSE_STRONG;
+	    /*@switchbreak@*/ break;
 	default:
 	    continue;
 	    /*@notreached@*/ /*@switchbreak@*/ break;
--- rpm-4.4.2.2/lib/rpmlib.h.pix	2007-12-14 15:00:18.000000000 +0100
+++ rpm-4.4.2.2/lib/rpmlib.h	2007-12-14 15:00:18.000000000 +0100
@@ -529,7 +529,7 @@ typedef	enum rpmsenseFlags_e {
     RPMSENSE_TRIGGERPREIN = (1 << 25),	/*!< @todo Implement %triggerprein. */
 /*@=enummemuse@*/
     RPMSENSE_KEYRING	= (1 << 26),
-    RPMSENSE_PATCHES	= (1 << 27),
+    RPMSENSE_STRONG	= (1 << 27),
     RPMSENSE_CONFIG	= (1 << 28)
 } rpmsenseFlags;
 
@@ -548,6 +548,7 @@ typedef	enum rpmsenseFlags_e {
     RPMSENSE_SCRIPT_VERIFY | \
     RPMSENSE_FIND_REQUIRES | \
     RPMSENSE_MISSINGOK | \
+    RPMSENSE_STRONG | \
     RPMSENSE_SCRIPT_PREP | \
     RPMSENSE_SCRIPT_BUILD | \
     RPMSENSE_SCRIPT_INSTALL | \
--- rpm-4.4.2.2/lib/rpmds.c.pix	2007-09-11 08:28:15.000000000 +0200
+++ rpm-4.4.2.2/lib/rpmds.c	2007-12-14 15:00:18.000000000 +0100
@@ -320,6 +320,11 @@ rpmds rpmdsNew(Header h, rpmTag tagN, in
 	tagEVR = RPMTAG_TRIGGERVERSION;
 	tagF = RPMTAG_TRIGGERFLAGS;
     } else
+    if (tagN == RPMTAG_ENHANCESNAME) {
+	Type = "Enhances";
+	tagEVR = RPMTAG_ENHANCESVERSION;
+	tagF = RPMTAG_ENHANCESFLAGS;
+    } else
 	goto exit;
 
     /*@-branchstate@*/
--- rpm-4.4.2.2/lib/formats.c.pix	2007-09-11 08:28:15.000000000 +0200
+++ rpm-4.4.2.2/lib/formats.c	2007-12-14 15:00:18.000000000 +0100
@@ -543,6 +543,38 @@ static /*@only@*/ char * depflagsFormat(
     return val;
 }
 
+static /*@only@*/ char * depflag_strongFormat(int_32 type, const void * data,
+		char * formatPrefix, int padding, /*@unused@*/ int element)
+	/*@modifies formatPrefix @*/
+	/*@requires maxRead(data) >= 0 @*/
+{
+    char * val;
+    char buf[10];
+    int anint;
+
+    if (type != RPM_INT32_TYPE) {
+	val = xstrdup(_("(not a number)"));
+    } else {
+	anint = *((int_32 *) data);
+	buf[0] = '\0';
+
+/*@-boundswrite@*/
+	if (anint & RPMSENSE_STRONG)
+	    strcat(buf, "strong");
+/*@=boundswrite@*/
+
+	val = xmalloc(7 + padding);
+/*@-boundswrite@*/
+	strcat(formatPrefix, "s");
+/*@=boundswrite@*/
+	/*@-formatconst@*/
+	sprintf(val, formatPrefix, buf);
+	/*@=formatconst@*/
+    }
+
+    return val;
+}
+
 /**
  * Retrieve mounted file system paths.
  * @param h		header
@@ -1171,6 +1203,7 @@ const struct headerSprintfExtension_s rp
     { HEADER_EXT_FORMAT, "base64",		{ base64Format } },
     { HEADER_EXT_FORMAT, "pgpsig",		{ pgpsigFormat } },
     { HEADER_EXT_FORMAT, "depflags",		{ depflagsFormat } },
+    { HEADER_EXT_FORMAT, "depflag_strong",	{ depflag_strongFormat } },
     { HEADER_EXT_FORMAT, "fflags",		{ fflagsFormat } },
     { HEADER_EXT_FORMAT, "perms",		{ permsFormat } },
     { HEADER_EXT_FORMAT, "permissions",		{ permsFormat } },
--- rpm-4.4.2.2/rpmpopt.in.pix	2007-09-11 08:28:15.000000000 +0200
+++ rpm-4.4.2.2/rpmpopt.in	2007-12-14 15:00:18.000000000 +0100
@@ -68,6 +68,22 @@ rpm	alias --requires	--qf \
 	--POPTdesc=$"list capabilities required by package(s)"
 rpm	alias -R --requires
 
+rpm	alias --suggests	--qf \
+  "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package suggests"
+
+rpm	alias --recommends	--qf \
+  "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package recommends"
+
+rpm	alias --enhances	--qf \
+  "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package enhances"
+
+rpm	alias --supplements	--qf \
+  "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package supplements"
+
 rpm	alias --info --qf 'Name        : %-27{NAME}  Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n\
 Version     : %-27{VERSION}       Vendor: %{VENDOR}\n\
 Release     : %-27{RELEASE}   Build Date: %{BUILDTIME:date}\n\
@@ -351,6 +367,22 @@ rpmq	alias --requires	--qf \
 	--POPTdesc=$"list capabilities required by package(s)"
 rpmq	alias -R --requires
 
+rpmq	alias --suggests	--qf \
+  "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package suggests"
+
+rpmq	alias --recommends	--qf \
+  "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package recommends"
+
+rpmq	alias --enhances	--qf \
+  "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package enhances"
+
+rpmq	alias --supplements	--qf \
+  "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package supplements"
+
 rpmq	alias --info --qf 'Name        : %-27{NAME}  Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n\
 Version     : %-27{VERSION}       Vendor: %{VENDOR}\n\
 Release     : %-27{RELEASE}   Build Date: %{BUILDTIME:date}\n\
@@ -452,6 +484,22 @@ rpmquery	alias --requires	--qf \
 	--POPTdesc=$"list capabilities required by package(s)"
 rpmquery	alias -R --requires
 
+rpmquery	alias --suggests	--qf \
+  "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package suggests"
+
+rpmquery	alias --recommends	--qf \
+  "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package recommends"
+
+rpmquery	alias --enhances	--qf \
+  "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package enhances"
+
+rpmquery	alias --supplements	--qf \
+  "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \
+	--POPTdesc=$"list capabilities this package supplements"
+
 rpmquery	alias --info --qf 'Name        : %-27{NAME}  Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n\
 Version     : %-27{VERSION}       Vendor: %{VENDOR}\n\
 Release     : %-27{RELEASE}   Build Date: %{BUILDTIME:date}\n\