logind-core.c revision 2d62c530d2b4c2730abff715b7342f1402114513
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen This file is part of systemd.
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen Copyright 2011 Lennart Poettering
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen systemd is free software; you can redistribute it and/or modify it
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen under the terms of the GNU Lesser General Public License as published by
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen the Free Software Foundation; either version 2.1 of the License, or
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen (at your option) any later version.
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen systemd is distributed in the hope that it will be useful, but
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen WITHOUT ANY WARRANTY; without even the implied warranty of
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen Lesser General Public License for more details.
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen You should have received a copy of the GNU Lesser General Public License
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersen along with systemd; If not, see <http://www.gnu.org/licenses/>.
091a364c802e34a58f3260c9cb5db9b75c62215cTom Gundersenint manager_add_device(Manager *m, const char *sysfs, bool master, Device **_device) {
a5a807e63a50314e190e9166d8a453cd8dd258e3Zbigniew Jędrzejewski-Szmek /* we support adding master-flags, but not removing them */
a5a807e63a50314e190e9166d8a453cd8dd258e3Zbigniew Jędrzejewski-Szmek d->master = d->master || master;
a5a807e63a50314e190e9166d8a453cd8dd258e3Zbigniew Jędrzejewski-Szmek d = device_new(m, sysfs, master);
682265d5e2157882861b0091c6b81fa92699b72aTom Gundersenint manager_add_seat(Manager *m, const char *id, Seat **_seat) {
edc501d4674dadc304d45a7e1c5b69e207eb8cd4Lennart Poetteringint manager_add_session(Manager *m, const char *id, Session **_session) {
af4ec4309e8f82aad87a8d574785c12f8763d5f8Lennart Poetteringint manager_add_user(Manager *m, uid_t uid, gid_t gid, const char *name, User **_user) {
if (_user)
*_user = u;
return -ENOMEM;
if (_user)
*_user = u;
assert(m);
struct passwd *p;
assert(m);
errno = 0;
Inhibitor *i;
assert(m);
if (_inhibitor)
*_inhibitor = i;
return -ENOMEM;
if (_inhibitor)
*_inhibitor = i;
Button *b;
assert(m);
if (_button)
*_button = b;
return -ENOMEM;
if (_button)
*_button = b;
assert(m);
return -ENOMEM;
free(n);
Iterator i;
assert(m);
assert(m);
if (!device)
const char *sn;
bool master;
if (!seat) {
Button *b;
assert(m);
button_free(b);
const char *sn;
button_open(b);
Session *s;
assert(m);
return -EINVAL;
*session = s;
User *u;
assert(m);
return -EINVAL;
*user = u;
Session *s;
bool idle_hint;
Iterator i;
assert(m);
int ih;
if (ih < 0)
return ih;
if (!ih) {
if (!idle_hint) {
ts = k;
idle_hint = false;
ts = k;
} else if (idle_hint) {
ts = k;
*t = ts;
return idle_hint;
assert(m);
if (!m->kill_user_processes)
int r = 0, fd;
if (fd < 0)
return -errno;
r = -errno;
assert(m);
return -EBUSY;
return log_oom();
r = sd_bus_call_method(
m->bus,
"org.freedesktop.systemd1",
"/org/freedesktop/systemd1",
"org.freedesktop.systemd1.Manager",
&error,
NULL,
Iterator i;
Button *b;
if (b->docked)