83 lines
2.3 KiB
Diff
83 lines
2.3 KiB
Diff
|
|
From c0c707ac435d6318fa8d5542906599867877465a Mon Sep 17 00:00:00 2001
|
||
|
|
From: Chao Liu <liuchao173@huawei.com>
|
||
|
|
Date: Tue, 7 May 2024 07:20:34 +0000
|
||
|
|
Subject: [PATCH 2/2] w: Fix w print 0 user when systemd-pam is not
|
||
|
|
installed
|
||
|
|
|
||
|
|
Signed-off-by: SuperSix173 <liuchao173@huawei.com>
|
||
|
|
---
|
||
|
|
src/w.c | 53 ++++++++++++++++++++++++++---------------------------
|
||
|
|
1 file changed, 26 insertions(+), 27 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/src/w.c b/src/w.c
|
||
|
|
index fd6e75f..8e30e5d 100644
|
||
|
|
--- a/src/w.c
|
||
|
|
+++ b/src/w.c
|
||
|
|
@@ -805,37 +805,36 @@ int main(int argc, char **argv)
|
||
|
|
printf(_(" IDLE WHAT\n"));
|
||
|
|
}
|
||
|
|
#if (defined(WITH_SYSTEMD) || defined(WITH_ELOGIND)) && defined(HAVE_SD_SESSION_GET_LEADER)
|
||
|
|
- if (sd_booted() > 0) {
|
||
|
|
- char **sessions_list;
|
||
|
|
- int sessions;
|
||
|
|
- int i;
|
||
|
|
+ char **sessions_list;
|
||
|
|
+ int sessions = 0;
|
||
|
|
|
||
|
|
+ if (sd_booted() > 0)
|
||
|
|
sessions = sd_get_sessions (&sessions_list);
|
||
|
|
- if (sessions < 0 && sessions != -ENOENT)
|
||
|
|
- error(EXIT_FAILURE, -sessions, _("error getting sessions"));
|
||
|
|
-
|
||
|
|
- if (sessions >= 0) {
|
||
|
|
- for (int i = 0; i < sessions; i++) {
|
||
|
|
- char *name;
|
||
|
|
- int r;
|
||
|
|
-
|
||
|
|
- if ((r = sd_session_get_username(sessions_list[i], &name)) < 0)
|
||
|
|
- error(EXIT_FAILURE, -r, _("get user name failed"));
|
||
|
|
-
|
||
|
|
- if (user) {
|
||
|
|
- if (!strcmp(name, user))
|
||
|
|
- showinfo(sessions_list[i], name, NULL, longform,
|
||
|
|
- maxcmd, from, userlen, fromlen,
|
||
|
|
- ip_addresses, pids);
|
||
|
|
- } else {
|
||
|
|
- showinfo(sessions_list[i], name, NULL, longform, maxcmd,
|
||
|
|
- from, userlen, fromlen, ip_addresses, pids);
|
||
|
|
- }
|
||
|
|
- free(name);
|
||
|
|
- free(sessions_list[i]);
|
||
|
|
+
|
||
|
|
+ if (sessions < 0 && sessions != -ENOENT)
|
||
|
|
+ error(EXIT_FAILURE, -sessions, _("error getting sessions"));
|
||
|
|
+
|
||
|
|
+ if (sessions > 0) {
|
||
|
|
+ for (int i = 0; i < sessions; i++) {
|
||
|
|
+ char *name;
|
||
|
|
+ int r;
|
||
|
|
+
|
||
|
|
+ if ((r = sd_session_get_username(sessions_list[i], &name)) < 0)
|
||
|
|
+ error(EXIT_FAILURE, -r, _("get user name failed"));
|
||
|
|
+
|
||
|
|
+ if (user) {
|
||
|
|
+ if (!strcmp(name, user))
|
||
|
|
+ showinfo(sessions_list[i], name, NULL, longform,
|
||
|
|
+ maxcmd, from, userlen, fromlen,
|
||
|
|
+ ip_addresses, pids);
|
||
|
|
+ } else {
|
||
|
|
+ showinfo(sessions_list[i], name, NULL, longform, maxcmd,
|
||
|
|
+ from, userlen, fromlen, ip_addresses, pids);
|
||
|
|
}
|
||
|
|
- free(sessions_list);
|
||
|
|
+ free(name);
|
||
|
|
+ free(sessions_list[i]);
|
||
|
|
}
|
||
|
|
+ free(sessions_list);
|
||
|
|
} else {
|
||
|
|
#endif
|
||
|
|
#ifdef HAVE_UTMPX_H
|
||
|
|
--
|
||
|
|
2.33.0
|
||
|
|
|