summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2011-02-11 20:20:51 +0100
committerWolfgang Denk <wd@denx.de>2011-02-15 21:46:39 +0100
commit67fb0622a95b6b6ac7931631fbc021c946ff30ca (patch)
tree031147640e0fa14386fc92040188008e4c35e586
parentcc22b795fb5fee72bd567eec5d33a11e8b989086 (diff)
downloadu-boot-imx-67fb0622a95b6b6ac7931631fbc021c946ff30ca.zip
u-boot-imx-67fb0622a95b6b6ac7931631fbc021c946ff30ca.tar.gz
u-boot-imx-67fb0622a95b6b6ac7931631fbc021c946ff30ca.tar.bz2
unzip: return uncompressed size in `filesize', and print it.
The unzip command did not provide a way for the caller to get any information about the uncompressed size. To make it better usable in scripts, we now store the uncompressed size in the `filesize' variable, like we do when for example loading a file over the network or when reading it from a file system. Following that analogy, it is only consequent to also print the size. Signed-off-by: Wolfgang Denk <wd@denx.de>
-rw-r--r--common/cmd_mem.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/common/cmd_mem.c b/common/cmd_mem.c
index ccf420a..4b524cf 100644
--- a/common/cmd_mem.c
+++ b/common/cmd_mem.c
@@ -1212,6 +1212,7 @@ int do_unzip ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
unsigned long src, dst;
unsigned long src_len = ~0UL, dst_len = ~0UL;
+ char buf[32];
switch (argc) {
case 4:
@@ -1225,7 +1226,14 @@ int do_unzip ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return cmd_usage(cmdtp);
}
- return !!gunzip((void *) dst, dst_len, (void *) src, &src_len);
+ if (gunzip((void *) dst, dst_len, (void *) src, &src_len) != 0)
+ return 1;
+
+ printf("Uncompressed size: %ld = 0x%lX\n", src_len, src_len);
+ sprintf(buf, "%lX", src_len);
+ setenv("filesize", buf);
+
+ return 0;
}
#endif /* CONFIG_CMD_UNZIP */