From cdccc69c62579b0c13b35fad0728079652b8f3c9 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Tue, 31 Jan 2023 11:21:30 +0100 Subject: Move library source into src sub-directory Signed-off-by: David Oberhollenzer --- lib/io/xfrm/istream.c | 106 ------------------------------------- lib/io/xfrm/ostream.c | 144 -------------------------------------------------- 2 files changed, 250 deletions(-) delete mode 100644 lib/io/xfrm/istream.c delete mode 100644 lib/io/xfrm/ostream.c (limited to 'lib/io/xfrm') 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 - */ -#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 - */ -#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; -} -- cgit v1.2.3