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]

Reply via email to