chiark / gitweb /
builtin: firmware - move 'firmware' tool to builtins
[elogind.git] / udev / udevadm-control.c
index 69da86563de6fb4f2038d2d47bbbde6ccb66f702..dd1d5d783fc119c9432d3b042d99555eeec95d0c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005-2008 Kay Sievers <kay.sievers@vrfy.org>
+ * Copyright (C) 2005-2011 Kay Sievers <kay.sievers@vrfy.org>
  *
  * 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
@@ -32,16 +32,16 @@ static void print_help(void)
        printf("Usage: udevadm control COMMAND\n"
                "  --exit                   instruct the daemon to cleanup and exit\n"
                "  --log-priority=<level>   set the udev log level for the daemon\n"
-               "  --stop-exec-queue        keep udevd from executing events, queue only\n"
+               "  --stop-exec-queue        do not execute events, queue only\n"
                "  --start-exec-queue       execute events, flush queue\n"
-               "  --reload-rules           reloads the rules files\n"
+               "  --reload                 reload rules and databases\n"
                "  --property=<KEY>=<value> set a global property for all events\n"
                "  --children-max=<N>       maximum number of children\n"
                "  --timeout=<seconds>      maximum time to block for a reply\n"
                "  --help                   print this help text\n\n");
 }
 
-int udevadm_control(struct udev *udev, int argc, char *argv[])
+static int adm_control(struct udev *udev, int argc, char *argv[])
 {
        struct udev_ctrl *uctrl = NULL;
        int timeout = 60;
@@ -52,6 +52,7 @@ int udevadm_control(struct udev *udev, int argc, char *argv[])
                { "log-priority", required_argument, NULL, 'l' },
                { "stop-exec-queue", no_argument, NULL, 's' },
                { "start-exec-queue", no_argument, NULL, 'S' },
+               { "reload", no_argument, NULL, 'R' },
                { "reload-rules", no_argument, NULL, 'R' },
                { "property", required_argument, NULL, 'p' },
                { "env", required_argument, NULL, 'p' },
@@ -66,7 +67,7 @@ int udevadm_control(struct udev *udev, int argc, char *argv[])
                return 1;
        }
 
-       uctrl = udev_ctrl_new_from_socket(udev, UDEV_CTRL_SOCK_PATH);
+       uctrl = udev_ctrl_new(udev);
        if (uctrl == NULL)
                return 2;
 
@@ -111,7 +112,7 @@ int udevadm_control(struct udev *udev, int argc, char *argv[])
                                rc = 0;
                        break;
                case 'R':
-                       if (udev_ctrl_send_reload_rules(uctrl, timeout) < 0)
+                       if (udev_ctrl_send_reload(uctrl, timeout) < 0)
                                rc = 2;
                        else
                                rc = 0;
@@ -157,7 +158,18 @@ int udevadm_control(struct udev *udev, int argc, char *argv[])
                        break;
                }
        }
+
+       if (argv[optind] != NULL)
+               fprintf(stderr, "unknown option\n");
+       else if (optind == 1)
+               fprintf(stderr, "missing option\n");
 out:
        udev_ctrl_unref(uctrl);
        return rc;
 }
+
+const struct udevadm_cmd udevadm_control = {
+       .name = "control",
+       .cmd = adm_control,
+       .help = "control the udev daemon",
+};