]> granicus.if.org Git - postgresql/commitdiff
Truncate filenames in the leadning end in pg_basebackup verbose output
authorMagnus Hagander <magnus@hagander.net>
Thu, 17 Jan 2013 13:38:49 +0000 (14:38 +0100)
committerMagnus Hagander <magnus@hagander.net>
Thu, 17 Jan 2013 13:38:49 +0000 (14:38 +0100)
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.

src/bin/pg_basebackup/pg_basebackup.c

index ffc882616fc930a5388cc3ce184ea561bcd92101..36f825e95c8730b73bceb9f5a6cc936715bce201 100644 (file)
@@ -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,