Projects
openEuler:24.03:SP1:Everything
procps-ng
_service:tar_scm:openeuler-w-Fix-w-print-0-user...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:openeuler-w-Fix-w-print-0-user-when-systemd-pam-is-not-install.patch of Package procps-ng
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
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2