]> git.saurik.com Git - apt.git/commitdiff
winch support
authorArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 16:51:26 +0000 (16:51 +0000)
committerArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 16:51:26 +0000 (16:51 +0000)
Author: jgg
Date: 1998-11-12 05:30:07 GMT
winch support

cmdline/acqprogress.cc
cmdline/acqprogress.h
cmdline/apt-get.cc

index 82bb6fac6bb81e2d21066bbbf20ca281879f5280..ccc322084e5674fc261fd6dc991ee78216b0da7c 100644 (file)
@@ -1,6 +1,6 @@
 // -*- 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 
@@ -18,7 +18,7 @@
 // AcqTextStatus::AcqTextStatus - Constructor                          /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-AcqTextStatus::AcqTextStatus(unsigned int ScreenWidth,unsigned int Quiet) :
+AcqTextStatus::AcqTextStatus(unsigned int &ScreenWidth,unsigned int Quiet) :
     ScreenWidth(ScreenWidth), Quiet(Quiet)
 {
 }
index 898eddeca62323b79741d206945637ee69526788..9dd5c60cf90b3ca33466b50c12bcddc637b330e5 100644 (file)
@@ -1,6 +1,6 @@
 // -*- 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 
@@ -14,7 +14,7 @@
 
 class AcqTextStatus : public pkgAcquireStatus
 {
-   unsigned int ScreenWidth;
+   unsigned int &ScreenWidth;
    char BlankLine[300];
    unsigned long ID;
    unsigned long Quiet;
@@ -30,7 +30,7 @@ class AcqTextStatus : public pkgAcquireStatus
    
    void Pulse(pkgAcquire *Owner);
 
-   AcqTextStatus(unsigned int ScreenWidth,unsigned int Quiet);
+   AcqTextStatus(unsigned int &ScreenWidth,unsigned int Quiet);
 };
 
 #endif
index 2ed05b8aa8261484c01c054fdadee445d6b3f7af..8daaf05f438df4fb4e0db1181b45290ff4947fc3 100644 (file)
@@ -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