summaryrefslogtreecommitdiff
path: root/fs.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs.c')
-rw-r--r--fs.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/fs.c b/fs.c
index 530ef03..ed62970 100644
--- a/fs.c
+++ b/fs.c
@@ -385,6 +385,7 @@ struct inode *
namei(char *path, int mode, uint *ret_off)
{
struct inode *dp;
+ struct proc *p = curproc[cpu()];
char *cp = path, *cp1;
uint off, dev;
struct buf *bp;
@@ -392,7 +393,12 @@ namei(char *path, int mode, uint *ret_off)
int i, atend;
unsigned ninum;
- dp = iget(rootdev, 1);
+ if (*cp == '/') dp = iget(rootdev, 1);
+ else {
+ dp = p->cwd;
+ iincref(dp);
+ ilock(dp);
+ }
while(*cp == '/')
cp++;