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 */ | 
