From: Justin Pryzby Date: Tue, 22 Dec 2020 15:40:08 -0600 Subject: [PATCH 02/20] Fix broken error message on unseekable input.. pg_dump -Fd -f dir.dir cat dir.dir/toc.dat | pg_restore -l # I realize this isn't how it's intended to be used pg_restore: error: corrupt tar header found in PGDMP (expected 0, computed 18577) file position 18446744073709551615 See also 929c69aa19 --- src/bin/pg_dump/pg_backup_tar.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c index 54e708875c..61c9c87a9f 100644 --- a/src/bin/pg_dump/pg_backup_tar.c +++ b/src/bin/pg_dump/pg_backup_tar.c @@ -1280,12 +1280,14 @@ _tarGetHeader(ArchiveHandle *AH, TAR_MEMBER *th) if (chk != sum) { - char posbuf[32]; + off_t off = ftello(ctx->tarFH); - snprintf(posbuf, sizeof(posbuf), UINT64_FORMAT, - (uint64) ftello(ctx->tarFH)); - fatal("corrupt tar header found in %s (expected %d, computed %d) file position %s", - tag, sum, chk, posbuf); + if (off == -1) + fatal("corrupt tar header found in %s (expected %d, computed %d)", + tag, sum, chk); + else + fatal("corrupt tar header found in %s (expected %d, computed %d) file position " UINT64_FORMAT, + tag, sum, chk, off); } th->targetFile = pg_strdup(tag); -- 2.17.0 --GRPZ8SYKNexpdSJ7 Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0003-Support-multiple-compression-algs-levels-opts.patch"