PostgreSQL Source Code git master
compress_none.c File Reference
#include "postgres_fe.h"
#include <unistd.h>
#include "compress_none.h"
#include "pg_backup_utils.h"
Include dependency graph for compress_none.c:

Go to the source code of this file.

Data Structures

struct  NoneCompressorState
 

Typedefs

typedef struct NoneCompressorState NoneCompressorState
 

Functions

static void ReadDataFromArchiveNone (ArchiveHandle *AH, CompressorState *cs)
 
static void WriteDataToArchiveNone (ArchiveHandle *AH, CompressorState *cs, const void *data, size_t dLen)
 
static void EndCompressorNone (ArchiveHandle *AH, CompressorState *cs)
 
void InitCompressorNone (CompressorState *cs, const pg_compress_specification compression_spec)
 
static size_t read_none (void *ptr, size_t size, CompressFileHandle *CFH)
 
static void write_none (const void *ptr, size_t size, CompressFileHandle *CFH)
 
static const char * get_error_none (CompressFileHandle *CFH)
 
static char * gets_none (char *ptr, int size, CompressFileHandle *CFH)
 
static int getc_none (CompressFileHandle *CFH)
 
static bool close_none (CompressFileHandle *CFH)
 
static bool eof_none (CompressFileHandle *CFH)
 
static bool open_none (const char *path, int fd, const char *mode, CompressFileHandle *CFH)
 
static bool open_write_none (const char *path, const char *mode, CompressFileHandle *CFH)
 
void InitCompressFileHandleNone (CompressFileHandle *CFH, const pg_compress_specification compression_spec)
 

Typedef Documentation

◆ NoneCompressorState

Function Documentation

◆ close_none()

static bool close_none ( CompressFileHandle CFH)
static

Definition at line 204 of file compress_none.c.

205{
206 FILE *fp = (FILE *) CFH->private_data;
207 int ret = 0;
208
209 CFH->private_data = NULL;
210
211 if (fp)
212 {
213 errno = 0;
214 ret = fclose(fp);
215 if (ret != 0)
216 pg_log_error("could not close file: %m");
217 }
218
219 return ret == 0;
220}
if(TABLE==NULL||TABLE_index==NULL)
Definition: isn.c:81
#define pg_log_error(...)
Definition: logging.h:106

References if(), pg_log_error, and CompressFileHandle::private_data.

Referenced by InitCompressFileHandleNone().

◆ EndCompressorNone()

static void EndCompressorNone ( ArchiveHandle AH,
CompressorState cs 
)
static

Definition at line 89 of file compress_none.c.

90{
92
93 if (nonecs)
94 {
95 /* Dump buffer if nonempty */
96 if (nonecs->bufdata > 0)
97 cs->writeF(AH, nonecs->buffer, nonecs->bufdata);
98 /* Free working state */
99 pg_free(nonecs->buffer);
100 pg_free(nonecs);
101 cs->private_data = NULL;
102 }
103}
void pg_free(void *ptr)
Definition: fe_memutils.c:105
void * private_data
Definition: compress_io.h:87
WriteFunc writeF
Definition: compress_io.h:77

References NoneCompressorState::bufdata, NoneCompressorState::buffer, if(), pg_free(), CompressorState::private_data, and CompressorState::writeF.

Referenced by InitCompressorNone().

◆ eof_none()

static bool eof_none ( CompressFileHandle CFH)
static

Definition at line 223 of file compress_none.c.

224{
225 return feof((FILE *) CFH->private_data) != 0;
226}

References CompressFileHandle::private_data.

Referenced by InitCompressFileHandleNone().

◆ get_error_none()

static const char * get_error_none ( CompressFileHandle CFH)
static

Definition at line 174 of file compress_none.c.

175{
176 return strerror(errno);
177}
#define strerror
Definition: port.h:273

References strerror.

Referenced by InitCompressFileHandleNone().

◆ getc_none()

static int getc_none ( CompressFileHandle CFH)
static

Definition at line 186 of file compress_none.c.

187{
188 FILE *fp = (FILE *) CFH->private_data;
189 int ret;
190
191 ret = fgetc(fp);
192 if (ret == EOF)
193 {
194 if (!feof(fp))
195 pg_fatal("could not read from input file: %m");
196 else
197 pg_fatal("could not read from input file: end of file");
198 }
199
200 return ret;
201}
#define pg_fatal(...)

References pg_fatal, and CompressFileHandle::private_data.

Referenced by InitCompressFileHandleNone().

◆ gets_none()

static char * gets_none ( char *  ptr,
int  size,
CompressFileHandle CFH 
)
static

Definition at line 180 of file compress_none.c.

181{
182 return fgets(ptr, size, (FILE *) CFH->private_data);
183}

