chiark / gitweb /
Merge pull request #19 from elogind/dev_v231
[elogind.git] / src / libelogind / sd-login / test-login.c
index 05affa442dbbf90b6e36a3dbd2436f195485fd9d..e0a838d3fef011e8b5b7b43aad84c1a34f03d58f 100644 (file)
@@ -1,5 +1,3 @@
-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-
 /***
   This file is part of systemd.
 
 #include <poll.h>
 #include <string.h>
 
-#include "systemd/sd-login.h"
+#include "sd-login.h"
 
-#include "util.h"
-#include "strv.h"
+#include "alloc-util.h"
+#include "fd-util.h"
 #include "formats-util.h"
+#include "string-util.h"
+#include "strv.h"
+#include "util.h"
+
+/// Additional includes needed by elogind
+#include "musl_missing.h"
 
 static void test_login(void) {
         _cleanup_close_pair_ int pair[2] = { -1, -1 };
         _cleanup_free_ char *pp = NULL, *qq = NULL;
         int r, k;
         uid_t u, u2;
-        char *seat, *type, *class, *display, *remote_user, *remote_host;
+        char *seat, *type, *class, *display, *remote_user, *remote_host, *display_session, *cgroup;
         char *session;
         char *state;
         char *session2;
@@ -50,6 +54,16 @@ static void test_login(void) {
         assert_se(sd_pid_get_owner_uid(0, &u2) == 0);
         printf("user = "UID_FMT"\n", u2);
 
+        assert_se(sd_pid_get_cgroup(0, &cgroup) == 0);
+        printf("cgroup = %s\n", cgroup);
+        free(cgroup);
+
+        display_session = NULL;
+        r = sd_uid_get_display(u2, &display_session);
+        assert_se(r >= 0 || r == -ENODATA);
+        printf("user's display session = %s\n", strna(display_session));
+        free(display_session);
+
         assert_se(socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == 0);
         sd_peer_get_session(pair[0], &pp);
         sd_peer_get_session(pair[1], &qq);
@@ -100,16 +114,22 @@ static void test_login(void) {
         printf("class = %s\n", class);
         free(class);
 
-        assert_se(sd_session_get_display(session, &display) >= 0);
-        printf("display = %s\n", display);
+        display = NULL;
+        r = sd_session_get_display(session, &display);
+        assert_se(r >= 0 || r == -ENODATA);
+        printf("display = %s\n", strna(display));
         free(display);
 
-        assert_se(sd_session_get_remote_user(session, &remote_user) >= 0);
-        printf("remote_user = %s\n", remote_user);
+        remote_user = NULL;
+        r = sd_session_get_remote_user(session, &remote_user);
+        assert_se(r >= 0 || r == -ENODATA);
+        printf("remote_user = %s\n", strna(remote_user));
         free(remote_user);
 
-        assert_se(sd_session_get_remote_host(session, &remote_host) >= 0);
-        printf("remote_host = %s\n", remote_host);
+        remote_host = NULL;
+        r = sd_session_get_remote_host(session, &remote_host);
+        assert_se(r >= 0 || r == -ENODATA);
+        printf("remote_host = %s\n", strna(remote_host));
         free(remote_host);
 
         assert_se(sd_session_get_seat(session, &seat) >= 0);
@@ -238,6 +258,7 @@ static void test_login(void) {
 }
 
 int main(int argc, char* argv[]) {
+        elogind_set_program_name(argv[0]);
         log_parse_environment();
         log_open();