postgres.git / summary / log / commit / refs

commit    9a3b5d3ad0f1c19c47e2ee65b372344cb0616c9a
Author:   Alvaro Herrera <alvherre@alvh.no-ip.org>
Date:     Thu Aug 03 18:48:54 2017 +0000

    Fix build on zlib-less environments
    
    Commit 4d57e8381677 added support for getting I/O errors out of zlib,
    but it introduced a portability problem for systems without zlib.
    Repair by wrapping the zlib call inside #ifdef and restore the original
    code in the other branch.
    
    This serves to illustrate the inadequacy of the zlib abstraction in
    pg_backup_archiver: there is no way to call gzerror() in that
    abstraction.  This means that the several places that call GZREAD and
    GZWRITE are currently doing error reporting wrongly, but ENOTIME to get
    it fixed before next week's release set.
    
    Backpatch to 9.4, like the commit that introduced the problem.


src/bin/pg_dump/pg_backup_tar.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c index 3c41d40a938..2339d659bcb 100644 --- a/src/bin/pg_dump/pg_backup_tar.c +++ b/src/bin/pg_dump/pg_backup_tar.c @@ -556,12 +556,18 @@ _tarReadRaw(ArchiveHandle *AH, void *buf, size_t len, TAR_MEMBER *th, FILE *fh) res = GZREAD(&((char *) buf)[used], 1, len, th->zFH); if (res != len && !GZEOF(th->zFH)) { +#ifdef HAVE_LIBZ int errnum; const char *errmsg = gzerror(th->zFH, &errnum); exit_horribly(modulename, "could not read from input file: %s\n", errnum == Z_ERRNO ? strerror(errno) : errmsg); +#else + exit_horribly(modulename, + "could not read from input file: %s\n", + strerror(errno)); +#endif } } else [parent: 972b6ec20bf0]