+
+from __future__ import absolute_import
import cPickle, errno, os, tempfile
+from bup import compat
+
class Error(Exception):
pass
f = None
try:
f = open(filename, 'r')
- except IOError, e:
+ except IOError as e:
if e.errno == errno.ENOENT:
pass
else:
f.close()
f = None
# Set up the reverse hard link index.
- for node, paths in self._node_paths.iteritems():
+ for node, paths in compat.items(self._node_paths):
for path in paths:
self._path_node[path] = node
(dir, name) = os.path.split(self._filename)
(ffd, self._tmpname) = tempfile.mkstemp('.tmp', name, dir)
try:
- f = os.fdopen(ffd, 'wb', 65536)
- except:
- os.close(ffd)
- raise
- try:
- cPickle.dump(self._node_paths, f, 2)
+ try:
+ f = os.fdopen(ffd, 'wb', 65536)
+ except:
+ os.close(ffd)
+ raise
+ try:
+ cPickle.dump(self._node_paths, f, 2)
+ finally:
+ f.close()
+ f = None
except:
- f.close()
- os.unlink(self._tmpname)
+ tmpname = self._tmpname
self._tmpname = None
+ os.unlink(tmpname)
raise
- else:
- f.close()
- f = None
self._save_prepared = True
def commit_save(self):
else: # No data -- delete _filename if it exists.
try:
os.unlink(self._filename)
- except OSError, e:
+ except OSError as e:
if e.errno == errno.ENOENT:
pass
else: