1 /* 2 * Copyright (C) 2002 Manuel Novoa III 3 * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org> 4 * 5 * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. 6 */ 7 8 #include "_string.h" 9 #include <stdlib.h> 10 11 strndup(register const char * s1,size_t n)12char *strndup(register const char *s1, size_t n) 13 { 14 register char *s; 15 16 n = strnlen(s1,n); /* Avoid problems if s1 not nul-terminated. */ 17 18 if ((s = malloc(n + 1)) != NULL) { 19 memcpy(s, s1, n); 20 s[n] = 0; 21 } 22 23 return s; 24 } 25 libc_hidden_def(strndup) 26