diff options
Diffstat (limited to 'contrib/argp-standalone/strndup.c')
| -rw-r--r-- | contrib/argp-standalone/strndup.c | 34 | 
1 files changed, 34 insertions, 0 deletions
diff --git a/contrib/argp-standalone/strndup.c b/contrib/argp-standalone/strndup.c new file mode 100644 index 00000000000..4147b7a2051 --- /dev/null +++ b/contrib/argp-standalone/strndup.c @@ -0,0 +1,34 @@ +/* strndup.c + * + */ + +/* Written by Niels Möller <nisse@lysator.liu.se> + * + * This file is hereby placed in the public domain. + */ + +#include <stdlib.h> +#include <string.h> + +char * +strndup (const char *, size_t); + +char * +strndup (const char *s, size_t size) +{ +  char *r; +  char *end = memchr(s, 0, size); +   +  if (end) +    /* Length + 1 */ +    size = end - s + 1; +   +  r = malloc(size); + +  if (size) +    { +      memcpy(r, s, size-1); +      r[size-1] = '\0'; +    } +  return r; +}  | 
