summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Schroeder <mls@suse.de>2020-10-08 13:53:36 +0200
committerPanu Matilainen <pmatilai@redhat.com>2020-12-10 13:28:07 +0200
commitf18dd8029c56548b1839a97bbaff3da911e15c28 (patch)
tree3606bb3a650623ccba0bb62aafcac48f07cfcc49
parent8760855ef725eec060e1be47853faa265efb747f (diff)
downloadrpm-f18dd8029c56548b1839a97bbaff3da911e15c28.tar.gz
Support stringification of versions in the expression parser
(cherry picked from commit 0f6ffbb99238b983f456604a02a933912da7af2f)
-rw-r--r--rpmio/expression.c9
-rw-r--r--tests/rpmmacro.at2
2 files changed, 10 insertions, 1 deletions
diff --git a/rpmio/expression.c b/rpmio/expression.c
index 2b1c69cb1..f8210a456 100644
--- a/rpmio/expression.c
+++ b/rpmio/expression.c
@@ -154,7 +154,11 @@ static void valueDump(const char *msg, Value v, FILE *fp)
if (v) {
if (v->type == VALUE_TYPE_INTEGER)
fprintf(fp, "INTEGER %d\n", v->data.i);
- else
+ else if (v->type == VALUE_TYPE_VERSION) {
+ char *evr = rpmverEVR(v->data.v);
+ fprintf(fp, "VERSION %s\n", evr);
+ free(evr);
+ } else
fprintf(fp, "STRING '%s'\n", v->data.s);
} else
fprintf(fp, "NULL\n");
@@ -934,6 +938,9 @@ char *rpmExprStrFlags(const char *expr, int flags)
case VALUE_TYPE_STRING:
result = xstrdup(v->data.s);
break;
+ case VALUE_TYPE_VERSION:
+ result = rpmverEVR(v->data.v);
+ break;
default:
break;
}
diff --git a/tests/rpmmacro.at b/tests/rpmmacro.at
index fc6085c7c..7ceefb51d 100644
--- a/tests/rpmmacro.at
+++ b/tests/rpmmacro.at
@@ -450,6 +450,7 @@ runroot rpm \
--eval '%[%{aaa}]' \
--eval '%["%{aaa}"]' \
--eval '%[%{?ccc}]' \
+ --eval '%[v"1:2.3-4"]' \
]],
[0],
[4096
@@ -458,6 +459,7 @@ runroot rpm \
5
5
0
+1:2.3-4
],
[])
AT_CLEANUP