diff options
Diffstat (limited to 'cmdline/apt-get.cc')
-rw-r--r-- | cmdline/apt-get.cc | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 2ed05b8aa..8daaf05f4 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1,6 +1,6 @@ // -*- 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 @@ -39,6 +39,9 @@ #include "acqprogress.h" #include <fstream.h> +#include <termios.h> +#include <sys/ioctl.h> +#include <signal.h> /*}}}*/ ostream c0out; @@ -801,6 +804,20 @@ void GetInitialize() _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[]) { @@ -845,6 +862,11 @@ 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 |