logind: exploit previous cleanups and simplify returns

This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2013-03-18 20:58:39 -04:00
parent ce0fc5f5f6
commit 4654e558a3
6 changed files with 178 additions and 276 deletions
+12 -26
View File
@@ -64,7 +64,7 @@ static int inhibit(DBusConnection *bus, DBusError *error) {
if (!dbus_message_get_args(reply, error,
DBUS_TYPE_UNIX_FD, &r,
DBUS_TYPE_INVALID))
r = -EIO;
return -EIO;
return r;
}
@@ -85,27 +85,21 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) {
NULL,
DBUS_TYPE_INVALID);
if (r < 0)
goto finish;
return r;
if (!dbus_message_iter_init(reply, &iter)) {
r = -ENOMEM;
goto finish;
}
if (!dbus_message_iter_init(reply, &iter))
return -ENOMEM;
if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY) {
r = -EIO;
goto finish;
}
if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY)
return -EIO;
dbus_message_iter_recurse(&iter, &sub);
while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) {
const char *what, *who, *why, *mode;
dbus_uint32_t uid, pid;
if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) {
r = -EIO;
goto finish;
}
if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT)
return -EIO;
dbus_message_iter_recurse(&sub, &sub2);
@@ -114,10 +108,8 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) {
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &why, true) < 0 ||
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &mode, true) < 0 ||
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_UINT32, &uid, true) < 0 ||
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_UINT32, &pid, false) < 0) {
r = -EIO;
goto finish;
}
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_UINT32, &pid, false) < 0)
return -EIO;
printf(" Who: %s (UID %lu, PID %lu)\n"
" What: %s\n"
@@ -134,10 +126,7 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) {
}
printf("%u inhibitors listed.\n", n);
r = 0;
finish:
return r;
return 0;
}
static int help(void) {
@@ -240,7 +229,7 @@ int main(int argc, char *argv[]) {
int r, exit_code = 0;
DBusConnection *bus = NULL;
DBusError error;
int fd = -1;
int _cleanup_close_ fd = -1;
dbus_error_init(&error);
@@ -313,8 +302,5 @@ finish:
dbus_error_free(&error);
if (fd >= 0)
close_nointr_nofail(fd);
return r < 0 ? EXIT_FAILURE : exit_code;
}
+121 -142
View File
@@ -89,14 +89,13 @@ static int list_sessions(DBusConnection *bus, char **args, unsigned n) {
NULL,
DBUS_TYPE_INVALID);
if (r)
goto finish;
return r;
if (!dbus_message_iter_init(reply, &iter) ||
dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) {
log_error("Failed to parse reply.");
r = -EIO;
goto finish;
return -EIO;
}
dbus_message_iter_recurse(&iter, &sub);
@@ -110,8 +109,7 @@ static int list_sessions(DBusConnection *bus, char **args, unsigned n) {
if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) {
log_error("Failed to parse reply.");
r = -EIO;
goto finish;
return -EIO;
}
dbus_message_iter_recurse(&sub, &sub2);
@@ -122,8 +120,7 @@ static int list_sessions(DBusConnection *bus, char **args, unsigned n) {
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &seat, true) < 0 ||
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &object, false) < 0) {
log_error("Failed to parse reply.");
r = -EIO;
goto finish;
return -EIO;
}
printf("%10s %10u %-16s %-16s\n", id, (unsigned) uid, user, seat);
@@ -136,10 +133,7 @@ static int list_sessions(DBusConnection *bus, char **args, unsigned n) {
if (on_tty())
printf("\n%u sessions listed.\n", k);
r = 0;
finish:
return r;
return 0;
}
static int list_users(DBusConnection *bus, char **args, unsigned n) {
@@ -160,14 +154,13 @@ static int list_users(DBusConnection *bus, char **args, unsigned n) {
NULL,
DBUS_TYPE_INVALID);
if (r)
goto finish;
return r;
if (!dbus_message_iter_init(reply, &iter) ||
dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) {
log_error("Failed to parse reply.");
r = -EIO;
goto finish;
return -EIO;
}
dbus_message_iter_recurse(&iter, &sub);
@@ -181,8 +174,7 @@ static int list_users(DBusConnection *bus, char **args, unsigned n) {
if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) {
log_error("Failed to parse reply.");
r = -EIO;
goto finish;
return -EIO;
}
dbus_message_iter_recurse(&sub, &sub2);
@@ -191,8 +183,7 @@ static int list_users(DBusConnection *bus, char **args, unsigned n) {
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &user, true) < 0 ||
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &object, false) < 0) {
log_error("Failed to parse reply.");
r = -EIO;
goto finish;
return -EIO;
}
printf("%10u %-16s\n", (unsigned) uid, user);
@@ -205,10 +196,7 @@ static int list_users(DBusConnection *bus, char **args, unsigned n) {
if (on_tty())
printf("\n%u users listed.\n", k);
r = 0;
finish:
return r;
return 0;
}
static int list_seats(DBusConnection *bus, char **args, unsigned n) {
@@ -229,14 +217,13 @@ static int list_seats(DBusConnection *bus, char **args, unsigned n) {
NULL,
DBUS_TYPE_INVALID);
if (r)
goto finish;
return r;
if (!dbus_message_iter_init(reply, &iter) ||
dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) {
log_error("Failed to parse reply.");
r = -EIO;
goto finish;
return -EIO;
}
dbus_message_iter_recurse(&iter, &sub);
@@ -249,8 +236,7 @@ static int list_seats(DBusConnection *bus, char **args, unsigned n) {
if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) {
log_error("Failed to parse reply.");
r = -EIO;
goto finish;
return -EIO;
}
dbus_message_iter_recurse(&sub, &sub2);
@@ -258,8 +244,7 @@ static int list_seats(DBusConnection *bus, char **args, unsigned n) {
if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &seat, true) < 0 ||
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &object, false) < 0) {
log_error("Failed to parse reply.");
r = -EIO;
goto finish;
return -EIO;
}
printf("%-16s\n", seat);
@@ -272,10 +257,7 @@ static int list_seats(DBusConnection *bus, char **args, unsigned n) {
if (on_tty())
printf("\n%u seats listed.\n", k);
r = 0;
finish:
return r;
return 0;
}
typedef struct SessionStatusInfo {
@@ -1077,7 +1059,6 @@ finish:
}
static int kill_session(DBusConnection *bus, char **args, unsigned n) {
int ret = 0;
unsigned i;
assert(args);
@@ -1086,28 +1067,28 @@ static int kill_session(DBusConnection *bus, char **args, unsigned n) {
arg_kill_who = "all";
for (i = 1; i < n; i++) {
ret = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"KillSession",
NULL,
NULL,
DBUS_TYPE_STRING, &args[i],
DBUS_TYPE_STRING, &arg_kill_who,
DBUS_TYPE_INT32, &arg_signal,
DBUS_TYPE_INVALID);
if (ret)
goto finish;
int r;
r = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"KillSession",
NULL,
NULL,
DBUS_TYPE_STRING, &args[i],
DBUS_TYPE_STRING, &arg_kill_who,
DBUS_TYPE_INT32, &arg_signal,
DBUS_TYPE_INVALID);
if (r)
return r;
}
finish:
return ret;
return 0;
}
static int enable_linger(DBusConnection *bus, char **args, unsigned n) {
int ret = 0;
unsigned i;
dbus_bool_t b, interactive = true;
@@ -1120,36 +1101,35 @@ static int enable_linger(DBusConnection *bus, char **args, unsigned n) {
for (i = 1; i < n; i++) {
uint32_t u;
uid_t uid;
int r;
ret = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
if (ret < 0) {
log_error("Failed to resolve user %s: %s", args[i], strerror(-ret));
goto finish;
r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
if (r < 0) {
log_error("Failed to resolve user %s: %s", args[i], strerror(-r));
return r;
}
u = (uint32_t) uid;
ret = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"SetUserLinger",
NULL,
NULL,
DBUS_TYPE_UINT32, &u,
DBUS_TYPE_BOOLEAN, &b,
DBUS_TYPE_BOOLEAN, &interactive,
DBUS_TYPE_INVALID);
if (ret)
goto finish;
r = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"SetUserLinger",
NULL,
NULL,
DBUS_TYPE_UINT32, &u,
DBUS_TYPE_BOOLEAN, &b,
DBUS_TYPE_BOOLEAN, &interactive,
DBUS_TYPE_INVALID);
if (r)
return r;
}
finish:
return ret;
return 0;
}
static int terminate_user(DBusConnection *bus, char **args, unsigned n) {
int ret = 0;
unsigned i;
assert(args);
@@ -1157,34 +1137,33 @@ static int terminate_user(DBusConnection *bus, char **args, unsigned n) {
for (i = 1; i < n; i++) {
uint32_t u;
uid_t uid;
int r;
ret = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
if (ret < 0) {
log_error("Failed to look up user %s: %s", args[i], strerror(-ret));
goto finish;
r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
if (r < 0) {
log_error("Failed to look up user %s: %s", args[i], strerror(-r));
return r;
}
u = (uint32_t) uid;
ret = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"TerminateUser",
NULL,
NULL,
DBUS_TYPE_UINT32, &u,
DBUS_TYPE_INVALID);
if (ret)
goto finish;
r = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"TerminateUser",
NULL,
NULL,
DBUS_TYPE_UINT32, &u,
DBUS_TYPE_INVALID);
if (r)
return r;
}
finish:
return ret;
return 0;
}
static int kill_user(DBusConnection *bus, char **args, unsigned n) {
int ret = 0;
unsigned i;
assert(args);
@@ -1195,35 +1174,34 @@ static int kill_user(DBusConnection *bus, char **args, unsigned n) {
for (i = 1; i < n; i++) {
uid_t uid;
uint32_t u;
int r;
ret = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
if (ret < 0) {
log_error("Failed to look up user %s: %s", args[i], strerror(-ret));
goto finish;
r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
if (r < 0) {
log_error("Failed to look up user %s: %s", args[i], strerror(-r));
return r;
}
u = (uint32_t) uid;
ret = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"KillUser",
NULL,
NULL,
DBUS_TYPE_UINT32, &u,
DBUS_TYPE_INT32, &arg_signal,
DBUS_TYPE_INVALID);
if (ret)
goto finish;
r = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"KillUser",
NULL,
NULL,
DBUS_TYPE_UINT32, &u,
DBUS_TYPE_INT32, &arg_signal,
DBUS_TYPE_INVALID);
if (r)
return r;
}
finish:
return ret;
return 0;
}
static int attach(DBusConnection *bus, char **args, unsigned n) {
int ret = 0;
unsigned i;
dbus_bool_t interactive = true;
@@ -1232,24 +1210,25 @@ static int attach(DBusConnection *bus, char **args, unsigned n) {
polkit_agent_open_if_enabled();
for (i = 2; i < n; i++) {
ret = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"AttachDevice",
NULL,
NULL,
DBUS_TYPE_STRING, &args[1],
DBUS_TYPE_STRING, &args[i],
DBUS_TYPE_BOOLEAN, &interactive,
DBUS_TYPE_INVALID);
if (ret)
goto finish;
int r;
r = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"AttachDevice",
NULL,
NULL,
DBUS_TYPE_STRING, &args[1],
DBUS_TYPE_STRING, &args[i],
DBUS_TYPE_BOOLEAN, &interactive,
DBUS_TYPE_INVALID);
if (r)
return r;
}
finish:
return ret;
return 0;
}
static int flush_devices(DBusConnection *bus, char **args, unsigned n) {
@@ -1288,28 +1267,28 @@ static int lock_sessions(DBusConnection *bus, char **args, unsigned n) {
}
static int terminate_seat(DBusConnection *bus, char **args, unsigned n) {
int ret = 0;
unsigned i;
assert(args);
for (i = 1; i < n; i++) {
ret = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"TerminateSeat",
NULL,
NULL,
DBUS_TYPE_STRING, &args[i],
DBUS_TYPE_INVALID);
if (ret)
goto finish;
int r;
r = bus_method_call_with_reply (
bus,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"TerminateSeat",
NULL,
NULL,
DBUS_TYPE_STRING, &args[i],
DBUS_TYPE_INVALID);
if (r)
return r;
}
finish:
return ret;
return 0;
}
static int help(void) {
+9 -17
View File
@@ -901,7 +901,7 @@ finish:
static int attach_device(Manager *m, const char *seat, const char *sysfs) {
struct udev_device *d;
char *rule = NULL, *file = NULL;
char _cleanup_free_ *rule = NULL, *file = NULL;
const char *id_for_seat;
int r;
@@ -943,9 +943,6 @@ static int attach_device(Manager *m, const char *seat, const char *sysfs) {
r = trigger_device(m, d);
finish:
free(rule);
free(file);
if (d)
udev_device_unref(d);
@@ -953,7 +950,7 @@ finish:
}
static int flush_devices(Manager *m) {
DIR *d;
DIR _cleanup_closedir_ *d;
assert(m);
@@ -978,8 +975,6 @@ static int flush_devices(Manager *m) {
if (unlinkat(dirfd(d), de->d_name, 0) < 0)
log_warning("Failed to unlink %s: %m", de->d_name);
}
closedir(d);
}
return trigger_device(m, NULL);
@@ -1222,9 +1217,8 @@ finish:
reply,
DBUS_TYPE_STRING, &result,
DBUS_TYPE_INVALID);
if (!b) {
if (!b)
return -ENOMEM;
}
*_reply = reply;
reply = NULL;
@@ -2406,21 +2400,19 @@ DBusHandlerResult bus_message_filter(
int manager_send_changed(Manager *manager, const char *properties) {
_cleanup_dbus_message_unref_ DBusMessage *m = NULL;
int r = -ENOMEM;
assert(manager);
m = bus_properties_changed_new("/org/freedesktop/login1", "org.freedesktop.login1.Manager", properties);
m = bus_properties_changed_new("/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
properties);
if (!m)
goto finish;
return -ENOMEM;
if (!dbus_connection_send(manager->bus, m, NULL))
goto finish;
return -ENOMEM;
r = 0;
finish:
return r;
return 0;
}
int manager_dispatch_delayed(Manager *manager) {
+13 -33
View File
@@ -61,7 +61,7 @@ static int bus_seat_append_active(DBusMessageIter *i, const char *property, void
DBusMessageIter sub;
Seat *s = data;
const char *id, *path;
char *p = NULL;
char _cleanup_free_ *p = NULL;
assert(i);
assert(property);
@@ -82,12 +82,8 @@ static int bus_seat_append_active(DBusMessageIter *i, const char *property, void
}
if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &id) ||
!dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path)) {
free(p);
!dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path))
return -ENOMEM;
}
free(p);
if (!dbus_message_iter_close_container(i, &sub))
return -ENOMEM;
@@ -108,7 +104,7 @@ static int bus_seat_append_sessions(DBusMessageIter *i, const char *property, vo
return -ENOMEM;
LIST_FOREACH(sessions_by_seat, session, s->sessions) {
char *p;
char _cleanup_free_ *p = NULL;
if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2))
return -ENOMEM;
@@ -118,12 +114,8 @@ static int bus_seat_append_sessions(DBusMessageIter *i, const char *property, vo
return -ENOMEM;
if (!dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &session->id) ||
!dbus_message_iter_append_basic(&sub2, DBUS_TYPE_OBJECT_PATH, &p)) {
free(p);
!dbus_message_iter_append_basic(&sub2, DBUS_TYPE_OBJECT_PATH, &p))
return -ENOMEM;
}
free(p);
if (!dbus_message_iter_close_container(&sub, &sub2))
return -ENOMEM;
@@ -356,7 +348,7 @@ const DBusObjectPathVTable bus_seat_vtable = {
};
char *seat_bus_path(Seat *s) {
char *t, *r;
char _cleanup_free_ *t;
assert(s);
@@ -364,15 +356,11 @@ char *seat_bus_path(Seat *s) {
if (!t)
return NULL;
r = strappend("/org/freedesktop/login1/seat/", t);
free(t);
return r;
return strappend("/org/freedesktop/login1/seat/", t);
}
int seat_send_signal(Seat *s, bool new_seat) {
_cleanup_dbus_message_unref_ DBusMessage *m = NULL;
int r = -ENOMEM;
_cleanup_free_ char *p = NULL;
assert(s);
@@ -380,33 +368,28 @@ int seat_send_signal(Seat *s, bool new_seat) {
m = dbus_message_new_signal("/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
new_seat ? "SeatNew" : "SeatRemoved");
if (!m)
return -ENOMEM;
p = seat_bus_path(s);
if (!p)
goto finish;
return -ENOMEM;
if (!dbus_message_append_args(
m,
DBUS_TYPE_STRING, &s->id,
DBUS_TYPE_OBJECT_PATH, &p,
DBUS_TYPE_INVALID))
goto finish;
return -ENOMEM;
if (!dbus_connection_send(s->manager->bus, m, NULL))
goto finish;
return -ENOMEM;
r = 0;
finish:
return r;
return 0;
}
int seat_send_changed(Seat *s, const char *properties) {
_cleanup_dbus_message_unref_ DBusMessage *m = NULL;
int r = -ENOMEM;
_cleanup_free_ char *p = NULL;
assert(s);
@@ -420,13 +403,10 @@ int seat_send_changed(Seat *s, const char *properties) {
m = bus_properties_changed_new(p, "org.freedesktop.login1.Seat", properties);
if (!m)
goto finish;
return -ENOMEM;
if (!dbus_connection_send(s->manager->bus, m, NULL))
goto finish;
return -ENOMEM;
r = 0;
finish:
return r;
return 0;
}
+13 -34
View File
@@ -108,12 +108,8 @@ static int bus_session_append_seat(DBusMessageIter *i, const char *property, voi
}
if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &id) ||
!dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path)) {
free(p);
!dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path))
return -ENOMEM;
}
free(p);
if (!dbus_message_iter_close_container(i, &sub))
return -ENOMEM;
@@ -124,7 +120,7 @@ static int bus_session_append_seat(DBusMessageIter *i, const char *property, voi
static int bus_session_append_user(DBusMessageIter *i, const char *property, void *data) {
DBusMessageIter sub;
User *u = data;
char *p = NULL;
char _cleanup_free_ *p = NULL;
assert(i);
assert(property);
@@ -138,12 +134,8 @@ static int bus_session_append_user(DBusMessageIter *i, const char *property, voi
return -ENOMEM;
if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_UINT32, &u->uid) ||
!dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &p)) {
free(p);
!dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &p))
return -ENOMEM;
}
free(p);
if (!dbus_message_iter_close_container(i, &sub))
return -ENOMEM;
@@ -205,7 +197,7 @@ static int bus_session_append_idle_hint_since(DBusMessageIter *i, const char *pr
static int bus_session_append_default_cgroup(DBusMessageIter *i, const char *property, void *data) {
Session *s = data;
char *t;
char _cleanup_free_ *t = NULL;
int r;
bool success;
@@ -218,8 +210,6 @@ static int bus_session_append_default_cgroup(DBusMessageIter *i, const char *pro
return r;
success = dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &t);
free(t);
return success ? 0 : -ENOMEM;
}
@@ -458,7 +448,7 @@ const DBusObjectPathVTable bus_session_vtable = {
};
char *session_bus_path(Session *s) {
char *t, *r;
char _cleanup_free_ *t;
assert(s);
@@ -466,15 +456,11 @@ char *session_bus_path(Session *s) {
if (!t)
return NULL;
r = strappend("/org/freedesktop/login1/session/", t);
free(t);
return r;
return strappend("/org/freedesktop/login1/session/", t);
}
int session_send_signal(Session *s, bool new_session) {
_cleanup_dbus_message_unref_ DBusMessage *m = NULL;
int r = -ENOMEM;
_cleanup_free_ char *p = NULL;
assert(s);
@@ -488,27 +474,23 @@ int session_send_signal(Session *s, bool new_session) {
p = session_bus_path(s);
if (!p)
goto finish;
return -ENOMEM;
if (!dbus_message_append_args(
m,
DBUS_TYPE_STRING, &s->id,
DBUS_TYPE_OBJECT_PATH, &p,
DBUS_TYPE_INVALID))
goto finish;
return -ENOMEM;
if (!dbus_connection_send(s->manager->bus, m, NULL))
goto finish;
return -ENOMEM;
r = 0;
finish:
return r;
return 0;
}
int session_send_changed(Session *s, const char *properties) {
_cleanup_dbus_message_unref_ DBusMessage *m = NULL;
int r = -ENOMEM;
_cleanup_free_ char *p = NULL;
assert(s);
@@ -522,15 +504,12 @@ int session_send_changed(Session *s, const char *properties) {
m = bus_properties_changed_new(p, "org.freedesktop.login1.Session", properties);
if (!m)
goto finish;
return -ENOMEM;
if (!dbus_connection_send(s->manager->bus, m, NULL))
goto finish;
return -ENOMEM;
r = 0;
finish:
return r;
return 0;
}
int session_send_lock(Session *s, bool lock) {
+10 -24
View File
@@ -65,7 +65,7 @@ static int bus_user_append_display(DBusMessageIter *i, const char *property, voi
DBusMessageIter sub;
User *u = data;
const char *id, *path;
char *p = NULL;
char _cleanup_free_ *p = NULL;
assert(i);
assert(property);
@@ -86,12 +86,8 @@ static int bus_user_append_display(DBusMessageIter *i, const char *property, voi
}
if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &id) ||
!dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path)) {
free(p);
!dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path))
return -ENOMEM;
}
free(p);
if (!dbus_message_iter_close_container(i, &sub))
return -ENOMEM;
@@ -191,7 +187,7 @@ static int bus_user_append_idle_hint_since(DBusMessageIter *i, const char *prope
static int bus_user_append_default_cgroup(DBusMessageIter *i, const char *property, void *data) {
User *u = data;
char *t;
char _cleanup_free_ *t = NULL;
int r;
bool success;
@@ -204,8 +200,6 @@ static int bus_user_append_default_cgroup(DBusMessageIter *i, const char *proper
return r;
success = dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &t);
free(t);
return success ? 0 : -ENOMEM;
}
@@ -362,7 +356,6 @@ char *user_bus_path(User *u) {
int user_send_signal(User *u, bool new_user) {
_cleanup_dbus_message_unref_ DBusMessage *m = NULL;
int r = -ENOMEM;
_cleanup_free_ char *p = NULL;
uint32_t uid;
@@ -377,7 +370,7 @@ int user_send_signal(User *u, bool new_user) {
p = user_bus_path(u);
if (!p)
goto finish;
return -ENOMEM;
uid = u->uid;
@@ -386,20 +379,16 @@ int user_send_signal(User *u, bool new_user) {
DBUS_TYPE_UINT32, &uid,
DBUS_TYPE_OBJECT_PATH, &p,
DBUS_TYPE_INVALID))
goto finish;
return -ENOMEM;
if (!dbus_connection_send(u->manager->bus, m, NULL))
goto finish;
return -ENOMEM;
r = 0;
finish:
return r;
return 0;
}
int user_send_changed(User *u, const char *properties) {
_cleanup_dbus_message_unref_ DBusMessage *m = NULL;
int r = -ENOMEM;
_cleanup_free_ char *p = NULL;
assert(u);
@@ -413,13 +402,10 @@ int user_send_changed(User *u, const char *properties) {
m = bus_properties_changed_new(p, "org.freedesktop.login1.User", properties);
if (!m)
goto finish;
return -ENOMEM;
if (!dbus_connection_send(u->manager->bus, m, NULL))
goto finish;
return -ENOMEM;
r = 0;
finish:
return r;
return 0;
}