El 21/11/17 a las 04:56, Arthur Zakirov escribió:
> On Mon, Nov 20, 2017 at 04:45:48PM -0300, Martín Marqués wrote:
>> New version of patch, without the --batch-mode option and using isatty()
>>
>
> Great!
>
>> + fprintf(stderr, "waiting for checkpoint");
>> + if (isatty(fileno(stderr)))
>> + fprintf(stderr, "\n");
>> + else
>> + fprintf(stderr, "\r");
>
> Here the condition should be inverted I think. The next condition should be
> used:
>
>> if (!isatty(fileno(stderr)))
>> ...
>
> Otherwise pg_basebackup will insert '\n' in terminal instead '\r'.
Ups! Attached the corrected version.:)
Nice catch. I completely missed that. Thanks.
--
Martín Marqués http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c
new file mode 100644
index a8715d9..0ac9bd5
*** a/src/bin/pg_basebackup/pg_basebackup.c
--- b/src/bin/pg_basebackup/pg_basebackup.c
*************** progress_report(int tablespacenum, const
*** 811,817 ****
totaldone_str, totalsize_str, percent,
tablespacenum, tablespacecount);
! fprintf(stderr, "\r");
}
static int32
--- 811,820 ----
totaldone_str, totalsize_str, percent,
tablespacenum, tablespacecount);
! if (!isatty(fileno(stderr)))
! fprintf(stderr, "\n");
! else
! fprintf(stderr, "\r");
}
static int32
*************** BaseBackup(void)
*** 1796,1802 ****
progname);
if (showprogress && !verbose)
! fprintf(stderr, "waiting for checkpoint\r");
basebkp =
psprintf("BASE_BACKUP LABEL '%s' %s %s %s %s %s %s",
--- 1799,1811 ----
progname);
if (showprogress && !verbose)
! {
! fprintf(stderr, "waiting for checkpoint");
! if (!isatty(fileno(stderr)))
! fprintf(stderr, "\n");
! else
! fprintf(stderr, "\r");
! }
basebkp =
psprintf("BASE_BACKUP LABEL '%s' %s %s %s %s %s %s",
*************** BaseBackup(void)
*** 1929,1935 ****
if (showprogress)
{
progress_report(PQntuples(res), NULL, true);
! fprintf(stderr, "\n"); /* Need to move to next line */
}
PQclear(res);
--- 1938,1945 ----
if (showprogress)
{
progress_report(PQntuples(res), NULL, true);
! if (isatty(fileno(stderr)))
! fprintf(stderr, "\n"); /* Need to move to next line */
}
PQclear(res);