summaryrefslogtreecommitdiffstats
path: root/Mac/Lib/macostools.py
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>1995-08-31 13:40:03 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>1995-08-31 13:40:03 (GMT)
commit423c798b3c769c901e8a342a5a85e4612277912a (patch)
tree9513be4945e8c32e3f798c83ec51b7bb4c2dbd3e /Mac/Lib/macostools.py
parentf5101ee5dc74a6f774642217459b062fe295e2c6 (diff)
downloadcpython-423c798b3c769c901e8a342a5a85e4612277912a.zip
cpython-423c798b3c769c901e8a342a5a85e4612277912a.tar.gz
cpython-423c798b3c769c901e8a342a5a85e4612277912a.tar.bz2
copy() can now create destination path
Diffstat (limited to 'Mac/Lib/macostools.py')
-rw-r--r--Mac/Lib/macostools.py31
1 files changed, 21 insertions, 10 deletions
diff --git a/Mac/Lib/macostools.py b/Mac/Lib/macostools.py
index 309f960..87eff6e 100644
--- a/Mac/Lib/macostools.py
+++ b/Mac/Lib/macostools.py
@@ -35,13 +35,27 @@ def mkalias(src, dst):
dstfinfo.Flags = dstfinfo.Flags|0x8000 # Alias flag
dstfss.SetFInfo(dstfinfo)
-def copy(src, dst):
+def mkdirs(dst):
+ """Make directories leading to 'dst' if they don't exist yet"""
+ if dst == '' or os.path.exists(dst):
+ return
+ head, tail = os.path.split(dst)
+ print 'XX', dst, '->', (head, tail)
+ # XXXX Is this a bug in os.path.split?
+ if not ':' in head:
+ head = head + ':'
+ mkdirs(head)
+ os.mkdir(dst, 0777)
+
+def copy(src, dst, createpath=0):
"""Copy a file, including finder info, resource fork, etc"""
+ if createpath:
+ mkdirs(os.path.split(dst)[0])
srcfss = macfs.FSSpec(src)
dstfss = macfs.FSSpec(dst)
- ifp = fopen(srcfss.as_pathname(), 'rb')
- ofp = fopen(dstfss.as_pathname(), 'wb')
+ ifp = open(srcfss.as_pathname(), 'rb')
+ ofp = open(dstfss.as_pathname(), 'wb')
d = ifp.read(BUFSIZ)
while d:
ofp.write(d)
@@ -49,8 +63,8 @@ def copy(src, dst):
ifp.close()
ofp.close()
- ifp = fopen(srcfss.as_pathname(), '*rb')
- ofp = fopen(dstfss.as_pathname(), '*wb')
+ ifp = open(srcfss.as_pathname(), '*rb')
+ ofp = open(dstfss.as_pathname(), '*wb')
d = ifp.read(BUFSIZ)
while d:
ofp.write(d)
@@ -66,12 +80,9 @@ def copy(src, dst):
def copytree(src, dst):
"""Copy a complete file tree to a new destination"""
if os.path.isdir(src):
- if not os.path.exists(dst):
- os.mkdir(dst)
- elif not os.path.isdir(dst):
- raise Error, 'Not a directory: '+dst
+ mkdirs(dst)
files = os.listdir(src)
for f in files:
copytree(os.path.join(src, f), os.path.join(dst, f))
else:
- copy(src, dst)
+ copy(src, dst, 1)