74
74
static int list_sessions(DBusConnection *bus, char **args, unsigned n) {
75
DBusMessage *reply = NULL;
75
_cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
77
77
DBusMessageIter iter, sub, sub2;
90
90
DBUS_TYPE_INVALID);
94
94
if (!dbus_message_iter_init(reply, &iter) ||
95
95
dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
96
96
dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) {
97
97
log_error("Failed to parse reply.");
102
101
dbus_message_iter_recurse(&iter, &sub);
122
120
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &seat, true) < 0 ||
123
121
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &object, false) < 0) {
124
122
log_error("Failed to parse reply.");
129
126
printf("%10s %10u %-16s %-16s\n", id, (unsigned) uid, user, seat);
137
134
printf("\n%u sessions listed.\n", k);
143
dbus_message_unref(reply);
148
139
static int list_users(DBusConnection *bus, char **args, unsigned n) {
149
DBusMessage *reply = NULL;
140
_cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
151
142
DBusMessageIter iter, sub, sub2;
164
155
DBUS_TYPE_INVALID);
168
159
if (!dbus_message_iter_init(reply, &iter) ||
169
160
dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
170
161
dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) {
171
162
log_error("Failed to parse reply.");
176
166
dbus_message_iter_recurse(&iter, &sub);
194
183
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &user, true) < 0 ||
195
184
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &object, false) < 0) {
196
185
log_error("Failed to parse reply.");
201
189
printf("%10u %-16s\n", (unsigned) uid, user);
209
197
printf("\n%u users listed.\n", k);
215
dbus_message_unref(reply);
220
202
static int list_seats(DBusConnection *bus, char **args, unsigned n) {
221
DBusMessage *reply = NULL;
203
_cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
223
205
DBusMessageIter iter, sub, sub2;
236
218
DBUS_TYPE_INVALID);
240
222
if (!dbus_message_iter_init(reply, &iter) ||
241
223
dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
242
224
dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) {
243
225
log_error("Failed to parse reply.");
248
229
dbus_message_iter_recurse(&iter, &sub);
264
244
if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &seat, true) < 0 ||
265
245
bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &object, false) < 0) {
266
246
log_error("Failed to parse reply.");
271
250
printf("%-16s\n", seat);
861
834
const char *interface = "";
863
836
DBusMessageIter iter, sub, sub2, sub3;
864
SessionStatusInfo session_info;
865
UserStatusInfo user_info;
866
SeatStatusInfo seat_info;
837
SessionStatusInfo session_info = {};
838
UserStatusInfo user_info = {};
839
SeatStatusInfo seat_info = {};
869
842
assert(new_line);
875
844
r = bus_method_call_with_reply(
877
846
"org.freedesktop.login1",
1048
1017
r = show_one(args[0], bus, path, show_properties, &new_line);
1052
dbus_message_unref(reply);
1058
dbus_message_unref(reply);
1060
1023
dbus_error_free(&error);
1101
1063
arg_kill_who = "all";
1103
1065
for (i = 1; i < n; i++) {
1104
ret = bus_method_call_with_reply (
1106
"org.freedesktop.login1",
1107
"/org/freedesktop/login1",
1108
"org.freedesktop.login1.Manager",
1112
DBUS_TYPE_STRING, &args[i],
1113
DBUS_TYPE_STRING, &arg_kill_who,
1114
DBUS_TYPE_INT32, &arg_signal,
1068
r = bus_method_call_with_reply (
1070
"org.freedesktop.login1",
1071
"/org/freedesktop/login1",
1072
"org.freedesktop.login1.Manager",
1076
DBUS_TYPE_STRING, &args[i],
1077
DBUS_TYPE_STRING, &arg_kill_who,
1078
DBUS_TYPE_INT32, &arg_signal,
1124
1087
static int enable_linger(DBusConnection *bus, char **args, unsigned n) {
1127
1089
dbus_bool_t b, interactive = true;
1135
1097
for (i = 1; i < n; i++) {
1139
ret = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
1141
log_error("Failed to resolve user %s: %s", args[i], strerror(-ret));
1102
r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
1104
log_error("Failed to resolve user %s: %s", args[i], strerror(-r));
1145
1108
u = (uint32_t) uid;
1146
ret = bus_method_call_with_reply (
1148
"org.freedesktop.login1",
1149
"/org/freedesktop/login1",
1150
"org.freedesktop.login1.Manager",
1154
DBUS_TYPE_UINT32, &u,
1155
DBUS_TYPE_BOOLEAN, &b,
1156
DBUS_TYPE_BOOLEAN, &interactive,
1109
r = bus_method_call_with_reply (
1111
"org.freedesktop.login1",
1112
"/org/freedesktop/login1",
1113
"org.freedesktop.login1.Manager",
1117
DBUS_TYPE_UINT32, &u,
1118
DBUS_TYPE_BOOLEAN, &b,
1119
DBUS_TYPE_BOOLEAN, &interactive,
1166
1128
static int terminate_user(DBusConnection *bus, char **args, unsigned n) {
1172
1133
for (i = 1; i < n; i++) {
1176
ret = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
1178
log_error("Failed to look up user %s: %s", args[i], strerror(-ret));
1138
r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
1140
log_error("Failed to look up user %s: %s", args[i], strerror(-r));
1182
1144
u = (uint32_t) uid;
1183
ret = bus_method_call_with_reply (
1185
"org.freedesktop.login1",
1186
"/org/freedesktop/login1",
1187
"org.freedesktop.login1.Manager",
1191
DBUS_TYPE_UINT32, &u,
1145
r = bus_method_call_with_reply (
1147
"org.freedesktop.login1",
1148
"/org/freedesktop/login1",
1149
"org.freedesktop.login1.Manager",
1153
DBUS_TYPE_UINT32, &u,
1201
1162
static int kill_user(DBusConnection *bus, char **args, unsigned n) {
1210
1170
for (i = 1; i < n; i++) {
1214
ret = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
1216
log_error("Failed to look up user %s: %s", args[i], strerror(-ret));
1175
r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL);
1177
log_error("Failed to look up user %s: %s", args[i], strerror(-r));
1220
1181
u = (uint32_t) uid;
1221
ret = bus_method_call_with_reply (
1223
"org.freedesktop.login1",
1224
"/org/freedesktop/login1",
1225
"org.freedesktop.login1.Manager",
1229
DBUS_TYPE_UINT32, &u,
1230
DBUS_TYPE_INT32, &arg_signal,
1182
r = bus_method_call_with_reply (
1184
"org.freedesktop.login1",
1185
"/org/freedesktop/login1",
1186
"org.freedesktop.login1.Manager",
1190
DBUS_TYPE_UINT32, &u,
1191
DBUS_TYPE_INT32, &arg_signal,
1240
1200
static int attach(DBusConnection *bus, char **args, unsigned n) {
1243
1202
dbus_bool_t interactive = true;
1247
1206
polkit_agent_open_if_enabled();
1249
1208
for (i = 2; i < n; i++) {
1250
ret = bus_method_call_with_reply (
1252
"org.freedesktop.login1",
1253
"/org/freedesktop/login1",
1254
"org.freedesktop.login1.Manager",
1258
DBUS_TYPE_STRING, &args[1],
1259
DBUS_TYPE_STRING, &args[i],
1260
DBUS_TYPE_BOOLEAN, &interactive,
1211
r = bus_method_call_with_reply (
1213
"org.freedesktop.login1",
1214
"/org/freedesktop/login1",
1215
"org.freedesktop.login1.Manager",
1219
DBUS_TYPE_STRING, &args[1],
1220
DBUS_TYPE_STRING, &args[i],
1221
DBUS_TYPE_BOOLEAN, &interactive,
1270
1230
static int flush_devices(DBusConnection *bus, char **args, unsigned n) {
1305
1265
static int terminate_seat(DBusConnection *bus, char **args, unsigned n) {
1311
1270
for (i = 1; i < n; i++) {
1312
ret = bus_method_call_with_reply (
1314
"org.freedesktop.login1",
1315
"/org/freedesktop/login1",
1316
"org.freedesktop.login1.Manager",
1320
DBUS_TYPE_STRING, &args[i],
1273
r = bus_method_call_with_reply (
1275
"org.freedesktop.login1",
1276
"/org/freedesktop/login1",
1277
"org.freedesktop.login1.Manager",
1281
DBUS_TYPE_STRING, &args[i],
1330
1290
static int help(void) {