summaryrefslogtreecommitdiff
path: root/mkfs
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-04-30 20:24:42 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-05-02 12:40:06 +0200
commit76267654ebd43c1dfa28aa290b0d320df9781b2d (patch)
treefe6d0d056f2a21438aba5e0a26e55dfbf0d4ebf4 /mkfs
parentea1cb44cc85e70fdeb8514fc909c54af72b1bfe9 (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.am5
-rw-r--r--mkfs/meta_writer.c92
-rw-r--r--mkfs/mksquashfs.h16
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 */