summaryrefslogtreecommitdiff
path: root/Lib/distutils/util.py
diff options
context:
space:
mode:
authorGreg Ward <gward@python.net>2000-06-17 02:16:46 +0000
committerGreg Ward <gward@python.net>2000-06-17 02:16:46 +0000
commit4363ef7edaaa42fe86177932df9ec293f3aea42f (patch)
tree2106411260285e6637a14d60dfd8a687aa07d6a2 /Lib/distutils/util.py
parent1f56823fd833fc32eabbe3dce568936d55498707 (diff)
downloadcpython-4363ef7edaaa42fe86177932df9ec293f3aea42f.tar.gz
Added 'grok_environment_error()' function to deal with the various
forms that IOError and OSError can take (taken from core.py).
Diffstat (limited to 'Lib/distutils/util.py')
-rw-r--r--Lib/distutils/util.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py
index 575463843b..279f246726 100644
--- a/Lib/distutils/util.py
+++ b/Lib/distutils/util.py
@@ -154,3 +154,23 @@ def subst_vars (str, local_vars):
# subst_vars ()
+def grok_environment_error (exc, prefix="error: "):
+ """Generate a useful error message from an EnvironmentError (IOError or
+ OSError) exception object. Handles Python 1.5.1 and 1.5.2 styles, and
+ does what it can to deal with exception objects that don't have a
+ filename (which happens when the error is due to a two-file operation,
+ such as 'rename()' or 'link()'. Returns the error message as a string
+ prefixed with 'prefix'.
+ """
+ # check for Python 1.5.2-style {IO,OS}Error exception objects
+ if hasattr (exc, 'filename') and hasattr (exc, 'strerror'):
+ if exc.filename:
+ error = prefix + "%s: %s" % (exc.filename, exc.strerror)
+ else:
+ # two-argument functions in posix module don't
+ # include the filename in the exception object!
+ error = prefix + "%s" % exc.strerror
+ else:
+ error = prefix + str(exc[-1])
+
+ return error