chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
4ac036a
)
loginctl: also use $XDG_SESSION_ID for session-status
author
Zbigniew Jędrzejewski-Szmek
<zbyszek@in.waw.pl>
Thu, 1 Jun 2017 02:42:14 +0000
(22:42 -0400)
committer
Sven Eden
<yamakuzure@gmx.net>
Tue, 25 Jul 2017 07:46:52 +0000
(09:46 +0200)
src/login/loginctl.c
patch
|
blob
|
history
diff --git
a/src/login/loginctl.c
b/src/login/loginctl.c
index 5945d51605b6ad504e6b5b2495cc963d83f88dc1..62d68b9072613f94842233e330668d3f5c9a713d 100644
(file)
--- a/
src/login/loginctl.c
+++ b/
src/login/loginctl.c
@@
-928,6
+928,8
@@
static int show_session(int argc, char *argv[], void *userdata) {
bool properties, new_line = false;
sd_bus *bus = userdata;
int r, i;
bool properties, new_line = false;
sd_bus *bus = userdata;
int r, i;
+ _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
+ _cleanup_free_ char *path = NULL;
assert(bus);
assert(argv);
assert(bus);
assert(argv);
@@
-937,19
+939,27
@@
static int show_session(int argc, char *argv[], void *userdata) {
pager_open(arg_no_pager, false);
if (argc <= 1) {
pager_open(arg_no_pager, false);
if (argc <= 1) {
- /* If not argument is specified inspect the manager
- * itself */
+ const char *session, *p = "/org/freedesktop/login1/session/self";
+
if (properties)
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 */
return show_properties(bus, "/org/freedesktop/login1", &new_line);
/* And in the pretty case, show data of the calling session */
- return print_session_status_info(bus, "/org/freedesktop/login1/session/self", &new_line);
+ session = getenv("XDG_SESSION_ID");
+ if (session) {
+ r = get_session_path(bus, session, &error, &path);
+ if (r < 0) {
+ log_error("Failed to get session path: %s", bus_error_message(&error, r));
+ return r;
+ }
+ p = path;
+ }
+
+ return print_session_status_info(bus, p, &new_line);
}
for (i = 1; i < argc; i++) {
}
for (i = 1; i < argc; i++) {
- _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
- _cleanup_free_ char *path = NULL;
-
r = get_session_path(bus, argv[i], &error, &path);
if (r < 0) {
log_error("Failed to get session path: %s", bus_error_message(&error, r));
r = get_session_path(bus, argv[i], &error, &path);
if (r < 0) {
log_error("Failed to get session path: %s", bus_error_message(&error, r));