References CompressFileHandle::private_data.

Referenced by InitCompressFileHandleNone().

◆ InitCompressFileHandleNone()

void InitCompressFileHandleNone ( CompressFileHandle CFH,
const pg_compress_specification  compression_spec 
)

Definition at line 261 of file compress_none.c.

263{
264 CFH->open_func = open_none;
266 CFH->read_func = read_none;
267 CFH->write_func = write_none;
268 CFH->gets_func = gets_none;
269 CFH->getc_func = getc_none;
270 CFH->close_func = close_none;
271 CFH->eof_func = eof_none;
273
274 CFH->private_data = NULL;
275}
static bool close_none(CompressFileHandle *CFH)
static void write_none(const void *ptr, size_t size, CompressFileHandle *CFH)
static int getc_none(CompressFileHandle *CFH)
static bool eof_none(CompressFileHandle *CFH)
static char * gets_none(char *ptr, int size, CompressFileHandle *CFH)
static bool open_write_none(const char *path, const char *mode, CompressFileHandle *CFH)
static size_t read_none(void *ptr, size_t size, CompressFileHandle *CFH)
static bool open_none(const char *path, int fd, const char *mode, CompressFileHandle *CFH)
static const char * get_error_none(CompressFileHandle *CFH)
char *(* gets_func)(char *s, int size, CompressFileHandle *CFH)
Definition: compress_io.h:153
bool(* open_write_func)(const char *path, const char *mode, CompressFileHandle *CFH)
Definition: compress_io.h:122
int(* getc_func)(CompressFileHandle *CFH)
Definition: compress_io.h:162
const char *(* get_error_func)(CompressFileHandle *CFH)
Definition: compress_io.h:182
bool(* eof_func)(CompressFileHandle *CFH)
Definition: compress_io.h:169
size_t(* read_func)(void *ptr, size_t size, CompressFileHandle *CFH)
Definition: compress_io.h:132
bool(* open_func)(const char *path, int fd, const char *mode, CompressFileHandle *CFH)
Definition: compress_io.h:111
bool(* close_func)(CompressFileHandle *CFH)
Definition: compress_io.h:176
void(* write_func)(const void *ptr, size_t size, CompressFileHandle *CFH)
Definition: compress_io.h:140

References CompressFileHandle::close_func, close_none(), CompressFileHandle::eof_func, eof_none(), CompressFileHandle::get_error_func, get_error_none(), CompressFileHandle::getc_func, getc_none(), CompressFileHandle::gets_func, gets_none(), CompressFileHandle::open_func, open_none(), CompressFileHandle::open_write_func, open_write_none(), CompressFileHandle::private_data, CompressFileHandle::read_func, read_none(), CompressFileHandle::write_func, and write_none().

Referenced by InitCompressFileHandle().

◆ InitCompressorNone()

void InitCompressorNone ( CompressorState cs,
const pg_compress_specification  compression_spec 
)

Definition at line 110 of file compress_none.c.

112{
116
117 cs->compression_spec = compression_spec;
118
119 /*
120 * If the caller has defined a write function, prepare the necessary
121 * buffer.
122 */
123 if (cs->writeF)
124 {
125 NoneCompressorState *nonecs;
126
129 nonecs->buffer = pg_malloc(nonecs->buflen);
130 nonecs->bufdata = 0;
131
132 cs->private_data = nonecs;
133 }
134}
#define DEFAULT_IO_BUFFER_SIZE
Definition: compress_io.h:27
static void EndCompressorNone(ArchiveHandle *AH, CompressorState *cs)
Definition: compress_none.c:89
static void WriteDataToArchiveNone(ArchiveHandle *AH, CompressorState *cs, const void *data, size_t dLen)
Definition: compress_none.c:61
static void ReadDataFromArchiveNone(ArchiveHandle *AH, CompressorState *cs)
Definition: compress_none.c:42
void * pg_malloc(size_t size)
Definition: fe_memutils.c:47
void(* readData)(ArchiveHandle *AH, CompressorState *cs)
Definition: compress_io.h:56
pg_compress_specification compression_spec
Definition: compress_io.h:82
void(* end)(ArchiveHandle *AH, CompressorState *cs)
Definition: compress_io.h:67
void(* writeData)(ArchiveHandle *AH, CompressorState *cs, const void *data, size_t dLen)
Definition: compress_io.h:61

References NoneCompressorState::bufdata, NoneCompressorState::buffer, NoneCompressorState::buflen, CompressorState::compression_spec, DEFAULT_IO_BUFFER_SIZE, CompressorState::end, EndCompressorNone(), pg_malloc(), CompressorState::private_data, CompressorState::readData, ReadDataFromArchiveNone(), CompressorState::writeData, WriteDataToArchiveNone(), and CompressorState::writeF.

