chiark / gitweb /
udevadm: settle - return failure if unknown option is given
[elogind.git] / udev / udevadm-settle.c
index 053a3bba333f048017074e2f2ac515484484f317..9f409b61b80ea5f941330d08f7ecf12717a03a22 100644 (file)
@@ -36,7 +36,7 @@
 
 #include "udev.h"
 
-int udevadm_settle(struct udev *udev, int argc, char *argv[])
+static int adm_settle(struct udev *udev, int argc, char *argv[])
 {
        static const struct option options[] = {
                { "seq-start", required_argument, NULL, 's' },
@@ -96,7 +96,9 @@ int udevadm_settle(struct udev *udev, int argc, char *argv[])
                               "  --exit-if-exists=<file> stop waiting if file exists\n"
                               "  --quiet                 do not print list after timeout\n"
                               "  --help\n\n");
-                       exit(0);
+                       exit(EXIT_SUCCESS);
+               default:
+                       exit(EXIT_FAILURE);
                }
        }
 
@@ -185,12 +187,11 @@ int udevadm_settle(struct udev *udev, int argc, char *argv[])
                if (pfd[0].fd >= 0) {
                        int delay;
 
-                       /* wake up after delay, or immediately after the queue is rebuilt */
-
                        if (exists != NULL || start > 0)
                                delay = 100;
                        else
                                delay = 1000;
+                       /* wake up after delay, or immediately after the queue is rebuilt */
                        if (poll(pfd, 1, delay) > 0 && pfd[0].revents & POLLIN) {
                                char buf[sizeof(struct inotify_event) + PATH_MAX];
 
@@ -226,3 +227,9 @@ out:
        udev_queue_unref(udev_queue);
        return rc;
 }
+
+const struct udevadm_cmd udevadm_settle = {
+       .name = "settle",
+       .cmd = adm_settle,
+       .help = "wait for the event queue to finish",
+};