From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37236) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e6peY-0000Z5-MW for qemu-devel@nongnu.org; Mon, 23 Oct 2017 23:13:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e6peV-0003Pp-Hy for qemu-devel@nongnu.org; Mon, 23 Oct 2017 23:13:18 -0400 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) From: Programmingkid In-Reply-To: <20171023160959.GC10220@stefanha-x1.localdomain> Date: Mon, 23 Oct 2017 23:13:13 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: <2ACA132F-70DF-488A-AE41-59FFF08E8755@gmail.com> References: <20171023025016.3088-1-programmingkidx@gmail.com> <20171023160959.GC10220@stefanha-x1.localdomain> Subject: Re: [Qemu-devel] [libfdt][PATCH v3] implement strnlen for systems that need it List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: david@gibson.dropbear.id.au, richard.henderson@linaro.org, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, peter.maydell@linaro.org, devicetree-compiler@vger.kernel.org, ian@freebsd.org > On Oct 23, 2017, at 12:09 PM, Stefan Hajnoczi = wrote: >=20 > On Sun, Oct 22, 2017 at 10:50:16PM -0400, John Arbuckle wrote: >> 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. >>=20 >> Signed-off-by: John Arbuckle >> --- >> v3 changes: >> - Replaced loop with memchr() >>=20 >> v2 changes: >> - Simplified the code to make it static inline'ed >> - Changed the type of count to size_t >>=20 >> libfdt/libfdt_env.h | 24 ++++++++++++++++++++++++ >> 1 file changed, 24 insertions(+) >>=20 >> diff --git a/libfdt/libfdt_env.h b/libfdt/libfdt_env.h >> index 952056c..d43b66b 100644 >> --- a/libfdt/libfdt_env.h >> +++ b/libfdt/libfdt_env.h >> @@ -109,4 +109,28 @@ static inline fdt64_t cpu_to_fdt64(uint64_t x) >> #undef CPU_TO_FDT16 >> #undef EXTRACT_BYTE >>=20 >> +#ifdef __APPLE__ >> +#include >> + >> +#define MAC_OS_X_VERSION_10_7 1070 >=20 > Apple has already defined MAC_OS_X_VERSION_10_7 here: > = https://opensource.apple.com/source/xnu/xnu-1699.24.8/EXTERNAL_HEADERS/Ava= ilabilityMacros.h >=20 > To avoid a compiler warning, please use: >=20 > #ifndef MAC_OS_X_VERSION_10_7 > #define MAC_OS_X_VERSION_10_7 1070 > #endif Sounds logical. >=20 >> +/* strnlen() is not available on Mac OS < 10.7 */ >> +# if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7) >=20 > Does this cover the case where MAC_OS_X_VERSION_MAX_ALLOWED is set to > <1070 on a 10.7+ build machine? It's possible that the > header would define strnlen() and your code redefines the function > (compiler error). If MAC_OS_X_VERSION_MAX_ALLOWED is equal to 1070 then this code would = not be executed. This branch would only be taken if = MAC_OS_X_VERSION_MAX_ALLOWED is less than 1070. So there would not be a = compiler error. >=20 > It would be best to check how , , and > work to make sure that all cases are handled. = I > don't have access to a Mac right now, sorry. >=20 > Perhaps this approach works better: >=20 > # ifndef MAC_OS_X_VERSION_10_7 I think you are saying I should remove the "#ifdef __APPLE__" code and = just check to see if MAC_OS_X_VERSION_10_7 is defined. That might work = on Mac OS 10.6 and 10.5, but it would probably cause problems with = non-Mac-OS platforms.=20