Referenced by AllocateCompressor().

◆ open_none()

static bool open_none ( const char *  path,
int  fd,
const char *  mode,
CompressFileHandle CFH 
)
static

Definition at line 229 of file compress_none.c.

230{
231 Assert(CFH->private_data == NULL);
232
233 if (fd >= 0)
234 CFH->private_data = fdopen(dup(fd), mode);
235 else
236 CFH->private_data = fopen(path, mode);
237
238 if (CFH->private_data == NULL)
239 return false;
240
241 return true;
242}
Assert(PointerIsAligned(start, uint64))
static PgChecksumMode mode
Definition: pg_checksums.c:56
static int fd(const char *x, int i)
Definition: preproc-init.c:105

References Assert(), fd(), mode, and CompressFileHandle::private_data.

Referenced by InitCompressFileHandleNone().

◆ open_write_none()

static bool open_write_none ( const char *  path,
const char *  mode,
CompressFileHandle CFH 
)
static

Definition at line 245 of file compress_none.c.

246{
247 Assert(CFH->private_data == NULL);
248
249 CFH->private_data = fopen(path, mode);
250 if (CFH->private_data == NULL)
251 return false;
252
253 return true;
254}

References Assert(), mode, and CompressFileHandle::private_data.

Referenced by InitCompressFileHandleNone().

◆ read_none()

static size_t read_none ( void *  ptr,
size_t  size,
CompressFileHandle CFH 
)
static

Definition at line 147 of file compress_none.c.

148{
149 FILE *fp = (FILE *) CFH->private_data;
150 size_t ret;
151
152 ret = fread(ptr, 1, size, fp);
153 if (ferror(fp))
154 pg_fatal("could not read from input file: %m");
155
156 return ret;
157}

References pg_fatal, and CompressFileHandle::private_data.

Referenced by InitCompressFileHandleNone().

◆ ReadDataFromArchiveNone()

static void ReadDataFromArchiveNone ( ArchiveHandle AH,
CompressorState cs 
)
static

Definition at line 42 of file compress_none.c.

43{
44 size_t cnt;
45 char *buf;
46 size_t buflen;
47
49 buf = pg_malloc(buflen);
50
51 while ((cnt = cs->readF(AH, &buf, &buflen)))
52 {
53 ahwrite(buf, 1, cnt, AH);
54 }
55
56 free(buf);
57}
#define free(a)
Definition: header.h:65
void ahwrite(const void *ptr, size_t size, size_t nmemb, ArchiveHandle *AH)
static char * buf
Definition: pg_test_fsync.c:72
ReadFunc readF
Definition: compress_io.h:72

References ahwrite(), buf, DEFAULT_IO_BUFFER_SIZE, free, pg_malloc(), and CompressorState::readF.

Referenced by InitCompressorNone().

◆ write_none()

static void write_none ( const void *  ptr,
size_t  size,
CompressFileHandle CFH 
)
static

Definition at line 160 of file compress_none.c.

161{
162 size_t ret;
163
164 errno = 0;
165 ret = fwrite(ptr, 1, size, (FILE *) CFH->private_data);
166 if (ret != size)
167 {
168 errno = (errno) ? errno : ENOSPC;
169 pg_fatal("could not write to file: %m");
170 }
171}

References pg_fatal, and CompressFileHandle::private_data.

Referenced by InitCompressFileHandleNone().

◆ WriteDataToArchiveNone()

static void WriteDataToArchiveNone ( ArchiveHandle AH,
CompressorState cs,
const void *  data,
size_t  dLen 
)
static

Definition at line 61 of file compress_none.c.

63{
65 size_t remaining = dLen;
66
67 while (remaining > 0)
68 {
69 size_t chunk;
70
71 /* Dump buffer if full */
72 if (nonecs->bufdata >= nonecs->buflen)
73 {
74 cs->writeF(AH, nonecs->buffer, nonecs->bufdata);
75 nonecs->bufdata = 0;
76 }
77 /* And fill it */
78 chunk = nonecs->buflen - nonecs->bufdata;
79 if (chunk > remaining)
80 chunk = remaining;
81 memcpy(nonecs->buffer + nonecs->bufdata, data, chunk);
82 nonecs->bufdata += chunk;
83 data = ((const char *) data) + chunk;
84 remaining -= chunk;
85 }
86}
int remaining
Definition: informix.c:692
const void * data
while(p+4<=pend)

References NoneCompressorState::bufdata, NoneCompressorState::buffer, NoneCompressorState::buflen, data, CompressorState::private_data, remaining, while(), and CompressorState::writeF.

Referenced by InitCompressorNone().