diff options
Diffstat (limited to 'argp-standalone/strndup.c')
-rw-r--r-- | argp-standalone/strndup.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/argp-standalone/strndup.c b/argp-standalone/strndup.c new file mode 100644 index 00000000000..4147b7a2051 --- /dev/null +++ b/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; +} |