[PATCH v2 1/2] of: rework of_node_cmp() to support short and full node names

Yegor Yefremov yegorslists at googlemail.com
Wed Jan 13 08:01:37 PST 2016


Hi Sascha,

On Wed, Jan 13, 2016 at 4:50 PM, Sascha Hauer <s.hauer at pengutronix.de> wrote:
> Hi Yegor,
>
> On Tue, Jan 12, 2016 at 11:16:38AM +0100, yegorslists at googlemail.com wrote:
>> + * Compare node names using the length of the node in question
>> + * and then check, if the in-tree node has '@' as next character.
>> + * This way both short names like 'name' and full like 'name at 1' will
>> + * be accepted.
>> + */
>> +int of_node_cmp(const char *s1, const char *s2)
>> +{
>> +     int len = strlen(s2);
>> +
>> +     if (strncasecmp(s1, s2, len) != 0)
>> +             return 1;
>> +
>> +     if (s1[len] == '\0')
>> +             return 0;
>> +     else if (!memchr(s2, '@', len) && (s1[len] == '@'))
>> +             return 0;
>> +     else
>> +             return 1;
>> +}
>> +
>> +/*
>>   * Iterate over all nodes of a tree. As a devicetree does not
>>   * have a dedicated list head, the start node (usually the root
>>   * node) will not be iterated over.
>> diff --git a/include/of.h b/include/of.h
>> index 75cc3c1..3b18eef 100644
>> --- a/include/of.h
>> +++ b/include/of.h
>> @@ -10,7 +10,6 @@
>>  /* Default string compare functions */
>>  #define of_compat_cmp(s1, s2, l)     strcasecmp((s1), (s2))
>>  #define of_prop_cmp(s1, s2)          strcmp((s1), (s2))
>> -#define of_node_cmp(s1, s2)          strcasecmp((s1), (s2))
>
> of_node_cmp is used elsewhere and a direct copy from the Kernel. You
> should introduce a new function for your purpose instead of modifying
> it.

What about of_node_eq()?

Yegor



More information about the barebox mailing list