From: Ben Pfaff Date: Tue, 22 Feb 2011 18:36:13 +0000 (-0800) Subject: string: Implement strnlen() if it is missing. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e191d8fae33819ce953b0d02e0b2df0cd9b400f;p=openvswitch string: Implement strnlen() if it is missing. --- diff --git a/configure.ac b/configure.ac index 28af2fec..47d09076 100644 --- a/configure.ac +++ b/configure.ac @@ -56,7 +56,7 @@ OVS_CHECK_IF_PACKET OVS_CHECK_STRTOK_R AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec, struct stat.st_mtimensec], [], [], [[#include ]]) -AC_CHECK_FUNCS([mlockall strsignal getloadavg statvfs setmntent]) +AC_CHECK_FUNCS([mlockall strnlen strsignal getloadavg statvfs setmntent]) AC_CHECK_HEADERS([mntent.h sys/statvfs.h]) OVS_CHECK_PKIDIR diff --git a/lib/string.c b/lib/string.c new file mode 100644 index 00000000..f9ce788e --- /dev/null +++ b/lib/string.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2009, 2011 Nicira Networks. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include + +#ifndef HAVE_STRNLEN +size_t +strnlen(const char *s, size_t maxlen) +{ + const char *end = memchr(s, '\0', maxlen); + return end ? end - s : maxlen; +} +#endif diff --git a/lib/string.h b/lib/string.h index 779a9e6f..5e372bbc 100644 --- a/lib/string.h +++ b/lib/string.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Nicira Networks. + * Copyright (c) 2009, 2011 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,4 +31,10 @@ #undef strtok_r #endif +#ifndef HAVE_STRNLEN +#undef strnlen +#define strnlen rpl_strnlen +size_t strnlen(const char *, size_t maxlen); +#endif + #endif /* string.h wrapper */