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

Sascha Hauer s.hauer at pengutronix.de
Wed Jan 13 07:50:13 PST 2016


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.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list