RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Ralf S. Engelschall
Root: /v/rpm/cvs Email: [EMAIL PROTECTED]
Module: rpm Date: 16-Mar-2008 10:27:10
Branch: HEAD Handle: 2008031609270901
Modified files:
rpm CHANGES
rpm/rpmio macro.c
Log:
RPM really has to use the POPT_CONTEXT_POSIXMEHARDER flag to (again)
correctly parse macro arguments *without* option/argument permutations
now that we are using POPT instead of getopt(3)!
Broken behavior without POPT_CONTEXT_POSIXMEHARDER:
$ rpm --define '%foo() <%*>' --eval '%{foo bar %(echo -n "quux") baz}'
error: Unknown option in macro foo(): -n: unknown option
<%*>
Fixed behavior with POPT_CONTEXT_POSIXMEHARDER:
$ rpm --define '%foo() <%*>' --eval '%{foo bar %(echo -n "quux") baz}'
<bar quux baz>
Summary:
Revision Changes Path
1.2249 +1 -0 rpm/CHANGES
2.192 +1 -1 rpm/rpmio/macro.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.2248 -r1.2249 CHANGES
--- rpm/CHANGES 14 Mar 2008 22:55:18 -0000 1.2248
+++ rpm/CHANGES 16 Mar 2008 09:27:09 -0000 1.2249
@@ -1,4 +1,5 @@
5.0.0 -> 5.1a1:
+ - rse: fix macro option/argument parsing (again), this time by using
POPT_CONTEXT_POSIXMEHARDER
- afb: fix endianness detection when compiling Mac OS X Universal
Binaries.
- jbj: install rpmmtree in bindir, its at least as functional as
mtree(8).
- jbj: add rpmmtree (from mtree(8) in OpenBSD).
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/macro.c
============================================================================
$ cvs diff -u -r2.191 -r2.192 macro.c
--- rpm/rpmio/macro.c 13 Mar 2008 22:39:32 -0000 2.191
+++ rpm/rpmio/macro.c 16 Mar 2008 09:27:10 -0000 2.192
@@ -1077,7 +1077,7 @@
/* Parse the options, defining option macros. */
/[EMAIL PROTECTED]@*/
- optCon = poptGetContext(argv[0], argc, argv, optTbl,
POPT_CONTEXT_NO_EXEC);
+ optCon = poptGetContext(argv[0], argc, argv, optTbl,
POPT_CONTEXT_NO_EXEC|POPT_CONTEXT_POSIXMEHARDER);
/[EMAIL PROTECTED]@*/
while ((c = poptGetNextOpt(optCon)) > 0) {
const char * optArg = poptGetOptArg(optCon);
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository [email protected]