From 4fa3d99db7825a815c5a75a737b3288b9f048346 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 1 May 2007 14:19:31 +0200 Subject: [PATCH] ata_id: use getopt_long() --- extras/ata_id/ata_id.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/extras/ata_id/ata_id.c b/extras/ata_id/ata_id.c index ddd41512..f94cdc0f 100644 --- a/extras/ata_id/ata_id.c +++ b/extras/ata_id/ata_id.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -91,22 +92,40 @@ int main(int argc, char *argv[]) char serial[21]; char revision[9]; const char *node = NULL; - int i; int export = 0; int fd; int rc = 0; + static const struct option options[] = { + { "export", 0, NULL, 'x' }, + { "help", 0, NULL, 'h' }, + {} + }; logging_init("ata_id"); - for (i = 1 ; i < argc; i++) { - char *arg = argv[i]; + while (1) { + int option; - if (strcmp(arg, "--export") == 0) { + option = getopt_long(argc, argv, "xh", options, NULL); + if (option == -1) + break; + + switch (option) { + case 'x': export = 1; - } else - node = arg; + break; + case 'h': + printf("Usage: ata_id [--export] [--help] \n" + " --export print values as environemt keys\n" + " --help print this help text\n\n"); + default: + rc = 1; + goto exit; + } } - if (!node) { + + node = argv[optind]; + if (node == NULL) { err("no node specified"); rc = 1; goto exit; -- 2.39.5