RPM Community Forums

Mailing List Message of <rpm-devel>

Re: [CVS] RPM: rpm/ CHANGES rpm/rpmio/ macro.c

From: Jeff Johnson <n3npq@mac.com>
Date: Sun 16 Mar 2008 - 14:59:25 CET
Message-Id: <FC888A60-047E-4909-B495-19414151CFDB@mac.com>
Should I add the getopt(3) POSIXMEHARDER, e.g.

     rpm --define '%foo(+) <%*>' --eval '%{foo bar %(echo -n "quux")  
baz}'  <bar quux baz>

Note %foo(+) ...

It would be nice to have an answer to "feature regression" as well.  
Too bad "+'
is an opt-out disabler of POSIXMEHARDER, likely a opt-in enabler is  
more workable
work for macros.

Hmm, perhaps %foo(+) and %foo(-) as switches ...

73 de Jeff

On Mar 16, 2008, at 5:27 AM, Ralf S. Engelschall wrote:

>   RPM Package Manager, CVS Repository
>   http://rpm5.org/cvs/
>    
> ______________________________________________________________________ 
> ______
>
>   Server: rpm5.org                         Name:   Ralf S. Engelschall
>   Root:   /v/rpm/cvs                       Email:  rse@rpm5.org
>   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. */
>    /*@-nullstate@*/
>   -    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);
>    /*@=nullstate@*/
>        while ((c = poptGetNextOpt(optCon)) > 0) {
>    	const char * optArg = poptGetOptArg(optCon);
>   @@ .
> ______________________________________________________________________
> RPM Package Manager                                    http://rpm5.org
> CVS Sources Repository                                rpm-cvs@rpm5.org
Received on Sun Mar 16 14:59:38 2008
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.