Properly clear the verbose output of pg_basebackup
authorMagnus Hagander <magnus@hagander.net>
Sat, 19 Mar 2011 15:38:50 +0000 (16:38 +0100)
committerMagnus Hagander <magnus@hagander.net>
Sat, 19 Mar 2011 15:38:50 +0000 (16:38 +0100)
Don't leave partial filename information on the last status or
dangling characters if the previous filename was longer than
the current one.

src/bin/pg_basebackup/pg_basebackup.c

index 61aa1d382c66528da126fa5da868d1b3a8a871d8..86ef1d068d7ff2fa3cca16c7d959c88e4360c673 100644 (file)
@@ -207,11 +207,24 @@ progress_report(int tablespacenum, char *fn)
                percent = 100;
 
        if (verbose)
-               fprintf(stderr,
-                               INT64_FORMAT "/" INT64_FORMAT " kB (%i%%) %i/%i tablespaces (%-30s)\r",
-                               totaldone / 1024, totalsize,
-                               percent,
-                               tablespacenum, tablespacecount, fn);
+       {
+               if (!fn)
+
+                       /*
+                        * No filename given, so clear the status line (used for last
+                        * call)
+                        */
+                       fprintf(stderr,
+                                       INT64_FORMAT "/" INT64_FORMAT " kB (100%%) %i/%i tablespaces %35s\r",
+                                       totaldone / 1024, totalsize,
+                                       tablespacenum, tablespacecount, "");
+               else
+                       fprintf(stderr,
+                                       INT64_FORMAT "/" INT64_FORMAT " kB (%i%%) %i/%i tablespaces (%-30.30s)\r",
+                                       totaldone / 1024, totalsize,
+                                       percent,
+                                       tablespacenum, tablespacecount, fn);
+       }
        else
                fprintf(stderr, INT64_FORMAT "/" INT64_FORMAT " kB (%i%%) %i/%i tablespaces\r",
                                totaldone / 1024, totalsize,
@@ -871,7 +884,7 @@ BaseBackup()
 
        if (showprogress)
        {
-               progress_report(PQntuples(res), "");
+               progress_report(PQntuples(res), NULL);
                fprintf(stderr, "\n");  /* Need to move to next line */
        }
        PQclear(res);