> Okay; +1 on `char short_name' instead of `char *short_names'. As > Greg points out, for the rare exceptions, one can specify two > apr_option_t structs. > But, in that case, we don't need a short_name equiv field at all -- > we can just use the val field (as the code currently does), right? The current code uses the val field for exactly one purpose: determining what value to yield when a long option is matched. I don't have any particular objection to overloading val to also be a short name of the option, when it is a valid character. I just want to be clear that that is a change. With that change, we have (with yet more renaming): typedef struct apr_option_t { /** long option name, or NULL if option has no long name */ const char *name; /** option letter, or a value greater than 255 if option has no letter */ int optch; /** nonzero if option takes an argument */ int has_arg; } apr_option_t; APR_DECLARE(apr_status_t) apr_getopt_long(apr_getopt_t *os, const apr_option_t *opts, int *optch, const char **optarg);