]> git.saurik.com Git - apt.git/commitdiff
deal with nr_terminal_rows unavailable
authorMichael Vogt <mvo@debian.org>
Fri, 11 Oct 2013 20:16:55 +0000 (22:16 +0200)
committerMichael Vogt <mvo@debian.org>
Fri, 11 Oct 2013 20:16:55 +0000 (22:16 +0200)
apt-pkg/iprogress.cc
apt-pkg/iprogress.h

index 4de8c0492f6a580185c6f4187c153248912ea4b0..68a2c720741f3d81227371c1365ec9f21fc40835 100644 (file)
@@ -7,7 +7,7 @@
 namespace APT {
 namespace Progress {
 
-static void SetupTerminalScrollArea(int nr_rows)
+void PackageManagerFancy::SetupTerminalScrollArea(int nr_rows)
 {
      // scroll down a bit to avoid visual glitch when the screen
      // area shrinks by one row
@@ -23,6 +23,7 @@ static void SetupTerminalScrollArea(int nr_rows)
      std::cout << "\033[u";
      static const char *move_cursor_up = "\033[1A";
      std::cout << move_cursor_up;
+
      std::flush(std::cout);
 }
 
@@ -38,16 +39,20 @@ PackageManagerFancy::PackageManagerFancy()
 
 void PackageManagerFancy::Started()
 {
-   SetupTerminalScrollArea(nr_terminal_rows);
+   if (nr_terminal_rows > 0)
+      SetupTerminalScrollArea(nr_terminal_rows);
 }
 
 void PackageManagerFancy::Finished()
 {
-   SetupTerminalScrollArea(nr_terminal_rows + 1);
+   if (nr_terminal_rows > 0)
+   {
+      SetupTerminalScrollArea(nr_terminal_rows + 1);
 
-   // override the progress line (sledgehammer)
-   static const char* clear_screen_below_cursor = "\033[J";
-   std::cout << clear_screen_below_cursor;
+      // override the progress line (sledgehammer)
+      static const char* clear_screen_below_cursor = "\033[J";
+      std::cout << clear_screen_below_cursor;
+   }
 }
 
 void PackageManagerFancy::StatusChanged(std::string PackageName, 
index 14fc89bffa1878e952408d07d016861ebbff1b91..f097e09432b271d9daa79f35d72e2ab4f8184ff5 100644 (file)
@@ -30,6 +30,8 @@ namespace Progress {
  protected:
     int last_reported_progress;
     int nr_terminal_rows;
+    void SetupTerminalScrollArea(int nr_rows);
+
  public:
     PackageManagerFancy();
     virtual void Started();