]> granicus.if.org Git - postgresql/commitdiff
pg_basebackup: Fix progress messages when writing to a file
authorPeter Eisentraut <peter_e@gmx.net>
Fri, 1 Dec 2017 14:21:34 +0000 (09:21 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Fri, 1 Dec 2017 14:21:34 +0000 (09:21 -0500)
The progress messages print out \r to keep overwriting the same line on
the screen.  But this does not yield useful results when writing the
output to a file.  So in that case, print out \n instead.

Author: Martín Marqués <martin@2ndquadrant.com>
Reviewed-by: Arthur Zakirov <a.zakirov@postgrespro.ru>
src/bin/pg_basebackup/pg_basebackup.c

index 8427c97fe4a809719fd417cbd7a136df0158908f..4fbca7d8e886ff5dc8e43ccb49f539b9ff436a9a 100644 (file)
@@ -811,7 +811,10 @@ progress_report(int tablespacenum, const char *filename, bool force)
                                totaldone_str, totalsize_str, percent,
                                tablespacenum, tablespacecount);
 
-       fprintf(stderr, "\r");
+       if (isatty(fileno(stderr)))
+               fprintf(stderr, "\r");
+       else
+               fprintf(stderr, "\n");
 }
 
 static int32
@@ -1796,7 +1799,13 @@ BaseBackup(void)
                                progname);
 
        if (showprogress && !verbose)
-               fprintf(stderr, "waiting for checkpoint\r");
+       {
+               fprintf(stderr, "waiting for checkpoint");
+               if (isatty(fileno(stderr)))
+                       fprintf(stderr, "\r");
+               else
+                       fprintf(stderr, "\n");
+       }
 
        basebkp =
                psprintf("BASE_BACKUP LABEL '%s' %s %s %s %s %s %s",
@@ -1929,7 +1938,8 @@ BaseBackup(void)
        if (showprogress)
        {
                progress_report(PQntuples(res), NULL, true);
-               fprintf(stderr, "\n");  /* Need to move to next line */
+               if (isatty(fileno(stderr)))
+                       fprintf(stderr, "\n");  /* Need to move to next line */
        }
 
        PQclear(res);