[Rpm-maint] [PATCH 3/7] Add RPMTAG_NVRDA and RPMTAG_NEVRDA tag extension
Vladimir D. Seleznev
vseleznv at altlinux.org
Tue Oct 23 05:48:20 UTC 2018
These extensions construct name-[epoch:]version-release[-disttag].arch
if RPMTAG_DISTTAG is non-empty, otherwise they work as RPMTAG_NVRA and
RPMTAG_NEVRA respectively.
Signed-off-by: Vladimir D. Seleznev <vseleznv at altlinux.org>
---
lib/rpmtag.h | 2 ++
lib/tagexts.c | 19 ++++++++++++++++++-
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/lib/rpmtag.h b/lib/rpmtag.h
index 973a6b69d..27e888a7d 100644
--- a/lib/rpmtag.h
+++ b/lib/rpmtag.h
@@ -372,6 +372,8 @@ typedef enum rpmTag_e {
RPMTAG_PAYLOADDIGESTALGO = 5093, /* i */
RPMTAG_AUTOINSTALLED = 5094, /* i reservation (unimplemented) */
RPMTAG_IDENTITY = 5095, /* s reservation (unimplemented) */
+ RPMTAG_NVRDA = 5096, /* s extension */
+ RPMTAG_NEVRDA = 5097, /* s extension */
RPMTAG_FIRSTFREE_TAG /*!< internal */
} rpmTag;
diff --git a/lib/tagexts.c b/lib/tagexts.c
index f72ff60f1..d38103a79 100644
--- a/lib/tagexts.c
+++ b/lib/tagexts.c
@@ -745,7 +745,8 @@ enum nevraFlags_e {
NEVRA_EPOCH = (1 << 1),
NEVRA_VERSION = (1 << 2),
NEVRA_RELEASE = (1 << 3),
- NEVRA_ARCH = (1 << 4)
+ NEVRA_ARCH = (1 << 4),
+ NEVRA_DISTTAG = (1 << 5)
};
typedef rpmFlags nevraFlags;
@@ -771,6 +772,10 @@ static int getNEVRA(Header h, rpmtd td, nevraFlags flags)
val = headerGetString(h, RPMTAG_RELEASE);
if (val) rstrscat(&res, val, NULL);
}
+ if ((flags & NEVRA_DISTTAG)) {
+ val = headerGetString(h, RPMTAG_DISTTAG);
+ if (val) rstrscat(&res, "-", val, NULL);
+ }
if ((flags & NEVRA_ARCH)) {
val = headerGetString(h, RPMTAG_ARCH);
if (headerIsSource(h) && val == NULL) val = "src";
@@ -952,6 +957,16 @@ static int filenlinksTag(Header h, rpmtd td, headerGetFlags hgflags)
return (fc > 0);
}
+static int nvrdaTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+ return getNEVRA(h, td, NEVRA_NAME|NEVRA_VERSION|NEVRA_RELEASE|NEVRA_DISTTAG|NEVRA_ARCH);
+}
+
+static int nevrdaTag(Header h, rpmtd td, headerGetFlags hgflags)
+{
+ return getNEVRA(h, td, NEVRA_NAME|NEVRA_EPOCH|NEVRA_VERSION|NEVRA_RELEASE|NEVRA_DISTTAG|NEVRA_ARCH);
+}
+
static const struct headerTagFunc_s rpmHeaderTagExtensions[] = {
{ RPMTAG_GROUP, groupTag },
{ RPMTAG_DESCRIPTION, descriptionTag },
@@ -990,6 +1005,8 @@ static const struct headerTagFunc_s rpmHeaderTagExtensions[] = {
{ RPMTAG_OBSOLETENEVRS, obsoletenevrsTag },
{ RPMTAG_CONFLICTNEVRS, conflictnevrsTag },
{ RPMTAG_FILENLINKS, filenlinksTag },
+ { RPMTAG_NVRDA, nvrdaTag },
+ { RPMTAG_NEVRDA, nevrdaTag },
{ 0, NULL }
};
--
2.17.2
More information about the Rpm-maint
mailing list