[PATCH] add new 'unzip' command to u-boot commandline

common/cmd_mem.c: new command "unzip srcaddr dstaddr [dstsize]" to unzip from
memory to memory, and option CONFIG_CMD_UNZIP to enable it
    
Signed-off-by: Werner Almesberger <[EMAIL PROTECTED]>
Signed-off-by: Harald Welte <[EMAIL PROTECTED]>

diff --git a/common/cmd_mem.c b/common/cmd_mem.c
index d6d7a5b..656f519 100644
--- a/common/cmd_mem.c
+++ b/common/cmd_mem.c
@@ -1191,6 +1191,34 @@ int do_mem_crc (cmd_tbl_t *cmdtp, int flag, int argc, 
char *argv[])
 }
 #endif /* CONFIG_CRC32_VERIFY */
 
+
+#ifdef CONFIG_CMD_UNZIP
+int  gunzip (void *, int, unsigned char *, unsigned long *);
+
+int do_unzip ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       unsigned long src, dst;
+       unsigned long src_len = ~0UL, dst_len = ~0UL;
+       int err;
+
+       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:
+                       printf ("Usage:\n%s\n", cmdtp->usage);
+                       return 1;
+       }
+
+       return !!gunzip((void *) dst, dst_len, (void *) src, &src_len);
+}
+#endif /* CONFIG_CMD_UNZIP */
+
+
 /**************************************************/
 #if defined(CONFIG_CMD_MEMORY)
 U_BOOT_CMD(
@@ -1294,5 +1322,13 @@ U_BOOT_CMD(
 );
 #endif /* CONFIG_MX_CYCLIC */
 
+#ifdef CONFIG_CMD_UNZIP
+U_BOOT_CMD(
+       unzip,  4,      1,      do_unzip,
+       "unzip - unzip a memory region\n",
+       "srcaddr dstaddr [dstsize]\n"
+);
+#endif /* CONFIG_CMD_UNZIP */
+
 #endif
 #endif
diff --git a/include/config_cmd_all.h b/include/config_cmd_all.h
index c2bb094..2cb2f67 100644
--- a/include/config_cmd_all.h
+++ b/include/config_cmd_all.h
@@ -77,6 +77,7 @@
 #define CONFIG_CMD_SPI         /* SPI utility                  */
 #define CONFIG_CMD_TERMINAL    /* built-in Serial Terminal     */
 #define CONFIG_CMD_UNIVERSE    /* Tundra Universe Support      */
+#define CONFIG_CMD_UNZIP       /* unzip from memory to memory  */
 #define CONFIG_CMD_USB         /* USB Support                  */
 #define CONFIG_CMD_VFD         /* VFD support (TRAB)           */
 #define CONFIG_CMD_XIMG                /* Load part of Multi Image     */
-- 
- Harald Welte <[EMAIL PROTECTED]>           http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
                                                  (ETSI EN 300 175-7 Ch. A6)

Attachment: signature.asc
Description: Digital signature

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users

Reply via email to