aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorEthan Sommer <e5ten.arch@gmail.com>2020-06-03 15:37:17 -0400
committerEthan Sommer <e5ten.arch@gmail.com>2020-06-03 15:37:17 -0400
commit758a1124d903ab0913b4c5aa7251232f82b83f7b (patch)
tree4d9420dd0301530e0f4f9e485cb8402a01e25c84 /utils
parent1e144025fea2b4133744bcbe315c105a978ee52f (diff)
tinypcminfo: replace manual option parsing with optparse
add equivalent longopts that are available in other commands
Diffstat (limited to 'utils')
-rw-r--r--utils/tinypcminfo.c46
1 files changed, 27 insertions, 19 deletions
diff --git a/utils/tinypcminfo.c b/utils/tinypcminfo.c
index 0dd381d..3116b7c 100644
--- a/utils/tinypcminfo.c
+++ b/utils/tinypcminfo.c
@@ -31,6 +31,9 @@
#include <stdlib.h>
#include <string.h>
+#define OPTPARSE_IMPLEMENTATION
+#include "optparse.h"
+
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
#endif
@@ -102,27 +105,32 @@ int main(int argc, char **argv)
unsigned int device = 0;
unsigned int card = 0;
int i;
-
- if ((argc == 2) && (strcmp(argv[1], "--help") == 0)) {
- fprintf(stderr, "Usage: %s -D card -d device\n", argv[0]);
- return 1;
- }
-
+ struct optparse opts;
+ struct optparse_long long_options[] = {
+ { "help", 'h', OPTPARSE_NONE },
+ { "card", 'D', OPTPARSE_REQUIRED },
+ { "device", 'd', OPTPARSE_REQUIRED },
+ { 0, 0, 0 }
+ };
+
+ (void)argc; /* silence -Wunused-parameter */
/* parse command line arguments */
- argv += 1;
- while (*argv) {
- if (strcmp(*argv, "-D") == 0) {
- argv++;
- if (*argv)
- card = atoi(*argv);
- }
- if (strcmp(*argv, "-d") == 0) {
- argv++;
- if (*argv)
- device = atoi(*argv);
+ optparse_init(&opts, argv);
+ while ((i = optparse_long(&opts, long_options, NULL)) != -1) {
+ switch (i) {
+ case 'D':
+ card = atoi(opts.optarg);
+ break;
+ case 'd':
+ device = atoi(opts.optarg);
+ break;
+ case 'h':
+ fprintf(stderr, "Usage: %s -D card -d device\n", argv[0]);
+ return 0;
+ case '?':
+ fprintf(stderr, "%s\n", opts.errmsg);
+ return EXIT_FAILURE;
}
- if (*argv)
- argv++;
}
printf("Info for card %u, device %u:\n", card, device);