Diff for /embedaddon/rsync/progress.c between versions 1.1.1.3 and 1.1.1.4

version 1.1.1.3, 2016/11/01 09:54:32 version 1.1.1.4, 2021/03/17 00:32:36
Line 4 Line 4
  * Copyright (C) 1996-2000 Andrew Tridgell   * Copyright (C) 1996-2000 Andrew Tridgell
  * Copyright (C) 1996 Paul Mackerras   * Copyright (C) 1996 Paul Mackerras
  * Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org>   * Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org>
 * Copyright (C) 2003-2015 Wayne Davison * Copyright (C) 2003-2020 Wayne Davison
  *   *
  * This program is free software; you can redistribute it and/or modify   * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by   * it under the terms of the GNU General Public License as published by
Line 25 Line 25
   
 extern int am_server;  extern int am_server;
 extern int flist_eof;  extern int flist_eof;
   extern int quiet;
 extern int need_unsorted_flist;  extern int need_unsorted_flist;
 extern int output_needs_newline;  extern int output_needs_newline;
   extern int stdout_format_has_i;
 extern struct stats stats;  extern struct stats stats;
 extern struct file_list *cur_flist;  extern struct file_list *cur_flist;
   
   BOOL want_progress_now = False;
   
 #define PROGRESS_HISTORY_SECS 5  #define PROGRESS_HISTORY_SECS 5
   
 #ifdef GETPGRP_VOID  #ifdef GETPGRP_VOID
Line 62  static unsigned long msdiff(struct timeval *t1, struct Line 66  static unsigned long msdiff(struct timeval *t1, struct
  * printed for this file, so we should output a newline.  (Not   * printed for this file, so we should output a newline.  (Not
  * necessarily the same as all bytes being received.)   * necessarily the same as all bytes being received.)
  **/   **/
static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now,static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now, int is_last)
                            int is_last) 
 {  {
         char rembuf[64], eol[128];          char rembuf[64], eol[128];
         const char *units;          const char *units;
Line 88  static void rprint_progress(OFF_T ofs, OFF_T size, str Line 91  static void rprint_progress(OFF_T ofs, OFF_T size, str
                         is_last = 0;                          is_last = 0;
                 }                  }
                 /* Compute stats based on the starting info. */                  /* Compute stats based on the starting info. */
                if (!ph_start.time.tv_sec                if (!ph_start.time.tv_sec || !(diff = msdiff(&ph_start.time, now)))
                    || !(diff = msdiff(&ph_start.time, now))) 
                         diff = 1;                          diff = 1;
                 rate = (double) (ofs - ph_start.ofs) * 1000.0 / diff / 1024.0;                  rate = (double) (ofs - ph_start.ofs) * 1000.0 / diff / 1024.0;
                 /* Switch to total time taken for our last update. */                  /* Switch to total time taken for our last update. */
Line 99  static void rprint_progress(OFF_T ofs, OFF_T size, str Line 101  static void rprint_progress(OFF_T ofs, OFF_T size, str
                 /* Compute stats based on recent progress. */                  /* Compute stats based on recent progress. */
                 if (!(diff = msdiff(&ph_list[oldest_hpos].time, now)))                  if (!(diff = msdiff(&ph_list[oldest_hpos].time, now)))
                         diff = 1;                          diff = 1;
                rate = (double) (ofs - ph_list[oldest_hpos].ofs) * 1000.0                rate = (double) (ofs - ph_list[oldest_hpos].ofs) * 1000.0 / diff / 1024.0;
                     / diff / 1024.0; 
                 remain = rate ? (double) (size - ofs) / rate / 1000.0 : 0.0;                  remain = rate ? (double) (size - ofs) / rate / 1000.0 : 0.0;
         }          }
   
Line 127  static void rprint_progress(OFF_T ofs, OFF_T size, str Line 128  static void rprint_progress(OFF_T ofs, OFF_T size, str
         pct = ofs == size ? 100 : (int) (100.0 * ofs / size);          pct = ofs == size ? 100 : (int) (100.0 * ofs / size);
         rprintf(FCLIENT, "\r%15s %3d%% %7.2f%s %s%s",          rprintf(FCLIENT, "\r%15s %3d%% %7.2f%s %s%s",
                 human_num(ofs), pct, rate, units, rembuf, eol);                  human_num(ofs), pct, rate, units, rembuf, eol);
        if (!is_last) {        if (!is_last && !quiet) {
                 output_needs_newline = 1;                  output_needs_newline = 1;
                 rflush(FCLIENT);                  rflush(FCLIENT);
         }          }
 }  }
   
   void progress_init(void)
   {
           if (!am_server && !INFO_GTE(PROGRESS, 1)) {
                   struct timeval now;
                   gettimeofday(&now, NULL);
                   ph_start.time.tv_sec = now.tv_sec;
                   ph_start.time.tv_usec = now.tv_usec;
           }
   }
   
 void set_current_file_index(struct file_struct *file, int ndx)  void set_current_file_index(struct file_struct *file, int ndx)
 {  {
         if (!file)          if (!file)
Line 144  void set_current_file_index(struct file_struct *file,  Line 155  void set_current_file_index(struct file_struct *file, 
         current_file_index -= cur_flist->flist_num;          current_file_index -= cur_flist->flist_num;
 }  }
   
   void instant_progress(const char *fname)
   {
           /* We only get here if want_progress_now is True */
           if (!stdout_format_has_i && !INFO_GTE(NAME, 1))
                   rprintf(FINFO, "%s\n", fname);
           end_progress(0);
           want_progress_now = False;
   }
   
 void end_progress(OFF_T size)  void end_progress(OFF_T size)
 {  {
         if (!am_server) {          if (!am_server) {
                 struct timeval now;                  struct timeval now;
                 gettimeofday(&now, NULL);                  gettimeofday(&now, NULL);
                if (INFO_GTE(PROGRESS, 2)) {                if (INFO_GTE(PROGRESS, 2) || want_progress_now) {
                         rprint_progress(stats.total_transferred_size,                          rprint_progress(stats.total_transferred_size,
                                         stats.total_size, &now, True);                                          stats.total_size, &now, True);
                 } else {                  } else {

Removed from v.1.1.1.3  
changed lines
  Added in v.1.1.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>