diff options
| author | Senthil Kumaran <orsenthil@gmail.com> | 2010-10-19 04:39:35 +0000 | 
|---|---|---|
| committer | Senthil Kumaran <orsenthil@gmail.com> | 2010-10-19 04:39:35 +0000 | 
| commit | 7cd94b8aa2bff16d06b254b697c62d52a3f6f5fa (patch) | |
| tree | 982e9e51255e4df258630e91a5fbf36de1bcfba7 /Tools/scripts/pathfix.py | |
| parent | e474309bb7f0ba6e6ae824c215c45f00db691889 (diff) | |
| download | cpython-git-7cd94b8aa2bff16d06b254b697c62d52a3f6f5fa.tar.gz | |
Fix Issue10140 - Tools/scripts/pathfix.py: add option to preserve timestamps
Diffstat (limited to 'Tools/scripts/pathfix.py')
| -rwxr-xr-x | Tools/scripts/pathfix.py | 21 | 
1 files changed, 18 insertions, 3 deletions
| diff --git a/Tools/scripts/pathfix.py b/Tools/scripts/pathfix.py index 6cbac10ecb..dd08e0aba3 100755 --- a/Tools/scripts/pathfix.py +++ b/Tools/scripts/pathfix.py @@ -30,20 +30,24 @@ dbg = err  rep = sys.stdout.write  new_interpreter = None +preserve_timestamps = False  def main():      global new_interpreter -    usage = ('usage: %s -i /interpreter file-or-directory ...\n' % +    global preserve_timestamps +    usage = ('usage: %s -i /interpreter -p file-or-directory ...\n' %               sys.argv[0])      try: -        opts, args = getopt.getopt(sys.argv[1:], 'i:') +        opts, args = getopt.getopt(sys.argv[1:], 'i:p')      except getopt.error as msg: -        err(msg + '\n') +        err(str(msg) + '\n')          err(usage)          sys.exit(2)      for o, a in opts:          if o == '-i':              new_interpreter = a.encode() +        if o == '-p': +            preserve_timestamps = True      if not new_interpreter or not new_interpreter.startswith(b'/') or \             not args:          err('-i option or file-or-directory missing\n') @@ -119,9 +123,13 @@ def fix(filename):      # Finishing touch -- move files +    mtime = None +    atime = None      # First copy the file's mode to the temp file      try:          statbuf = os.stat(filename) +        mtime = statbuf.st_mtime +        atime = statbuf.st_atime          os.chmod(tempname, statbuf[ST_MODE] & 0o7777)      except os.error as msg:          err('%s: warning: chmod failed (%r)\n' % (tempname, msg)) @@ -136,6 +144,13 @@ def fix(filename):      except os.error as msg:          err('%s: rename failed (%r)\n' % (filename, msg))          return 1 +    if preserve_timestamps: +        if atime and mtime: +            try: +                os.utime(filename, (atime, mtime)) +            except os.error as msg: +                err('%s: reset of timestamp failed (%r)\n' % (filename, msg)) +                return 1      # Return succes      return 0 | 
