chiark / gitweb /
switch from udev keymaps to hwdb
[elogind.git] / src / login / test-login.c
index 159ff3efc5b3f07fa1bacfaad7a2a5055d51ffdd..945cb38be9276c1d48f19cb9f99e48e93b4ad0ed 100644 (file)
@@ -35,7 +35,7 @@ int main(int argc, char* argv[]) {
         char *state;
         char *session2;
         char *t;
-        char **seats, **sessions;
+        char **seats, **sessions, **machines;
         uid_t *uids;
         unsigned n;
         struct pollfd pollfd;
@@ -180,15 +180,34 @@ int main(int argc, char* argv[]) {
         printf("n_uids = %i\n", r);
         assert_se(sd_get_uids(NULL) == r);
 
-        r = sd_login_monitor_new("session", &m);
+        r = sd_get_machine_names(&machines);
         assert_se(r >= 0);
+        assert_se(r == (int) strv_length(machines));
+        assert_se(t = strv_join(machines, ", "));
+        strv_free(machines);
+        printf("n_machines = %i\n", r);
+        printf("machines = %s\n", t);
+        free(t);
 
-        zero(pollfd);
-        pollfd.fd = sd_login_monitor_get_fd(m);
-        pollfd.events = POLLIN;
+        r = sd_login_monitor_new("session", &m);
+        assert_se(r >= 0);
 
         for (n = 0; n < 5; n++) {
-                r = poll(&pollfd, 1, -1);
+                usec_t timeout, nw;
+
+                zero(pollfd);
+                assert_se((pollfd.fd = sd_login_monitor_get_fd(m)) >= 0);
+                assert_se((pollfd.events = sd_login_monitor_get_events(m)) >= 0);
+
+                assert_se(sd_login_monitor_get_timeout(m, &timeout) >= 0);
+
+                nw = now(CLOCK_MONOTONIC);
+
+                r = poll(&pollfd, 1,
+                         timeout == (uint64_t) -1 ? -1 :
+                         timeout > nw ? (int) ((timeout - nw) / 1000) :
+                         0);
+
                 assert_se(r >= 0);
 
                 sd_login_monitor_flush(m);