From: Antoine Pitrou Date: Mon, 22 Mar 2010 19:59:46 +0000 (+0000) Subject: Issue #7512: shutil.copystat() could raise an OSError when the filesystem X-Git-Tag: v2.7b1~248 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=513d9aeadb09b460e968054c7ed78c385835dcd4;p=thirdparty%2FPython%2Fcpython.git Issue #7512: shutil.copystat() could raise an OSError when the filesystem didn't support chflags() (for example ZFS under FreeBSD). The error is now silenced. --- diff --git a/Lib/shutil.py b/Lib/shutil.py index df571e71ad95..0dfc7c7fe090 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -11,6 +11,7 @@ from os.path import abspath import fnmatch from warnings import warn import collections +import errno try: from pwd import getpwnam @@ -105,8 +106,11 @@ def copystat(src, dst): if hasattr(os, 'chmod'): os.chmod(dst, mode) if hasattr(os, 'chflags') and hasattr(st, 'st_flags'): - os.chflags(dst, st.st_flags) - + try: + os.chflags(dst, st.st_flags) + except OSError, why: + if not hasattr(errno, 'EOPNOTSUPP') or why.errno != errno.EOPNOTSUPP: + raise def copy(src, dst): """Copy data and mode bits ("cp src dst"). diff --git a/Misc/NEWS b/Misc/NEWS index 1824f5f84834..f207082978bb 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -29,6 +29,10 @@ Core and Builtins Library ------- +- Issue #7512: shutil.copystat() could raise an OSError when the filesystem + didn't support chflags() (for example ZFS under FreeBSD). The error is + now silenced. + - Issue #7703: ctypes supports both buffer() and memoryview(). The former is deprecated.