[U-Boot] [PATCH 6/8] EXT2: Rework ext2fs_find_file1()

Marek Vasut marex at denx.de
Fri Jun 8 19:31:51 CEST 2012


* Fix indent
* Pull variables defined deep in the code at the begining

Signed-off-by: Marek Vasut <marex at denx.de>
Cc: Wolfgang Denk <wd at denx.de>
---
 fs/ext2/ext2fs.c |  101 +++++++++++++++++++++++++++---------------------------
 1 file changed, 50 insertions(+), 51 deletions(-)

diff --git a/fs/ext2/ext2fs.c b/fs/ext2/ext2fs.c
index 22cc9c2..10745f6 100644
--- a/fs/ext2/ext2fs.c
+++ b/fs/ext2/ext2fs.c
@@ -490,108 +490,107 @@ static char *ext2fs_read_symlink(struct ext2fs_node *node)
 	return symlink;
 }
 
-int ext2fs_find_file1
-	(const char *currpath, struct ext2fs_node *currroot,
-		struct ext2fs_node **currfound, int *foundtype)
+static int ext2fs_find_file1(const char *currpath, struct ext2fs_node *currroot,
+				struct ext2fs_node **currfound, int *foundtype)
 {
-	char fpath[strlen (currpath) + 1];
+	char fpath[strlen(currpath) + 1];
 	char *name = fpath;
 	char *next;
 	int status;
 	int type = FILETYPE_DIRECTORY;
+	int found;
+	char *symlink;
 	struct ext2fs_node *currnode = currroot;
 	struct ext2fs_node *oldnode = currroot;
 
-	strncpy (fpath, currpath, strlen (currpath) + 1);
+	strncpy(fpath, currpath, strlen(currpath) + 1);
 
-	/* Remove all leading slashes.  */
-	while (*name == '/') {
+	/* Remove all leading slashes. */
+	while (*name == '/')
 		name++;
-	}
+
 	if (!*name) {
 		*currfound = currnode;
-		return (1);
+		return 1;
 	}
 
 	for (;;) {
-		int found;
-
-		/* Extract the actual part from the pathname.  */
-		next = strchr (name, '/');
+		/* Extract the actual part from the pathname. */
+		next = strchr(name, '/');
 		if (next) {
-			/* Remove all leading slashes.  */
-			while (*next == '/') {
+			/* Remove all leading slashes. */
+			while (*next == '/')
 				*(next++) = '\0';
-			}
 		}
 
-		/* At this point it is expected that the current node is a directory, check if this is true.  */
+		/*
+		 * At this point it is expected that the current node is a
+		 * directory, check if this is true.
+		 */
 		if (type != FILETYPE_DIRECTORY) {
-			ext2fs_free_node (currnode, currroot);
-			return (0);
+			ext2fs_free_node(currnode, currroot);
+			return 0;
 		}
 
 		oldnode = currnode;
 
-		/* Iterate over the directory.  */
-		found = ext2fs_iterate_dir (currnode, name, &currnode, &type);
-		if (found == 0) {
-			return (0);
-		}
-		if (found == -1) {
+		/* Iterate over the directory. */
+		found = ext2fs_iterate_dir(currnode, name, &currnode, &type);
+		if (found == 0)
+			return 0;
+
+		if (found == -1)
 			break;
-		}
 
-		/* Read in the symlink and follow it.  */
+		/* Read in the symlink and follow it. */
 		if (type == FILETYPE_SYMLINK) {
-			char *symlink;
+			symlink = NULL;
 
-			/* Test if the symlink does not loop.  */
+			/* Test if the symlink does not loop. */
 			if (++symlinknest == 8) {
-				ext2fs_free_node (currnode, currroot);
-				ext2fs_free_node (oldnode, currroot);
-				return (0);
+				ext2fs_free_node(currnode, currroot);
+				ext2fs_free_node(oldnode, currroot);
+				return 0;
 			}
 
-			symlink = ext2fs_read_symlink (currnode);
-			ext2fs_free_node (currnode, currroot);
+			symlink = ext2fs_read_symlink(currnode);
+			ext2fs_free_node(currnode, currroot);
 
 			if (!symlink) {
-				ext2fs_free_node (oldnode, currroot);
-				return (0);
+				ext2fs_free_node(oldnode, currroot);
+				return 0;
 			}
-#ifdef DEBUG
-			printf ("Got symlink >%s<\n", symlink);
-#endif /* of DEBUG */
-			/* The symlink is an absolute path, go back to the root inode.  */
+
+			debug("EXT2: Got symlink >%s<\n", symlink);
+
 			if (symlink[0] == '/') {
-				ext2fs_free_node (oldnode, currroot);
+				ext2fs_free_node(oldnode, currroot);
 				oldnode = &ext2fs_root->diropen;
 			}
 
-			/* Lookup the node the symlink points to.  */
-			status = ext2fs_find_file1 (symlink, oldnode,
-						    &currnode, &type);
+			/* Lookup the node the symlink points to. */
+			status = ext2fs_find_file1(symlink, oldnode,
+						   &currnode, &type);
 
-			free (symlink);
+			free(symlink);
 
 			if (status == 0) {
-				ext2fs_free_node (oldnode, currroot);
-				return (0);
+				ext2fs_free_node(oldnode, currroot);
+				return 0;
 			}
 		}
 
-		ext2fs_free_node (oldnode, currroot);
+		ext2fs_free_node(oldnode, currroot);
 
-		/* Found the node!  */
+		/* Found the node! */
 		if (!next || *next == '\0') {
 			*currfound = currnode;
 			*foundtype = type;
-			return (1);
+			return 1;
 		}
 		name = next;
 	}
-	return (-1);
+	return -1;
 }
 
 static int ext2fs_find_file(const char *path, struct ext2fs_node *rootnode,
-- 
1.7.10



More information about the U-Boot mailing list