From 053c2659b82af978e28dfb18a9bcdcfc317a01f3 Mon Sep 17 00:00:00 2001 Message-Id: <053c2659b82af978e28dfb18a9bcdcfc317a01f3.1716296741.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sun, 24 May 2015 19:26:36 +0100 Subject: [PATCH] catacomb/pwsafe.py: Add a new ABRUPTP argument to `close' methods. Organization: Straylight/Edgeware From: Mark Wooding New backends might want to commit changes at close time, and an abrupt close shouldn't do that. --- catacomb/pwsafe.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/catacomb/pwsafe.py b/catacomb/pwsafe.py index 44382e7..8b68182 100644 --- a/catacomb/pwsafe.py +++ b/catacomb/pwsafe.py @@ -177,7 +177,8 @@ class StorageBackend (object): BE._open(FILE, WRITEP) Open the existing database FILE; used by `open'. - BE._close() Close the database, freeing up any resources. + BE._close(ABRUPTP) Close the database, freeing up any resources. If + ABRUPTP then don't try to commit changes. BE._get_meta(NAME, DEFAULT) Return the value of the metadata item with the given @@ -283,7 +284,7 @@ class StorageBackend (object): me._writep = writep me._livep = True - def close(me): + def close(me, abruptp = False): """ Close the database. @@ -292,7 +293,7 @@ class StorageBackend (object): """ if me._livep: me._livep = False - me._close() + me._close(abruptp) ## Utilities. @@ -322,7 +323,7 @@ class StorageBackend (object): return me def __exit__(me, exctype, excvalue, exctb): """Context protocol: see `__enter__'.""" - me.close() + me.close(excvalue is not None) ## Metadata. @@ -440,7 +441,7 @@ class GDBMStorageBackend (StorageBackend): def _create(me, file): me._db = _G.open(file, 'n', 0600) - def _close(me): + def _close(me, abruptp): me._db.close() me._db = None @@ -639,6 +640,6 @@ class PW (object): def __enter__(me): return me def __exit__(me, excty, excval, exctb): - me.db.close() + me.db.close(excval is not None) ###----- That's all, folks -------------------------------------------------- -- [mdw]