diff options
author | rsc <rsc> | 2007-08-08 08:37:22 +0000 |
---|---|---|
committer | rsc <rsc> | 2007-08-08 08:37:22 +0000 |
commit | 7e89fb90bd0beb91e5d67af362d6a8a3a1b4c626 (patch) | |
tree | 480c122b6dd99c786e5f4dda5ba4ec96777fd767 | |
parent | cd08e6e065370611ea0cde431af222cf3420ca56 (diff) | |
download | xv6-labs-7e89fb90bd0beb91e5d67af362d6a8a3a1b4c626.tar.gz xv6-labs-7e89fb90bd0beb91e5d67af362d6a8a3a1b4c626.tar.bz2 xv6-labs-7e89fb90bd0beb91e5d67af362d6a8a3a1b4c626.zip |
add safestrcpy
-rw-r--r-- | defs.h | 1 | ||||
-rw-r--r-- | string.c | 16 |
2 files changed, 17 insertions, 0 deletions
@@ -39,6 +39,7 @@ void* memset(void*, int, uint); int memcmp(const void*, const void*, uint); void* memmove(void*, const void*, uint); int strncmp(const char*, const char*, uint); +char* safestrcpy(char*, const char*, int); // syscall.c void syscall(void); @@ -57,3 +57,19 @@ strncmp(const char *p, const char *q, uint n) else return (int) ((uchar) *p - (uchar) *q); } + +// Like strncpy but guaranteed to NUL-terminate. +char* +safestrcpy(char *s, const char *t, int n) +{ + char *os; + + os = s; + if(n <= 0) + return os; + while(--n > 0 && (*s++ = *t++) != 0) + ; + *s = 0; + return os; +} + |