#include <apt-pkg/init.h>
#include <apt-pkg/fileutl.h>
#include <apt-pkg/error.h>
-#include <apt-pkg/acquire-method.h>
#include <apt-pkg/strutl.h>
#include <apt-pkg/hashes.h>
#include <apt-pkg/configuration.h>
for (ch = filechanges.rbegin(); ch != filechanges.rend(); ++ch) {
std::list<struct Change>::reverse_iterator mg_i, mg_e = ch;
while (ch->del_cnt == 0 && ch->offset == 0)
+ {
++ch;
+ if (unlikely(ch == filechanges.rend()))
+ return;
+ }
line -= ch->del_cnt;
std::string buf;
if (ch->add_cnt > 0) {
out.Close();
inp.Close();
+ if (_error->PendingError() == true) {
+ std::cerr << "FAILED to read or write files" << std::endl;
+ return false;
+ }
+
if (Debug == true) {
std::clog << "rred: finished file patching of " << Path << "." << std::endl;
}
struct stat bufbase, bufpatch;
if (stat(Path.c_str(), &bufbase) != 0 ||
stat(patch_name.c_str(), &bufpatch) != 0)
- return _error->Errno("stat", _("Failed to stat"));
+ return _error->Errno("stat", _("Failed to stat %s"), Path.c_str());
struct timeval times[2];
times[0].tv_sec = bufbase.st_atime;
return _error->Errno("utimes",_("Failed to set modification time"));
if (stat(Itm->DestFile.c_str(), &bufbase) != 0)
- return _error->Errno("stat", _("Failed to stat"));
+ return _error->Errno("stat", _("Failed to stat %s"), Itm->DestFile.c_str());
Res.LastModified = bufbase.st_mtime;
Res.Size = bufbase.st_size;
}
public:
- RredMethod() : aptMethod("rred", "2.0",SingleInstance | SendConfig), Debug(false) {}
+ RredMethod() : aptMethod("rred", "2.0", SendConfig), Debug(false) {}
};
int main(int argc, char **argv)
Patch patch;
if (argc <= 1) {
- RredMethod Mth;
- return Mth.Run();
+ return RredMethod().Run();
}
// Usage: rred -t input output diff ...