#include "postgres_fe.h"#include "pg_backup_archiver.h"

Go to the source code of this file.
Defines | |
| #define | ZLIB_OUT_SIZE 4096 |
| #define | ZLIB_IN_SIZE 4096 |
Typedefs | |
| typedef size_t(* | WriteFunc )(ArchiveHandle *AH, const char *buf, size_t len) |
| typedef size_t(* | ReadFunc )(ArchiveHandle *AH, char **buf, size_t *buflen) |
| typedef struct CompressorState | CompressorState |
| typedef struct cfp | cfp |
Enumerations | |
| enum | CompressionAlgorithm { COMPR_ALG_NONE, COMPR_ALG_LIBZ } |
Functions | |
| CompressorState * | AllocateCompressor (int compression, WriteFunc writeF) |
| void | ReadDataFromArchive (ArchiveHandle *AH, int compression, ReadFunc readF) |
| size_t | WriteDataToArchive (ArchiveHandle *AH, CompressorState *cs, const void *data, size_t dLen) |
| void | EndCompressor (ArchiveHandle *AH, CompressorState *cs) |
| cfp * | cfopen (const char *path, const char *mode, int compression) |
| cfp * | cfopen_read (const char *path, const char *mode) |
| cfp * | cfopen_write (const char *path, const char *mode, int compression) |
| int | cfread (void *ptr, int size, cfp *fp) |
| int | cfwrite (const void *ptr, int size, cfp *fp) |
| int | cfgetc (cfp *fp) |
| char * | cfgets (cfp *fp, char *buf, int len) |
| int | cfclose (cfp *fp) |
| int | cfeof (cfp *fp) |
| #define ZLIB_IN_SIZE 4096 |
Definition at line 23 of file compress_io.h.
| #define ZLIB_OUT_SIZE 4096 |
Definition at line 22 of file compress_io.h.
Referenced by _PrintFileData(), and ReadDataFromArchiveNone().
Definition at line 58 of file compress_io.h.
| typedef struct CompressorState CompressorState |
Definition at line 48 of file compress_io.h.
| typedef size_t(* ReadFunc)(ArchiveHandle *AH, char **buf, size_t *buflen) |
Definition at line 45 of file compress_io.h.
| typedef size_t(* WriteFunc)(ArchiveHandle *AH, const char *buf, size_t len) |
Definition at line 32 of file compress_io.h.
| enum CompressionAlgorithm |
Definition at line 25 of file compress_io.h.
{
COMPR_ALG_NONE,
COMPR_ALG_LIBZ
} CompressionAlgorithm;
| CompressorState* AllocateCompressor | ( | int | compression, | |
| WriteFunc | writeF | |||
| ) |
Definition at line 128 of file compress_io.c.
References COMPR_ALG_LIBZ, CompressorState::comprAlg, exit_horribly(), modulename, ParseCompressionOption(), pg_malloc0(), and CompressorState::writeF.
Referenced by _StartBlob(), and _StartData().
{
CompressorState *cs;
CompressionAlgorithm alg;
int level;
ParseCompressionOption(compression, &alg, &level);
#ifndef HAVE_LIBZ
if (alg == COMPR_ALG_LIBZ)
exit_horribly(modulename, "not built with zlib support\n");
#endif
cs = (CompressorState *) pg_malloc0(sizeof(CompressorState));
cs->writeF = writeF;
cs->comprAlg = alg;
/*
* Perform compression algorithm specific initialization.
*/
#ifdef HAVE_LIBZ
if (alg == COMPR_ALG_LIBZ)
InitCompressorZlib(cs, level);
#endif
return cs;
}
| int cfclose | ( | cfp * | fp | ) |
Definition at line 620 of file compress_io.c.
References free, NULL, and cfp::uncompressedfp.
Referenced by _CloseArchive(), _EndBlob(), _EndBlobs(), _EndData(), _LoadBlobs(), _PrintFileData(), and InitArchiveFmt_Directory().
{
int result;
if (fp == NULL)
{
errno = EBADF;
return EOF;
}
#ifdef HAVE_LIBZ
if (fp->compressedfp)
{
result = gzclose(fp->compressedfp);
fp->compressedfp = NULL;
}
else
#endif
{
result = fclose(fp->uncompressedfp);
fp->uncompressedfp = NULL;
}
free(fp);
return result;
}
| int cfeof | ( | cfp * | fp | ) |
Definition at line 647 of file compress_io.c.
References cfp::uncompressedfp.
Referenced by _LoadBlobs().
{
#ifdef HAVE_LIBZ
if (fp->compressedfp)
return gzeof(fp->compressedfp);
else
#endif
return feof(fp->uncompressedfp);
}
| int cfgetc | ( | cfp * | fp | ) |
Definition at line 598 of file compress_io.c.
References cfp::uncompressedfp.
Referenced by _ReadByte().
{
#ifdef HAVE_LIBZ
if (fp->compressedfp)
return gzgetc(fp->compressedfp);
else
#endif
return fgetc(fp->uncompressedfp);
}
| char* cfgets | ( | cfp * | fp, | |
| char * | buf, | |||
| int | len | |||
| ) |
Definition at line 609 of file compress_io.c.
References cfp::uncompressedfp.
Referenced by _LoadBlobs().
{
#ifdef HAVE_LIBZ
if (fp->compressedfp)
return gzgets(fp->compressedfp, buf, len);
else
#endif
return fgets(buf, len, fp->uncompressedfp);
}
| cfp* cfopen | ( | const char * | path, | |
| const char * | mode, | |||
| int | compression | |||
| ) |
Definition at line 540 of file compress_io.c.
References exit_horribly(), free, modulename, NULL, pg_malloc(), and cfp::uncompressedfp.
Referenced by cfopen_read(), and cfopen_write().
{
cfp *fp = pg_malloc(sizeof(cfp));
if (compression != 0)
{
#ifdef HAVE_LIBZ
fp->compressedfp = gzopen(path, mode);
fp->uncompressedfp = NULL;
if (fp->compressedfp == NULL)
{
free(fp);
fp = NULL;
}
#else
exit_horribly(modulename, "not built with zlib support\n");
#endif
}
else
{
#ifdef HAVE_LIBZ
fp->compressedfp = NULL;
#endif
fp->uncompressedfp = fopen(path, mode);
if (fp->uncompressedfp == NULL)
{
free(fp);
fp = NULL;
}
}
return fp;
}
| cfp* cfopen_read | ( | const char * | path, | |
| const char * | mode | |||
| ) |
Definition at line 476 of file compress_io.c.
References cfopen(), free, NULL, pg_malloc(), and snprintf().
Referenced by _LoadBlobs(), _PrintFileData(), and InitArchiveFmt_Directory().
{
cfp *fp;
#ifdef HAVE_LIBZ
if (hasSuffix(path, ".gz"))
fp = cfopen(path, mode, 1);
else
#endif
{
fp = cfopen(path, mode, 0);
#ifdef HAVE_LIBZ
if (fp == NULL)
{
int fnamelen = strlen(path) + 4;
char *fname = pg_malloc(fnamelen);
snprintf(fname, fnamelen, "%s%s", path, ".gz");
fp = cfopen(fname, mode, 1);
free(fname);
}
#endif
}
return fp;
}
| cfp* cfopen_write | ( | const char * | path, | |
| const char * | mode, | |||
| int | compression | |||
| ) |
Definition at line 512 of file compress_io.c.
References cfopen(), exit_horribly(), free, modulename, pg_malloc(), and snprintf().
Referenced by _CloseArchive(), _StartBlob(), _StartBlobs(), and _StartData().
{
cfp *fp;
if (compression == 0)
fp = cfopen(path, mode, 0);
else
{
#ifdef HAVE_LIBZ
int fnamelen = strlen(path) + 4;
char *fname = pg_malloc(fnamelen);
snprintf(fname, fnamelen, "%s%s", path, ".gz");
fp = cfopen(fname, mode, 1);
free(fname);
#else
exit_horribly(modulename, "not built with zlib support\n");
fp = NULL; /* keep compiler quiet */
#endif
}
return fp;
}
| int cfread | ( | void * | ptr, | |
| int | size, | |||
| cfp * | fp | |||
| ) |
Definition at line 576 of file compress_io.c.
References cfp::uncompressedfp.
Referenced by _PrintFileData(), and _ReadBuf().
{
#ifdef HAVE_LIBZ
if (fp->compressedfp)
return gzread(fp->compressedfp, ptr, size);
else
#endif
return fread(ptr, 1, size, fp->uncompressedfp);
}
| int cfwrite | ( | const void * | ptr, | |
| int | size, | |||
| cfp * | fp | |||
| ) |
Definition at line 587 of file compress_io.c.
References cfp::uncompressedfp.
Referenced by _EndBlob(), _WriteBuf(), _WriteByte(), and _WriteData().
{
#ifdef HAVE_LIBZ
if (fp->compressedfp)
return gzwrite(fp->compressedfp, ptr, size);
else
#endif
return fwrite(ptr, 1, size, fp->uncompressedfp);
}
| void EndCompressor | ( | ArchiveHandle * | AH, | |
| CompressorState * | cs | |||
| ) |
Definition at line 207 of file compress_io.c.
References COMPR_ALG_LIBZ, CompressorState::comprAlg, and free.
Referenced by _EndBlob(), and _EndData().
{
#ifdef HAVE_LIBZ
if (cs->comprAlg == COMPR_ALG_LIBZ)
EndCompressorZlib(AH, cs);
#endif
free(cs);
}
| void ReadDataFromArchive | ( | ArchiveHandle * | AH, | |
| int | compression, | |||
| ReadFunc | readF | |||
| ) |
Definition at line 161 of file compress_io.c.
References COMPR_ALG_LIBZ, COMPR_ALG_NONE, exit_horribly(), modulename, NULL, ParseCompressionOption(), and ReadDataFromArchiveNone().
Referenced by _PrintData().
{
CompressionAlgorithm alg;
ParseCompressionOption(compression, &alg, NULL);
if (alg == COMPR_ALG_NONE)
ReadDataFromArchiveNone(AH, readF);
if (alg == COMPR_ALG_LIBZ)
{
#ifdef HAVE_LIBZ
ReadDataFromArchiveZlib(AH, readF);
#else
exit_horribly(modulename, "not built with zlib support\n");
#endif
}
}
| size_t WriteDataToArchive | ( | ArchiveHandle * | AH, | |
| CompressorState * | cs, | |||
| const void * | data, | |||
| size_t | dLen | |||
| ) |
Definition at line 183 of file compress_io.c.
References checkAborting(), COMPR_ALG_LIBZ, COMPR_ALG_NONE, CompressorState::comprAlg, exit_horribly(), modulename, and WriteDataToArchiveNone().
Referenced by _WriteData().
{
/* Are we aborting? */
checkAborting(AH);
switch (cs->comprAlg)
{
case COMPR_ALG_LIBZ:
#ifdef HAVE_LIBZ
return WriteDataToArchiveZlib(AH, cs, data, dLen);
#else
exit_horribly(modulename, "not built with zlib support\n");
#endif
case COMPR_ALG_NONE:
return WriteDataToArchiveNone(AH, cs, data, dLen);
}
return 0; /* keep compiler quiet */
}
1.7.1