X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Ftest-login.c;h=e4d0c933786ff0c4e48b23cfd0c1e0bf8a190ddf;hb=c784c5ce777f16ee56086a072dc1466639bc9eff;hp=f639129636e68fddc47aeb310ab845b2f69a35e2;hpb=dace83cbd0c2212fc0e25d36d50711b19f14b1b6;p=elogind.git diff --git a/src/login/test-login.c b/src/login/test-login.c index f63912963..e4d0c9337 100644 --- a/src/login/test-login.c +++ b/src/login/test-login.c @@ -183,12 +183,23 @@ int main(int argc, char* argv[]) { r = sd_login_monitor_new("session", &m); assert_se(r >= 0); - zero(pollfd); - pollfd.fd = sd_login_monitor_get_fd(m); - pollfd.events = sd_login_monitor_get_events(m); 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);