From: David Kastrup Date: Fri, 05 Oct 2007 14:59:24 GMT Subject: Re: [ALTERNATE PATCH] Add a simple option parser. Message-ID: <86lkahwqsz.fsf@lola.quinscape.zz> In-Reply-To: <20071005143014.GA18176@glandium.org> Mike Hommey writes: > On Fri, Oct 05, 2007 at 04:25:07PM +0200, Pierre Habouzit wrote: >> The option parser takes argc, argv, an array of struct option >> and a usage string. Each of the struct option elements in the array >> describes a valid option, its type and a pointer to the location where the >> value is written. The entry point is parse_options(), which scans through >> the given argv, and matches each option there against the list of valid >> options. During the scan, argv is rewritten to only contain the >> non-option command line arguments and the number of these is returned. >> >> Aggregation of single switches is allowed: >> -rC0 is the same as -r -C 0 (supposing that -C wants an arg). > > I like options aggregation, but I'm not sure aggregating option arguments > is a good idea... I can't even think of an application that does it. I think most allow this for the last option in a row. Tar is somewhat more perverse with its non-option command string: tar xfzbv filename.tgz 40 uses filename.tgz as the option argument for "f" and 40 for "b". Note that while tar accepts options instead of the initial command string, tar -xfzbv filename.tgz 40 will _not_ work, while tar -xffilename.tgz -z -b40 -v presumably would (have no time to test this right now). -- David Kastrup