diff options
| author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-01-31 11:21:30 +0100 | 
|---|---|---|
| committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2023-01-31 13:51:49 +0100 | 
| commit | cdccc69c62579b0c13b35fad0728079652b8f3c9 (patch) | |
| tree | 9fa54c710f73c5e08a9c8466e7a712eb63ee07ac /lib/io/xfrm | |
| parent | 2182129c8f359c4fa1390eaba7a65b595ccd4182 (diff) | |
Move library source into src sub-directory
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib/io/xfrm')
| -rw-r--r-- | lib/io/xfrm/istream.c | 106 | ||||
| -rw-r--r-- | lib/io/xfrm/ostream.c | 144 | 
2 files changed, 0 insertions, 250 deletions
diff --git a/lib/io/xfrm/istream.c b/lib/io/xfrm/istream.c deleted file mode 100644 index 4a1ad77..0000000 --- a/lib/io/xfrm/istream.c +++ /dev/null @@ -1,106 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -/* - * istream.c - * - * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> - */ -#include "../internal.h" - -typedef struct istream_xfrm_t { -	istream_t base; - -	istream_t *wrapped; -	xfrm_stream_t *xfrm; - -	sqfs_u8 uncompressed[BUFSZ]; -} istream_xfrm_t; - -static int xfrm_precache(istream_t *base) -{ -	istream_xfrm_t *xfrm = (istream_xfrm_t *)base; -	int ret; - -	ret = istream_precache(xfrm->wrapped); -	if (ret != 0) -		return ret; - -	for (;;) { -		const sqfs_u32 in_sz = xfrm->wrapped->buffer_used; -		const sqfs_u32 out_sz = sizeof(xfrm->uncompressed); -		sqfs_u32 in_off = 0, out_off = base->buffer_used; -		int mode = XFRM_STREAM_FLUSH_NONE; - -		if (xfrm->wrapped->eof) -			mode = XFRM_STREAM_FLUSH_FULL; - -		ret = xfrm->xfrm->process_data(xfrm->xfrm, -					       xfrm->wrapped->buffer, in_sz, -					       base->buffer + out_off, -					       out_sz - out_off, -					       &in_off, &out_off, mode); - -		if (ret == XFRM_STREAM_ERROR) { -			fprintf(stderr, "%s: internal error in decompressor.\n", -				base->get_filename(base)); -			return -1; -		} - -		base->buffer_used = out_off; -		xfrm->wrapped->buffer_offset = in_off; - -		if (ret == XFRM_STREAM_BUFFER_FULL || out_off >= out_sz) -			break; - -		ret = istream_precache(xfrm->wrapped); -		if (ret != 0) -			return ret; - -		if (xfrm->wrapped->eof && xfrm->wrapped->buffer_used == 0) { -			if (base->buffer_used == 0) -				base->eof = true; -			break; -		} -	} - -	return 0; -} - -static const char *xfrm_get_filename(istream_t *strm) -{ -	istream_xfrm_t *xfrm = (istream_xfrm_t *)strm; - -	return xfrm->wrapped->get_filename(xfrm->wrapped); -} - -static void xfrm_destroy(sqfs_object_t *obj) -{ -	istream_xfrm_t *xfrm = (istream_xfrm_t *)obj; - -	sqfs_drop(xfrm->xfrm); -	sqfs_drop(xfrm->wrapped); -	free(xfrm); -} - -istream_t *istream_xfrm_create(istream_t *strm, xfrm_stream_t *xfrm) -{ -	istream_xfrm_t *stream = calloc(1, sizeof(*stream)); -	istream_t *base = (istream_t *)stream; - -	if (stream == NULL) -		goto fail; - -	sqfs_object_init(stream, xfrm_destroy, NULL); - -	stream->wrapped = sqfs_grab(strm); -	stream->xfrm = sqfs_grab(xfrm); - -	base->precache = xfrm_precache; -	base->get_filename = xfrm_get_filename; -	base->buffer = stream->uncompressed; -	base->eof = false; -	return base; -fail: -	fprintf(stderr, "%s: error initializing decompressor stream.\n", -		strm->get_filename(strm)); -	return NULL; -} diff --git a/lib/io/xfrm/ostream.c b/lib/io/xfrm/ostream.c deleted file mode 100644 index bd94515..0000000 --- a/lib/io/xfrm/ostream.c +++ /dev/null @@ -1,144 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -/* - * ostream.c - * - * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> - */ -#include "../internal.h" - -typedef struct ostream_xfrm_t { -	ostream_t base; - -	ostream_t *wrapped; -	xfrm_stream_t *xfrm; - -	size_t inbuf_used; - -	sqfs_u8 inbuf[BUFSZ]; -	sqfs_u8 outbuf[BUFSZ]; -} ostream_xfrm_t; - -static int flush_inbuf(ostream_xfrm_t *xfrm, bool finish) -{ -	const sqfs_u32 avail_out = sizeof(xfrm->outbuf); -	const sqfs_u32 avail_in = xfrm->inbuf_used; -	const int mode = finish ? XFRM_STREAM_FLUSH_FULL : -		XFRM_STREAM_FLUSH_NONE; -	sqfs_u32 off_in = 0, off_out = 0; -	int ret; - -	while (finish || off_in < avail_in) { -		ret = xfrm->xfrm->process_data(xfrm->xfrm, -					       xfrm->inbuf + off_in, -					       avail_in - off_in, -					       xfrm->outbuf + off_out, -					       avail_out - off_out, -					       &off_in, &off_out, mode); - -		if (ret == XFRM_STREAM_ERROR) { -			fprintf(stderr, -				"%s: internal error in compressor.\n", -				xfrm->wrapped->get_filename(xfrm->wrapped)); -			return -1; -		} - -		if (ostream_append(xfrm->wrapped, xfrm->outbuf, off_out)) -			return -1; - -		off_out = 0; - -		if (ret == XFRM_STREAM_END) -			break; -	} - -	if (off_out > 0) { -		if (ostream_append(xfrm->wrapped, xfrm->outbuf, off_out)) -			return -1; -	} - -	if (off_in < avail_in) { -		memmove(xfrm->inbuf, xfrm->inbuf + off_in, avail_in - off_in); -		xfrm->inbuf_used -= off_in; -	} else { -		xfrm->inbuf_used = 0; -	} - -	return 0; -} - -static int xfrm_append(ostream_t *strm, const void *data, size_t size) -{ -	ostream_xfrm_t *xfrm = (ostream_xfrm_t *)strm; -	size_t diff; - -	while (size > 0) { -		if (xfrm->inbuf_used >= BUFSZ) { -			if (flush_inbuf(xfrm, false)) -				return -1; -		} - -		diff = BUFSZ - xfrm->inbuf_used; - -		if (diff > size) -			diff = size; - -		memcpy(xfrm->inbuf + xfrm->inbuf_used, data, diff); - -		xfrm->inbuf_used += diff; -		data = (const char *)data + diff; -		size -= diff; -	} - -	return 0; -} - -static int xfrm_flush(ostream_t *strm) -{ -	ostream_xfrm_t *xfrm = (ostream_xfrm_t *)strm; - -	if (xfrm->inbuf_used > 0) { -		if (flush_inbuf(xfrm, true)) -			return -1; -	} - -	return xfrm->wrapped->flush(xfrm->wrapped); -} - -static const char *xfrm_get_filename(ostream_t *strm) -{ -	ostream_xfrm_t *xfrm = (ostream_xfrm_t *)strm; - -	return xfrm->wrapped->get_filename(xfrm->wrapped); -} - -static void xfrm_destroy(sqfs_object_t *obj) -{ -	ostream_xfrm_t *xfrm = (ostream_xfrm_t *)obj; - -	sqfs_drop(xfrm->wrapped); -	sqfs_drop(xfrm->xfrm); -	free(xfrm); -} - -ostream_t *ostream_xfrm_create(ostream_t *strm, xfrm_stream_t *xfrm) -{ -	ostream_xfrm_t *stream = calloc(1, sizeof(*stream)); -	ostream_t *base = (ostream_t *)stream; - -	if (stream == NULL) -		goto fail; - -	sqfs_object_init(stream, xfrm_destroy, NULL); - -	stream->wrapped = sqfs_grab(strm); -	stream->xfrm = sqfs_grab(xfrm); -	stream->inbuf_used = 0; -	base->append = xfrm_append; -	base->flush = xfrm_flush; -	base->get_filename = xfrm_get_filename; -	return base; -fail: -	fprintf(stderr, "%s: error initializing compressor.\n", -		strm->get_filename(strm)); -	return NULL; -}  | 
