X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Futil%2Fstrndup.h;h=dcaa429dbe81b1b0fdb6d537972d93f41e73695e;hb=5ef5944848527c214a460cd746fcc467991c80c7;hp=54346823596e760387abcbb92d98ba00fb298da4;hpb=bea66d22f2c0e97242c15652376ae4e82779f343;p=mesa.git diff --git a/src/util/strndup.h b/src/util/strndup.h index 54346823596..dcaa429dbe8 100644 --- a/src/util/strndup.h +++ b/src/util/strndup.h @@ -21,12 +21,40 @@ * IN THE SOFTWARE. */ -#pragma once +#ifndef STRNDUP_H +#define STRNDUP_H + +#if defined(_WIN32) #include // size_t +#include -#if defined(_WIN32) +#ifdef __cplusplus +extern "C" { +#endif + +static inline char * +strndup(const char *str, size_t max) +{ + size_t n; + char *ptr; -extern char *strndup(const char *str, size_t max); + if (!str) + return NULL; + n = strnlen(str, max); + ptr = (char *) calloc(n + 1, sizeof(char)); + if (!ptr) + return NULL; + + memcpy(ptr, str, n); + return ptr; +} + +#ifdef __cplusplus +} #endif + +#endif /* _WIN32 */ + +#endif /* STRNDUP_H */