chiark / gitweb /
edd_id: check that EDD id is unique
[elogind.git] / extras / edd_id / edd_id.c
index 504aac36e64b78f0c23904202a71550ffea7f640..8ac50e9812f7b907c61dba3004805980d4440b75 100644 (file)
@@ -63,6 +63,7 @@ int main(int argc, char *argv[])
        int sysfs_fd;
        DIR *dir = NULL;
        int rc = 1;
+       char *match = NULL;
 
        logging_init("edd_id");
 
@@ -165,14 +166,23 @@ int main(int argc, char *argv[])
 
                sysfs_id = strtoul(sysfs_id_buf, NULL, 16);
                if (disk_id == sysfs_id) {
+                       if (!match) {
+                               match = dent->d_name;
+                       } else {
+                               info("'%s' does not have a unique signature", node);
+                               fprintf(stderr, "'%s' does not have a unique signature\n", node);
+                               rc=10;
+                               goto exit;
+                       }
+               }
+
+       }
+
                        if (export)
-                               printf("ID_EDD=%s\n", dent->d_name);
+               printf("ID_EDD=%s\n", match);
                        else
-                               printf("%s\n", dent->d_name);
+               printf("%s\n", match);
                        rc = 0;
-                       break;
-               }
-       }
 
 close:
        close(disk_fd);