diff --git a/ls.c b/ls.c
index 4990ed9..c9ff40f 100644
--- a/ls.c
+++ b/ls.c
@@ -257,22 +257,13 @@
     return 0;
 }
 
-static int listfile_long(const char *path, int flags)
+static int listfile_long(const char *path, const char *filename, int flags)
 {
     struct stat s;
     char date[32];
     char mode[16];
     char user[16];
     char group[16];
-    const char *name;
-
-    /* name is anything after the final '/', or the whole path if none*/
-    name = strrchr(path, '/');
-    if(name == 0) {
-        name = path;
-    } else {
-        name++;
-    }
 
     if(lstat(path, &s) < 0) {
         return -1;
@@ -291,14 +282,14 @@
     switch(s.st_mode & S_IFMT) {
     case S_IFBLK:
     case S_IFCHR:
-        printf("%s %-8s %-8s %3d, %3d %s %s\n",
+        printf("%s %-8s %-8s %5d, %3d %s %s\n",
                mode, user, group, 
                (int) MAJOR(s.st_rdev), (int) MINOR(s.st_rdev),
-               date, name);
+               date, filename);
         break;
     case S_IFREG:
-        printf("%s %-8s %-8s %12lld %s %s\n",
-               mode, user, group, s.st_size, date, name);
+        printf("%s %-8s %-8s %10lld %s %s\n",
+               mode, user, group, s.st_size, date, filename);
         break;
     case S_IFLNK: {
         char linkto[256];
@@ -316,13 +307,13 @@
             linkto[len] = 0;
         }
         
-        printf("%s %-8s %-8s          %s %s -> %s\n",
-               mode, user, group, date, name, linkto);
+        printf("%s %-8s %-8s            %s %s -> %s\n",
+               mode, user, group, date, filename, linkto);
         break;
     }
     default:
-        printf("%s %-8s %-8s          %s %s\n",
-               mode, user, group, date, name);
+        printf("%s %-8s %-8s            %s %s\n",
+               mode, user, group, date, filename);
 
     }
     return 0;
@@ -346,7 +337,7 @@
     }
 
     if ((flags & LIST_LONG) != 0) {
-        return listfile_long(pathname, flags);
+        return listfile_long(pathname, filename, flags);
     } else /*((flags & LIST_SIZE) != 0)*/ {
         return listfile_size(pathname, filename, flags);
     }
