Module Name:    src
Committed By:   rillig
Date:           Sun Oct 10 08:19:02 UTC 2021

Modified Files:
        src/bin/sh: exec.c

Log Message:
sh: make find_command simpler

Lint complained about the do-while-0 loop that contained a continue. It
didn't state the reason for it, but indeed the code looked complicated.
Rewrite the code to be less verbose and to use common coding patterns.

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.55 -r1.56 src/bin/sh/exec.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/bin/sh/exec.c
diff -u src/bin/sh/exec.c:1.55 src/bin/sh/exec.c:1.56
--- src/bin/sh/exec.c:1.55	Tue Feb 16 15:30:12 2021
+++ src/bin/sh/exec.c	Sun Oct 10 08:19:02 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: exec.c,v 1.55 2021/02/16 15:30:12 kre Exp $	*/
+/*	$NetBSD: exec.c,v 1.56 2021/10/10 08:19:02 rillig Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)exec.c	8.4 (Berkeley) 6/8/95";
 #else
-__RCSID("$NetBSD: exec.c,v 1.55 2021/02/16 15:30:12 kre Exp $");
+__RCSID("$NetBSD: exec.c,v 1.56 2021/10/10 08:19:02 rillig Exp $");
 #endif
 #endif /* not lint */
 
@@ -548,31 +548,23 @@ find_command(char *name, struct cmdentry
 
 	/* If name is in the table, check answer will be ok */
 	if ((cmdp = cmdlookup(name, 0)) != NULL) {
-		do {
-			switch (cmdp->cmdtype) {
-			case CMDNORMAL:
-				if (act & DO_ALTPATH) {
-					cmdp = NULL;
-					continue;
-				}
-				break;
-			case CMDFUNCTION:
-				if (act & DO_NOFUNC) {
-					cmdp = NULL;
-					continue;
-				}
-				break;
-			case CMDBUILTIN:
-				if ((act & DO_ALTBLTIN) || builtinloc >= 0) {
-					cmdp = NULL;
-					continue;
-				}
-				break;
-			}
-			/* if not invalidated by cd, we're done */
-			if (cmdp->rehash == 0)
-				goto success;
-		} while (0);
+		switch (cmdp->cmdtype) {
+		case CMDNORMAL:
+			if (act & DO_ALTPATH)
+				cmdp = NULL;
+			break;
+		case CMDFUNCTION:
+			if (act & DO_NOFUNC)
+				cmdp = NULL;
+			break;
+		case CMDBUILTIN:
+			if ((act & DO_ALTBLTIN) || builtinloc >= 0)
+				cmdp = NULL;
+			break;
+		}
+		/* if not invalidated by cd, we're done */
+		if (cmdp != NULL && cmdp->rehash == 0)
+			goto success;
 	}
 
 	/* If %builtin not in path, check for builtin next */

Reply via email to