import catacomb as _C
###--------------------------------------------------------------------------
+### Python version portability.
+
+def _excval(): return _SYS.exc_info()[1]
+
+###--------------------------------------------------------------------------
### Text encoding utilities.
def _literalp(s):
def _open(me, file, writep):
try: me._db = _G.open(file, writep and 'w' or 'r')
- except _G.error, e: raise StorageBackendRefusal(e)
+ except _G.error: raise StorageBackendRefusal(_excval())
def _create(me, file):
me._db = _G.open(file, 'n', 0600)
ver = me._query_scalar(
"SELECT value FROM meta WHERE name = '$version'",
"version check")
- except (_Q.DatabaseError, _Q.OperationalError), e:
- raise StorageBackendRefusal(e)
+ except (_Q.DatabaseError, _Q.OperationalError):
+ raise StorageBackendRefusal(_excval())
if ver is None: raise ValueError('database broken (missing $version)')
elif ver < me.VERSION: me._upgrade(ver)
elif ver > me.VERSION: raise ValueError \
def _get_passwd(me, label):
try:
f = open(me._pwfile(label), 'rb')
- except (OSError, IOError), e:
- if e.errno == _E.ENOENT: raise KeyError(label)
+ except (OSError, IOError):
+ if _excval().errno == _E.ENOENT: raise KeyError(label)
else: raise
with f: return f.read()
def _put_passwd(me, label, payload):
def _del_passwd(me, label):
try:
_OS.remove(me._pwfile(label))
- except (OSError, IOError), e:
- if e.errno == _E.ENOENT: raise KeyError(label)
+ except (OSError, IOError):
+ if _excval().errno == _E.ENOENT: raise KeyError(label)
else: raise
def _iter_passwds(me):
pw = _OS.path.join(me._dir, 'pw')
###--------------------------------------------------------------------------
### Utilities.
+def _excval():
+ """Return the most recent exception object."""
+ return SYS.exc_info()[1]
+
class ExpectedError (Exception):
"""
I represent an expected error, which should be reported in a friendly way.
if step is not None:
me.addstep(step)
lastp = step.p
- except ExpectedError, e:
- raise ExpectedError('%s:%d: %s' % (file.name, lno, e.message))
+ except ExpectedError:
+ raise ExpectedError('%s:%d: %s' %
+ (file.name, lno, _excval().message))
return lastp
###--------------------------------------------------------------------------
if __name__ == '__main__':
prog = OS.path.basename(argv[0])
try: __main__()
- except ExpectedError, e: exit('%s: %s' % (prog, e.message))
- except IOError, e: exit('%s: %s' % (prog, e))
+ except ExpectedError: exit('%s: %s' % (prog, _excval().message))
+ except IOError: exit('%s: %s' % (prog, _excval()))
###----- That's all, folks --------------------------------------------------
from catacomb.pwsafe import *
###--------------------------------------------------------------------------
+### Python version portability.
+
+def _excval(): return SYS.exc_info()[1]
+
+###--------------------------------------------------------------------------
### Utilities.
## The program name.
if len(av) != 1: return 1
with PW(file) as pw:
try: print pw[av[0]]
- except KeyError, exc: die("Password `%s' not found" % exc.args[0])
+ except KeyError: die("Password `%s' not found" % _excval().args[0])
def cmd_store(av):
if len(av) < 1 or len(av) > 2: return 1
with PW(file, writep = True) as pw:
tag = av[0]
try: del pw[tag]
- except KeyError, exc: die("Password `%s' not found" % exc.args[0])
+ except KeyError: die("Password `%s' not found" % _excval().args[0])
def cmd_xfer(av):