OSDN Git Service

Fixed stpncpy() implementation from Manuel
authorEric Andersen <andersen@codepoet.org>
Sat, 13 Apr 2002 15:44:56 +0000 (15:44 -0000)
committerEric Andersen <andersen@codepoet.org>
Sat, 13 Apr 2002 15:44:56 +0000 (15:44 -0000)
libc/string/string.c

index 1166661..019e358 100644 (file)
@@ -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