|
@@ -14,9 +14,37 @@
|
|
|
#endif
|
|
|
|
|
|
#include "sqfs_decompressor.h"
|
|
|
-#include "sqfs_filesystem.h"
|
|
|
#include "sqfs_utils.h"
|
|
|
|
|
|
+int sqfs_decompressor_init(struct squashfs_ctxt *ctxt)
|
|
|
+{
|
|
|
+ u16 comp_type = get_unaligned_le16(&ctxt->sblk->compression);
|
|
|
+
|
|
|
+ switch (comp_type) {
|
|
|
+#if IS_ENABLED(CONFIG_ZLIB)
|
|
|
+ case SQFS_COMP_ZLIB:
|
|
|
+ break;
|
|
|
+#endif
|
|
|
+ default:
|
|
|
+ printf("Error: unknown compression type.\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+void sqfs_decompressor_cleanup(struct squashfs_ctxt *ctxt)
|
|
|
+{
|
|
|
+ u16 comp_type = get_unaligned_le16(&ctxt->sblk->compression);
|
|
|
+
|
|
|
+ switch (comp_type) {
|
|
|
+#if IS_ENABLED(CONFIG_ZLIB)
|
|
|
+ case SQFS_COMP_ZLIB:
|
|
|
+ break;
|
|
|
+#endif
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
#if IS_ENABLED(CONFIG_ZLIB)
|
|
|
static void zlib_decompression_status(int ret)
|
|
|
{
|
|
@@ -35,14 +63,14 @@ static void zlib_decompression_status(int ret)
|
|
|
#endif
|
|
|
|
|
|
int sqfs_decompress(u16 comp_type, void *dest, unsigned long *dest_len,
|
|
|
- void *source, u32 lenp)
|
|
|
+ void *source, u32 src_len)
|
|
|
{
|
|
|
int ret = 0;
|
|
|
|
|
|
switch (comp_type) {
|
|
|
#if IS_ENABLED(CONFIG_ZLIB)
|
|
|
case SQFS_COMP_ZLIB:
|
|
|
- ret = uncompress(dest, dest_len, source, lenp);
|
|
|
+ ret = uncompress(dest, dest_len, source, src_len);
|
|
|
if (ret) {
|
|
|
zlib_decompression_status(ret);
|
|
|
return -EINVAL;
|