diff options
| -rw-r--r-- | defs.h | 1 | ||||
| -rw-r--r-- | fs.c | 24 | ||||
| -rw-r--r-- | string.c | 16 | 
3 files changed, 17 insertions, 24 deletions
@@ -127,6 +127,7 @@ void*           memset(void*, int, uint);  char*           safestrcpy(char*, const char*, int);  int             strlen(const char*);  int             strncmp(const char*, const char*, uint); +char*           strncpy(char*, const char*, int);  // syscall.c  int             argint(int, int*); @@ -455,15 +455,7 @@ writei(struct inode *ip, char *src, uint off, uint n)  int  namecmp(const char *s, const char *t)  { -  int i; -   -  for(i=0; i<DIRSIZ; i++){ -    if(s[i] != t[i]) -      return s[i] - t[i]; -    if(s[i] == 0) -      break; -  } -  return 0; +  return strncmp(s, t, DIRSIZ);  }  // Look for a directory entry in a directory. @@ -500,18 +492,6 @@ dirlookup(struct inode *dp, char *name, uint *poff)    return 0;  } -// Copy one name to another. -static void -namecpy(char *s, const char *t) -{ -  int i; -   -  for(i=0; i<DIRSIZ && t[i]; i++) -    s[i] = t[i]; -  for(; i<DIRSIZ; i++) -    s[i] = 0; -} -  // Write a new directory entry (name, ino) into the directory dp.  int  dirlink(struct inode *dp, char *name, uint ino) @@ -534,7 +514,7 @@ dirlink(struct inode *dp, char *name, uint ino)        break;    } -  namecpy(de.name, name); +  strncpy(de.name, name, DIRSIZ);    de.inum = ino;    if(writei(dp, (char*)&de, off, sizeof(de)) != sizeof(de))      panic("dirwrite"); @@ -56,8 +56,20 @@ strncmp(const char *p, const char *q, uint n)      n--, p++, q++;    if(n == 0)      return 0; -  else -    return (int) ((uchar) *p - (uchar) *q); +  return (uchar)*p - (uchar)*q; +} + +char* +strncpy(char *s, const char *t, int n) +{ +  char *os; +   +  os = s; +  while(n-- > 0 && (*s++ = *t++) != 0) +    ; +  while(n-- > 0) +    *s++ = 0; +  return os;  }  // Like strncpy but guaranteed to NUL-terminate.  | 
