1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-30 11:03:19 +03:00

Allow pg_basebackup compressed tar output to stdout

This commit is contained in:
Peter Eisentraut
2011-05-29 01:17:37 +03:00
parent 1b6dabc452
commit d68714b29c
2 changed files with 25 additions and 12 deletions

View File

@ -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
/*