diff mbox

[U-Boot,v2] unzip: return uncompressed size in `filesize', and print it.

Message ID 1297452051-18532-1-git-send-email-wd@denx.de
State Accepted
Commit 67fb0622a95b6b6ac7931631fbc021c946ff30ca
Headers show

Commit Message

Wolfgang Denk Feb. 11, 2011, 7:20 p.m. UTC
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>
---
v2:	return early in case of errors,
	set 'filesize' only on success.
	This also avoids the new 'rc' variable.
	Courtesy to Peter Tyser for pointing out.

 common/cmd_mem.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

Comments

Wolfgang Denk Feb. 15, 2011, 8:46 p.m. UTC | #1
Dear Wolfgang Denk,

In message <1297452051-18532-1-git-send-email-wd@denx.de> you wrote:
> 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>
> ---
> v2:	return early in case of errors,
> 	set 'filesize' only on success.
> 	This also avoids the new 'rc' variable.
> 	Courtesy to Peter Tyser for pointing out.
> 
>  common/cmd_mem.c |   10 +++++++++-
>  1 files changed, 9 insertions(+), 1 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk
diff mbox

Patch

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 */