]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Add options -amc; do lstat if possible; columnize properly.
authorGuido van Rossum <guido@python.org>
Mon, 1 Jul 1991 18:20:35 +0000 (18:20 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 1 Jul 1991 18:20:35 +0000 (18:20 +0000)
Tools/scripts/byteyears.py

index 8c5ec698986df4fe7e04c5e6a22845d40e354fe5..06f7559e05ae09233facbf43d5a70f32737a0c74 100755 (executable)
@@ -1,29 +1,57 @@
 #! /usr/local/python
 
-# byteyears file ...
+# Print the product of age and size of each file, in suitable units.
 #
-# Print a number representing the product of age and size of each file,
-# in suitable units.
+# Usage: byteyears [ -a | -m | -c ] file ...
+#
+# Options -[amc] select atime, mtime (default) or ctime as age.
 
 import sys, posix, time
+import string
 from stat import *
 
-secs_per_year = 365.0 * 24.0 * 3600.0
-now = time.time()
-status = 0
+# Use lstat() to stat files if it exists, else stat()
+try:
+       statfunc = posix.lstat
+except NameError:
+       statfunc = posix.stat
+
+# Parse options
+if sys.argv[1] = '-m':
+       itime = ST_MTIME
+       del sys.argv[1]
+elif sys.argv[1] = '-c':
+       itime = ST_CTIME
+       del sys.argv[1]
+elif sys.argv[1] = '-a':
+       itime = ST_CTIME
+       del sys.argv[1]
+else:
+       itime = ST_MTIME
+
+secs_per_year = 365.0 * 24.0 * 3600.0  # Scale factor
+now = time.time()                      # Current time, for age computations
+status = 0                             # Exit status, set to 1 on errors
+
+# Compute max file name length
+maxlen = 1
+for file in sys.argv[1:]:
+       if len(file) > maxlen: maxlen = len(file)
 
+# Process each argument in turn
 for file in sys.argv[1:]:
        try:
-               st = posix.stat(file)
+               st = statfunc(file)
        except posix.error, msg:
                sys.stderr.write('can\'t stat ' + `file` + ': ' + `msg` + '\n')
                status = 1
                st = ()
        if st:
-               mtime = st[ST_MTIME]
+               anytime = st[itime]
                size = st[ST_SIZE]
-               age = now - mtime
+               age = now - anytime
                byteyears = float(size) * float(age) / secs_per_year
-               print file + '\t\t' + `int(byteyears)`
+               print string.ljust(file, maxlen),
+               print string.rjust(`int(byteyears)`, 8)
 
 sys.exit(status)