On Wed, Oct 18, 2017 at 06:31:16PM -0400, John Arbuckle wrote: > Implement the strnlen() function if it isn't implemented. > > Signed-off-by: John Arbuckle <programmingk...@gmail.com>
Nice idea, but this won't work. > --- > libfdt/fdt_ro.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/libfdt/fdt_ro.c b/libfdt/fdt_ro.c > index 3d00d2e..a7986fb 100644 > --- a/libfdt/fdt_ro.c > +++ b/libfdt/fdt_ro.c > @@ -55,6 +55,30 @@ > > #include "libfdt_internal.h" > > +/* if the current environment does not define strnlen */ > +#ifndef strnlen This will only trigger if strnlen is defined as a macro. The C library (or other environment) *might* do that, but there's no guarantee, whether or not it defines strnlen as a function. With extra complications if the compiler has a strnlen builtin like gcc. > + > +/* This eliminates the missing prototype warning */ > +int strnlen(const char *string, int max_count); > + > +/* > + * strnlen: return the length of a string or max_count > + * which ever is shortest > + */ > + > +int strnlen(const char *string, int max_count) Also strnlen is supposed to take and return size_t, not int. > +{ > + int count; > + for(count = 0; count < max_count; count++) { > + if (string[count] == '\0') { > + break; > + } > + } > + return count; > +} > + > +#endif /* strnlen */ > + > static int _fdt_nodename_eq(const void *fdt, int offset, > const char *s, int len) > { In any case, this sort of compatibility munging is the job of libfdt_env.h. It's purpose is to provide all the external things that libfdt needs - there's not that many of them and strnlen() is one. The included libfdt_env.h is intended for POSIXy userspace environments, which should already include strnlen() in string.h. If your environment does not provide strnlen(), you probably need your own version of libfdt_env.h, which will need to define it. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature