xv6

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 7e89fb90bd0beb91e5d67af362d6a8a3a1b4c626
parent cd08e6e065370611ea0cde431af222cf3420ca56
Author: rsc <rsc>
Date:   Wed,  8 Aug 2007 08:37:22 +0000

add safestrcpy

Diffstat:
Mdefs.h | 1+
Mstring.c | 16++++++++++++++++
2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/defs.h b/defs.h @@ -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); diff --git a/string.c b/string.c @@ -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; +} +