// ---------------------------------------------------------------------
/* */
pkgDPkgPM::pkgDPkgPM(pkgDepCache *Cache)
- : pkgPackageManager(Cache), dpkgbuf_pos(0), PackagesTotal(0), PackagesDone(0)
+ : pkgPackageManager(Cache), dpkgbuf_pos(0), PackagesDone(0),
+ PackagesTotal(0), term_out(NULL)
{
}
/*}}}*/
/*
* read the terminal pty and write log
*/
-void pkgDPkgPM::DoTerminalPty(int master, FILE *term_out)
+void pkgDPkgPM::DoTerminalPty(int master)
{
char term_buf[1024] = {0,};
return _error->Error(_("Directory '%s' missing"), logdir.c_str());
string logfile_name = flCombine(logdir,
_config->Find("Dir::Log::Terminal"));
- FILE *term_out = NULL;
if (!logfile_name.empty())
{
term_out = fopen(logfile_name.c_str(),"a");
int _dpkgin = fd[0];
close(fd[1]); // close the write end of the pipe
- // the read buffers for the communication with dpkg
- char buf[2] = {0,0};
-
// the result of the waitpid call
int res;
if(slave > 0)
tv.tv_sec = 1;
tv.tv_usec = 0;
select_ret = select(max(master, _dpkgin)+1, &rfds, NULL, NULL, &tv);
- if (select_ret < 0)
+ if (select_ret < 0) {
std::cerr << "Error in select()" << std::endl;
- else if (select_ret == 0)
+ continue;
+ } else if (select_ret == 0)
continue;
if(master >= 0 && FD_ISSET(master, &rfds))
- DoTerminalPty(master, term_out);
+ DoTerminalPty(master);
if(master >= 0 && FD_ISSET(0, &rfds))
DoStdin(master);
if(FD_ISSET(_dpkgin, &rfds))