From 1542186378ba1c53744d19b3f2c8382976bd5d21 Mon Sep 17 00:00:00 2001 From: rsc Date: Thu, 7 Sep 2006 15:34:28 +0000 Subject: [PATCH] allow long names again --- fs.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/fs.c b/fs.c index 9b687fd..f3d28c6 100644 --- a/fs.c +++ b/fs.c @@ -504,8 +504,8 @@ namei(char *path, int mode, uint *ret_off, uint off, dev; struct buf *bp; struct dirent *ep; - int i, atend; - unsigned ninum; + int i, l, atend; + uint ninum; if(ret_off) *ret_off = 0xffffffff; @@ -544,10 +544,9 @@ namei(char *path, int mode, uint *ret_off, for(i = 0; cp[i] != 0 && cp[i] != '/'; i++) ; - if(i > DIRSIZ){ - iput(dp); - return 0; - } + l = i; + if(i > DIRSIZ) + l = DIRSIZ; for(off = 0; off < dp->size; off += BSIZE){ bp = bread(dp->dev, bmap(dp, off / BSIZE)); @@ -556,8 +555,8 @@ namei(char *path, int mode, uint *ret_off, ep++){ if(ep->inum == 0) continue; - if(memcmp(cp, ep->name, i) == 0 && - (i == DIRSIZ || ep->name[i]== 0)){ + if(memcmp(cp, ep->name, l) == 0 && + (l == DIRSIZ || ep->name[l]== 0)){ // entry matches path element off += (uchar*)ep - bp->data; ninum = ep->inum;