diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-04-30 20:24:42 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-05-02 12:40:06 +0200 |
commit | 76267654ebd43c1dfa28aa290b0d320df9781b2d (patch) | |
tree | fe6d0d056f2a21438aba5e0a26e55dfbf0d4ebf4 /mkfs | |
parent | ea1cb44cc85e70fdeb8514fc909c54af72b1bfe9 (diff) |
Move abstract squashfs I/O code to libsquashfs.a
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'mkfs')
-rw-r--r-- | mkfs/Makemodule.am | 5 | ||||
-rw-r--r-- | mkfs/meta_writer.c | 92 | ||||
-rw-r--r-- | mkfs/mksquashfs.h | 16 |
3 files changed, 2 insertions, 111 deletions
diff --git a/mkfs/Makemodule.am b/mkfs/Makemodule.am index a9ee7fa..838b7b9 100644 --- a/mkfs/Makemodule.am +++ b/mkfs/Makemodule.am @@ -1,7 +1,6 @@ mksquashfs_SOURCES = mkfs/mksquashfs.c mkfs/mksquashfs.h mkfs/block.c -mksquashfs_SOURCES += mkfs/options.c mkfs/meta_writer.c mkfs/super.c -mksquashfs_SOURCES += include/squashfs.h -mksquashfs_LDADD = libfstree.a libcompress.a libutil.a +mksquashfs_SOURCES += mkfs/options.c mkfs/super.c +mksquashfs_LDADD = libsquashfs.a libfstree.a libcompress.a libutil.a if WITH_LZMA mksquashfs_LDADD += $(XZ_LIBS) diff --git a/mkfs/meta_writer.c b/mkfs/meta_writer.c deleted file mode 100644 index 3219c91..0000000 --- a/mkfs/meta_writer.c +++ /dev/null @@ -1,92 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -#include "mksquashfs.h" -#include "util.h" - -#include <string.h> -#include <stdlib.h> -#include <unistd.h> -#include <stdio.h> - -meta_writer_t *meta_writer_create(int fd, compressor_t *cmp) -{ - meta_writer_t *m = calloc(1, sizeof(*m)); - - if (m == NULL) { - perror("creating meta data writer"); - return NULL; - } - - m->cmp = cmp; - m->outfd = fd; - return m; -} - -void meta_writer_destroy(meta_writer_t *m) -{ - free(m); -} - -int meta_writer_flush(meta_writer_t *m) -{ - ssize_t ret, count; - - if (m->offset == 0) - return 0; - - ret = m->cmp->do_block(m->cmp, m->data + 2, m->offset); - if (ret < 0) - return -1; - - if (ret > 0) { - ((uint16_t *)m->data)[0] = htole16(ret); - count = ret + 2; - } else { - ((uint16_t *)m->data)[0] = htole16(m->offset | 0x8000); - count = m->offset + 2; - } - - ret = write_retry(m->outfd, m->data, count); - - if (ret < 0) { - perror("writing meta data"); - return -1; - } - - if (ret < count) { - fputs("meta data written to file was truncated\n", stderr); - return -1; - } - - memset(m->data, 0, sizeof(m->data)); - m->offset = 0; - m->block_offset += count; - return 0; -} - -int meta_writer_append(meta_writer_t *m, const void *data, size_t size) -{ - size_t diff; - - while (size != 0) { - diff = sizeof(m->data) - 2 - m->offset; - - if (diff == 0) { - if (meta_writer_flush(m)) - return -1; - diff = sizeof(m->data) - 2; - } - - if (diff > size) - diff = size; - - memcpy(m->data + 2 + m->offset, data, diff); - m->offset += diff; - size -= diff; - data = (const char *)data + diff; - } - - if (m->offset == (sizeof(m->data) - 2)) - return meta_writer_flush(m); - - return 0; -} diff --git a/mkfs/mksquashfs.h b/mkfs/mksquashfs.h index da9c937..a9b163f 100644 --- a/mkfs/mksquashfs.h +++ b/mkfs/mksquashfs.h @@ -28,14 +28,6 @@ typedef struct { } options_t; typedef struct { - uint8_t data[SQFS_META_BLOCK_SIZE + 2]; - size_t offset; - size_t block_offset; - int outfd; - compressor_t *cmp; -} meta_writer_t; - -typedef struct { int outfd; options_t opt; sqfs_super_t super; @@ -62,14 +54,6 @@ int sqfs_padd_file(sqfs_info_t *info); int sqfs_super_write(sqfs_info_t *info); -meta_writer_t *meta_writer_create(int fd, compressor_t *cmp); - -void meta_writer_destroy(meta_writer_t *m); - -int meta_writer_flush(meta_writer_t *m); - -int meta_writer_append(meta_writer_t *m, const void *data, size_t size); - int write_data_to_image(sqfs_info_t *info); #endif /* MKSQUASHFS_H */ |