From f51c0e87bde45351b7439a17e6ecbc3f698c46f9 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Tue, 7 Sep 2021 17:37:46 +0200 Subject: [PATCH] lslogins: use lib/procfs.c --- login-utils/lslogins.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c index 9431a50bb7..132046cbf4 100644 --- a/login-utils/lslogins.c +++ b/login-utils/lslogins.c @@ -55,8 +55,9 @@ #include "strutils.h" #include "optutils.h" #include "pathnames.h" +#include "fileutils.h" #include "logindefs.h" -#include "procutils.h" +#include "procfs.h" #include "timeutils.h" /* @@ -562,9 +563,6 @@ static int get_sgroups(gid_t **list, size_t *len, struct passwd *pwd) *list = xcalloc(1, ngroups * sizeof(gid_t)); -fprintf(stderr, "KZAK>>> alloc '%p' for %s\n", *list, pwd->pw_name); - - /* now for the actual list of GIDs */ if (-1 == getgrouplist(pwd->pw_name, pwd->pw_gid, *list, &ngroups)) return -1; @@ -587,16 +585,20 @@ fprintf(stderr, "KZAK>>> alloc '%p' for %s\n", *list, pwd->pw_name); #ifdef __linux__ static int get_nprocs(const uid_t uid) { + DIR *dir; + struct dirent *d; int nprocs = 0; - pid_t pid; - struct proc_processes *proc = proc_open_processes(); - proc_processes_filter_by_uid(proc, uid); + dir = opendir(_PATH_PROC); + if (!dir) + return 0; - while (!proc_next_pid(proc, &pid)) - ++nprocs; + while ((d = xreaddir(dir))) { + if (procfs_dirent_match_uid(dir, d, uid)) + ++nprocs; + } - proc_close_processes(proc); + closedir(dir); return nprocs; } #endif -- 2.47.3