implement strnlen for systems that need it
PATCH v4 1/1 implement strnlen for systems that need it
Prior the Mac OS 10.7, the function strnlen() was not available. This patch implements strnlen() on Mac OS X versions that are below 10.7.
---
v4 changes:
- Added check for definition of MAC_OS_X_VERSION_10_7
- Renamed strnlen to fdt_strnlen
- Added macro that defines strnlen as fdt_strnlen
v3 changes:
- Replaced loop with memchr()
v2 changes:
- Simplified the code to make it static inline'ed
- Changed the type of count to size_t
libfdt/libfdt_env.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)
libfdt/libfdt_env.h +27 -0
@@ -109,4 +109,31 @@ static inline fdt64_t cpu_to_fdt64(uint64_t x)#undef CPU_TO_FDT16#undef EXTRACT_BYTE +#ifdef __APPLE__ +#include <AvailabilityMacros.h> + +/* strnlen() is not available on Mac OS < 10.7 */ +# if !defined(MAC_OS_X_VERSION_10_7 ) || (MAC_OS_X_VERSION_MAX_ALLOWED < \ +MAC_OS_X_VERSION_10_7 ) + +#define strnlen fdt_strnlen + +/* +* fdt_strnlen: returns the length of a string or max_count - which ever is +* smallest. +* Input 1 string: the string whose size is to be determined +* Input 2 max_count: the maximum value returned by this function +* Output: length of the string or max_count (the smallest of the two) +*/ +static inline size_t fdt_strnlen (const char *string,size_t max_count) +{ +const char *p =memchr (string,0 , max_count); +return p ? p - string : max_count; +} + +#endif /* !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED < +MAC_OS_X_VERSION_10_7) */ + +#endif /* __APPLE__ */ +#endif /* _LIBFDT_ENV_H */
Signature · 1 line
2.10.2
A message that is not in the archive (sent off-list or not yet received): 20171026011346.5758-1-programmingkidx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
David Gibson
AppliedQuoted 4 lines · John Arbuckle
Prior the Mac OS 10.7, the function
strnlen()was not available. This patch implementsstrnlen()on Mac OS X versions that are below 10.7.Signed-off-by John Arbuckle <[email protected]>
Applied, thanks.
Quoted 52 lines
---
v4 changes:
- Added check for definition ofMAC_OS_X_VERSION_10_7
- Renamed strnlen tofdt_strnlen
- Added macro that defines strnlen asfdt_strnlenv3 changes:
- Replaced loop withmemchr()v2 changes:
- Simplified the code to make it static inline'ed
- Changed the type of count tosize_tlibfdt/libfdt_env.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)libfdt/libfdt_env.h +27
-0@@ -109,4 +109,31 @@ static inline fdt64_t cpu_to_fdt64(uint64_t x)#undef CPU_TO_FDT16#undef EXTRACT_BYTE +#ifdef __APPLE__ +#include <AvailabilityMacros.h> + +/* strnlen() is not available on Mac OS < 10.7 */ +# if !defined(MAC_OS_X_VERSION_10_7 ) || (MAC_OS_X_VERSION_MAX_ALLOWED < \ +MAC_OS_X_VERSION_10_7 ) + +#define strnlen fdt_strnlen + +/* +* fdt_strnlen: returns the length of a string or max_count - which ever is +* smallest. +* Input 1 string: the string whose size is to be determined +* Input 2 max_count: the maximum value returned by this function +* Output: length of the string or max_count (the smallest of the two) +*/ +static inline size_t fdt_strnlen (const char *string,size_t max_count) +{ +const char *p =memchr (string,0 , max_count); +return p ? p - string : max_count; +} + +#endif /* !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED < +MAC_OS_X_VERSION_10_7) */ + +#endif /* __APPLE__ */ +#endif /* _LIBFDT_ENV_H */
Signature · 4 lines
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