mkimage: Fix warning from fix for generating multi and script images again
authorMarek Vasut <marex@denx.de>
Mon, 7 Dec 2015 17:01:54 +0000 (18:01 +0100)
committerTom Rini <trini@konsulko.com>
Mon, 7 Dec 2015 18:28:09 +0000 (13:28 -0500)
Seems 6ae6e160 broke creating images in certain cases, there
are two problems with that patch.

First is that the expression "!x == 4 || !x == 6" is ambiguous.  The
intention here was "!(x == 4) || !(x == 6)" based on reading further in
the file, where this was borrowed from.  This however is interpreted by
gcc as "(!x) == 4 || (!x) == 6" and always false.  gcc-5.x will warn
about this case.

The second problem is that we do not want to test for the case of "(NOT x
is 4) OR (NOT x is 6)" but instead "(x is not equal to 4) AND (x is not
equal to 6)".  This is because in those two cases we already execute the
code question in another part of the file.  Rewrite the expression and
add parenthesis for clarity.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Tom Rini <trini@konsulko.com>
Cc: Philippe De Swert <philippedeswert@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
[trini: Re-word Marek's explanation]

tools/mkimage.c

index ae01cb1e83a5d545b4aa8337b503a926483d38b2..8f8b6df37cd112a6788c21e1d75c9ab401bdb870 100644 (file)
@@ -311,8 +311,7 @@ NXTARG:             ;
                exit (retval);
        }
 
-       if (!params.type == IH_TYPE_MULTI ||
-           !params.type == IH_TYPE_SCRIPT) {
+       if ((params.type != IH_TYPE_MULTI) && (params.type != IH_TYPE_SCRIPT)) {
                dfd = open(params.datafile, O_RDONLY | O_BINARY);
                if (dfd < 0) {
                        fprintf(stderr, "%s: Can't open %s: %s\n",