chiark / gitweb /
man: Add reason for disk model info not working
[elogind.git] / src / login / sd-login.c
index 82fe2ce3e338b744fa043f1e2a2162df60ca5410..8867e8c8eb7f309fd60f8f4f163425b2e5f8422a 100644 (file)
@@ -29,6 +29,7 @@
 #include "macro.h"
 #include "sd-login.h"
 #include "strv.h"
+#include "fileio.h"
 
 _public_ int sd_pid_get_session(pid_t pid, char **session) {
         int r;
@@ -196,7 +197,7 @@ _public_ int sd_uid_is_on_seat(uid_t uid, int require_active, const char *seat)
         }
 
         FOREACH_WORD(w, l, s, state) {
-                if (strncmp(t, w, l) == 0) {
+                if (strneq(t, w, l)) {
                         free(s);
                         free(t);
 
@@ -409,6 +410,10 @@ _public_ int sd_session_get_seat(const char *session, char **seat) {
         return session_get_string(session, "SEAT", seat);
 }
 
+_public_ int sd_session_get_tty(const char *session, char **tty) {
+        return session_get_string(session, "TTY", tty);
+}
+
 _public_ int sd_session_get_service(const char *session, char **service) {
         return session_get_string(session, "SERVICE", service);
 }
@@ -651,11 +656,12 @@ _public_ int sd_get_uids(uid_t **users) {
                 return -errno;
 
         for (;;) {
-                struct dirent buffer, *de;
+                struct dirent *de;
+                union dirent_storage buf;
                 int k;
                 uid_t uid;
 
-                k = readdir_r(d, &buffer, &de);
+                k = readdir_r(d, &buf.de, &de);
                 if (k != 0) {
                         r = -k;
                         goto finish;