From: Wolfgang Denk Date: Fri, 11 Feb 2011 19:20:51 +0000 (+0100) Subject: unzip: return uncompressed size in `filesize', and print it. X-Git-Tag: v2011.03-rc2~56 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=67fb0622a95b6b6ac7931631fbc021c946ff30ca;p=oweals%2Fu-boot.git 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 --- diff --git a/common/cmd_mem.c b/common/cmd_mem.c index ccf420a132..4b524cfc16 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 */