El 09/11/17 a las 09:29, Arthur Zakirov escribió: > Hello, > > On Sun, Oct 01, 2017 at 04:49:17PM -0300, Martin Marques wrote: >> Updated patch with documentation of the new option. >> > > I have checked the patch. > The patch is applied and compiled correctly without any errors. Tests passed. > The documentation doesn't have errors too. > > > I have a little suggestion. Maybe insert new line without any additional > parameters? We can check that stderr is not terminal using isatty(). > > The code could become: > > if (!isatty(fileno(stderr))) > fprintf(stderr, "\n"); > else > fprintf(stderr, "\r"); > > Also it could be good to not insert new line after progress: > > if (showprogress) > { > progress_report(PQntuples(res), NULL, true); > /* if (!batchmode) */ > /* or */ > if (isatty(fileno(stderr))) > fprintf(stderr, "\n"); /* Need to move to next line */ > }
New version of patch, without the --batch-mode option and using isatty() I send in a separate thread a proposal to make isatty() be defined as _isatty() in windows. -- 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..575a4f9 *** 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);