value = buf.getstring()
return key, value
def __getitem__(me, key):
- return me.unpack(me.db[me.keyxform(key)])[1]
+ try:
+ return me.unpack(me.db[me.keyxform(key)])[1]
+ except KeyError:
+ raise KeyError, key
def __setitem__(me, key, value):
me.db[me.keyxform(key)] = me.pack(key, value)
def __delitem__(me, key):
- del me.db[me.keyxform(key)]
+ try:
+ del me.db[me.keyxform(key)]
+ except KeyError:
+ raise KeyError, key
def __iter__(me):
return PWIter(me)
from sys import argv, exit, stdin, stdout, stderr
from getopt import getopt, GetoptError
from fnmatch import fnmatch
+import sre as re
+
+prog = re.sub(r'^.*[/\\]', '', argv[0])
+def moan(msg):
+ print >>stderr, '%s: %s' % (prog, msg)
+def die(msg):
+ moan(msg)
+ exit(1)
if 'PWSAFE' in environ:
file = environ['PWSAFE']
if len(av) != 1:
return 1
pw = PW(file)
- print pw[av[0]]
+ try:
+ print pw[av[0]]
+ except KeyError, exc:
+ die('Password `%s\' not found.' % exc.args[0])
def cmd_store(av):
if len(av) < 1 or len(av) > 2:
return 1
pw = PW(file, 'w')
tag = av[0]
- del pw[tag]
+ try:
+ del pw[tag]
+ except KeyError, exc:
+ die('Password `%s\' not found.' % exc.args[0])
def asciip(s):
for ch in s:
'dump' : [cmd_dump, '']}
def version():
- print 'pwsafe 1.0.0'
+ print '%s 1.0.0' % prog
def usage(fp):
- print >>fp, 'Usage: pwsafe COMMAND [ARGS...]'
+ print >>fp, 'Usage: %s COMMAND [ARGS...]' % prog
def help():
version()
print
-v, --version Show program version number.
-u, --usage Show short usage message.
+-f, --file=FILE Where to find the password-safe file.
+
Commands provided:
'''
for c in commands:
else:
c = 'find'
if commands[c][0](argv):
- print >>stderr, 'Usage: pwsafe %s %s' % (c, commands[c][1])
+ print >>stderr, 'Usage: %s %s %s' % (prog, c, commands[c][1])
exit(1)