[BusyBox] long options with no short counterpart

Vladimir N. Oleynik dzo at simtreas.ru
Mon Aug 8 11:36:23 UTC 2005


I wrote:

> Paul,
> 
>>  > > yes, you and i talked about this before, and i remember your
>>  > > solution.  i consider it unacceptable to write programs which
>>  > > have hidden unexpected features on the command line.  if the
>>  > > option processing api changes, i'm happy to change the ls code to
>>  > > use it.
>>  >  > from fileutils-3.13:
>>  >  > static struct option const long_options[] = {
>>  >     ....
>>  >     {"color", optional_argument, 0, 13},
>>  >     {NULL, 0, NULL, 0}
>>  > };
>>
>> i wonder why they did that?  the last element of the option
>> structure is an int, not a char, so there was no reason to choose
>> an ascii value there.  and indeed, i have a copy of fileutils-4.1
>> handy that reads like this:
>>
>>     ...
>>   {"color", optional_argument, 0, COLOR_OPTION},
>>
>> where COLOR_OPTION is a larger-than-char enum:
>>
>>   enum
>>   {
>>       BLOCK_SIZE_OPTION = CHAR_MAX + 1,
>>       COLOR_OPTION,
>>       ...
>>
>> so you see that someone else feels using ascii values in that
>> place is a bad thing, too.
>>
>> oh!  i'm an idiot.  for some reason i had it in my head that in
>> the interest of compactness, busybox had it's own definition of
>> "struct option", in which the "val" element was only a char.  i
>> now see that it uses the standard getopt_long and the standard
>> struct, and that we could do the same sort of "CHAR_MAX + 1"
>> trick.  as rob points out, this doesn't make i18n any easier, but
>> i don't see busybox tilting that windmill anytime soon.
> 
> 
> ftp://ftp.simtreas.ru/pub/my/bb/new
> have also:
> 
> - new getopt_ulflags()
> 
>       The last argument from struct getopt_long (val)
>            can undefined from applet_opts (short form).
> 
>       If you use this, then:
>            - return bit have next position after short options
>            - if has_arg is not "no_argument", use ptr for arg also
>            - bb_opt_complementaly have effects for this too
> 
> - corrected "ls" applet for example
> 
> Tested.

version "ls" applet updated - more size optimization.


--w
vodz



More information about the busybox mailing list