From 4e015d81aabb19d319fa73f2da11cd6b7ca5c2c3 Mon Sep 17 00:00:00 2001
From: Austin Clements <amdragon@mit.edu>
Date: Fri, 2 Sep 2011 15:20:27 -0400
Subject: [PATCH] Shorten sys_unlink a little; create now fits in column

---
 sysfile.c | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/sysfile.c b/sysfile.c
index c9d3594..9de3d86 100644
--- a/sysfile.c
+++ b/sysfile.c
@@ -188,26 +188,18 @@ sys_unlink(void)
   ilock(dp);
 
   // Cannot unlink "." or "..".
-  if(namecmp(name, ".") == 0 || namecmp(name, "..") == 0){
-    iunlockput(dp);
-    commit_trans();
-    return -1;
-  }
+  if(namecmp(name, ".") == 0 || namecmp(name, "..") == 0)
+    goto bad;
 
-  if((ip = dirlookup(dp, name, &off)) == 0){
-    iunlockput(dp);
-    commit_trans();
-    return -1;
-  }
+  if((ip = dirlookup(dp, name, &off)) == 0)
+    goto bad;
   ilock(ip);
 
   if(ip->nlink < 1)
     panic("unlink: nlink < 1");
   if(ip->type == T_DIR && !isdirempty(ip)){
     iunlockput(ip);
-    iunlockput(dp);
-    commit_trans();
-    return -1;
+    goto bad;
   }
 
   memset(&de, 0, sizeof(de));
@@ -226,6 +218,11 @@ sys_unlink(void)
   commit_trans();
 
   return 0;
+
+bad:
+  iunlockput(dp);
+  commit_trans();
+  return -1;
 }
 
 static struct inode*
-- 
GitLab