diff options
author | Michael Vogt <mvo@ubuntu.com> | 2014-06-04 12:39:36 +0200 |
---|---|---|
committer | Michael Vogt <mvo@ubuntu.com> | 2014-06-04 13:19:08 +0200 |
commit | 243b2a381f4a12939d91084ecf100ee6d3dcb007 (patch) | |
tree | a0915577272a3422a6aeeef40b78ce92cf1b193a /ftparchive/cachedb.h | |
parent | b29599105ed9a5bb38b55cb066ef81256d66be41 (diff) |
Add compat mode for old (32bit FileSize) CacheDB (LP: #1274466)
Diffstat (limited to 'ftparchive/cachedb.h')
-rw-r--r-- | ftparchive/cachedb.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/ftparchive/cachedb.h b/ftparchive/cachedb.h index edb8594bf..29d710d2c 100644 --- a/ftparchive/cachedb.h +++ b/ftparchive/cachedb.h @@ -85,8 +85,12 @@ class CacheDB bool OpenDebFile(); void CloseDebFile(); - bool GetFileStat(bool const &doStat = false); + // GetCurStat needs some compat code, see lp #1274466) + bool GetCurStatCompatOldFormat(); + bool GetCurStatCompatNewFormat(); bool GetCurStat(); + + bool GetFileStat(bool const &doStat = false); bool LoadControl(); bool LoadContents(bool const &GenOnly); bool LoadSource(); @@ -101,6 +105,20 @@ class CacheDB FlSHA512=(1<<6), FlSource=(1<<7), }; + // the on-disk format changed (FileSize increased to 64bit) in + // commit 650faab0 which will lead to corruption with old caches + struct StatStoreOldFormat + { + uint32_t Flags; + uint32_t mtime; + uint32_t FileSize; + uint8_t MD5[16]; + uint8_t SHA1[20]; + uint8_t SHA256[32]; + } CurStatOldFormat; + + // WARNING: this struct is read/written to the DB so do not change the + // layout of the fields (see lp #1274466), only append to it struct StatStore { uint32_t Flags; |