Commit d68714b2 authored by Peter Eisentraut's avatar Peter Eisentraut

Allow pg_basebackup compressed tar output to stdout

parent 1b6dabc4
......@@ -174,8 +174,7 @@ PostgreSQL documentation
<listitem>
<para>
Enables gzip compression of tar file output. Compression is only
available when generating tar files, and is not available when sending
output to standard output.
available when using the tar format.
</para>
</listitem>
</varlistentry>
......
......@@ -261,7 +261,22 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum)
* Base tablespaces
*/
if (strcmp(basedir, "-") == 0)
tarfile = stdout;
{
#ifdef HAVE_LIBZ
if (compresslevel > 0)
{
ztarfile = gzdopen(dup(fileno(stdout)), "wb");
if (gzsetparams(ztarfile, compresslevel, Z_DEFAULT_STRATEGY) != Z_OK)
{
fprintf(stderr, _("%s: could not set compression level %i: %s\n"),
progname, compresslevel, get_gz_error(ztarfile));
disconnect_and_exit(1);
}
}
else
#endif
tarfile = stdout;
}
else
{
#ifdef HAVE_LIBZ
......@@ -384,7 +399,14 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum)
}
}
if (strcmp(basedir, "-") != 0)
if (strcmp(basedir, "-") == 0)
{
#ifdef HAVE_LIBZ
if (ztarfile)
gzclose(ztarfile);
#endif
}
else
{
#ifdef HAVE_LIBZ
if (ztarfile != NULL)
......@@ -1076,14 +1098,6 @@ main(int argc, char **argv)
progname);
exit(1);
}
#else
if (compresslevel > 0 && strcmp(basedir, "-") == 0)
{
fprintf(stderr,
_("%s: compression is not supported on standard output\n"),
progname);
exit(1);
}
#endif
/*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment