chiark / gitweb /
release 126
[elogind.git] / extras / scsi_id / scsi_serial.c
index 7f756954e20e68fa142cc06f65cc7c92fd2922f1..104db3d95ff1ec95ffc10012f5b3649c3bfd6795 100644 (file)
@@ -15,6 +15,7 @@
 
 #include <sys/types.h>
 #include <sys/ioctl.h>
+#include <sys/stat.h>
 #include <stdio.h>
 #include <errno.h>
 #include <string.h>
 /* #include <linux/bsg.h> */
 #include "bsg.h"
 
-#include "../../udev.h"
+#include "../../udev/udev.h"
 #include "scsi.h"
 #include "scsi_id.h"
-#include "scsi_id_version.h"
 
 /*
  * A priority based list of id, naa, and binary/ascii for the identifier
@@ -350,13 +350,13 @@ resend:
                io_buf = (void *)&io_hdr;
        }
 
-       if (ioctl(fd, SG_IO, io_buf) < 0) {
+       retval = ioctl(fd, SG_IO, io_buf);
+       if (retval < 0) {
                if ((errno == EINVAL || errno == ENOSYS) && dev_scsi->use_sg == 4) {
                        dev_scsi->use_sg = 3;
                        goto resend;
                }
                info("%s: ioctl failed: %s\n", dev_scsi->kernel, strerror(errno));
-               retval = -1;
                goto error;
        }
 
@@ -805,6 +805,7 @@ int scsi_std_inquiry(struct scsi_id_device *dev_scsi, const char *devname)
        if (err < 0)
                goto out;
 
+       err = 0;
        memcpy(dev_scsi->vendor, buf + 8, 8);
        dev_scsi->vendor[8] = '\0';
        memcpy(dev_scsi->model, buf + 16, 16);