X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind-core.c;h=3079d45b94e4ea8d5c873e80abe8af02965c8105;hb=07045a1a92c839fd2af80bd0c060a595021bc3b3;hp=fe97c1de0e01e1f3db09b1ca998893dfcbee9b62;hpb=3d1092eab0f4a5c771225c78072a7b6eccb82849;p=elogind.git diff --git a/src/login/logind-core.c b/src/login/logind-core.c index fe97c1de0..3079d45b9 100644 --- a/src/login/logind-core.c +++ b/src/login/logind-core.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -19,19 +17,22 @@ along with systemd; If not, see . ***/ -#include -#include #include #include +#include +#include #include -#include "strv.h" -#include "cgroup-util.h" -#include "bus-util.h" +#include "alloc-util.h" #include "bus-error.h" -#include "udev-util.h" +#include "bus-util.h" +#include "cgroup-util.h" +#include "fd-util.h" #include "logind.h" +#include "strv.h" #include "terminal-util.h" +#include "udev-util.h" +#include "user-util.h" int manager_add_device(Manager *m, const char *sysfs, bool master, Device **_device) { Device *d; @@ -95,15 +96,16 @@ int manager_add_session(Manager *m, const char *id, Session **_session) { int manager_add_user(Manager *m, uid_t uid, gid_t gid, const char *name, User **_user) { User *u; + int r; assert(m); assert(name); u = hashmap_get(m->users, UID_TO_PTR(uid)); if (!u) { - u = user_new(m, uid, gid, name); - if (!u) - return -ENOMEM; + r = user_new(&u, m, uid, gid, name); + if (r < 0) + return r; } if (_user) @@ -113,8 +115,8 @@ int manager_add_user(Manager *m, uid_t uid, gid_t gid, const char *name, User ** } int manager_add_user_by_name(Manager *m, const char *name, User **_user) { - uid_t uid; - gid_t gid; + uid_t uid = 1000; + gid_t gid = 1000; int r; assert(m); @@ -135,7 +137,7 @@ int manager_add_user_by_uid(Manager *m, uid_t uid, User **_user) { errno = 0; p = getpwuid(uid); if (!p) - return errno ? -errno : -ENOENT; + return errno > 0 ? -errno : -ENOENT; return manager_add_user(m, uid, p->pw_gid, p->pw_name, _user); } @@ -274,8 +276,7 @@ int manager_process_button_device(Manager *m, struct udev_device *d) { } int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session) { -/// elogind does not support systemd units, but its own session system -#if 0 +#if 0 /// elogind does not support systemd units, but its own session system _cleanup_free_ char *unit = NULL; #else _cleanup_free_ char *session_name = NULL; @@ -288,8 +289,7 @@ int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session) { if (pid < 1) return -EINVAL; -/// elogind does not support systemd units, but its own session system -#if 0 +#if 0 /// elogind does not support systemd units, but its own session system r = cg_pid_get_unit(pid, &unit); if (r < 0) return 0; @@ -314,8 +314,7 @@ int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session) { } int manager_get_user_by_pid(Manager *m, pid_t pid, User **user) { -/// elogind does not support systemd units, but its own session system -#if 0 +#if 0 /// elogind does not support systemd units, but its own session system _cleanup_free_ char *unit = NULL; User *u; #else @@ -329,8 +328,7 @@ int manager_get_user_by_pid(Manager *m, pid_t pid, User **user) { if (pid < 1) return -EINVAL; -/// elogind does not support systemd units, but its own session system -#if 0 +#if 0 /// elogind does not support systemd units, but its own session system r = cg_pid_get_slice(pid, &unit); if (r < 0) return 0; @@ -406,8 +404,7 @@ bool manager_shall_kill(Manager *m, const char *user) { return strv_contains(m->kill_only_users, user); } -/// UNNEEDED by elogind -#if 0 +#if 0 /// UNNEEDED by elogind static int vt_is_busy(unsigned int vtnr) { struct vt_stat vt_stat; int r = 0; @@ -434,7 +431,7 @@ static int vt_is_busy(unsigned int vtnr) { } int manager_spawn_autovt(Manager *m, unsigned int vtnr) { - _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; char name[sizeof("autovt@tty.service") + DECIMAL_STR_MAX(unsigned int)]; int r;