Eliminate extraneous "done" messages in verbose mode. Problem reported by
[rsync/rsync.git] / flist.c
diff --git a/flist.c b/flist.c
index 2e0e787..ead4966 100644 (file)
--- a/flist.c
+++ b/flist.c
@@ -84,16 +84,16 @@ static void start_filelist_progress(char *kind)
 }
 
 
-static void maybe_emit_filelist_progress(const struct file_list *flist)
+static void emit_filelist_progress(const struct file_list *flist)
 {
-       if (do_progress && show_filelist_p() && ((flist->count % 100) == 0))
-               emit_filelist_progress(flist);
+       rprintf(FINFO, " %d files...\r", flist->count);
 }
 
 
-static void emit_filelist_progress(const struct file_list *flist)
+static void maybe_emit_filelist_progress(const struct file_list *flist)
 {
-       rprintf(FINFO, " %d files...\r", flist->count);
+       if (do_progress && show_filelist_p() && ((flist->count % 100) == 0))
+               emit_filelist_progress(flist);
 }
 
 
@@ -101,12 +101,13 @@ static void finish_filelist_progress(const struct file_list *flist)
 {
        if (do_progress) {
                /* This overwrites the progress line */
-               rprintf(FINFO, "%d files to consider\n", flist->count);
-       } else
+               rprintf(FINFO, "%d file%sto consider\n",
+                       flist->count, flist->count == 1 ? " " : "s ");
+       } else {
                rprintf(FINFO, "done\n");
+       }
 }
 
-
 void show_flist_stats(void)
 {
        /* Nothing yet */
@@ -301,7 +302,10 @@ static void flist_expand(struct file_list *flist)
 
                new_bytes = sizeof(flist->files[0]) * flist->malloced;
                
-               new_ptr = realloc(flist->files, new_bytes);
+               if (flist->files)
+                       new_ptr = realloc(flist->files, new_bytes);
+               else
+                       new_ptr = malloc(new_bytes);
 
                if (verbose >= 2) {
                        rprintf(FINFO, "expand file_list to %.0f bytes, did%s move\n",
@@ -984,8 +988,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
                send_file_entry(NULL, f, 0);
        }
 
-       if (show_filelist_p())
+       if (show_filelist_p() && f != -1) {
                finish_filelist_progress(flist);
+       }
 
        clean_flist(flist, 0);