From d91b13806f41131fe55ece6027fa762f5da016ac Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Tue, 9 Aug 2011 04:09:17 +0200 Subject: uptime: add config flag to allow displaying the number of users currently logged on Signed-off-by: Pere Orga Signed-off-by: Denys Vlasenko --- procps/uptime.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) (limited to 'procps/uptime.c') diff --git a/procps/uptime.c b/procps/uptime.c index 74323625d..c3a2740e1 100644 --- a/procps/uptime.c +++ b/procps/uptime.c @@ -7,14 +7,29 @@ * Licensed under GPLv2, see file LICENSE in this source tree. */ -/* This version of uptime doesn't display the number of users on the system, - * since busybox init doesn't mess with utmp. For folks using utmp that are - * just dying to have # of users reported, feel free to write it as some type - * of CONFIG_FEATURE_UTMP_SUPPORT #define +/* 2011 Pere Orga + * + * Added FEATURE_UPTIME_UTMP_SUPPORT flag. */ /* getopt not needed */ +//config:config UPTIME +//config: bool "uptime" +//config: default y +//config: select PLATFORM_LINUX #sysinfo() +//config: help +//config: uptime gives a one line display of the current time, how long +//config: the system has been running, how many users are currently logged +//config: on, and the system load averages for the past 1, 5, and 15 minutes. +//config: +//config:config FEATURE_UPTIME_UTMP_SUPPORT +//config: bool "Support for showing the number of users" +//config: default y +//config: depends on UPTIME && FEATURE_UTMP +//config: help +//config: Makes uptime display the number of users currently logged on. + //usage:#define uptime_trivial_usage //usage: "" //usage:#define uptime_full_usage "\n\n" @@ -64,6 +79,18 @@ int uptime_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) else printf("%d min, ", upminutes); +#if ENABLE_FEATURE_UPTIME_UTMP_SUPPORT +{ + struct utmp *ut; + int users = 0; + while ((ut = getutent())) { + if ((ut->ut_type == USER_PROCESS) && (ut->ut_name[0] != '\0')) + users++; + } + printf("%d users, ", users); +} +#endif + printf("load average: %ld.%02ld, %ld.%02ld, %ld.%02ld\n", LOAD_INT(info.loads[0]), LOAD_FRAC(info.loads[0]), LOAD_INT(info.loads[1]), LOAD_FRAC(info.loads[1]), -- cgit v1.2.3-55-g6feb