diff mbox

[U-Boot] Fix gunzip to work for any gziped uImage size

Message ID 1296739960-12624-1-git-send-email-Catalin@VirtualMetrix.com
State Superseded
Headers show

Commit Message

Catalin Radu Feb. 3, 2011, 1:32 p.m. UTC
Signed-off-by: Catalin Radu <Catalin@VirtualMetrix.com>
---
 lib/gunzip.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

Comments

Anthony Foiani Feb. 4, 2011, 5:23 a.m. UTC | #1
Catalin, greetings!

Some very minor code style issues that I noticed.  All cosmetic.

Catalin Radu <Catalin@VirtualMetrix.com> writes:

> Signed-off-by: Catalin Radu <Catalin@VirtualMetrix.com>
> ---
>  lib/gunzip.c |   16 ++++++++++------
>  1 files changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/lib/gunzip.c b/lib/gunzip.c
> index 482a476..2922608 100644
> --- a/lib/gunzip.c
> +++ b/lib/gunzip.c
> @@ -106,12 +106,16 @@ int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp,
>  	s.avail_in = *lenp - offset;
>  	s.next_out = dst;
>  	s.avail_out = dstlen;
> -	r = inflate(&s, Z_FINISH);
> -	if ((r != Z_STREAM_END) && (stoponerr==1)) {
> -		printf ("Error: inflate() returned %d\n", r);
> -		inflateEnd(&s);
> -		return (-1);
> -	}
> +	do {
> +		r = inflate(&s, Z_FINISH);

Space after function name?

> +		if ((r != Z_STREAM_END)&&  (r != Z_BUF_ERROR)&&  (stoponerr==1)) {

Inconsistent spacing around && operator.

Parentheses around each condition are unnecessary (both "==" and "!="
bind tighter than "&&"), but I suppose that's basically personal
preference (and the code being replaced did it that way.)

> +			printf ("Error: inflate() returned %d\n", r);
> +			inflateEnd(&s);

Space after function name?

> +	   		return (-1);

These parentheses are unnecessary.  (Another question of taste:
"return" is a keyword, not a function.)

> +	   	}
> +		s.avail_in = *lenp - offset - (int)(s.next_out - (unsigned char*)dst);
> +		s.avail_out = dstlen;
> +	} while (r == Z_BUF_ERROR);
>  	*lenp = s.next_out - (unsigned char *) dst;
>  	inflateEnd(&s);

Space after function name?

As I said, all totally trivial, but especially those "&&  " caught my eye.  :)

Best regards,
Tony
Catalin Radu Feb. 4, 2011, 11:41 a.m. UTC | #2
Anthony Foiani wrote:
> Catalin, greetings!
>
> Some very minor code style issues that I noticed.  All cosmetic.
>
> Catalin Radu <Catalin@VirtualMetrix.com> writes:
>
>   
>> Signed-off-by: Catalin Radu <Catalin@VirtualMetrix.com>
>> ---
>>  lib/gunzip.c |   16 ++++++++++------
>>  1 files changed, 10 insertions(+), 6 deletions(-)
>>
>> diff --git a/lib/gunzip.c b/lib/gunzip.c
>> index 482a476..2922608 100644
>> --- a/lib/gunzip.c
>> +++ b/lib/gunzip.c
>> @@ -106,12 +106,16 @@ int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp,
>>  	s.avail_in = *lenp - offset;
>>  	s.next_out = dst;
>>  	s.avail_out = dstlen;
>> -	r = inflate(&s, Z_FINISH);
>> -	if ((r != Z_STREAM_END) && (stoponerr==1)) {
>> -		printf ("Error: inflate() returned %d\n", r);
>> -		inflateEnd(&s);
>> -		return (-1);
>> -	}
>> +	do {
>> +		r = inflate(&s, Z_FINISH);
>>     
>
> Space after function name?
>
>   
>> +		if ((r != Z_STREAM_END)&&  (r != Z_BUF_ERROR)&&  (stoponerr==1)) {
>>     
>
> Inconsistent spacing around && operator.
>
> Parentheses around each condition are unnecessary (both "==" and "!="
> bind tighter than "&&"), but I suppose that's basically personal
> preference (and the code being replaced did it that way.)
>
>   
>> +			printf ("Error: inflate() returned %d\n", r);
>> +			inflateEnd(&s);
>>     
>
> Space after function name?
>
>   
>> +	   		return (-1);
>>     
>
> These parentheses are unnecessary.  (Another question of taste:
> "return" is a keyword, not a function.)
>
>   
>> +	   	}
>> +		s.avail_in = *lenp - offset - (int)(s.next_out - (unsigned char*)dst);
>> +		s.avail_out = dstlen;
>> +	} while (r == Z_BUF_ERROR);
>>  	*lenp = s.next_out - (unsigned char *) dst;
>>  	inflateEnd(&s);
>>     
>
> Space after function name?
>
> As I said, all totally trivial, but especially those "&&  " caught my eye.  :)
>
> Best regards,
> Tony
>   
Greetings Tony,

Thanks for the formatting observations. I will resend the re-formatted 
patch.

Regards,
Catalin
diff mbox

Patch

diff --git a/lib/gunzip.c b/lib/gunzip.c
index 482a476..2922608 100644
--- a/lib/gunzip.c
+++ b/lib/gunzip.c
@@ -106,12 +106,16 @@  int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp,
 	s.avail_in = *lenp - offset;
 	s.next_out = dst;
 	s.avail_out = dstlen;
-	r = inflate(&s, Z_FINISH);
-	if ((r != Z_STREAM_END) && (stoponerr==1)) {
-		printf ("Error: inflate() returned %d\n", r);
-		inflateEnd(&s);
-		return (-1);
-	}
+	do {
+		r = inflate(&s, Z_FINISH);
+		if ((r != Z_STREAM_END)&&  (r != Z_BUF_ERROR)&&  (stoponerr==1)) {
+			printf ("Error: inflate() returned %d\n", r);
+			inflateEnd(&s);
+	   		return (-1);
+	   	}
+		s.avail_in = *lenp - offset - (int)(s.next_out - (unsigned char*)dst);
+		s.avail_out = dstlen;
+	} while (r == Z_BUF_ERROR);
 	*lenp = s.next_out - (unsigned char *) dst;
 	inflateEnd(&s);