diff mbox

[U-Boot] Add lzmadec command

Message ID CALPAzDPr5rgGeCW2YA9x6=-zabCVyivkMTR2Qt7v5ffnbDPrmQ@mail.gmail.com
State Deferred
Delegated to: Tom Rini
Headers show

Commit Message

Patrice B Dec. 19, 2013, 10:10 a.m. UTC
Hi,

 I needed to be able to uncompress lzma files. I did this command
based on unzip command and propose it if it could help. Hopping the
patch is correctly done...

  Best regards.

       Patrice


Signed-off-by: Patrice Bouchand <pbfwdlist_gmail_com>

---
 common/Makefile      |  3 +++
 common/cmd_lzmadec.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+)
 create mode 100644 common/cmd_lzmadec.c

+);

Comments

Tom Rini Jan. 24, 2014, 9:39 p.m. UTC | #1
On Thu, Dec 19, 2013 at 11:10:24AM +0100, Patrice B wrote:

> Hi,
> 
>  I needed to be able to uncompress lzma files. I did this command
> based on unzip command and propose it if it could help. Hopping the
> patch is correctly done...
> 
>   Best regards.
> 
>        Patrice
> 
> 
> Signed-off-by: Patrice Bouchand <pbfwdlist_gmail_com>

The code looks fine, but we don't add code that isn't enabled anywhere.
So unless Simon wants to pick this up for sandbox, I'm marking this as
deferred in patchwork, thanks!
Simon Glass Jan. 26, 2014, 4:02 p.m. UTC | #2
Hi Patrice,


On 24 January 2014 14:39, Tom Rini <trini@ti.com> wrote:

> On Thu, Dec 19, 2013 at 11:10:24AM +0100, Patrice B wrote:
>
> > Hi,
> >
> >  I needed to be able to uncompress lzma files. I did this command
> > based on unzip command and propose it if it could help. Hopping the
> > patch is correctly done...
> >
> >   Best regards.
> >
> >        Patrice
> >
> >
> > Signed-off-by: Patrice Bouchand <pbfwdlist_gmail_com>
>


>
> The code looks fine, but we don't add code that isn't enabled anywhere.
> So unless Simon wants to pick this up for sandbox, I'm marking this as
> deferred in patchwork, thanks!
>
>
It's fine to enable this in sandbox if you want to - just send a separate
patch to add the CONFIG to include/configs/sandbox.h, test it in sandbox
(make sandbox_config; make; ./u-boot) and Cc me. I will pick it up.

Regards,
Simon


> --
> Tom
>
diff mbox

Patch

diff --git a/common/Makefile b/common/Makefile
index d12cba5..b99a6b0 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -158,6 +158,9 @@  obj-$(CONFIG_CMD_UBI) += cmd_ubi.o
 obj-$(CONFIG_CMD_UBIFS) += cmd_ubifs.o
 obj-$(CONFIG_CMD_UNIVERSE) += cmd_universe.o
 obj-$(CONFIG_CMD_UNZIP) += cmd_unzip.o
+ifdef CONFIG_LZMA
+obj-$(CONFIG_CMD_LZMADEC) += cmd_lzmadec.o
+endif
 ifdef CONFIG_CMD_USB
 obj-y += cmd_usb.o
 obj-y += usb.o usb_hub.o
diff --git a/common/cmd_lzmadec.c b/common/cmd_lzmadec.c
new file mode 100644
index 0000000..07103d3
--- /dev/null
+++ b/common/cmd_lzmadec.c
@@ -0,0 +1,54 @@ 
+/*
+ * (C) Copyright 2013 Patrice Bouchand <pbfwdlist_gmail_com>
+ * lzma uncompress command in Uboot
+ *
+ * made from existing cmd_unzip.c file of Uboot
+ *
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+
+#include <lzma/LzmaTypes.h>
+#include <lzma/LzmaDec.h>
+#include <lzma/LzmaTools.h>
+
+static int do_lzmadec(cmd_tbl_t *cmdtp, int flag, int argc, char *
const argv[])
+{
+    unsigned long src, dst;
+    unsigned long src_len = ~0UL, dst_len = ~0UL;
+    int ret;
+
+    switch (argc) {
+        case 4:
+            dst_len = simple_strtoul(argv[3], NULL, 16);
+            /* fall through */
+        case 3:
+            src = simple_strtoul(argv[1], NULL, 16);
+            dst = simple_strtoul(argv[2], NULL, 16);
+            break;
+        default:
+            return CMD_RET_USAGE;
+    }
+
+    ret = lzmaBuffToBuffDecompress((void *) dst, &src_len,
+            (void *) src, dst_len);
+
+   if (ret != SZ_OK) {
+      return 1;
+   }
+   printf("Uncompressed size: %ld = 0x%lX\n", src_len, src_len);
+   setenv_hex("filesize", src_len);
+
+    return 0;
+}
+
+U_BOOT_CMD(
+    lzmadec,    4,    1,    do_lzmadec,
+    "lzma uncompress a memory region",
+    "srcaddr dstaddr [dstsize]"