summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--ubifs-utils/mkfs.ubifs/compr.c15
-rw-r--r--ubifs-utils/mkfs.ubifs/mkfs.ubifs.c24
3 files changed, 36 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index ed9d83b..bd9504a 100644
--- a/Makefile
+++ b/Makefile
@@ -129,5 +129,5 @@ $(foreach v,$(UBI_BINS),$(eval $(call mkdep,ubi-utils/,$(v),libubi.a ubiutils-co
obj-mkfs.ubifs = crc16.o lpt.o compr.o devtable.o \
hashtable/hashtable.o hashtable/hashtable_itr.o
LDFLAGS_mkfs.ubifs = $(ZLIBLDFLAGS) $(LZOLDFLAGS) $(UUIDLDFLAGS)
-LDLIBS_mkfs.ubifs = -lz -llzo2 -lm -luuid
+LDLIBS_mkfs.ubifs = -lz $(LZOLDLIBS) -lm -luuid
$(call mkdep,ubifs-utils/mkfs.ubifs/,mkfs.ubifs,,ubi-utils/libubi.a)
diff --git a/ubifs-utils/mkfs.ubifs/compr.c b/ubifs-utils/mkfs.ubifs/compr.c
index 34b2f60..d534f10 100644
--- a/ubifs-utils/mkfs.ubifs/compr.c
+++ b/ubifs-utils/mkfs.ubifs/compr.c
@@ -24,7 +24,9 @@
#include <stdio.h>
#include <stdint.h>
#include <string.h>
+#ifndef WITHOUT_LZO
#include <lzo/lzo1x.h>
+#endif
#include <linux/types.h>
#define crc32 __zlib_crc32
@@ -85,6 +87,7 @@ static int zlib_deflate(void *in_buf, size_t in_len, void *out_buf,
return 0;
}
+#ifndef WITHOUT_LZO
static int lzo_compress(void *in_buf, size_t in_len, void *out_buf,
size_t *out_len)
{
@@ -102,6 +105,7 @@ static int lzo_compress(void *in_buf, size_t in_len, void *out_buf,
return 0;
}
+#endif
static int no_compress(void *in_buf, size_t in_len, void *out_buf,
size_t *out_len)
@@ -113,6 +117,7 @@ static int no_compress(void *in_buf, size_t in_len, void *out_buf,
static char *zlib_buf;
+#ifndef WITHOUT_LZO
static int favor_lzo_compress(void *in_buf, size_t in_len, void *out_buf,
size_t *out_len, int *type)
{
@@ -158,6 +163,7 @@ select_zlib:
memcpy(out_buf, zlib_buf, zlib_len);
return 0;
}
+#endif
int compress_data(void *in_buf, size_t in_len, void *out_buf, size_t *out_len,
int type)
@@ -169,6 +175,10 @@ int compress_data(void *in_buf, size_t in_len, void *out_buf, size_t *out_len,
return MKFS_UBIFS_COMPR_NONE;
}
+#ifdef WITHOUT_LZO
+ {
+ switch (type) {
+#else
if (c->favor_lzo)
ret = favor_lzo_compress(in_buf, in_len, out_buf, out_len, &type);
else {
@@ -176,6 +186,7 @@ int compress_data(void *in_buf, size_t in_len, void *out_buf, size_t *out_len,
case MKFS_UBIFS_COMPR_LZO:
ret = lzo_compress(in_buf, in_len, out_buf, out_len);
break;
+#endif
case MKFS_UBIFS_COMPR_ZLIB:
ret = zlib_deflate(in_buf, in_len, out_buf, out_len);
break;
@@ -197,9 +208,13 @@ int compress_data(void *in_buf, size_t in_len, void *out_buf, size_t *out_len,
int init_compression(void)
{
+#ifdef WITHOUT_LZO
+ lzo_mem = NULL;
+#else
lzo_mem = malloc(LZO1X_999_MEM_COMPRESS);
if (!lzo_mem)
return -1;
+#endif
zlib_buf = malloc(UBIFS_BLOCK_SIZE * WORST_COMPR_FACTOR);
if (!zlib_buf) {
diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
index 58200de..90e727c 100644
--- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
+++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
@@ -483,7 +483,11 @@ static int get_options(int argc, char**argv)
c->orph_lebs = 1;
c->key_hash = key_r5_hash;
c->key_len = UBIFS_SK_LEN;
+#ifdef WITHOUT_LZO
+ c->default_compr = UBIFS_COMPR_ZLIB;
+#else
c->default_compr = UBIFS_COMPR_LZO;
+#endif
c->favor_percent = 20;
c->lsave_cnt = 256;
c->leb_size = -1;
@@ -592,21 +596,29 @@ static int get_options(int argc, char**argv)
return err_msg("bad key hash");
break;
case 'x':
- if (strcmp(optarg, "favor_lzo") == 0)
- c->favor_lzo = 1;
+ if (strcmp(optarg, "none") == 0)
+ c->default_compr = UBIFS_COMPR_NONE;
else if (strcmp(optarg, "zlib") == 0)
c->default_compr = UBIFS_COMPR_ZLIB;
- else if (strcmp(optarg, "none") == 0)
- c->default_compr = UBIFS_COMPR_NONE;
+#ifndef WITHOUT_LZO
+ else if (strcmp(optarg, "favor_lzo") == 0)
+ c->favor_lzo = 1;
else if (strcmp(optarg, "lzo") != 0)
+#else
+ else
+#endif
return err_msg("bad compressor name");
break;
case 'X':
+#ifdef WITHOT_LZO
+ return err_msg("built without LZO support");
+#else
c->favor_percent = strtol(optarg, &endp, 0);
if (*endp != '\0' || endp == optarg ||
c->favor_percent <= 0 || c->favor_percent >= 100)
return err_msg("bad favor LZO percent '%s'",
optarg);
+#endif
break;
case 'j':
c->max_bud_bytes = get_bytes(optarg);
@@ -1464,7 +1476,11 @@ static int add_file(const char *path_name, struct stat *st, ino_t inum,
out_len = NODE_BUFFER_SIZE - UBIFS_DATA_NODE_SZ;
if (c->default_compr == UBIFS_COMPR_NONE &&
(flags & FS_COMPR_FL))
+#ifdef WITHOUT_LZO
+ use_compr = UBIFS_COMPR_ZLIB;
+#else
use_compr = UBIFS_COMPR_LZO;
+#endif
else
use_compr = c->default_compr;
compr_type = compress_data(buf, bytes_read, &dn->data,