From: Antoine Pitrou Date: Mon, 22 Mar 2010 20:03:59 +0000 (+0000) Subject: Merged revisions 79299 via svnmerge from X-Git-Tag: v2.6.6rc1~555 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ab5a9997e0b83ee808ac0a83b846676ce91045ba;p=python Merged revisions 79299 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r79299 | antoine.pitrou | 2010-03-22 20:59:46 +0100 (lun., 22 mars 2010) | 5 lines 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 cfb6646ad6..4b62cbb637 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -9,6 +9,7 @@ import sys import stat from os.path import abspath import fnmatch +import errno __all__ = ["copyfileobj","copyfile","copymode","copystat","copy","copy2", "copytree","move","rmtree","Error"] @@ -74,8 +75,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 7fcbc17ea3..e1411df41f 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -23,6 +23,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 #3890: Fix recv() and recv_into() on non-blocking SSL sockets. - Issue #6544: fix a reference leak in the kqueue implementation's error