diff options
author | rsc <rsc> | 2007-08-22 06:20:10 +0000 |
---|---|---|
committer | rsc <rsc> | 2007-08-22 06:20:10 +0000 |
commit | f0721f1be4c017d7e8d9d79b249fa04dda14a9ec (patch) | |
tree | c34456032437c873c5bc7439665a4184cb2eabe1 /fs.c | |
parent | eaea18cb9cbb86018dae8f1decfa217ecbe85fa5 (diff) | |
download | xv6-labs-f0721f1be4c017d7e8d9d79b249fa04dda14a9ec.tar.gz xv6-labs-f0721f1be4c017d7e8d9d79b249fa04dda14a9ec.tar.bz2 xv6-labs-f0721f1be4c017d7e8d9d79b249fa04dda14a9ec.zip |
tweaks
Diffstat (limited to 'fs.c')
-rw-r--r-- | fs.c | 40 |
1 files changed, 18 insertions, 22 deletions
@@ -524,11 +524,11 @@ dirlink(struct inode *dp, char *name, uint ino) { int off; struct dirent de; - struct uinode *ip; + struct uinode *ipu; // Check that name is not present. - if((ip = dirlookup(dp, name, 0)) != 0){ - iput(ip); + if((ipu = dirlookup(dp, name, 0)) != 0){ + iput(ipu); return -1; } @@ -593,43 +593,39 @@ skipelem(char *path, char *name) static struct uinode* _namei(char *path, int parent, char *name) { - struct uinode *dp, *ip; - struct inode *dpl; + struct uinode *dpu, *ipu; + struct inode *dp; uint off; if(*path == '/') - dp = iget(ROOTDEV, 1); + dpu = iget(ROOTDEV, 1); else - dp = idup(cp->cwd); + dpu = idup(cp->cwd); while((path = skipelem(path, name)) != 0){ - dpl = ilock(dp); - if(dpl->type != T_DIR){ - iunlock(dpl); - iput(dp); + dp = ilock(dpu); + if(dp->type != T_DIR){ + iput(iunlock(dp)); return 0; } if(parent && *path == '\0'){ // Stop one level early. - iunlock(dpl); - return dp; + iunlock(dp); + return dpu; } - if((ip = dirlookup(dpl, name, &off)) == 0){ - iunlock(dpl); - iput(dp); - iput(ip); + if((ipu = dirlookup(dp, name, &off)) == 0){ + iput(iunlock(dp)); + iput(ipu); return 0; } - - iunlock(dpl); - iput(dp); - dp = ip; + iput(iunlock(dp)); + dpu = ipu; } if(parent) return 0; - return dp; + return dpu; } struct uinode* |