43#ifdef FREECIV_HAVE_LIBZ
69#define PLAIN_FILE_BUF_SIZE (8096*1024)
71#ifdef FREECIV_HAVE_LIBBZ2
81#ifdef FREECIV_HAVE_LIBLZMA
83#define PLAIN_FILE_BUF_SIZE_XZ PLAIN_FILE_BUF_SIZE
84#define XZ_DECODER_TEST_SIZE (4*1024)
88#define XZ_DECODER_MEMLIMIT (65*1024*1024)
89#define XZ_DECODER_MEMLIMIT_STEP (25*1024*1024)
90#define XZ_DECODER_MEMLIMIT_FINAL (100*1024*1024)
124#ifdef FREECIV_HAVE_LIBZSTD
126#define PLAIN_FILE_BUF_SIZE_ZSTD PLAIN_FILE_BUF_SIZE
156#ifdef FREECIV_HAVE_LIBZ
159#ifdef FREECIV_HAVE_LIBBZ2
162#ifdef FREECIV_HAVE_LIBLZMA
165#ifdef FREECIV_HAVE_LIBZSTD
178#ifdef FREECIV_HAVE_LIBZ
181#ifdef FREECIV_HAVE_LIBBZ2
184#ifdef FREECIV_HAVE_LIBLZMA
187#ifdef FREECIV_HAVE_LIBZSTD
195#define fz_method_validate(method) \
196 (fz_method_is_valid(method) ? method \
197 : (fc_assert_msg(fz_method_is_valid(method), \
198 "Unsupported compress method %d, reverting to plain.",\
244 if (mode[0] ==
'w') {
248#if defined(FREECIV_HAVE_LIBBZ2) || defined(FREECIV_HAVE_LIBLZMA) || defined (FREECIV_HAVE_LIBZSTD)
258#ifdef FREECIV_HAVE_LIBBZ2
320#ifdef FREECIV_HAVE_LIBLZMA
375#ifdef FREECIV_HAVE_LIBZSTD
419#ifdef FREECIV_HAVE_LIBZ
429#ifdef FREECIV_HAVE_LIBLZMA
458#ifdef FREECIV_HAVE_LIBZSTD
486#ifdef FREECIV_HAVE_LIBBZ2
515#ifdef FREECIV_HAVE_LIBZ
519 if (mode[0] ==
'w') {
587#ifdef FREECIV_HAVE_LIBLZMA
599#ifdef FREECIV_HAVE_LIBZSTD
601 if (fp->
mode ==
'w') {
619#ifdef FREECIV_HAVE_LIBBZ2
621 if (
'w' == fp->
mode) {
631#ifdef FREECIV_HAVE_LIBZ
696#ifdef FREECIV_HAVE_LIBLZMA
701 for (
i = 0;
i <
size - 1;
i += j) {
711 if (buffer[
i + j] ==
'\n') {
717 buffer[
i + j] =
'\0';
743 buffer[
i + j] =
'\0';
784#ifdef FREECIV_HAVE_LIBZSTD
789 for (
i = 0;
i <
size - 1;) {
795 if (buffer[
i] ==
'\n' ||
i ==
size - 2) {
796 buffer[
i + 1] =
'\0';
847#ifdef FREECIV_HAVE_LIBBZ2
889#ifdef FREECIV_HAVE_LIBZ
903#ifdef FREECIV_HAVE_LIBLZMA
980#ifdef FREECIV_HAVE_LIBLZMA
989 log_error(
"Too much data: truncated in fz_fprintf (%u)",
1004#ifdef FREECIV_HAVE_LIBZSTD
1013 log_error(
"Too much data: truncated in fz_fprintf (%u)",
1047#ifdef FREECIV_HAVE_LIBBZ2
1056 log_error(
"Too much data: truncated in fz_fprintf (%lu)",
1057 (
unsigned long)
sizeof(buffer));
1067#ifdef FREECIV_HAVE_LIBZ
1076 log_error(
"Too much data: truncated in fz_fprintf (%lu)",
1077 (
unsigned long)
sizeof(buffer));
1108#ifdef FREECIV_HAVE_LIBLZMA
1117#ifdef FREECIV_HAVE_LIBZSTD
1124#ifdef FREECIV_HAVE_LIBBZ2
1129#ifdef FREECIV_HAVE_LIBZ
1163#ifdef FREECIV_HAVE_LIBLZMA
1180 cleartext =
"Cannot calculate the integrity check";
1215#ifdef FREECIV_HAVE_LIBZSTD
1238#ifdef FREECIV_HAVE_LIBBZ2
1305#ifdef FREECIV_HAVE_LIBZ
#define fz_method_validate(method)
char * fz_fgets(char *buffer, int size, fz_FILE *fp)
#define PLAIN_FILE_BUF_SIZE_ZSTD
int fz_fprintf(fz_FILE *fp, const char *format,...)
#define XZ_DECODER_TEST_SIZE
fz_FILE * fz_from_stream(FILE *stream)
#define XZ_DECODER_MEMLIMIT
static bool xz_outbuffer_to_file(fz_FILE *fp, lzma_action action)
static void xz_action(fz_FILE *fp, lzma_action action)
fz_FILE * fz_from_memory(char *buffer, int size, bool control)
#define XZ_DECODER_MEMLIMIT_FINAL
fz_FILE * fz_from_file(const char *filename, const char *in_mode, enum fz_method method, int compress_level)
const char * fz_strerror(fz_FILE *fp)
#define PLAIN_FILE_BUF_SIZE_XZ
static bool fz_method_is_valid(enum fz_method method)
int fz_fclose(fz_FILE *fp)
#define XZ_DECODER_MEMLIMIT_STEP
int fz_ferror(fz_FILE *fp)
#define fc_assert_msg(condition, message,...)
#define fc_assert_ret_val(condition, val)
#define log_error(message,...)
int fc_snprintf(char *str, size_t n, const char *format,...)
const char * fc_strerror(fc_errno err)
int cat_snprintf(char *str, size_t n, const char *format,...)
int fc_vsnprintf(char *str, size_t n, const char *format, va_list ap)
FILE * fc_fopen(const char *filename, const char *opentype)
fc_errno fc_get_errno(void)
bool is_reg_file_for_access(const char *name, bool write_access)
gzFile fc_gzopen(const char *filename, const char *opentype)
#define sz_strlcpy(dest, src)
#define sz_strlcat(dest, src)