chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use autotools
[elogind.git]
/
extras
/
ata_id
/
ata_id.c
diff --git
a/extras/ata_id/ata_id.c
b/extras/ata_id/ata_id.c
index aedebff711a2494a52f3273d968dea00ccd13e3a..125c3f3dd7d7209833fe8bfbacd75d478705f894 100644
(file)
--- a/
extras/ata_id/ata_id.c
+++ b/
extras/ata_id/ata_id.c
@@
-19,13
+19,14
@@
#include <ctype.h>
#include <string.h>
#include <errno.h>
#include <ctype.h>
#include <string.h>
#include <errno.h>
+#include <getopt.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <linux/types.h>
#include <linux/hdreg.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <linux/types.h>
#include <linux/hdreg.h>
-#include "../../udev.h"
+#include "../../udev
/udev
.h"
#ifdef USE_LOG
void log_message(int priority, const char *format, ...)
#ifdef USE_LOG
void log_message(int priority, const char *format, ...)
@@
-91,37
+92,60
@@
int main(int argc, char *argv[])
char serial[21];
char revision[9];
const char *node = NULL;
char serial[21];
char revision[9];
const char *node = NULL;
- int i;
int export = 0;
int fd;
int rc = 0;
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");
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;
export = 1;
- } else
- node = arg;
+ break;
+ case 'h':
+ printf("Usage: ata_id [--export] [--help] <device>\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) {
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)) {
rc = 1;
goto exit;
}
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'\n", node);
+ rc = 2;
+ } else {
+ err("HDIO_GET_IDENTITY failed for '%s'\n", node);
+ rc = 3;
+ }
goto close;
}
goto close;
}