Changeset 3232 in MondoRescue for branches/3.2/mindi-busybox/procps/uptime.c
- Timestamp:
- Jan 1, 2014, 12:47:38 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.2/mindi-busybox/procps/uptime.c
r2725 r3232 8 8 */ 9 9 10 /* This version of uptime doesn't display the number of users on the system, 11 * since busybox init doesn't mess with utmp. For folks using utmp that are 12 * just dying to have # of users reported, feel free to write it as some type 13 * of CONFIG_FEATURE_UTMP_SUPPORT #define 10 /* 2011 Pere Orga <gotrunks@gmail.com> 11 * 12 * Added FEATURE_UPTIME_UTMP_SUPPORT flag. 14 13 */ 15 14 16 15 /* getopt not needed */ 17 16 17 //config:config UPTIME 18 //config: bool "uptime" 19 //config: default y 20 //config: select PLATFORM_LINUX #sysinfo() 21 //config: help 22 //config: uptime gives a one line display of the current time, how long 23 //config: the system has been running, how many users are currently logged 24 //config: on, and the system load averages for the past 1, 5, and 15 minutes. 25 //config: 26 //config:config FEATURE_UPTIME_UTMP_SUPPORT 27 //config: bool "Support for showing the number of users" 28 //config: default y 29 //config: depends on UPTIME && FEATURE_UTMP 30 //config: help 31 //config: Makes uptime display the number of users currently logged on. 32 33 //usage:#define uptime_trivial_usage 34 //usage: "" 35 //usage:#define uptime_full_usage "\n\n" 36 //usage: "Display the time since the last boot" 37 //usage: 38 //usage:#define uptime_example_usage 39 //usage: "$ uptime\n" 40 //usage: " 1:55pm up 2:30, load average: 0.09, 0.04, 0.00\n" 41 18 42 #include "libbb.h" 43 #ifdef __linux__ 44 # include <sys/sysinfo.h> 45 #endif 46 19 47 20 48 #ifndef FSHIFT 21 49 # define FSHIFT 16 /* nr of bits of precision */ 22 50 #endif 23 #define FIXED_1 (1<<FSHIFT) /* 1.0 as fixed-point */24 #define LOAD_INT(x) ((x) >> FSHIFT)25 #define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1 -1)) * 100)51 #define FIXED_1 (1 << FSHIFT) /* 1.0 as fixed-point */ 52 #define LOAD_INT(x) (unsigned)((x) >> FSHIFT) 53 #define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1 - 1)) * 100) 26 54 27 55 … … 29 57 int uptime_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 30 58 { 31 intupdays, uphours, upminutes;59 unsigned updays, uphours, upminutes; 32 60 struct sysinfo info; 33 61 struct tm *current_time; … … 39 67 sysinfo(&info); 40 68 41 printf(" %02 d:%02d:%02dup ",69 printf(" %02u:%02u:%02u up ", 42 70 current_time->tm_hour, current_time->tm_min, current_time->tm_sec); 43 updays = ( int) info.uptime /(60*60*24);71 updays = (unsigned) info.uptime / (unsigned)(60*60*24); 44 72 if (updays) 45 printf("% dday%s, ", updays, (updays != 1) ? "s" : "");46 upminutes = ( int) info.uptime /60;47 uphours = (upminutes / 60) %24;73 printf("%u day%s, ", updays, (updays != 1) ? "s" : ""); 74 upminutes = (unsigned) info.uptime / (unsigned)60; 75 uphours = (upminutes / (unsigned)60) % (unsigned)24; 48 76 upminutes %= 60; 49 77 if (uphours) 50 printf("%2 d:%02d,", uphours, upminutes);78 printf("%2u:%02u", uphours, upminutes); 51 79 else 52 printf("% d min,", upminutes);80 printf("%u min", upminutes); 53 81 54 printf("load average: %ld.%02ld, %ld.%02ld, %ld.%02ld\n", 82 #if ENABLE_FEATURE_UPTIME_UTMP_SUPPORT 83 { 84 struct utmp *ut; 85 unsigned users = 0; 86 while ((ut = getutent()) != NULL) { 87 if ((ut->ut_type == USER_PROCESS) && (ut->ut_name[0] != '\0')) 88 users++; 89 } 90 printf(", %u users", users); 91 } 92 #endif 93 94 printf(", load average: %u.%02u, %u.%02u, %u.%02u\n", 55 95 LOAD_INT(info.loads[0]), LOAD_FRAC(info.loads[0]), 56 96 LOAD_INT(info.loads[1]), LOAD_FRAC(info.loads[1]),
Note:
See TracChangeset
for help on using the changeset viewer.