Commit dc627931 authored by Stefan Tauner's avatar Stefan Tauner
Browse files

Make strnlen() visible in old versions of glibc


Strnlen() is in POSIX 2008 but was a GNU extension up to glibc 2.10
requiring to define _GNU_SOURCE. This fixes compilation on CentOS 4.9.
Also, move our implementation of strnlen() that was added to support
DJGPP to helpers.c.

Corresponding to flashrom svn r1878.
Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
parent 0cbd8c25
...@@ -21,6 +21,13 @@ ...@@ -21,6 +21,13 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
/* strnlen is in POSIX but was a GNU extension up to glibc 2.10 */
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ < 10) || __GLIBC__ < 2
#define _GNU_SOURCE
#else
#define _POSIX_C_SOURCE 200809L
#endif
#include <strings.h> #include <strings.h>
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
...@@ -86,16 +93,6 @@ static const struct { ...@@ -86,16 +93,6 @@ static const struct {
}; };
#if CONFIG_INTERNAL_DMI == 1 #if CONFIG_INTERNAL_DMI == 1
#ifdef __DJGPP__ /* There is no strnlen in DJGPP. FIXME: Move this to a common utility file. */
size_t strnlen(const char *str, size_t n)
{
size_t i;
for (i = 0; i < n && str[i] != '\0'; i++)
;
return i;
}
#endif
static bool dmi_checksum(const uint8_t * const buf, size_t len) static bool dmi_checksum(const uint8_t * const buf, size_t len)
{ {
uint8_t sum = 0; uint8_t sum = 0;
......
...@@ -260,6 +260,9 @@ void tolower_string(char *str); ...@@ -260,6 +260,9 @@ void tolower_string(char *str);
#ifdef __MINGW32__ #ifdef __MINGW32__
char* strtok_r(char *str, const char *delim, char **nextp); char* strtok_r(char *str, const char *delim, char **nextp);
#endif #endif
#if defined(__DJGPP__)
size_t strnlen(const char *str, size_t n);
#endif
/* flashrom.c */ /* flashrom.c */
extern const char flashrom_version[]; extern const char flashrom_version[];
......
...@@ -91,3 +91,13 @@ char* strtok_r(char *str, const char *delim, char **nextp) ...@@ -91,3 +91,13 @@ char* strtok_r(char *str, const char *delim, char **nextp)
} }
#endif #endif
/* There is no strnlen in DJGPP */
#if defined(__DJGPP__)
size_t strnlen(const char *str, size_t n)
{
size_t i;
for (i = 0; i < n && str[i] != '\0'; i++)
;
return i;
}
#endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment