| OLD | NEW |
| (Empty) |
| 1 # Copyright (c) 2001-2005 Twisted Matrix Laboratories. | |
| 2 # See LICENSE for details. | |
| 3 | |
| 4 import array | |
| 5 import stat | |
| 6 import time | |
| 7 | |
| 8 def lsLine(name, s): | |
| 9 mode = s.st_mode | |
| 10 perms = array.array('c', '-'*10) | |
| 11 ft = stat.S_IFMT(mode) | |
| 12 if stat.S_ISDIR(ft): perms[0] = 'd' | |
| 13 elif stat.S_ISCHR(ft): perms[0] = 'c' | |
| 14 elif stat.S_ISBLK(ft): perms[0] = 'b' | |
| 15 elif stat.S_ISREG(ft): perms[0] = '-' | |
| 16 elif stat.S_ISFIFO(ft): perms[0] = 'f' | |
| 17 elif stat.S_ISLNK(ft): perms[0] = 'l' | |
| 18 elif stat.S_ISSOCK(ft): perms[0] = 's' | |
| 19 else: perms[0] = '!' | |
| 20 # user | |
| 21 if mode&stat.S_IRUSR:perms[1] = 'r' | |
| 22 if mode&stat.S_IWUSR:perms[2] = 'w' | |
| 23 if mode&stat.S_IXUSR:perms[3] = 'x' | |
| 24 # group | |
| 25 if mode&stat.S_IRGRP:perms[4] = 'r' | |
| 26 if mode&stat.S_IWGRP:perms[5] = 'w' | |
| 27 if mode&stat.S_IXGRP:perms[6] = 'x' | |
| 28 # other | |
| 29 if mode&stat.S_IROTH:perms[7] = 'r' | |
| 30 if mode&stat.S_IWOTH:perms[8] = 'w' | |
| 31 if mode&stat.S_IXOTH:perms[9] = 'x' | |
| 32 # suid/sgid | |
| 33 if mode&stat.S_ISUID: | |
| 34 if perms[3] == 'x': perms[3] = 's' | |
| 35 else: perms[3] = 'S' | |
| 36 if mode&stat.S_ISGID: | |
| 37 if perms[6] == 'x': perms[6] = 's' | |
| 38 else: perms[6] = 'S' | |
| 39 l = perms.tostring() | |
| 40 l += str(s.st_nlink).rjust(5) + ' ' | |
| 41 un = str(s.st_uid) | |
| 42 l += un.ljust(9) | |
| 43 gr = str(s.st_gid) | |
| 44 l += gr.ljust(9) | |
| 45 sz = str(s.st_size) | |
| 46 l += sz.rjust(8) | |
| 47 l += ' ' | |
| 48 sixmo = 60 * 60 * 24 * 7 * 26 | |
| 49 if s.st_mtime + sixmo < time.time(): # last edited more than 6mo ago | |
| 50 l += time.strftime("%b %2d %Y ", time.localtime(s.st_mtime)) | |
| 51 else: | |
| 52 l += time.strftime("%b %2d %H:%S ", time.localtime(s.st_mtime)) | |
| 53 l += name | |
| 54 return l | |
| 55 | |
| OLD | NEW |