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; +} +  | 
