From: Magnus Hagander Date: Thu, 17 Jan 2013 13:38:49 +0000 (+0100) Subject: Truncate filenames in the leadning end in pg_basebackup verbose output X-Git-Url: http://git.postgresql.org/gitweb/-?a=commitdiff_plain;h=d7e9ca7ff7efac8b15d4348fd9480c12ed560ae7;p=users%2Fc2main%2Fpostgres.git Truncate filenames in the leadning end in pg_basebackup verbose output When truncating at the end, like before, the output would often end up just showing the path instead of the filename. Also increase the length of the filename by 5, which still keeps us at less than 80 characters in most outputs. --- diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index ffc882616f..36f825e95c 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -422,6 +422,7 @@ progress_report(int tablespacenum, const char *filename) totaldone / 1024); snprintf(totalsize_str, sizeof(totalsize_str), INT64_FORMAT, totalsize); +#define VERBOSE_FILENAME_LENGTH 35 if (verbose) { if (!filename) @@ -431,18 +432,29 @@ progress_report(int tablespacenum, const char *filename) * call) */ fprintf(stderr, - ngettext("%s/%s kB (100%%), %d/%d tablespace %35s", - "%s/%s kB (100%%), %d/%d tablespaces %35s", + ngettext("%s/%s kB (100%%), %d/%d tablespace %*s", + "%s/%s kB (100%%), %d/%d tablespaces %*s", tablespacecount), totaldone_str, totalsize_str, - tablespacenum, tablespacecount, ""); + tablespacenum, tablespacecount, + VERBOSE_FILENAME_LENGTH + 5, ""); else + { + bool truncate = (strlen(filename) > VERBOSE_FILENAME_LENGTH); + fprintf(stderr, - ngettext("%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)", - "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)", + ngettext("%s/%s kB (%d%%), %d/%d tablespace (%s%-*.*s)", + "%s/%s kB (%d%%), %d/%d tablespaces (%s%-*.*s)", tablespacecount), totaldone_str, totalsize_str, percent, - tablespacenum, tablespacecount, filename); + tablespacenum, tablespacecount, + /* Prefix with "..." if we do leading truncation */ + truncate ? "..." : "", + truncate ? VERBOSE_FILENAME_LENGTH - 3 : VERBOSE_FILENAME_LENGTH, + truncate ? VERBOSE_FILENAME_LENGTH - 3 : VERBOSE_FILENAME_LENGTH, + /* Truncate filename at beginning if it's too long */ + truncate ? filename + strlen(filename) - VERBOSE_FILENAME_LENGTH + 3 : filename); + } } else fprintf(stderr,