[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.22 and 1.22.4.1

version 1.22, 2004/07/11 17:48:47 version 1.22.4.1, 2005/09/04 18:40:02
Line 41 
Line 41 
 static void format_size(char *, int, off_t);  static void format_size(char *, int, off_t);
 static void format_rate(char *, int, off_t);  static void format_rate(char *, int, off_t);
   
   /* window resizing */
   static void sig_winch(int);
   static void setscreensize(void);
   
 /* updates the progressmeter to reflect the current state of the transfer */  /* updates the progressmeter to reflect the current state of the transfer */
 void refresh_progress_meter(void);  void refresh_progress_meter(void);
   
Line 56 
Line 60 
 static long stalled;            /* how long we have been stalled */  static long stalled;            /* how long we have been stalled */
 static int bytes_per_second;    /* current speed in bytes per second */  static int bytes_per_second;    /* current speed in bytes per second */
 static int win_size;            /* terminal window size */  static int win_size;            /* terminal window size */
   static volatile sig_atomic_t win_resized; /* for window resizing */
   
 /* units for format_size */  /* units for format_size */
 static const char unit[] = " KMGT";  static const char unit[] = " KMGT";
Line 146 
Line 151 
                 len = snprintf(buf, file_len + 1, "\r%s", file);                  len = snprintf(buf, file_len + 1, "\r%s", file);
                 if (len < 0)                  if (len < 0)
                         len = 0;                          len = 0;
                   if (len >= file_len + 1)
                           len = file_len;
                 for (i = len;  i < file_len; i++ )                  for (i = len;  i < file_len; i++ )
                         buf[i] = ' ';                          buf[i] = ' ';
                 buf[file_len] = '\0';                  buf[file_len] = '\0';
Line 214 
Line 221 
   
         save_errno = errno;          save_errno = errno;
   
           if (win_resized) {
                   setscreensize();
                   win_resized = 0;
           }
         if (can_output())          if (can_output())
                 refresh_progress_meter();                  refresh_progress_meter();
   
Line 225 
Line 236 
 void  void
 start_progress_meter(char *f, off_t filesize, off_t *ctr)  start_progress_meter(char *f, off_t filesize, off_t *ctr)
 {  {
         struct winsize winsize;  
   
         start = last_update = time(NULL);          start = last_update = time(NULL);
         file = f;          file = f;
         end_pos = filesize;          end_pos = filesize;
Line 235 
Line 244 
         stalled = 0;          stalled = 0;
         bytes_per_second = 0;          bytes_per_second = 0;
   
         if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize) != -1 &&          setscreensize();
             winsize.ws_col != 0) {  
                 if (winsize.ws_col > MAX_WINSIZE)  
                         win_size = MAX_WINSIZE;  
                 else  
                         win_size = winsize.ws_col;  
         } else  
                 win_size = DEFAULT_WINSIZE;  
         win_size += 1;                                  /* trailing \0 */  
   
         if (can_output())          if (can_output())
                 refresh_progress_meter();                  refresh_progress_meter();
   
         signal(SIGALRM, update_progress_meter);          signal(SIGALRM, update_progress_meter);
           signal(SIGWINCH, sig_winch);
         alarm(UPDATE_INTERVAL);          alarm(UPDATE_INTERVAL);
 }  }
   
Line 265 
Line 266 
                 refresh_progress_meter();                  refresh_progress_meter();
   
         atomicio(vwrite, STDOUT_FILENO, "\n", 1);          atomicio(vwrite, STDOUT_FILENO, "\n", 1);
   }
   
   static void
   sig_winch(int sig)
   {
           win_resized = 1;
   }
   
   static void
   setscreensize(void)
   {
           struct winsize winsize;
   
           if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize) != -1 &&
               winsize.ws_col != 0) {
                   if (winsize.ws_col > MAX_WINSIZE)
                           win_size = MAX_WINSIZE;
                   else
                           win_size = winsize.ws_col;
           } else
                   win_size = DEFAULT_WINSIZE;
           win_size += 1;                                  /* trailing \0 */
 }  }

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.22.4.1