|
|
|
@ -1,7 +1,7 @@ |
|
|
|
|
/* gzappend -- command to append to a gzip file
|
|
|
|
|
|
|
|
|
|
Copyright (C) 2003, 2012 Mark Adler, all rights reserved |
|
|
|
|
version 1.2, 13 Aug 2012 |
|
|
|
|
version 1.2, 11 Oct 2012 |
|
|
|
|
|
|
|
|
|
This software is provided 'as-is', without any express or implied |
|
|
|
|
warranty. In no event will the author be held liable for any damages |
|
|
|
@ -39,7 +39,8 @@ |
|
|
|
|
* - Keep gzip file clean on appended file read errors |
|
|
|
|
* - Use in-place rotate instead of auxiliary buffer |
|
|
|
|
* (Why you ask? Because it was fun to write!) |
|
|
|
|
* 1.2 13 Aug 2012 - Fix for proper z_const usage |
|
|
|
|
* 1.2 11 Oct 2012 - Fix for proper z_const usage |
|
|
|
|
* - Check for input buffer malloc failure |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -400,14 +401,14 @@ local void gztack(char *name, int gd, z_stream *strm, int last) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* allocate buffers */ |
|
|
|
|
in = fd == -1 ? NULL : malloc(CHUNK); |
|
|
|
|
in = malloc(CHUNK); |
|
|
|
|
out = malloc(CHUNK); |
|
|
|
|
if (out == NULL) bye("out of memory", ""); |
|
|
|
|
if (in == NULL || out == NULL) bye("out of memory", ""); |
|
|
|
|
|
|
|
|
|
/* compress input file and append to gzip file */ |
|
|
|
|
do { |
|
|
|
|
/* get more input */ |
|
|
|
|
len = fd == -1 ? 0 : read(fd, in, CHUNK); |
|
|
|
|
len = read(fd, in, CHUNK); |
|
|
|
|
if (len == -1) { |
|
|
|
|
fprintf(stderr, |
|
|
|
|
"gzappend warning: error reading %s, skipping rest ...\n", |
|
|
|
@ -454,7 +455,7 @@ local void gztack(char *name, int gd, z_stream *strm, int last) |
|
|
|
|
|
|
|
|
|
/* clean up and return */ |
|
|
|
|
free(out); |
|
|
|
|
if (in != NULL) free(in); |
|
|
|
|
free(in); |
|
|
|
|
if (fd > 0) close(fd); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -472,7 +473,9 @@ int main(int argc, char **argv) |
|
|
|
|
|
|
|
|
|
/* provide usage if no arguments */ |
|
|
|
|
if (*argv == NULL) { |
|
|
|
|
printf("gzappend 1.1 (4 Nov 2003) Copyright (C) 2003 Mark Adler\n"); |
|
|
|
|
printf( |
|
|
|
|
"gzappend 1.2 (11 Oct 2012) Copyright (C) 2003, 2012 Mark Adler\n" |
|
|
|
|
); |
|
|
|
|
printf( |
|
|
|
|
"usage: gzappend [-level] file.gz [ addthis [ andthis ... ]]\n"); |
|
|
|
|
return 0; |
|
|
|
|