Dear Wolfgang Wegner,

In message <1256916625-30792-1-git-send-email-w.weg...@astro-kom.de> you wrote:
> imxtract currently can not handle compressed images. This patch adds
> handling for bzip2 and zip compression. In both cases, a destination
> address has to be specified for extraction.
> 
> Signed-off-by: Wolfgang Wegner <w.weg...@astro-kom.de>
...

> +/* there is no prototype in zlib.h */
> +int  gunzip (void *, int, unsigned char *, unsigned long *);

Then we should add it there, once.

> +#ifndef CFG_XIMG_LEN
> +#define CFG_XIMG_LEN 0x800000        /* use 8MByte as default max gunzip 
> size */
> +#endif

CFG_ has been deprectaed a long, long time ago. Please use CONFIG_SYS_
instead.

> -                     printf("Wrong Compression Type for %s command\n",
> +             comp = image_get_comp (hdr);
> +             if ((comp != IH_COMP_NONE) && (argc < 4)) {
> +                     printf("Must specify load address for %s command with 
> compressed image\n",

Line too long. (Check globally).

>       if (argc > 3) {
> -             memcpy((char *) dest, (char *) data, len);
> +             switch (comp) {
> +             case IH_COMP_NONE:
> +#if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
> +                     {
> +                             size_t l = len;
> +                             void *to = (void *) dest;
> +                             void *from = (void *)data;
> +
> +                             printf ("   Loading part %d ... ", part);
> +
> +                             while (l > 0) {
> +                                     size_t tail = (l > CHUNKSZ) ? CHUNKSZ : 
> l;
> +                                     WATCHDOG_RESET();
> +                                     memmove (to, from, tail);
> +                                     to += tail;
> +                                     from += tail;
> +                                     l -= tail;
> +                             }
> +                     }
> +#else        /* !(CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG) */
> +                     memmove ((char *) dest, (char *)data, len);
> +#endif       /* CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG */

It seems wrong to me to have inconsistent behaviour (with printf() in
the "if", without in the "else" branch).

> +             case IH_COMP_GZIP:
> +                     printf ("   Uncompressing part %d (len %d) ... ", part, 
> len);
...
> +#if defined(CONFIG_BZIP2)
> +             case IH_COMP_BZIP2:
> +                     printf ("   Uncompressing part %d ... ", part);

Inconsistent behaviour. Why do we print "len" for IH_COMP_GZIP, but
not for IH_COMP_BZIP2 ?


Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
I've got to get something inside me. Some coffee  or  something.  And
then the world will somehow be better.
                                     - Terry Pratchett, _Men at Arms_
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to