81 #include <grass/config.h> 87 #include <grass/gis.h> 88 #include <grass/glocale.h> 92 #define G_COMPRESSED_NO (unsigned char)'0' 93 #define G_COMPRESSED_YES (unsigned char)'1' 118 if (number < 0 || number >= n_compressors)
130 if (number < 0 || number >= n_compressors) {
131 G_warning(_(
"Request for unsupported compressor"));
155 memcpy(dst, src, src_sz);
177 memcpy(dst, src, src_sz);
190 int dst_sz,
int number)
192 if (number < 0 || number >= n_compressors) {
206 int dst_sz,
int number)
208 if (number < 0 || number >= n_compressors) {
219 int bsize, nread,
err;
222 if (dst ==
NULL || nbytes < 0)
228 if (
NULL == (b = (
unsigned char *)
229 G_calloc(bsize,
sizeof(
unsigned char))))
235 err = read(fd, b + nread, bsize - nread);
238 }
while (err > 0 && nread < bsize);
241 if (nread < rbytes && err > 0) {
249 for (err = 0; err < nread - 1 && err < nbytes; err++)
250 dst[err] = b[err + 1];
265 err =
G_expand(b + 1, bsize - 1, dst, nbytes, compressor);
278 int dst_sz, nwritten,
err;
279 unsigned char *
dst, compressed;
282 if (src ==
NULL || nbytes < 0)
286 if (
NULL == (dst = (
unsigned char *)
287 G_calloc(dst_sz,
sizeof(
unsigned char))))
291 err =
G_compress(src, nbytes, dst, dst_sz, compressor);
297 if (err > 0 && err <= dst_sz) {
301 if (write(fd, &compressed, 1) != 1) {
307 err = write(fd, dst + nwritten, dst_sz - nwritten);
310 }
while (err > 0 && nwritten < dst_sz);
317 if (write(fd, &compressed, 1) != 1) {
323 err = write(fd, src + nwritten, nbytes - nwritten);
326 }
while (err > 0 && nwritten < nbytes);
344 unsigned char compressed;
347 if (src ==
NULL || nbytes < 0)
352 if (write(fd, &compressed, 1) != 1)
358 err = write(fd, src + nwritten, nbytes - nwritten);
361 }
while (err > 0 && nwritten < nbytes);
363 if (err < 0 || nwritten != nbytes)
int G_strcasecmp(const char *x, const char *y)
String compare ignoring case (upper or lower)
struct compressor_list compressor[]
int G_compress(unsigned char *src, int src_sz, unsigned char *dst, int dst_sz, int number)
char * G_compressor_name(int number)
int G_expand(unsigned char *src, int src_sz, unsigned char *dst, int dst_sz, int number)
int G_write_compressed(int fd, unsigned char *src, int nbytes, int compressor)
void G_fatal_error(const char *msg,...)
Print a fatal error message to stderr.
SYMBOL * err(FILE *fp, SYMBOL *s, char *msg)
int G_no_expand(unsigned char *src, int src_sz, unsigned char *dst, int dst_sz)
int G_write_uncompressed(int fd, const unsigned char *src, int nbytes)
int G_read_compressed(int fd, int rbytes, unsigned char *dst, int nbytes, int compressor)
int G_no_compress(unsigned char *src, int src_sz, unsigned char *dst, int dst_sz)
int G_check_compressor(int number)
int G_compressor_number(char *name)
void G_free(void *buf)
Free allocated memory.
void G_warning(const char *msg,...)
Print a warning message to stderr.