
Le 12/02/2011 00:11, Kim Phillips a écrit :
On Fri, 11 Feb 2011 23:41:43 +0100 Wolfgang Denkwd@denx.de wrote:
case 'V':
/*
* Skip the "U-Boot " part in
* U_BOOT_VERSION by adding 7
*/
printf("mkimage version %s\n",
U_BOOT_VERSION + 7);
Now I get it. :)
I might argue that this is kind of a hack, and that rather than trying to prune the U_BOOT_VERSION string, one should define two macros, for instance:
#define PLAIN_VERSION "whatever" #define U_BOOT_VERSION "U-Boot " PLAIN_VERSION
... which has the advantage of not affecting the existing code, or a cleaner, but more invasive, change...
#define U_BOOT_VERSION "whatever" /* without "U-Boot " */ #define U_BOOT_VERSION_BANNER "U-Boot " U_BOOT_VERSION
... and use the right macro for the right need.
I'd have done it without magic nor comments as
U_BOOT_VERSION[sizeof("U-Boot ") + 1]
or even
U_BOOT_VERSION[strlen("U-Boot ")]
The second one calls strlen() at run-time, plus it allocates the "U-Boot " string for no justifiable reason -- assuming the first one can be compile-time evaluated by the compiler, of course.
Kim
Amicalement,