diff options
author | Miklós Márton <martonmiklosqdev@gmail.com> | 2019-07-30 00:03:22 +0200 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2019-10-04 11:03:46 +0000 |
commit | 8900d6c8e1438ee2a4a77c8e4d3feab81ee261e2 (patch) | |
tree | 5664d15b2f3ca63f9f96ef3284cbbf5c46499179 | |
parent | 7d6b526ef5b7b11f89eee37062e91590f5fa7f43 (diff) | |
download | flashrom-git-8900d6c8e1438ee2a4a77c8e4d3feab81ee261e2.tar.gz |
helpers: Implement strndup() for MinGW
Provide strndup implementation if compiled with MinGW because
it is a POSIX only method
Signed-off-by: Miklós Márton <martonmiklosqdev@gmail.com>
Change-Id: If418080bffff1f5961cacf2a300ea9c666682458
Reviewed-on: https://review.coreboot.org/c/flashrom/+/34621
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r-- | flash.h | 1 | ||||
-rw-r--r-- | helpers.c | 14 |
2 files changed, 15 insertions, 0 deletions
@@ -314,6 +314,7 @@ uint8_t reverse_byte(uint8_t x); void reverse_bytes(uint8_t *dst, const uint8_t *src, size_t length); #ifdef __MINGW32__ char* strtok_r(char *str, const char *delim, char **nextp); +char *strndup(const char *str, size_t size); #endif #if defined(__DJGPP__) || (!defined(__LIBPAYLOAD__) && !defined(HAVE_STRNLEN)) size_t strnlen(const char *str, size_t n); @@ -102,6 +102,20 @@ char* strtok_r(char *str, const char *delim, char **nextp) *nextp = str; return ret; } + +/* strndup is a POSIX function not present in MinGW */ +char *strndup(const char *src, size_t maxlen) +{ + if (strlen(src) > maxlen) { + char *retbuf; + if ((retbuf = malloc(1 + maxlen)) != NULL) { + memcpy(retbuf, src, maxlen); + retbuf[maxlen] = '\0'; + } + return retbuf; + } + return strdup(src); +} #endif /* There is no strnlen in DJGPP */ |