Re: Options handler for userspace programs

From: Andrea Di Pasquale <spikey.it_at_gmail.com>
Date: Tue, 25 Nov 2008 21:03:44 +0100
Yes but getopt() and getopt() are limited. They can to handle
only 2 options type, character and word. My idea is a main
type that handle all. For example,

Long options:			Short options:

interface					i
-interface				-i
--interface				--i

Both they can use one or two flag front the option. For example:

optarg_t opts[] = {
         {"interface",	"--i",		OPT_REQARG1},
         {"--filter",    	"f",    	OPT_REQARG2},
         {"-typed",      	"t",    	OPT_REQOPT},
         {"-status",     	NULL,  	OPT_OPTARG1},
         {"status",      	"-s",   	OPT_OPTARG2},
         {NULL,          	"--v",  	OPT_NOARG},
         {"help",        	"h",    	OPT_NOARG},
         {NULL,          	NULL,   	OPT_NULL}
};

and optarg_t is:

typedef enum optflag {
         OPT_NOARG,      	/* no arguments */
         OPT_REQARG1,    	/* required argument */
         OPT_REQARG2,    	/* required two arguments */
         OPT_REQOPT,     	/* required argument with 2° optional  
argument */
         OPT_OPTARG1,    	/* optional argument */
         OPT_OPTARG2,    	/* optional two arguments */
         OPT_NULL
} optflag_t;

typedef struct optarg {
         const char   	*opt_name; 	/* option's name */
         const char  	*opt_alias;     /* option's alias */
         optflag_t		 opt_flag;
} optarg_t;

Thank you, regards
Andrea

Tim Kientzle wrote:

> Have you looked at getopt_long, which is in the standard
> FreeBSD C libraries?
>
> man 3 getopt_long
>
> The use of getopt() in most utilities instead of getopt_long()
> is a very deliberate choice.
>
> Tim Kientzle
>
>
> Andrea Di Pasquale wrote:
>> Hi! I seen that all freebsd' s programs use getopt() or sequence   
>> options with arguments.
>> I wanna to propose new options handler that handle name or alias  
>> for  options and
>> option's argument, example no argument, required one or two  
>> arguments,  required
>> argument with 2° option argument and one or two optional arguments.
>> Can it useful for freebsd?
>> Regards,
>> Andrea_______________________________________________
>> freebsd-current_at_freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org 
>> "
>
Received on Tue Nov 25 2008 - 19:03:50 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:38 UTC