summaryrefslogtreecommitdiff
path: root/unpack
diff options
context:
space:
mode:
Diffstat (limited to 'unpack')
-rw-r--r--unpack/Makemodule.am1
-rw-r--r--unpack/rdsquashfs.c15
2 files changed, 15 insertions, 1 deletions
diff --git a/unpack/Makemodule.am b/unpack/Makemodule.am
index b137787..16d7ce1 100644
--- a/unpack/Makemodule.am
+++ b/unpack/Makemodule.am
@@ -3,5 +3,6 @@ rdsquashfs_SOURCES += unpack/list_files.c unpack/options.c
rdsquashfs_SOURCES += unpack/restore_fstree.c unpack/describe.c
rdsquashfs_SOURCES += unpack/fill_files.c unpack/dump_xattrs.c
rdsquashfs_LDADD = libcommon.a libcompat.a libsquashfs.la libutil.la
+rdsquashfs_LDADD += $(LZO_LIBS)
bin_PROGRAMS += rdsquashfs
diff --git a/unpack/rdsquashfs.c b/unpack/rdsquashfs.c
index 4acc71e..3cce318 100644
--- a/unpack/rdsquashfs.c
+++ b/unpack/rdsquashfs.c
@@ -35,7 +35,14 @@ int main(int argc, char **argv)
goto out_file;
}
- if (!sqfs_compressor_exists(super.compression_id)) {
+ ret = sqfs_compressor_exists(super.compression_id);
+
+#ifdef WITH_LZO
+ if (super.compression_id == SQFS_COMP_LZO)
+ ret = true;
+#endif
+
+ if (!ret) {
fprintf(stderr, "%s: unknown compressor used.\n",
opt.image_name);
goto out_file;
@@ -46,6 +53,12 @@ int main(int argc, char **argv)
SQFS_COMP_FLAG_UNCOMPRESS);
cmp = sqfs_compressor_create(&cfg);
+
+#ifdef WITH_LZO
+ if (super.compression_id == SQFS_COMP_LZO && cmp == NULL)
+ cmp = lzo_compressor_create(&cfg);
+#endif
+
if (cmp == NULL) {
fputs("Error creating compressor.\n", stderr);
goto out_file;