Size reduction by Tito.
authorRob Landley <rob@landley.net>
Sat, 11 Mar 2006 18:22:35 +0000 (18:22 -0000)
committerRob Landley <rob@landley.net>
Sat, 11 Mar 2006 18:22:35 +0000 (18:22 -0000)
coreutils/who.c

index 1156ba20ff1a58074f55bae0693996b8cff764e2..2773e1a8b1613b26b43c4c6baee80f703d776b6d 100644 (file)
  *----------------------------------------------------------------------
  */
 
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <utmp.h>
 #include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
 #include <time.h>
 #include "busybox.h"
 
@@ -29,36 +25,24 @@ int who_main(int argc, char **argv)
 {
     struct utmp *ut;
     struct stat st;
-    int         devlen, len;
-    time_t      now, idle;
+    time_t     idle;
+    char *name;
 
     if (argc > 1)
        bb_show_usage();
 
     setutent();
-    devlen = sizeof("/dev/") - 1;
     printf("USER       TTY      IDLE      FROM           HOST\n");
 
     while ((ut = getutent()) != NULL) {
-       char name[40];
 
        if (ut->ut_user[0] && ut->ut_type == USER_PROCESS) {
-           len = strlen(ut->ut_line);
-           if (ut->ut_line[0] == '/') {
-              strncpy(name, ut->ut_line, len);
-              name[len] = '\0';
-              strcpy(ut->ut_line, ut->ut_line + devlen);
-           } else {
-              strcpy(name, "/dev/");
-              strncpy(name+devlen, ut->ut_line, len);
-              name[devlen+len] = '\0';
-           }
-
+               /* ut->ut_line is device name of tty - "/dev/" */
            printf("%-10s %-8s ", ut->ut_user, ut->ut_line);
 
+               name = concat_path_file("/dev/", ut->ut_line);
            if (stat(name, &st) == 0) {
-               now = time(NULL);
-               idle = now -  st.st_atime;
+               idle = time(NULL) -  st.st_atime;
 
                if (idle < 60)
                    printf("00:00m    ");
@@ -75,6 +59,7 @@ int who_main(int argc, char **argv)
                printf("%-8s  ", "?");
 
            printf("%-12.12s   %s\n", ctime((time_t*)&(ut->ut_tv.tv_sec)) + 4, ut->ut_host);
+               free(name);
        }
     }
     endutent();