summaryrefslogtreecommitdiffstats
path: root/src/foodopts.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/foodopts.c')
-rw-r--r--src/foodopts.c21
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++;
}