From 9ab1558f6ed457bb380131c2221069df62b55d3a Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 2 Dec 2014 12:42:23 +0100 Subject: tools: Provide strnlen() if missing --- tools/build/Makefile.am | 4 ++-- tools/build/compat.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ tools/build/config.h.in | 3 +++ tools/build/configure.ac | 2 +- 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 tools/build/compat.c (limited to 'tools') diff --git a/tools/build/Makefile.am b/tools/build/Makefile.am index e8794917b2..5c6f7baab5 100644 --- a/tools/build/Makefile.am +++ b/tools/build/Makefile.am @@ -5,9 +5,9 @@ bin_PROGRAMS = cklength eolstrip packhex unhex rtems-bin2c noinst_PROGRAMS = binpatch cklength_SOURCES = cklength.c -eolstrip_SOURCES = eolstrip.c +eolstrip_SOURCES = eolstrip.c compat.c packhex_SOURCES = packhex.c -unhex_SOURCES = unhex.c +unhex_SOURCES = unhex.c compat.c binpatch_SOURCES = binpatch.c rtems_bin2c_SOURCES = rtems-bin2c.c diff --git a/tools/build/compat.c b/tools/build/compat.c new file mode 100644 index 0000000000..9c6eb10af5 --- /dev/null +++ b/tools/build/compat.c @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include "config.h" + +#include + +#if !HAVE_STRNLEN +size_t strnlen(const char *s, size_t maxlen) +{ + const char *n = memchr(s, '\0', maxlen); + + return n != NULL ? n - s : maxlen; +} +#endif diff --git a/tools/build/config.h.in b/tools/build/config.h.in index 7274c7c8d8..9aa5c43023 100644 --- a/tools/build/config.h.in +++ b/tools/build/config.h.in @@ -30,6 +30,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H +/* Define to 1 if you have the `strnlen' function. */ +#undef HAVE_STRNLEN + /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL diff --git a/tools/build/configure.ac b/tools/build/configure.ac index 0d8b2a2e4c..616b28cc0b 100644 --- a/tools/build/configure.ac +++ b/tools/build/configure.ac @@ -10,7 +10,7 @@ AM_MAINTAINER_MODE AC_PROG_CC AC_CHECK_HEADERS([getopt.h libgen.h]) -AC_CHECK_FUNCS(strerror strtol basename) +AC_CHECK_FUNCS(strerror strtol basename strnlen) RTEMS_PATH_KSH -- cgit v1.2.3