# HG changeset patch # User Bryan O'Sullivan # Date 1238098428 25200 # Node ID 91f1fe78454c9e8c661eba652e974d48f86f2ad3 # Parent aa25be1c2889e1411c58b7f0ec8b31237dbc3f5b win32: allow catching of both pywintypes.error and WindowsError diff -r aa25be1c2889 -r 91f1fe78454c mercurial/win32.py --- a/mercurial/win32.py Thu Mar 26 13:12:11 2009 -0700 +++ b/mercurial/win32.py Thu Mar 26 13:13:48 2009 -0700 @@ -131,9 +131,15 @@ } def __init__(self, err): - self.win_errno, self.win_function, self.win_strerror = err - if self.win_strerror.endswith('.'): - self.win_strerror = self.win_strerror[:-1] + try: + # unpack a pywintypes.error tuple + self.win_errno, self.win_function, self.win_strerror = err + except ValueError: + # get attributes from a WindowsError + self.win_errno = err.winerror + self.win_function = None + self.win_strerror = err.strerror + self.win_strerror = self.win_strerror.rstrip('.') class WinIOError(WinError, IOError): def __init__(self, err, filename=None):