[Python-checkins] python/dist/src/Mac/Lib macostools.py,1.15,1.16

jackjansen@users.sourceforge.net jackjansen@users.sourceforge.net
Mon, 05 Aug 2002 14:53:59 -0700


Update of /cvsroot/python/python/dist/src/Mac/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv4842

Modified Files:
	macostools.py 
Log Message:
In copy() don't try to obtain an FSSpec until we know the destination
exists. Partial fix for #585923.


Index: macostools.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/Lib/macostools.py,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** macostools.py	3 Aug 2002 20:49:10 -0000	1.15
--- macostools.py	5 Aug 2002 21:53:57 -0000	1.16
***************
*** 28,31 ****
--- 28,33 ----
  	"""Create a finder alias"""
  	srcfss = macfs.FSSpec(src)
+ 	# The next line will fail under unix-Python if the destination
+ 	# doesn't exist yet. We should change this code to be fsref-based.
  	dstfss = macfs.FSSpec(dst)
  	if relative:
***************
*** 83,93 ****
  def copy(src, dst, createpath=0, copydates=1, forcetype=None):
  	"""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 = open(srcfss.as_pathname(), 'rb')
! 	ofp = open(dstfss.as_pathname(), 'wb')
  	d = ifp.read(BUFSIZ)
  	while d:
--- 85,97 ----
  def copy(src, dst, createpath=0, copydates=1, forcetype=None):
  	"""Copy a file, including finder info, resource fork, etc"""
+ 	if hasattr(src, 'as_pathname'):
+ 		src = src.as_pathname()
+ 	if hasattr(dst, 'as_pathname'):
+ 		dst = dst.as_pathname()
  	if createpath:
  		mkdirs(os.path.split(dst)[0])
  	
! 	ifp = open(src, 'rb')
! 	ofp = open(dst, 'wb')
  	d = ifp.read(BUFSIZ)
  	while d:
***************
*** 97,102 ****
  	ofp.close()
  	
! 	ifp = openrf(srcfss.as_pathname(), '*rb')
! 	ofp = openrf(dstfss.as_pathname(), '*wb')
  	d = ifp.read(BUFSIZ)
  	while d:
--- 101,106 ----
  	ofp.close()
  	
! 	ifp = openrf(src, '*rb')
! 	ofp = openrf(dst, '*wb')
  	d = ifp.read(BUFSIZ)
  	while d:
***************
*** 106,109 ****
--- 110,115 ----
  	ofp.close()
  	
+ 	srcfss = macfs.FSSpec(src)
+ 	dstfss = macfs.FSSpec(dst)
  	sf = srcfss.GetFInfo()
  	df = dstfss.GetFInfo()