chiark / gitweb /
libudev: allow to store negative values in the udev database
[elogind.git] / extras / floppy / create_floppy_devices.c
index 4cff958da3f4f9d546e8e2fd75b7425dc869a296..2fc05cc4943387d66c2a3014deaeea1b90d2acf0 100644 (file)
@@ -24,7 +24,8 @@
 #include <pwd.h>
 #include <grp.h>
 
-#include "../../udev/udev.h"
+#include "libudev.h"
+#include "libudev-private.h"
 
 static char *table[] = {
        "", "d360", "h1200", "u360", "u720", "h360", "h720",
@@ -66,8 +67,9 @@ int main(int argc, char **argv)
        if (udev == NULL)
                goto exit;
 
-       logging_init("create_floppy_devices");
+       udev_log_init("create_floppy_devices");
        udev_set_log_fn(udev, log_fn);
+       udev_selinux_init(udev);
 
        while ((c = getopt(argc, argv, "cudm:U:G:M:t:")) != -1) {
                switch (c) {
@@ -78,10 +80,10 @@ int main(int argc, char **argv)
                        print_nodes = 1;
                        break;
                case 'U':
-                       uid = lookup_user(udev, optarg);
+                       uid = util_lookup_user(udev, optarg);
                        break;
                case 'G':
-                       gid = lookup_group(udev, optarg);
+                       gid = util_lookup_group(udev, optarg);
                        break;
                case 'M':
                        mode = strtol(optarg, NULL, 0);
@@ -129,14 +131,14 @@ int main(int argc, char **argv)
                return 1;
        }
        if (fdnum > 3)
-               fdnum += 128;
+               fdnum += 124;
 
        if (major < 1) {
                fprintf(stderr,"Invalid major number %d\n", major);
                return 1;
        }
 
-       if (type < 0 || type > (int) sizeof(table)) {
+       if (type < 0 || type >= (int) ARRAY_SIZE(table_sup)) {
                fprintf(stderr,"Invalid CMOS type %d\n", type);
                return 1;
        }
@@ -149,7 +151,7 @@ int main(int argc, char **argv)
                sprintf(node, "%s%s", dev, table[table_sup[type][i]]);
                minor = (table_sup[type][i] << 2) + fdnum;
                if (print_nodes)
-                       printf("%s b %d %d %d\n", node, mode, major, minor);
+                       printf("%s b %.4o %d %d\n", node, mode, major, minor);
                if (create_nodes) {
                        unlink(node);
                        udev_selinux_setfscreatecon(udev, node, S_IFBLK | mode);
@@ -161,7 +163,9 @@ int main(int argc, char **argv)
                i++;
        }
 
+       udev_selinux_exit(udev);
        udev_unref(udev);
+       udev_log_close();
 exit:
        return 0;
 }