On Tue, Apr 14, 2015 at 2:17 AM, Alvaro Herrera <alvhe...@2ndquadrant.com> wrote: > Michael Paquier wrote: >> On Sun, Apr 12, 2015 at 10:17 AM, Alvaro Herrera wrote: >> > What pg_basebackup's progress_report() does is have the message in the >> > translatable part not include the \r; the \r is in a separate fprintf() >> > call. >> >> Like the attached then. > > Not a fan of this approach, because now this function knows that > pg_log(PG_PROGRESS) is equivalent to printf(). This abstraction is a > bit leaky, isn't it ... Probably not worth sweating about, though. > >> diff --git a/src/bin/pg_rewind/logging.c b/src/bin/pg_rewind/logging.c >> index aba12d8..3e2dc76 100644 >> --- a/src/bin/pg_rewind/logging.c >> +++ b/src/bin/pg_rewind/logging.c >> @@ -134,7 +134,8 @@ progress_report(bool force) >> snprintf(fetch_size_str, sizeof(fetch_size_str), INT64_FORMAT, >> fetch_size / 1024); >> >> - pg_log(PG_PROGRESS, "%*s/%s kB (%d%%) copied\r", >> + pg_log(PG_PROGRESS, "%*s/%s kB (%d%%) copied", >> (int) strlen(fetch_size_str), fetch_done_str, >> fetch_size_str, >> percent); >> + printf("\r"); >> }
So could you elaborate your "favorite" approach? Now pg_log() calls printf() and fflush(stdout). So '\r' is printed after fflush. It's a bit strange. Maybe we can just replace pg_log() with printf() here. Another question is; should we output the progress report to stderr rather than stdout? I thought this because I found that pg_basebackup reports the progress to stderr. Regards, -- Fujii Masao -- Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-committers