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: 18-Jun-2008 20:23:26 Branch: rpm-5_1 Handle: 2008061818232501 Modified files: (Branch: rpm-5_1) rpm VENDOR rpm/rpmio macro.c Log: sync rpmio/macro.c and VENDOR with HEAD Summary: Revision Changes Path 2.47.2.3 +20 -0 rpm/VENDOR 2.193.2.5 +2 -1 rpm/rpmio/macro.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/VENDOR ============================================================================ $ cvs diff -u -r2.47.2.2 -r2.47.2.3 VENDOR --- rpm/VENDOR 18 May 2008 14:48:46 -0000 2.47.2.2 +++ rpm/VENDOR 18 Jun 2008 18:23:25 -0000 2.47.2.3 @@ -401,6 +401,26 @@ the *.spec file). ________________________________________________________________________ + Change: always-strict-posix-option-parsing + Purpose: Always use strict POSIX-style option parsing. + Reason: OpenPKG wants RPM to always(!) 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> + The explicit use of the POSIX "+" option is a + now implemented possibility, but for backward + compatibility OpenPKG wants that existing macros + are not broken. + ________________________________________________________________________ + o Name: RPM4DARWIN Vendor: RPM for Darwin (Mac OS X) <http://rpm4darwin.sourceforge.net/> Representative: Anders F. Bjorklund <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/macro.c ============================================================================ $ cvs diff -u -r2.193.2.4 -r2.193.2.5 macro.c --- rpm/rpmio/macro.c 18 Jun 2008 16:22:04 -0000 2.193.2.4 +++ rpm/rpmio/macro.c 18 Jun 2008 18:23:26 -0000 2.193.2.5 @@ -1053,6 +1053,7 @@ argv = (const char **) alloca((argc + 1) * sizeof(*argv)); be[-1] = ' '; /* assert((be - 1) == (b + strlen(b) == buf + strlen(buf))) */ be[0] = '\0'; + b = buf; for (c = 0; c < argc; c++) { argv[c] = b; @@ -1066,7 +1067,7 @@ * only before positional arguments, as POSIX requires. */ popt_flags = POPT_CONTEXT_NO_EXEC; -#if defined(RPM_VENDOR_OPENPKG) /* XXX maintain compat w 5.0 behavior. */ +#if defined(RPM_VENDOR_OPENPKG) /* always-strict-posix-option-parsing */ popt_flags |= POPT_CONTEXT_POSIXMEHARDER; #endif if (me->opts[0] == '+') popt_flags |= POPT_CONTEXT_POSIXMEHARDER; @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org