RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: jbj@rpm5.org
Module: rpm Date: 28-Dec-2007 02:20:13
Branch: HEAD Handle: 2007122801201300
Modified files:
rpm CHANGES
rpm/rpmio macro.c
Log:
- jbj: fixup %{@foo:, } per rse comments.
Summary:
Revision Changes Path
1.2026 +1 -0 rpm/CHANGES
2.163 +19 -5 rpm/rpmio/macro.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.2025 -r1.2026 CHANGES
--- rpm/CHANGES 27 Dec 2007 20:12:26 -0000 1.2025
+++ rpm/CHANGES 28 Dec 2007 01:20:13 -0000 1.2026
@@ -1,4 +1,5 @@
5.0b3 -> 5.0b4:
+ - jbj: fixup %{@foo:, } per rse comments.
- jbj: convert %{@foo:|} to "foo|bar|quux" tuple. %@foo assumes CSV comma.
- rse: implement "rpm --undefine <macro>" as the counterpart to "rpm --define '<macro> <value>'"
- afb: added %__objext,%__libext,%__shlibext,%__exeext for file extensions.
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/macro.c
============================================================================
$ cvs diff -u -r2.162 -r2.163 macro.c
--- rpm/rpmio/macro.c 27 Dec 2007 20:12:26 -0000 2.162
+++ rpm/rpmio/macro.c 28 Dec 2007 01:20:13 -0000 2.163
@@ -1304,6 +1304,20 @@
}
}
+static int expandFIFO(MacroBuf mb, MacroEntry me, const char *g, size_t gn)
+ /*@*/
+{
+ int rc = 0;
+
+ if (me->prev == NULL)
+ return rc;
+
+ expandFIFO(mb, me->prev, g, gn);
+ if (me->prev->prev)
+ rc = expandT(mb, g, gn);
+ return expandT(mb, me->body, strlen(me->body));
+}
+
/**
* The main macro recursion loop.
* @todo Dynamically reallocate target buffer.
@@ -1673,11 +1687,11 @@
/* XXX Special processing to create a tuple from stack'd values. */
if (stackarray) {
- c = ((g && g < ge) ? *g : ',');
- do {
- if (me != *mep) SAVECHAR(mb, c);
- rc = expandT(mb, me->body, strlen(me->body));
- } while ((me = me->prev) != NULL);
+ if (!(g && g < ge)) {
+ g = ",";
+ gn = strlen(g);
+ }
+ rc = expandFIFO(mb, me, g, gn);
s = se;
continue;
}
@@ .
Received on Fri Dec 28 02:20:13 2007