Nico Huber has submitted this change. ( https://review.coreboot.org/c/flashrom/+/34621 )
Change subject: helpers: Implement strndup() for MinGW ......................................................................
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 --- M flash.h M helpers.c 2 files changed, 15 insertions(+), 0 deletions(-)
Approvals: build bot (Jenkins): Verified Nico Huber: Looks good to me, approved
diff --git a/flash.h b/flash.h index c1d8980..1a9bd9f 100644 --- a/flash.h +++ b/flash.h @@ -314,6 +314,7 @@ 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); diff --git a/helpers.c b/helpers.c index cfa9812..c83cd2c 100644 --- a/helpers.c +++ b/helpers.c @@ -102,6 +102,20 @@ *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 */