summaryrefslogtreecommitdiff
path: root/src/write.c
diff options
context:
space:
mode:
authorjakob <jakob@memeware.net>2017-01-14 16:49:23 -0500
committerjakob <jakob@memeware.net>2017-01-14 16:49:23 -0500
commitceda7715c02c25fd34628e1509e3c24fd3b49f31 (patch)
tree8117f84a4aa75db25dce52885f95d1a943ce470b /src/write.c
parentd6a443127b6f8173aeab214942e0b6f31f7c4224 (diff)
Added quiet option.
Diffstat (limited to 'src/write.c')
-rw-r--r--src/write.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/write.c b/src/write.c
index ebf640c..6aeb629 100644
--- a/src/write.c
+++ b/src/write.c
@@ -15,6 +15,7 @@
You should have received a copy of the GNU General Public License
along with Nekopack. If not, see <http://www.gnu.org/licenses/>. */
+#include <inttypes.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
@@ -62,8 +63,18 @@ void write_files(file_node *file_root, elif_node *elif_root, FILE *archive) {
if (file_name == NULL)
continue;
- /* out_start is kept so out_buffer can be incremented. */
+ if (!arguments.quiet) {
+ printf("Inflating %s (%" PRIu64 " bytes)\n",
+ file_name, current->file_size);
+ }
+
out_buffer = malloc(current->file_size);
+ if (out_buffer == NULL) {
+ fprintf(stderr, "Insufficient memory to decompress.\n");
+ return;
+ }
+
+ /* out_start is kept so out_buffer can be incremented. */
out_start = out_buffer;
for (uint64_t i = 0; i < current->segment_count; i++) {
segment *chunk = current->segments[i];
@@ -96,6 +107,7 @@ void write_files(file_node *file_root, elif_node *elif_root, FILE *archive) {
}
fwrite(out_start, current->file_size, 1, output);
fclose(output);
+ free(file_name);
free(out_start);
}
}