// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: acqprogress.cc,v 1.1 1998/11/11 23:45:52 jgg Exp $
+// $Id: acqprogress.cc,v 1.2 1998/11/12 05:30:07 jgg Exp $
/* ######################################################################
Acquire Progress - Command line progress meter
// AcqTextStatus::AcqTextStatus - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
-AcqTextStatus::AcqTextStatus(unsigned int ScreenWidth,unsigned int Quiet) :
+AcqTextStatus::AcqTextStatus(unsigned int &ScreenWidth,unsigned int Quiet) :
ScreenWidth(ScreenWidth), Quiet(Quiet)
{
}
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: acqprogress.h,v 1.1 1998/11/11 23:45:55 jgg Exp $
+// $Id: acqprogress.h,v 1.2 1998/11/12 05:30:09 jgg Exp $
/* ######################################################################
Acquire Progress - Command line progress meter
class AcqTextStatus : public pkgAcquireStatus
{
- unsigned int ScreenWidth;
+ unsigned int &ScreenWidth;
char BlankLine[300];
unsigned long ID;
unsigned long Quiet;
void Pulse(pkgAcquire *Owner);
- AcqTextStatus(unsigned int ScreenWidth,unsigned int Quiet);
+ AcqTextStatus(unsigned int &ScreenWidth,unsigned int Quiet);
};
#endif
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: apt-get.cc,v 1.7 1998/11/12 04:10:56 jgg Exp $
+// $Id: apt-get.cc,v 1.8 1998/11/12 05:30:10 jgg Exp $
/* ######################################################################
apt-get - Cover for dpkg
#include "acqprogress.h"
#include <fstream.h>
+#include <termios.h>
+#include <sys/ioctl.h>
+#include <signal.h>
/*}}}*/
ostream c0out;
_config->Set("APT::Get::Fix-Broken",false);
}
/*}}}*/
+// SigWinch - Window size change signal handler /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void SigWinch(int)
+{
+ // Riped from GNU ls
+#ifdef TIOCGWINSZ
+ struct winsize ws;
+
+ if (ioctl(1, TIOCGWINSZ, &ws) != -1 && ws.ws_col >= 5)
+ ScreenWidth = ws.ws_col - 1;
+#endif
+}
+ /*}}}*/
int main(int argc,const char *argv[])
{
c0out.rdbuf(devnull.rdbuf());
if (_config->FindI("quiet",0) > 1)
c1out.rdbuf(devnull.rdbuf());
+
+ // Setup the signals
+ signal(SIGPIPE,SIG_IGN);
+ signal(SIGWINCH,SigWinch);
+ SigWinch(0);
// Match the operation
struct