X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=coreutils%2Fwho.c;h=546050aee0b89276179caa69b8eea19f902357f5;hb=91e80c2be7d53b116ef23072ecaa89168b8e5bfc;hp=25d35fad9216f7b3c8475ee4504bd40a9140621f;hpb=06af2165288cd6516b89001ec9e24992619230e0;p=oweals%2Fbusybox.git diff --git a/coreutils/who.c b/coreutils/who.c index 25d35fad9..546050aee 100644 --- a/coreutils/who.c +++ b/coreutils/who.c @@ -17,30 +17,32 @@ *---------------------------------------------------------------------- */ -#include "busybox.h" +#include "libbb.h" #include #include -static const char * idle_string (time_t t) +static void idle_string(char *str6, time_t t) { - static char str[6]; + t = time(NULL) - t; - time_t s = time(NULL) - t; - - if (s < 60) - return "."; - if (s < (24 * 60 * 60)) { - sprintf(str, "%02d:%02d", - (int) (s / (60 * 60)), - (int) ((s % (60 * 60)) / 60)); - return str; + /*if (t < 60) { + str6[0] = '.'; + str6[1] = '\0'; + return; + }*/ + if (t >= 0 && t < (24 * 60 * 60)) { + sprintf(str6, "%02d:%02d", + (int) (t / (60 * 60)), + (int) ((t % (60 * 60)) / 60)); + return; } - return "old"; + strcpy(str6, "old"); } int who_main(int argc, char **argv); int who_main(int argc, char **argv) { + char str6[6]; struct utmp *ut; struct stat st; char *name; @@ -57,12 +59,18 @@ int who_main(int argc, char **argv) /* ut->ut_line is device name of tty - "/dev/" */ name = concat_path_file("/dev", ut->ut_line); - printf("%-10s %-8s %-8s %-12.12s %s\n", ut->ut_user, ut->ut_line, - (stat(name, &st)) ? "?" : idle_string(st.st_atime), - ctime(&thyme) + 4, ut->ut_host); - if (ENABLE_FEATURE_CLEAN_UP) free(name); + str6[0] = '?'; + str6[1] = '\0'; + if (stat(name, &st) == 0) + idle_string(str6, st.st_atime); + printf("%-10s %-8s %-9s %-14.14s %s\n", + ut->ut_user, ut->ut_line, str6, + ctime(&thyme) + 4, ut->ut_host); + if (ENABLE_FEATURE_CLEAN_UP) + free(name); } } - if (ENABLE_FEATURE_CLEAN_UP) endutent(); + if (ENABLE_FEATURE_CLEAN_UP) + endutent(); return 0; }