X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=extras%2Fata_id%2Fata_id.c;h=125c3f3dd7d7209833fe8bfbacd75d478705f894;hb=cf8ec631a23eae532541bfeeccce20f0d978404d;hp=ddd4151257142a91cbbfbc040b755522f3609169;hpb=cfdea0f647720222bb2fde67ab0a083167e9b2b4;p=elogind.git diff --git a/extras/ata_id/ata_id.c b/extras/ata_id/ata_id.c index ddd415125..125c3f3dd 100644 --- a/extras/ata_id/ata_id.c +++ b/extras/ata_id/ata_id.c @@ -19,13 +19,14 @@ #include #include #include +#include #include #include #include #include #include -#include "../../udev.h" +#include "../../udev/udev.h" #ifdef USE_LOG void log_message(int priority, const char *format, ...) @@ -91,40 +92,58 @@ 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) { - err("no node specified"); + + node = argv[optind]; + if (node == NULL) { + err("no node specified\n"); rc = 1; goto exit; } fd = open(node, O_RDONLY|O_NONBLOCK); if (fd < 0) { - err("unable to open '%s'", node); + err("unable to open '%s'\n", node); rc = 1; goto exit; } if (ioctl(fd, HDIO_GET_IDENTITY, &id)) { if (errno == ENOTTY) { - info("HDIO_GET_IDENTITY unsupported for '%s'", node); + info("HDIO_GET_IDENTITY unsupported for '%s'\n", node); rc = 2; } else { - err("HDIO_GET_IDENTITY failed for '%s'", node); + err("HDIO_GET_IDENTITY failed for '%s'\n", node); rc = 3; } goto close;