summaryrefslogtreecommitdiff
path: root/cmdline/apt-get.cc
diff options
context:
space:
mode:
authorArch Librarian <arch@canonical.com>2004-09-20 16:51:26 +0000
committerArch Librarian <arch@canonical.com>2004-09-20 16:51:26 +0000
commitd7827acababa05db7e901d2dfeb27538ef6a6142 (patch)
treea6a79c3cdeea76b81fa50335ee8306327fe888cf /cmdline/apt-get.cc
parent7a7fa5f07e59bd17415cb0321d1f98527c2cfea4 (diff)
winch support
Author: jgg Date: 1998-11-12 05:30:07 GMT winch support
Diffstat (limited to 'cmdline/apt-get.cc')
-rw-r--r--cmdline/apt-get.cc24
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