self._cache_data = mypickle.load()
f.close()
del f
- except (AttributeError, EnvironmentError, ValueError, pickle.UnpicklingError) as e:
+ except (AttributeError, EOFError, EnvironmentError, ValueError, pickle.UnpicklingError) as e:
if isinstance(e, EnvironmentError) and \
getattr(e, 'errno', None) in (errno.ENOENT, errno.EACCES):
pass
aux_cache = mypickle.load()
f.close()
del f
- except (AttributeError, EnvironmentError, ValueError, pickle.UnpicklingError) as e:
+ except (AttributeError, EOFError, EnvironmentError, ValueError, pickle.UnpicklingError) as e:
if isinstance(e, EnvironmentError) and \
getattr(e, 'errno', None) in (errno.ENOENT, errno.EACCES):
pass
out.write(_("Loaded metadata pickle.\n"))
out.flush()
metadatafile.close()
- except (AttributeError, EnvironmentError, ValueError, pickle.UnpicklingError):
+ except (AttributeError, EOFError, EnvironmentError, ValueError, pickle.UnpicklingError):
metadata = {}
if baseurl not in metadata:
metadata[baseurl]={}
try:
f = open(_unicode_encode(self._filename,
encoding=_encodings['fs'], errors='strict'), 'rb')
- self._data = pickle.load(f)
- except (AttributeError, ValueError, pickle.UnpicklingError) as e:
+ if os.fstat(f.fileno()).st_size == 0:
+ # ignore empty lock file
+ pass
+ else:
+ self._data = pickle.load(f)
+ except (AttributeError, EOFError, ValueError, pickle.UnpicklingError) as e:
writemsg_level(_("!!! Error loading '%s': %s\n") % \
(self._filename, e), level=logging.ERROR, noiselevel=-1)
- except (EOFError, IOError) as e:
- if isinstance(e, EOFError) or e.errno == errno.ENOENT:
+ except EnvironmentError as e:
+ if not hasattr(e, 'errno'):
+ raise
+ elif e.errno == errno.ENOENT:
pass
elif e.errno == PermissionDenied.errno:
raise PermissionDenied(self._filename)
d = mypickle.load()
f.close()
del f
- except (AttributeError, EnvironmentError, ValueError, pickle.UnpicklingError) as e:
+ except (AttributeError, EOFError, EnvironmentError, ValueError, pickle.UnpicklingError) as e:
if isinstance(e, EnvironmentError) and \
getattr(e, 'errno', None) in (errno.ENOENT, errno.EACCES):
pass