From: Michael Vogt Date: Mon, 15 Oct 2007 19:28:47 +0000 (+0200) Subject: * merge from apt--mvo (fix resource leak, run apt.cron.daily only if X-Git-Tag: 0.7.24ubuntu1~120^2~26 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/312764930ff995ea9e7239b170af387f10d16a11?hp=-c * merge from apt--mvo (fix resource leak, run apt.cron.daily only if apt-get check is successfull) --- 312764930ff995ea9e7239b170af387f10d16a11 diff --combined apt-pkg/deb/dpkgpm.cc index 4323b5fd2,3235b0b06..706abcb92 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@@ -495,46 -495,6 +495,46 @@@ void pkgDPkgPM::DoDpkgStatusFd(int stat } /*}}}*/ +bool pkgDPkgPM::OpenLog() +{ + 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::Terminal")); + if (!logfile_name.empty()) + { + 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, "\nLog started: "); + fprintf(term_out, outstr); + fprintf(term_out, "\n"); + } + return true; +} + +bool pkgDPkgPM::CloseLog() +{ + if(term_out) + { + char outstr[200]; + time_t t = time(NULL); + struct tm *tmp = localtime(&t); + strftime(outstr, sizeof(outstr), "%F %T", tmp); + fprintf(term_out, "Log ended: "); + fprintf(term_out, outstr); + fprintf(term_out, "\n"); + fclose(term_out); + } + term_out = NULL; + return true; +} + // DPkgPM::Go - Run the sequence /*{{{*/ // --------------------------------------------------------------------- @@@ -611,7 -571,24 +611,7 @@@ bool pkgDPkgPM::Go(int OutStatusFd } // 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::Terminal")); - if (!logfile_name.empty()) - { - 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, "\nLog started: "); - fprintf(term_out, outstr); - fprintf(term_out, "\n"); - } + OpenLog(); // this loop is runs once per operation for (vector::iterator I = List.begin(); I != List.end();) @@@ -841,16 -818,16 +841,16 @@@ tv.tv_sec = 1; tv.tv_usec = 0; select_ret = select(max(master, _dpkgin)+1, &rfds, NULL, NULL, &tv); - if (select_ret == 0) - continue; - else if (select_ret < 0 && errno == EINTR) - continue; - else if (select_ret < 0) - { - perror("select() returned error"); - continue; - } - + if (select_ret == 0) + continue; + else if (select_ret < 0 && errno == EINTR) + continue; + else if (select_ret < 0) + { + perror("select() returned error"); + continue; + } + if(master >= 0 && FD_ISSET(master, &rfds)) DoTerminalPty(master); if(master >= 0 && FD_ISSET(0, &rfds)) @@@ -864,8 -841,11 +864,11 @@@ signal(SIGQUIT,old_SIGQUIT); signal(SIGINT,old_SIGINT); - if(master >= 0 && slave >= 0) + if(master >= 0) + { tcsetattr(0, TCSAFLUSH, &tt); + close(master); + } // Check for an error code. if (WIFEXITED(Status) == 0 || WEXITSTATUS(Status) != 0) @@@ -887,12 -867,14 +890,12 @@@ if(stopOnError) { - if(term_out) - fclose(term_out); + CloseLog(); return false; } } } - if(term_out) - fclose(term_out); + CloseLog(); if (RunScripts("DPkg::Post-Invoke") == false) return false; diff --combined debian/changelog index 98b57eb45,e1f037350..22e966f0f --- a/debian/changelog +++ b/debian/changelog @@@ -40,8 -40,8 +40,10 @@@ apt (0.7.7) UNRELEASED; urgency=lo * cmdline/apt-mark: - Fix chmoding after have renamed the extended-states file (LP: #140019) (thanks to Laurent Bigonville) + * apt-pkg/depcache.cc: + - set "APT::Install-Recommends" to true by default (OMG!) + * debian/apt.cron.daily: + - only run the cron job if apt-get check succeeds (LP: #131719) [ Program translations ] - French updated @@@ -51,8 -51,6 +53,8 @@@ - Vietnamese updated. Closes: #440611 - Danish updated. Closes: #441102 - Thai added. Closes: #442833 + - Swedish updated. + - Galician updated. Closes: #446626 [ Otavio Salvador ] * Add hash support to copy method. Thanks Anders Kaseorg by the patch @@@ -73,10 -71,6 +75,10 @@@ - cmdline/apt-extracttemplates.cc: likewise; - apt-pkg/deb/debmetaindex.cc: comparison with string literal results in unspecified behaviour; + * cmdline/apt-get.cc: adds 'autoremove' as a valid comment to usage + statement of apt-get (closes: #445468). + * cmdline/apt-get.cc: really applies Julien Danjou + patch to add 'purge' command line argument (closes: #133421). [ Ian Jackson ] * dpkg-triggers: Deal properly with new package states. @@@ -85,7 -79,7 +87,7 @@@ * apt-pkg/contrib/mmap.cc: - don't fail if msync() returns > 0 - -- Otavio Salvador Mon, 06 Aug 2007 10:44:53 -0300 + -- Otavio Salvador Sat, 06 Oct 2007 18:23:42 -0300 apt (0.7.6) unstable; urgency=low