The getopt long thing breaks the tree.
Tito
farmatito at tiscali.it
Wed May 31 16:12:10 UTC 2006
On Wednesday 31 May 2006 16:32, Bernhard Fischer wrote:
> On Tue, May 30, 2006 at 11:06:44PM +0200, Tito wrote:
> >On Tuesday 30 May 2006 19:07, Bernhard Fischer wrote:
> >> On Tue, May 30, 2006 at 12:55:37PM -0400, Rob Landley wrote:
> >> >make allnoconfig
> >> >switch on netcat
> >> >make
> >> >
> >> >Broken build.
> >
> >Hi,
> >it seems to me that this turning off getopt_long
> >has more disvantages then advantages (only size reduction?! or are there other advantages):
>
> <grumble>
> There are no disadvantages i can see. What are you talking about?
> </grumble>
>
> >
> >1) there are options like --color for ls or --Istdin in hdparm (maybe others!?)
> > that have no short option, so these options are lost.
>
> Right.
>
> >2) there are applets that use getopt_long themselves rather than bb_getopt_ulflags,
> > (at the moment only hdparm) that are influenced by this config option.
>
> hdparm and run-parts are affected, yes.
>
> > So you have to fix them one by one (will this increase code size at the end?)
>
> It will most likely actually shrink these applets.
Maybe not if you try to save somehow the functionalities of the long-only options....
> >3) the options must also be removed conditionally from the usage messages (more complexity?)
>
> Yes, they should be conditional in the usage messages. Care to send a
> patch? :)
I'm working on it.
> >Maybe at this point it would be easier to drop long option support at all,
> >at least the design would be clearer.................
>
> That is one possibility, yes. Go ask the maintainer ;)
8-]
> What i, personally, care about is standard compliance; There simply is no
> such thing like getopt_long nor "struct option". See
> http://www.opengroup.org/onlinepubs/009695399/functions/getopt.html
Yes, I love standards..........if i set them.
> Now that i can conveniently turn that bug off by toggling
> CONFIG_GETOPT_LONG, i'm content.
>
> dalias suggested that we implement our own minimal getopt() and
> getopt_long() replacement. I'm not too interrested in doing this myself,
> though. A SUSv3 compliant libc has to implement getopt() for us, and we
> can live without getopt_long via turning off CONFIG_GETOPT_LONG so i see
> no pressing need to get to this myself anytime soon.
>
> >> .. Since bb_getopt_ulflags doesn't yet honor turning off the long
> >> options, yes. Fix the two occurances: bb_getopt_ulflags and
>
> The patch to make bb_getopt_ulflags aware of CONFIG_GETOPT_LONG was
> applied a few minutes ago.
> Now that allnoconfig <turn on nc> works.
Fine. :-)
> >> run_parts_main; The latter needs to be converted to use an llist for the
> >> -a option (haven't had time to do this just yet).
> >> The former needs a (supposedly trivial) if (ENABLE_GETOPT_LONG put into
> >> the appropriate places (also haven't had time to do this yet).
> >> I converted all the rest of the applets to use the long option stuff conditionally.
> >
> >root/Desktop/busybox/miscutils/hdparm.c: In function ???hdparm_main???:
> >/root/Desktop/busybox/miscutils/hdparm.c:2137: warning: implicit declaration of function ???getopt_long???
> >
> >Almost all, hdparm is not converted and will show unexpected behaviour
> >with -Istdin ;-)
> >
> >BTW.: one solution for this applet could be to drop --Istdin if nobody complains.
> > another one could be to use '-'
> > hdparm -i -
> > or to read from stdin if after option parsing argv[optind] is NULL.
> > Hints?
> >
> >Ciao,
> >Tito
> >
> >> Please go ahead, if you find the time.
> >> >This is in addition to the config option shouldn't say getopt, it should say
> >> >something like "Enable --long-options". The config entry shouldn't say the
> >> >technical internal thing, it should say what the effect is that people
> >> >configuring it will see.
> >>
> >> Fair enough. I couldn't think of a better wording (i admit i just yanked and
> >> pasted the locale support block...)
>
More information about the busybox
mailing list