Wireshark mailing list archives
Re: extcap command line parameter format
From: Guy Harris <guy () alum mit edu>
Date: Mon, 23 Jul 2018 11:37:48 -0700
On Jul 20, 2018, at 10:12 AM, Jaap Keuter <jaap.keuter () xs4all nl> wrote:
While having reviewed extcap documentation [Ref1] I was triggered by bug 14982 [Ref2] (usbpcap no longer recognized in 2.9) concerning the addition of --extcap-version parameter to the extcap command line. This stated that the command line parameter "--extcap-version=2.9” causes a problem with usbpcap. The documentation states that in Wireshark 2.9 the command line parameter “--extcap-version x.x” has been added. Note the lack of equal sign. Looking at the code this was originally so, until change 26772 [Ref3] where the equal sign was added due to a problem with some variations of getopt_long().
Yes - if you have a command-line option for which the value is optional, if you want to work with versions of getopt_long() other than the GNU one, you *must* specify the option with =: $ cat optiontest.c #include <getopt.h> #include <stdio.h> static const struct option longopts[] = { { "noargument", no_argument, NULL, 'n' }, { "requiredargument", required_argument, NULL, 'r' }, { "optionalargument", optional_argument, NULL, 'o' }, { NULL, 0, NULL, 0 } }; int main(int argc, char **argv) { int opt; int i; while ((opt = getopt_long(argc, argv, "nr:o:", longopts, NULL)) != -1) { switch (opt) { case 'n': printf("noargument specified\n"); break; case 'r': printf("requiredargment specified, argument is \"%s\"\n", optarg); break; case 'o': if (optarg == NULL) printf("optionalargument specified, no argument\n"); else printf("optionalargment specified, argument is \"%s\"\n", optarg); break; case ':': printf("Missing option argument\n"); break; case '?': printf("Unknown/ambiguous option\n"); break; default: printf("getopt_long returns '%c' (%d)\n", opt, opt); break; } } argc -= optind; argv += optind; for (i = 0; i < argc; i++) printf("argument %d is \"%s\"\n", i + 1, argv[i]); return 0; } $ gcc -o optiontest optiontest.c $ ./optiontest $ ./optiontest --noargument noargument specified $ ./optiontest --noargument --requiredargument noargument specified optiontest: option `--requiredargument' requires an argument Unknown/ambiguous option $ ./optiontest --noargument --requiredargument foo noargument specified requiredargment specified, argument is "foo" $ ./optiontest --noargument --requiredargument=foo noargument specified requiredargment specified, argument is "foo" $ ./optiontest --noargument --optionalargument noargument specified optionalargument specified, no argument $ ./optiontest --noargument --optionalargument foo noargument specified optionalargument specified, no argument argument 1 is "foo" $ ./optiontest --noargument --optionalargument=foo noargument specified optionalargment specified, argument is "foo" so if we want to allow both --extcap-version without an argument and --extcap-version with an argument, and we don't want to have to check for whether, if we have a system-supplied getopt_long(), that getopt_long() parses --optionalargument foo as "--optionalargument with an argument foo" rather than "--optionalargument with no argument" and, if it doesn't do that, use our copy of the GNU getopt_long() (or just use it even if it does), we'll have to require that the argument to --extcap-version be specified with an =.
Doesn’t this mean that all other command line parameters with values are to be generated with equal sign?
It's a requirement for any parameter where the value is optional. It's not a requirement for any parameter where the value is required.
If so this could require changes across the board, changes to documentation (docbook, man page) in the least.
Yes. ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- extcap command line parameter format Jaap Keuter (Jul 20)
- Re: extcap command line parameter format Jaap Keuter (Jul 23)
- Re: extcap command line parameter format Guy Harris (Jul 23)
- Re: extcap command line parameter format Guy Harris (Jul 26)
- Re: extcap command line parameter format Guy Harris (Jul 26)
- Re: extcap command line parameter format Guy Harris (Jul 27)
- Re: extcap command line parameter format Guy Harris (Jul 27)
- Re: extcap command line parameter format Jaap Keuter (Jul 29)
- Re: extcap command line parameter format Roland Knall (Jul 29)
- Re: extcap command line parameter format Guy Harris (Jul 29)
- Re: extcap command line parameter format Roland Knall (Jul 29)