diff options
Diffstat (limited to 'src/foodopts.c')
-rw-r--r-- | src/foodopts.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/foodopts.c b/src/foodopts.c index 7a4cbbd..338b97e 100644 --- a/src/foodopts.c +++ b/src/foodopts.c @@ -11,6 +11,20 @@ get_foodopt(int argc, char *const argv[], (struct option *)longopts, longindex); } +const char * +get_argument(const char opt, + const struct foodoption *longopts) +{ + int i = 0; + while ((longopts[i].name) + && (longopts[i].val)) { + if (longopts[i].val == opt) + return longopts[i].arg; + i++; + } + return NULL; +} + void foodopt_help(char * argv0, const struct foodoption *longopts) @@ -22,11 +36,14 @@ foodopt_help(char * argv0, int i = 0; while ((longopts[i].name) && (longopts[i].val)) { + if (longopts[i].category) { + fprintf(stderr, "\n%s:\n", longopts[i].category); + } fprintf(stderr, "-%c, --%s%s%s: %s\n", longopts[i].val, longopts[i].name, - longopts[i].has_arg == required_argument ? " " : "", - longopts[i].has_arg == required_argument ? longopts[i].arg : "", + (longopts[i].has_arg == required_argument || longopts[i].has_arg == optional_argument) ? " " : "", + (longopts[i].has_arg == required_argument || longopts[i].has_arg == optional_argument) ? longopts[i].arg : "", longopts[i].help); i++; } |