X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=extras%2Fata_id%2Fata_id.c;h=f94cdc0fd315abeb8298571e932932ff4ce5f3bb;hp=ba40555a0b1040c3b41209ea8be484b81569a9b8;hb=1fdce2f39dd5be0a722d34866e8823c4760738f2;hpb=3515c0ad001731edd9a1cbf6e3d9a3161d37eb4b diff --git a/extras/ata_id/ata_id.c b/extras/ata_id/ata_id.c index ba40555a0..f94cdc0fd 100644 --- a/extras/ata_id/ata_id.c +++ b/extras/ata_id/ata_id.c @@ -3,19 +3,9 @@ * * Copyright (C) 2005 Kay Sievers * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation version 2 of the License. */ #ifndef _GNU_SOURCE @@ -27,15 +17,16 @@ #include #include #include +#include #include +#include #include #include #include #include #include -#include "../../logging.h" -#include "../../udev_utils.h" +#include "../../udev.h" #ifdef USE_LOG void log_message(int priority, const char *format, ...) @@ -101,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; @@ -130,8 +139,13 @@ int main(int argc, char *argv[]) } if (ioctl(fd, HDIO_GET_IDENTITY, &id)) { - err("HDIO_GET_IDENTITY failed for '%s'", node); - rc = 3; + if (errno == ENOTTY) { + info("HDIO_GET_IDENTITY unsupported for '%s'", node); + rc = 2; + } else { + err("HDIO_GET_IDENTITY failed for '%s'", node); + rc = 3; + } goto close; }