There's likely a bit more that could be done to establish consistently
reliable behavior for RPM paramaterized macros.
However, there are conflicting expectations of what the "default"
behavior should be, and so there's little hope of resolving the
different expectations in the code to everyone's satisfaction.
Personally, I think POSIX behavior should be the default according to
the principle of least surprise. But I have no wish to convince anyone
of what their expectations should be, the first character passed to
getopt(3) is a deeply obscure and arcane GLIBC extension.
73 de Jeff
On Jun 18, 2008, at 12:49 PM, Jeff Johnson wrote:
> 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: 18-Jun-2008
> 18:49:27
> Branch: rpm-5_0 Handle: 2008061816492601
>
> Modified files: (Branch: rpm-5_0)
> rpm CHANGES
> rpm/rpmio macro.c
>
> Log:
> - jbj: permit configurable POSIX behavior for parameterized macros
> (Marcin Kowalczyk<qrczak@knm.org.pl>).
>
> Summary:
> Revision Changes Path
> 1.2054.2.94 +2 -0 rpm/CHANGES
> 2.171.2.6 +5 -3 rpm/rpmio/macro.c
>
> ______________________________________________________________________
> ______
>
> patch -p0 <<'@@ .'
> Index: rpm/CHANGES
>
> ======================================================================
> ======
> $ cvs diff -u -r1.2054.2.93 -r1.2054.2.94 CHANGES
> --- rpm/CHANGES 16 Jun 2008 17:49:47 -0000 1.2054.2.93
> +++ rpm/CHANGES 18 Jun 2008 16:49:26 -0000 1.2054.2.94
> @@ -1,4 +1,6 @@
> 5.0.3 -> 5.0.4:
> + - jbj: permit configurable POSIX behavior for parameterized
> macros
> + (Marcin Kowalczyk<qrczak@knm.org.pl>).
> - jbj: fix: skip %exclude/%ghost files to get more accurate
> RPMTAG_SIZE.
> - jbj: fix: RPMTAG_SIZE is incorrect with %exclude and %
> ghost directives
> (Alexey Tourbin<at@altlinux.ru>).
> @@ .
> patch -p0 <<'@@ .'
> Index: rpm/rpmio/macro.c
>
> ======================================================================
> ======
> $ cvs diff -u -r2.171.2.5 -r2.171.2.6 macro.c
> --- rpm/rpmio/macro.c 31 May 2008 18:36:34 -0000 2.171.2.5
> +++ rpm/rpmio/macro.c 18 Jun 2008 16:49:27 -0000 2.171.2.6
> @@ -1073,7 +1073,7 @@
> */
> /* 1003.2 says this must be 1 before any call. */
>
> -#ifdef __GLIBC__
> +#ifdef __GLIBC__
> /*@-mods@*/
> optind = 0; /* XXX but posix != glibc */
> /*@=mods@*/
> @@ -1083,7 +1083,8 @@
>
> opts = me->opts;
>
> -#ifdef __GLIBC__
> +/* XXX maintain compat w 5.0 behavior. */
> +#if defined(__GLIBC__) && defined(RPM_VENDOR_OPENPKG)
> /*
> * Ensure option parsing is done without allowing option/
> argument permutations
> * to avoid accidentally picking up and complaining about
> unknown options.
> @@ -1132,7 +1133,8 @@
> be = b; /* reuse the space */
> }
>
> -#ifdef __GLIBC__
> +/* XXX maintain compat w 5.0 behavior. */
> +#if defined(__GLIBC__) && defined(RPM_VENDOR_OPENPKG)
> if (posixly_correct != NULL)
> setenv("POSIXLY_CORRECT", posixly_correct, 1);
> else
> @@ .
> ______________________________________________________________________
> RPM Package Manager http://rpm5.org
> CVS Sources Repository rpm-cvs@rpm5.org
Received on Wed Jun 18 18:55:40 2008