
Wolfgang Denk wrote:
Except that his version works and your version doesn't. With your version sprintf will stop reading the format string after "controller".
Yes, and this is why I call this a dirty hack, as it's obfuscating what's going on and what the intended result is.
I disagree. It's quite clear what I'm trying to do. I'm trying to insert a NULL character into a string. Since device tree properties use a NULL to delimit multiple strings, it's clear that this is what the "0" is for.
Look at the original code:
len = sprintf(compat_buf, "fsl,%c%s-l2-cache-controller", tolower(cpu->name[0]), cpu->name + 1);
sprintf(&compat_buf[len + 1], "cache");
I think my patch is clearer than this. In fact, because the original code was so obscure, there was a bug in it. I could have done this:
len = sprintf(compat_buf, "fsl,%c%s-l2-cache-controller", tolower(cpu->name[0]), cpu->name + 1);
len += sprintf(&compat_buf[len + 1], "cache") + 2;
Where the "+ 2" is for each NULL in the string. I just don't see how this is better than my version.