[BACK]Return to progressmeter.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/progressmeter.c between version 1.43 and 1.44

version 1.43, 2016/05/25 23:48:45 version 1.44, 2016/05/30 18:34:41
Line 29 
Line 29 
   
 #include <errno.h>  #include <errno.h>
 #include <signal.h>  #include <signal.h>
 #include <stdarg.h>  
 #include <stdio.h>  #include <stdio.h>
 #include <string.h>  #include <string.h>
 #include <time.h>  #include <time.h>
Line 38 
Line 37 
 #include "progressmeter.h"  #include "progressmeter.h"
 #include "atomicio.h"  #include "atomicio.h"
 #include "misc.h"  #include "misc.h"
 #include "utf8.h"  
   
 #define DEFAULT_WINSIZE 80  #define DEFAULT_WINSIZE 80
 #define MAX_WINSIZE 512  #define MAX_WINSIZE 512
Line 119 
Line 117 
 void  void
 refresh_progress_meter(void)  refresh_progress_meter(void)
 {  {
         char buf[MAX_WINSIZE * 4 + 1];          char buf[MAX_WINSIZE + 1];
         off_t transferred;          off_t transferred;
         double elapsed, now;          double elapsed, now;
         int percent;          int percent;
         off_t bytes_left;          off_t bytes_left;
         int cur_speed;          int cur_speed;
         int hours, minutes, seconds;          int hours, minutes, seconds;
         size_t i;          int i, len;
         int file_len;          int file_len;
   
         transferred = *counter - (cur_pos ? cur_pos : start_pos);          transferred = *counter - (cur_pos ? cur_pos : start_pos);
Line 157 
Line 155 
                 bytes_per_second = cur_speed;                  bytes_per_second = cur_speed;
   
         /* filename */          /* filename */
         buf[0] = '\r';          buf[0] = '\0';
         buf[1] = '\0';  
         file_len = win_size - 35;          file_len = win_size - 35;
         if (file_len > 0) {          if (file_len > 0) {
                 (void) snmprintf(buf + 1, sizeof(buf) - 1 - 35,                  len = snprintf(buf, file_len + 1, "\r%s", file);
                     &file_len, "%s", file);                  if (len < 0)
                 i = strlen(buf);                          len = 0;
                 while (++file_len < win_size - 35 && i + 1 < sizeof(buf))                  if (len >= file_len + 1)
                         buf[i++] = ' ';                          len = file_len;
                 buf[i] = '\0';                  for (i = len; i < file_len; i++)
                           buf[i] = ' ';
                   buf[file_len] = '\0';
         }          }
   
         /* percent of transfer done */          /* percent of transfer done */
Line 174 
Line 173 
                 percent = ((float)cur_pos / end_pos) * 100;                  percent = ((float)cur_pos / end_pos) * 100;
         else          else
                 percent = 100;                  percent = 100;
         snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf),          snprintf(buf + strlen(buf), win_size - strlen(buf),
             " %3d%% ", percent);              " %3d%% ", percent);
   
         /* amount transferred */          /* amount transferred */
         format_size(buf + strlen(buf), sizeof(buf) - strlen(buf),          format_size(buf + strlen(buf), win_size - strlen(buf),
             cur_pos);              cur_pos);
         strlcat(buf, " ", sizeof(buf));          strlcat(buf, " ", win_size);
   
         /* bandwidth usage */          /* bandwidth usage */
         format_rate(buf + strlen(buf), sizeof(buf) - strlen(buf),          format_rate(buf + strlen(buf), win_size - strlen(buf),
             (off_t)bytes_per_second);              (off_t)bytes_per_second);
         strlcat(buf, "/s ", sizeof(buf));          strlcat(buf, "/s ", win_size);
   
         /* ETA */          /* ETA */
         if (!transferred)          if (!transferred)
Line 194 
Line 193 
                 stalled = 0;                  stalled = 0;
   
         if (stalled >= STALL_TIME)          if (stalled >= STALL_TIME)
                 strlcat(buf, "- stalled -", sizeof(buf));                  strlcat(buf, "- stalled -", win_size);
         else if (bytes_per_second == 0 && bytes_left)          else if (bytes_per_second == 0 && bytes_left)
                 strlcat(buf, "  --:-- ETA", sizeof(buf));                  strlcat(buf, "  --:-- ETA", win_size);
         else {          else {
                 if (bytes_left > 0)                  if (bytes_left > 0)
                         seconds = bytes_left / bytes_per_second;                          seconds = bytes_left / bytes_per_second;
Line 209 
Line 208 
                 seconds -= minutes * 60;                  seconds -= minutes * 60;
   
                 if (hours != 0)                  if (hours != 0)
                         snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf),                          snprintf(buf + strlen(buf), win_size - strlen(buf),
                             "%d:%02d:%02d", hours, minutes, seconds);                              "%d:%02d:%02d", hours, minutes, seconds);
                 else                  else
                         snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf),                          snprintf(buf + strlen(buf), win_size - strlen(buf),
                             "  %02d:%02d", minutes, seconds);                              "  %02d:%02d", minutes, seconds);
   
                 if (bytes_left > 0)                  if (bytes_left > 0)
                         strlcat(buf, " ETA", sizeof(buf));                          strlcat(buf, " ETA", win_size);
                 else                  else
                         strlcat(buf, "    ", sizeof(buf));                          strlcat(buf, "    ", win_size);
         }          }
         if (win_size < 35)  
                 buf[win_size] = '\0';  
   
         atomicio(vwrite, STDOUT_FILENO, buf, strlen(buf));          atomicio(vwrite, STDOUT_FILENO, buf, win_size - 1);
         last_update = now;          last_update = now;
 }  }
   

Legend:
Removed from v.1.43  
changed lines
  Added in v.1.44