%browser_plugins_add_browser does not work

Jeff Johnson n3npq at mac.com
Wed Jun 18 16:27:39 CEST 2008


On Jun 18, 2008, at 10:12 AM, Marcin ‘Qrczak’ Kowalczyk wrote:

> 2008/6/18 Elan Ruusamäe <glen at delfi.ee>:
>
>> rpm5 doesn't parse macro params mixed with options like like rpm  
>> 4.4.9 / 4.5
>> does.
>
> Thank you for enlightenment. So... any plans how to resolve this?
>

The problem boils down to whether POSIX behavior is desirable or not.

getopt (as used in rpm-4.4.9 parameterized macros) already had a means
to specify whether POSIX behavior for parameterized macro option/arg
processing was desired. Here's the relevant section from "man 3 getopt"

        By default, getopt() permutes the contents of argv as it  
scans, so that
        eventually all the non-options are at the end.   Two  other   
modes  are
        also  implemented.   If  the first character of optstring is  
’+’ or the
        environment variable POSIXLY_CORRECT is  set,  then  option   
processing
        stops  as  soon  as a non-option argument is encountered.  If  
the first
        character of optstring is ’-’, then  each  non-option  argv- 
element  is
        handled  as if it were the argument of an option with  
character code 1.
        (This is used by programs that were written to expect options  
and other
        argv-elements  in  any  order  and  that care about the  
ordering of the
        two.)  The special argument  "--"  forces  an  end  of   
option-scanning
        regardless of the scanning mode.

So
     %define foo(+ab:cd:) whatever
should (unchecked) turn on POSIX behavior (like in rpm-5.0) in  
rpm-4.4.9.

In rpm-5.0, OpenPKG is making extensive use of macros, and, unlike
linux glibc, the default behavior and expectation on *BSD is POSIX  
options-before-args
behavior. So popt rather than getopt is now used, and the popt  
equivalent
for POSIXLY_CORRECT is in the last argument to (from rpmio/macro.c):

         optCon = poptGetContext(argv[0], argc, argv, optTbl,  
POPT_CONTEXT_NO_EXEC|POPT_CONTEXT_POSIXMEHARDER);

The resolution will be to adopt the getopt leading "+" convention to  
set (or unset)
POPT_CONTEXT_POSIXMEHARDER.

Its likely 5-6 lines of C in rpmio/macro.c grabArgs() to achieve a  
resolution.

"Patches cheerfully accepted."

73 de Jeff
> -- 
> Marcin Kowalczyk
> qrczak at knm.org.pl
> http://qrnik.knm.org.pl/~qrczak/
> _______________________________________________
> pld-devel-en mailing list
> pld-devel-en at lists.pld-linux.org
> http://lists.pld-linux.org/mailman/listinfo/pld-devel-en



More information about the pld-devel-en mailing list