Ver código fonte

2008-03-15 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Merged aria2-0.13.0+1-console.patch, PATCH#1912040
Tatsuhiro Tsujikawa 18 anos atrás
pai
commit
0e330d8643
2 arquivos alterados com 20 adições e 4 exclusões
  1. 4 0
      ChangeLog
  2. 16 4
      src/ConsoleStatCalc.cc

+ 4 - 0
ChangeLog

@@ -1,3 +1,7 @@
+2008-03-15  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Merged aria2-0.13.0+1-console.patch, PATCH#1912040
+
 2008-03-15  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Merged aria2-0.13.0+1-peekbuf.patch, PATCH#1912038

+ 16 - 4
src/ConsoleStatCalc.cc

@@ -43,6 +43,9 @@
 #ifdef ENABLE_BITTORRENT
 # include "BtContext.h"
 #endif // ENABLE_BITTORRENT
+#include <termios.h>
+#include <sys/ioctl.h>
+#include <unistd.h>
 #include <iomanip>
 #include <iostream>
 
@@ -57,9 +60,14 @@ ConsoleStatCalc::calculateStat(const RequestGroupManHandle& requestGroupMan,
     return;
   }
   _cp.reset();
-
-  std::cout << "\r                                                                             ";
-  std::cout << "\r";
+  bool isTTY = isatty(STDOUT_FILENO) == 1;
+  if(isTTY) {
+    struct winsize size;
+    if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &size) == -1) {
+      size.ws_col = 80;
+    }
+    std::cout << '\r' << std::setw(size.ws_col) << ' ' << '\r';
+  }
   if(requestGroupMan->countRequestGroup() > 0) {
     RequestGroupHandle firstRequestGroup = requestGroupMan->getRequestGroup(0);
     TransferStat stat = firstRequestGroup->calculateStat();
@@ -177,7 +185,11 @@ ConsoleStatCalc::calculateStat(const RequestGroupManHandle& requestGroupMan,
     }
   }
 #endif // ENABLE_MESSAGE_DIGEST
-  std::cout << std::flush;
+  if(isTTY) {
+    std::cout << std::flush;
+  } else {
+    std::cout << std::endl;
+  }
 }
 
 } // namespace aria2