Re: [PATCH 03/20] device property: of_property_read_string_array() returns number of strings

Sakari Ailus
2017-02-24T08:23:02Z

Hi Rob,

On Thu, Feb 23, 2017 at 05:42:07PM -0600, Rob Herring wrote:
> On Thu, Feb 23, 2017 at 11:00 AM, Sakari Ailus
> <sakari.ailus@linux.intel.com> wrote:
> > of_property_read_string_array() returns number of strings read if the
> > target array of pointers is non-NULL. fwnode_property_read_string_array()
> > is documented to return 0 in that case. Fix this.
>
> It seems of_property_read_string_array is more capable. If the number
> of strings is variable and I want use the fwnode API, then what do I
> do? IMO, you should fix the fwnode API.

It is not more capable but simply different.

The caller typically needs to allocate memory to hold a pointer array, which
means it needs to call the function with NULL output array argument anyway.
There is the special case where the maximum number of strings is known,
though. You could remove an additional call in this case.

However, why I do argue for this interface is safety: returning zero on
success is always a safe choice. Programmers often check for zero only
because it might be shorter to write or someone might thing it looks nicer:

int ret = fwnode_property_read_string_array(fwnode, "foo");
if (ret)
goto err;

Additionally, returning zero is consistent within the pack: the OF (and
fwnode) integer array access functions return zero on success, i.e. not the
number of array elements read.

--
Kind regards,

Sakari Ailus
e-mail: sakari.ailus@iki.fi XMPP: sailus@retiisi.org.uk