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);