// ---------------------------------------------------------------------
/* */
pkgDPkgPM::pkgDPkgPM(pkgDepCache *Cache)
- : pkgPackageManager(Cache), dpkgbuf_pos(0), Total(0), Done(0)
+ : pkgPackageManager(Cache), dpkgbuf_pos(0), PackagesTotal(0), PackagesDone(0)
{
}
/*}}}*/
if(strncmp(action,"error",strlen("error")) == 0)
{
status << "pmerror:" << list[1]
- << ":" << (Done/float(Total)*100.0)
+ << ":" << (PackagesDone/float(PackagesTotal)*100.0)
<< ":" << list[3]
<< endl;
if(OutStatusFd > 0)
if(strncmp(action,"conffile",strlen("conffile")) == 0)
{
status << "pmconffile:" << list[1]
- << ":" << (Done/float(Total)*100.0)
+ << ":" << (PackagesDone/float(PackagesTotal)*100.0)
<< ":" << list[3]
<< endl;
if(OutStatusFd > 0)
// we moved from one dpkg state to a new one, report that
PackageOpsDone[pkg]++;
- Done++;
+ PackagesDone++;
// build the status str
status << "pmstatus:" << pkg
- << ":" << (Done/float(Total)*100.0)
+ << ":" << (PackagesDone/float(PackagesTotal)*100.0)
<< ":" << s
<< endl;
if(OutStatusFd > 0)
for(int i=0; (DpkgStatesOpMap[(*I).Op][i]).state != NULL; i++)
{
PackageOps[name].push_back(DpkgStatesOpMap[(*I).Op][i]);
- Total++;
+ PackagesTotal++;
}
}
+ // create log
+ string logdir = _config->FindDir("Dir::Log");
+ if(not FileExists(logdir))
+ return _error->Error(_("Directory '%s' missing"), logdir.c_str());
+ string logfile_name = flCombine(logdir,
+ _config->Find("Dir::Log::Name"));
+ FILE *term_out = fopen(logfile_name.c_str(),"a");
+ chmod(logfile_name.c_str(), 0600);
+ // output current time
+ char outstr[200];
+ time_t t = time(NULL);
+ struct tm *tmp = localtime(&t);
+ strftime(outstr, sizeof(outstr), "%F %T", tmp);
+ fprintf(term_out, "Log started: ");
+ fprintf(term_out, outstr);
+ fprintf(term_out, "\n");
+
// this loop is runs once per operation
for (vector<Item>::iterator I = List.begin(); I != List.end();)
{
int res;
close(slave);
- // FIXME: make this a apt config option and add a logrotate file
- FILE *term_out = fopen("/var/log/dpkg-out.log","a");
- chmod("/var/log/dpkg-out.log", 0600);
- // output current time
- char outstr[200];
- time_t t = time(NULL);
- struct tm *tmp = localtime(&t);
- strftime(outstr, sizeof(outstr), "%F %T", tmp);
- fprintf(term_out, "Log started: ");
- fprintf(term_out, outstr);
- fprintf(term_out, "\n");
-
// setups fds
fd_set rfds;
struct timeval tv;
DoDpkgStatusFd(_dpkgin, OutStatusFd);
}
close(_dpkgin);
- fclose(term_out);
// Restore sig int/quit
signal(SIGQUIT,old_SIGQUIT);
else
_error->Error("Sub-process %s exited unexpectedly",Args[0]);
- if(stopOnError)
+ if(stopOnError)
+ {
+ fclose(term_out);
return false;
+ }
}
}
+ fclose(term_out);
if (RunScripts("DPkg::Post-Invoke") == false)
return false;