From f31fb08c73b9f4c93f3f89fa865715502afcf390 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Mon, 15 Jun 2020 09:06:25 +0100 Subject: add gzip compression support to c split-messages implementation --- utils/Makefile | 2 +- utils/split-messages.c | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) (limited to 'utils') diff --git a/utils/Makefile b/utils/Makefile index 01c5ee778..7b20978ca 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -35,4 +35,4 @@ $(TOOLROOT)/xxd: utils/xxd.c $(TOOLROOT)/created # $(TOOLROOT)/split-messages: utils/split-messages.c $(TOOLROOT)/created $(VQ)echo "BUILD CC: $@" - $(Q)$(BUILD_CC) $(BUILD_CFLAGS) -o $@ $< $(BUILD_LDFLAGS) + $(Q)$(BUILD_CC) $(BUILD_CFLAGS) -o $@ $< $(BUILD_LDFLAGS) -lz diff --git a/utils/split-messages.c b/utils/split-messages.c index 76224cba1..fa384feb2 100644 --- a/utils/split-messages.c +++ b/utils/split-messages.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "errors.h" @@ -456,25 +457,32 @@ fatmessages_read(struct param *param, struct trnsltn_entry **tlist) static nserror message_write(struct param *param, struct trnsltn_entry *tlist) { - FILE *outf; + gzFile outf; + const char *mode; - outf = fopen(param->outfilename, "w"); + if (param->compress == 0) { + mode = "wbT"; + } else { + mode = "wb9"; + } + + outf = gzopen(param->outfilename, mode); if (outf == NULL) { perror("Unable to open output file"); return NSERROR_PERMISSION; } - fprintf(outf, + gzprintf(outf, "# This messages file is automatically generated from %s\n" "# at build-time. Please go and edit that instead of this.\n\n", param->infilename); while (tlist != NULL) { - fprintf(outf, "%s:%s\n", tlist->key, tlist->value); + gzprintf(outf, "%s:%s\n", tlist->key, tlist->value); tlist = tlist->next; } - fclose(outf); + gzclose(outf); return NSERROR_OK; } -- cgit v1.2.3