diff options
author | Michael Vogt <mvo@ubuntu.com> | 2014-04-04 17:09:43 +0200 |
---|---|---|
committer | Michael Vogt <mvo@ubuntu.com> | 2014-04-04 17:09:43 +0200 |
commit | 53ba4e2c2dd29758be0a911489ca5c23e5107513 (patch) | |
tree | 1c01eba553ca6e2deda76be16a26a02ca6ffa4b0 /ftparchive/cachedb.cc | |
parent | 215b0faf7b00f836e54f9903c4fe7398c0927e0f (diff) |
ensure clean works
Diffstat (limited to 'ftparchive/cachedb.cc')
-rw-r--r-- | ftparchive/cachedb.cc | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc index 539ed671b..f63aa88ab 100644 --- a/ftparchive/cachedb.cc +++ b/ftparchive/cachedb.cc @@ -264,10 +264,11 @@ bool CacheDB::LoadSource() // Lookup the control information InitQuery("cs"); if (Get() == true && Dsc.TakeDsc(Data.data, Data.size) == true) + { return true; + } CurStat.Flags &= ~FlSource; } - if (OpenFile() == false) return false; @@ -551,16 +552,24 @@ bool CacheDB::Clean() { if (stringcmp(Colon + 1, (char *)Key.data+Key.size,"st") == 0 || stringcmp(Colon + 1, (char *)Key.data+Key.size,"cl") == 0 || + stringcmp(Colon + 1, (char *)Key.data+Key.size,"cs") == 0 || stringcmp(Colon + 1, (char *)Key.data+Key.size,"cn") == 0) { - if (FileExists(std::string((const char *)Key.data,Colon)) == true) - continue; + std::string FileName = std::string((const char *)Key.data,Colon); + if (FileExists(FileName) == true) { + continue; + } } } - Cursor->c_del(Cursor,0); } - Dbp->compact(Dbp, NULL, NULL, NULL, NULL, DB_FREE_SPACE, NULL); + int res = Dbp->compact(Dbp, NULL, NULL, NULL, NULL, DB_FREE_SPACE, NULL); + if (res < 0) + _error->Warning("compact failed with result %i", res); + + if(_config->FindB("Debug::APT::FTPArchive::Clean", false) == true) + Dbp->stat_print(Dbp, 0); + return true; } |