fprintf(stderr, "Usage: %s ", a_args->progname);
for (opt = longopts, i = 1; opt->name; opt++, i++) {
- int j;
- char *uppername;
-
- uppername = strdup(opt->name);
- if (!uppername)
- exit(-ENOMEM);
-
- for (j = 0; uppername[j]; j++)
- uppername[j] = toupper(uppername[j]);
-
fprintf(stderr, "[");
if (isprint(opt->val))
fprintf(stderr, "--%s", opt->name);
- if (opt->has_arg == required_argument)
- fprintf(stderr, "=%s", uppername);
+ if ((opt->has_arg == required_argument) ||
+ (opt->has_arg == optional_argument)) {
+ int j;
+ char *uppername;
+
+ uppername = strdup(opt->name);
+ if (!uppername)
+ exit(-ENOMEM);
- if (opt->has_arg == optional_argument)
- fprintf(stderr, "[=%s]", uppername);
+ for (j = 0; uppername[j]; j++)
+ uppername[j] = toupper(uppername[j]);
+
+ if (opt->has_arg == required_argument)
+ fprintf(stderr, "=%s", uppername);
+ else // optional_argument
+ fprintf(stderr, "[=%s]", uppername);
+
+ free(uppername);
+ }
fprintf(stderr, "] ");
if (!(i % 4))
fprintf(stderr, "\n\t");
-
- free(uppername);
}
fprintf(stderr, "\n");