Mercurial > cpython-lru_cache-weakref
view Tools/scripts/mkreal.py @ 58689:514b56efd89a 3.1
Merged revisions 77962 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
r77962 | r.david.murray | 2010-02-04 11:41:57 -0500 (Thu, 04 Feb 2010) | 17 lines
Merged revisions 77943,77959-77960 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r77943 | r.david.murray | 2010-02-03 08:36:23 -0500 (Wed, 03 Feb 2010) | 2 lines
Explicitly mention the default value for formatdate's usegmt parameter.
........
r77959 | nick.coghlan | 2010-02-04 07:43:58 -0500 (Thu, 04 Feb 2010) | 1 line
Issue 6760: Clarify args handling for subprocess.Popen. Patch by Chris Rebert
........
r77960 | r.david.murray | 2010-02-04 11:33:31 -0500 (Thu, 04 Feb 2010) | 2 lines
Add Chris Rebert to ACKS for issue 6760 Popen doc improvements.
........
................
| author | R. David Murray <rdmurray@bitdance.com> |
|---|---|
| date | Thu, 04 Feb 2010 16:44:31 +0000 |
| parents | 46625e6122e9 |
| children | fcfe324663a6 |
line wrap: on
line source
#! /usr/bin/env python # mkreal # # turn a symlink to a directory into a real directory import sys import os from stat import * join = os.path.join error = 'mkreal error' BUFSIZE = 32*1024 def mkrealfile(name): st = os.stat(name) # Get the mode mode = S_IMODE(st[ST_MODE]) linkto = os.readlink(name) # Make sure again it's a symlink f_in = open(name, 'r') # This ensures it's a file os.unlink(name) f_out = open(name, 'w') while 1: buf = f_in.read(BUFSIZE) if not buf: break f_out.write(buf) del f_out # Flush data to disk before changing mode os.chmod(name, mode) def mkrealdir(name): st = os.stat(name) # Get the mode mode = S_IMODE(st[ST_MODE]) linkto = os.readlink(name) files = os.listdir(name) os.unlink(name) os.mkdir(name, mode) os.chmod(name, mode) linkto = join(os.pardir, linkto) # for filename in files: if filename not in (os.curdir, os.pardir): os.symlink(join(linkto, filename), join(name, filename)) def main(): sys.stdout = sys.stderr progname = os.path.basename(sys.argv[0]) if progname == '-c': progname = 'mkreal' args = sys.argv[1:] if not args: print('usage:', progname, 'path ...') sys.exit(2) status = 0 for name in args: if not os.path.islink(name): print(progname+':', name+':', 'not a symlink') status = 1 else: if os.path.isdir(name): mkrealdir(name) else: mkrealfile(name) sys.exit(status) if __name__ == '__main__': main()
