#include "alloc-util.h"
#include "bus-error.h"
-#include "bus-unit-util.h"
+#include "bus-unit-procs.h"
#include "bus-util.h"
#include "cgroup-show.h"
#include "cgroup-util.h"
#include "logs-show.h"
#include "macro.h"
#include "main-func.h"
+#include "memory-util.h"
#include "pager.h"
#include "parse-util.h"
#include "pretty-print.h"
#include "terminal-util.h"
#include "unit-name.h"
#include "user-util.h"
-#include "util.h"
#include "verbs.h"
static char **arg_property = NULL;
assert(table);
assert(word);
- if (table_get_rows(table) > 1) {
+ if (table_get_rows(table) > 1 || OUTPUT_MODE_IS_JSON(arg_output)) {
r = table_set_sort(table, (size_t) 0, (size_t) -1);
if (r < 0)
return log_error_errno(r, "Failed to sort table: %m");
return bus_log_parse_error(r);
if (all || !isempty(s))
- bus_print_property_value(name, expected_value, value, "%s", s);
+ bus_print_property_value(name, expected_value, value, s);
return 1;
"Invalid user ID: " UID_FMT,
uid);
- bus_print_property_value(name, expected_value, value, UID_FMT, uid);
+ bus_print_property_valuef(name, expected_value, value, UID_FMT, uid);
return 1;
}
break;
(void) pager_open(arg_pager_flags);
if (argc <= 1) {
- const char *session, *p = "/org/freedesktop/login1/session/self";
-
+ /* If no argument is specified inspect the manager itself */
if (properties)
- /* If no argument is specified inspect the manager itself */
return show_properties(bus, "/org/freedesktop/login1", &new_line);
- /* And in the pretty case, show data of the calling session */
- session = getenv("XDG_SESSION_ID");
- if (session) {
- r = get_session_path(bus, session, &error, &path);
- if (r < 0)
- return log_error_errno(r, "Failed to get session path: %s", bus_error_message(&error, r));
-
- p = path;
- }
-
- return print_session_status_info(bus, p, &new_line);
+ return print_session_status_info(bus, "/org/freedesktop/login1/session/auto", &new_line);
}
for (i = 1; i < argc; i++) {
(void) pager_open(arg_pager_flags);
if (argc <= 1) {
- /* If not argument is specified inspect the manager
- * itself */
+ /* If no argument is specified inspect the manager itself */
if (properties)
return show_properties(bus, "/org/freedesktop/login1", &new_line);
(void) pager_open(arg_pager_flags);
if (argc <= 1) {
- /* If not argument is specified inspect the manager
- * itself */
+ /* If no argument is specified inspect the manager itself */
if (properties)
return show_properties(bus, "/org/freedesktop/login1", &new_line);
- return print_seat_status_info(bus, "/org/freedesktop/login1/seat/self", &new_line);
+ return print_seat_status_info(bus, "/org/freedesktop/login1/seat/auto", &new_line);
}
for (i = 1; i < argc; i++) {
polkit_agent_open_if_enabled(arg_transport, arg_ask_password);
if (argc < 2) {
- /* No argument? Let's either use $XDG_SESSION_ID (if specified), or an empty
- * session name, in which case logind will try to guess our session. */
-
short_argv[0] = argv[0];
- short_argv[1] = getenv("XDG_SESSION_ID") ?: (char*) "";
+ short_argv[1] = (char*) "";
short_argv[2] = NULL;
argv = short_argv;
&error, NULL,
"s", argv[i]);
if (r < 0)
- return log_error_errno(r, "Failed to issue method call: %s", bus_error_message(&error, -r));
+ return log_error_errno(r, "Failed to issue method call: %s", bus_error_message(&error, r));
}
return 0;
if (r < 0)
return log_oom();
- printf("%s [OPTIONS...] {COMMAND} ...\n\n"
- "Send control commands to or query the login manager.\n\n"
- " -h --help Show this help\n"
- " --version Show package version\n"
- " --no-pager Do not pipe output into a pager\n"
- " --no-legend Do not show the headers and footers\n"
- " --no-ask-password Don't prompt for password\n"
- " -H --host=[USER@]HOST Operate on remote host\n"
- " -M --machine=CONTAINER Operate on local container\n"
- " -p --property=NAME Show only properties by this name\n"
- " -a --all Show all properties, including empty ones\n"
- " --value When showing properties, only print the value\n"
- " -l --full Do not ellipsize output\n"
- " --kill-who=WHO Who to send signal to\n"
- " -s --signal=SIGNAL Which signal to send\n"
- " -n --lines=INTEGER Number of journal entries to show\n"
- " -o --output=STRING Change journal output mode (short, short-precise,\n"
- " short-iso, short-iso-precise, short-full,\n"
- " short-monotonic, short-unix, verbose, export,\n"
- " json, json-pretty, json-sse, json-seq, cat,\n"
- " with-unit)\n"
- "Session Commands:\n"
+ printf("%s%s [OPTIONS...] {COMMAND} ...\n\n"
+ "Send control commands to or query the login manager.%s\n"
+ "\nSession Commands:\n"
" list-sessions List sessions\n"
" session-status [ID...] Show session status\n"
" show-session [ID...] Show properties of sessions or the manager\n"
" attach NAME DEVICE... Attach one or more devices to a seat\n"
" flush-devices Flush all device associations\n"
" terminate-seat NAME... Terminate all sessions on one or more seats\n"
+ "\nOptions\n"
+ " -h --help Show this help\n"
+ " --version Show package version\n"
+ " --no-pager Do not pipe output into a pager\n"
+ " --no-legend Do not show the headers and footers\n"
+ " --no-ask-password Don't prompt for password\n"
+ " -H --host=[USER@]HOST Operate on remote host\n"
+ " -M --machine=CONTAINER Operate on local container\n"
+ " -p --property=NAME Show only properties by this name\n"
+ " -a --all Show all properties, including empty ones\n"
+ " --value When showing properties, only print the value\n"
+ " -l --full Do not ellipsize output\n"
+ " --kill-who=WHO Who to send signal to\n"
+ " -s --signal=SIGNAL Which signal to send\n"
+ " -n --lines=INTEGER Number of journal entries to show\n"
+ " -o --output=STRING Change journal output mode (short, short-precise,\n"
+ " short-iso, short-iso-precise, short-full,\n"
+ " short-monotonic, short-unix, verbose, export,\n"
+ " json, json-pretty, json-sse, json-seq, cat,\n"
+ " with-unit)\n"
"\nSee the %s for details.\n"
+ , ansi_highlight()
, program_invocation_short_name
+ , ansi_normal()
, link
);
int r;
setlocale(LC_ALL, "");
+ log_show_color(true);
log_parse_environment();
log_open();