diff options
| author | Eric Andersen <andersen@codepoet.org> | 2002-04-13 15:44:56 +0000 | 
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2002-04-13 15:44:56 +0000 | 
| commit | 0a15e8cd8938730820c9c607710831d3fc8461e9 (patch) | |
| tree | 9c4d616c002b89f75248674364eb5f630a4aa1ee | |
| parent | 929686ba6a01168aee43cb3b854d24133f4ef38e (diff) | |
Fixed stpncpy() implementation from Manuel
| -rw-r--r-- | libc/string/string.c | 18 | 
1 files changed, 10 insertions, 8 deletions
diff --git a/libc/string/string.c b/libc/string/string.c index 11666611a..019e358b5 100644 --- a/libc/string/string.c +++ b/libc/string/string.c @@ -82,16 +82,18 @@ char *stpcpy(char *dst, const char *src)  /********************** Function stpncpy ************************************/  #ifdef L_stpncpy -char *stpncpy(char *dst, const char *src, size_t len) +char *stpncpy(register char * __restrict s1,  +		register const char * __restrict s2, size_t n)  { -	while (len--) { -		if (*src) -			*dst++ = *src++; -		else -			*dst++ = '\0'; -	} +	char *s = s1; +	const char *p = s2; -	return dst; +	while (n) { +		if ((*s = *s2) != 0) s2++; /* Need to fill tail with 0s. */ +		++s; +		--n; +	} +	return s1 + (s2 - p);  }  #endif  | 
