X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2Fcopytree.py;h=884e81e16861275cba3051e469c8658075ec45ea;hb=57dfb183e24175bc782647d4e6aebe31063f3881;hp=99b2e9245b861e1b8a93060d90faea7659343617;hpb=77c620d8dae4420b4e47564c2977837b7961be31;p=bertos.git diff --git a/wizard/copytree.py b/wizard/copytree.py index 99b2e924..884e81e1 100644 --- a/wizard/copytree.py +++ b/wizard/copytree.py @@ -28,7 +28,6 @@ # # Copyright 2008 Develer S.r.l. (http://www.develer.com/) # -# $Id$ # # Author: Lorenzo Berni # @@ -40,48 +39,45 @@ from shutil import * del copytree -if sys.version_info < (2, 6, 0): - def copytree(src, dst, symlinks=False, ignore_list=[]): - """ - Reimplementation of the shutil.copytree function that use ignore_list. - ignore_list is a list containing patterns to ignore during the copy. - """ - names = os.listdir(src) - os.makedirs(dst) - errors = [] - for name in names: - srcname = os.path.join(src, name) - dstname = os.path.join(dst, name) - try: - ignored = False - for ignore in ignore_list: - if fnmatch.fnmatch(name, ignore): - ignored = True - break - if ignored: - continue - if symlinks and os.path.islink(srcname): - linkto = os.readlink(srcname) - os.symlink(linkto, dstname) - elif os.path.isdir(srcname): - copytree(srcname, dstname, symlinks, ignore_list) - else: - copy2(srcname, dstname) - # XXX What about devices, sockets etc.? - except (IOError, os.error), why: - errors.append((srcname, dstname, str(why))) - # catch the Error from the recursive copytree so that we can - # continue with other files - except Error, err: - errors.extend(err.args[0]) +def copytree(src, dst, symlinks=False, ignore_list=[]): + """ + Reimplementation of the shutil.copytree function that use ignore_list. + ignore_list is a list containing patterns to ignore during the copy. + """ + names = os.listdir(src) + os.makedirs(dst) + errors = [] + for name in names: + srcname = os.path.join(src, name) + dstname = os.path.join(dst, name) try: - copystat(src, dst) - except WindowsError: - # can't copy file access times on Windows - pass - except OSError, why: - errors.extend((src, dst, str(why))) - if errors: - raise Error, errors -else: - from shutil import copytree + ignored = False + for ignore in ignore_list: + if fnmatch.fnmatch(name, ignore): + ignored = True + break + if ignored: + continue + if symlinks and os.path.islink(srcname): + linkto = os.readlink(srcname) + os.symlink(linkto, dstname) + elif os.path.isdir(srcname): + copytree(srcname, dstname, symlinks, ignore_list) + else: + copy2(srcname, dstname) + # XXX What about devices, sockets etc.? + except (IOError, os.error), why: + errors.append((srcname, dstname, str(why))) + # catch the Error from the recursive copytree so that we can + # continue with other files + except Error, err: + errors.extend(err.args[0]) + try: + copystat(src, dst) + except WindowsError: + # can't copy file access times on Windows + pass + except OSError, why: + errors.extend((src, dst, str(why))) + if errors: + raise Error, errors