]> Devi Nivas Git - cs3210-lab0.git/commitdiff
add safestrcpy
authorrsc <rsc>
Wed, 8 Aug 2007 08:37:22 +0000 (08:37 +0000)
committerrsc <rsc>
Wed, 8 Aug 2007 08:37:22 +0000 (08:37 +0000)
defs.h
string.c

diff --git a/defs.h b/defs.h
index 31a3d75c14699ad28e20e9da8defd2d5727ff823..8b2aac5083c4d066b93fee440301dce123ce2855 100644 (file)
--- 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);
index 540a7d43033b591a99cce5e1387b73d8ece42655..dc732669924ef480be587b13790512a7a63e71ae 100644 (file)
--- 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;
+}
+