]> git.saurik.com Git - apt.git/commitdiff
first proof-of-concept for a fix for #731738
authorMichael Vogt <mvo@debian.org>
Sun, 22 Dec 2013 13:38:39 +0000 (14:38 +0100)
committerMichael Vogt <mvo@debian.org>
Sun, 22 Dec 2013 13:38:39 +0000 (14:38 +0100)
apt-pkg/deb/dpkgpm.cc
apt-pkg/install-progress.cc
apt-pkg/install-progress.h

index b4bfd1400c207044439c75fe8ab46dd76a43484f..b9f839e828f91bc9bf75afe2c684c3a7ade1dbc3 100644 (file)
@@ -1182,7 +1182,7 @@ bool pkgDPkgPM::GoNoABIBreak(APT::Progress::PackageManager *progress)
    StartPtyMagic();
 
    // Tell the progress that its starting and fork dpkg 
-   d->progress->Start();
+   d->progress->Start(d->master);
 
    // this loop is runs once per dpkg operation
    vector<Item>::const_iterator I = List.begin();
index b82b7efdead7c82f0a853d2bb176a11d0edbbf84..2215fb1f5a6ef471e77588aef93c67a68bddb209 100644 (file)
@@ -273,11 +273,18 @@ void PackageManagerFancy::HandleSIGWINCH(int)
    SetupTerminalScrollArea(nr_terminal_rows);
 }
 
-void PackageManagerFancy::Start()
+void PackageManagerFancy::Start(int child_pty)
 {
    int nr_terminal_rows = GetNumberTerminalRows();
    if (nr_terminal_rows > 0)
+   {
       SetupTerminalScrollArea(nr_terminal_rows);
+      // *cough*
+      struct winsize win;
+      ioctl(child_pty, TIOCGWINSZ, (char *)&win);
+      win.ws_row = nr_terminal_rows - 1;
+      ioctl(child_pty, TIOCSWINSZ, (char *)&win);
+   }
 }
 
 void PackageManagerFancy::Stop()
index 4b7590983f6f47a75b684198f7252f069a47c6dd..010be82fd63aa9e1960e487e9b8254cc6214be98 100644 (file)
@@ -28,7 +28,7 @@ namespace Progress {
     virtual ~PackageManager() {};
 
     /* Global Start/Stop */
-    virtual void Start() {};
+    virtual void Start(int child_pty=-1) {};
     virtual void Stop() {};
 
     /* When dpkg is invoked (may happen multiple times for each 
@@ -125,7 +125,7 @@ namespace Progress {
  public:
     PackageManagerFancy();
     ~PackageManagerFancy();
-    virtual void Start();
+    virtual void Start(int child_pty=-1);
     virtual void Stop();
     virtual bool StatusChanged(std::string PackageName, 
                                unsigned int StepsDone,