patch to use net options
Henrik Nordstrom
hno at squid-cache.org
Tue May 24 21:04:40 GMT 2005
On Tue, 24 May 2005, [ISO-8859-1] LEOCADIE Grégory wrote:
>> Regards
>> Henrik
>>
> I'm ok with this way and it works,but it looks weird to have and to write a
> command like this: net -U toto%iscool share list -h 172.16.122.132
> No?
Perhaps -U should be a common option to rather than a global one..
allowing for syntaxes like
net share list -U toto%iscool -h 172.16.122.132
or
net share -h 172.16.122.132 list -U toto%iscool
(both works fine with the proper popt tables)
To realize this you need to divide options in three categories
a) Global options for the command as such.
b) Module specific options (tree hierarchy of modules possible)
c) Command specific options.
You could skip 'a' if you like. The only purpose of 'a' is to allow for
certain options before the sub-command name. Or alternatively you can make
the sub-commands include the global popt table allowing the user to
specify the global options anywhere he likes. Including the global popt
table is just a matter of adding an include to the sub-command popt
tables.
I have refined the example slightly based on your comments and some
further reading of popt.
* Found a somewhat undocumented popt support function quite handy for
sub-command processing: poptStrippedArgv(). Automatically preserves
argv[0] and gives you argc making option processing in sub-commands
very natural.
* Added a specialized help hook main, printing the available
sub-commands.
* Made module2 dependent on module1, showing module inheritance.
* Added defines for including the options of a specific module similar
to the POPT_DEFAULT_HELP define provided by popt.
* Thanks to the defines consistent module help labels was added
explaining the grouping of the options to the user.
* Sub-commands now includes the global options in addition to the
options of the modules they depend on, allowing global options to be
placed anywhere on the command line (also included in sub-command help)
The example program demonstrating this use of popt can be found from
<url:http://www.henriknordstrom.net/examples/popt_subcommand.c>
Regards
Henrik
More information about the samba-technical
mailing list