Author: jilles
Date: Sat May 31 22:25:45 2014
New Revision: 266932
URL: http://svnweb.freebsd.org/changeset/base/266932

Log:
  sh: Simplify find_command() slightly.

Modified:
  head/bin/sh/exec.c

Modified: head/bin/sh/exec.c
==============================================================================
--- head/bin/sh/exec.c  Sat May 31 21:12:14 2014        (r266931)
+++ head/bin/sh/exec.c  Sat May 31 22:25:45 2014        (r266932)
@@ -362,15 +362,13 @@ find_command(const char *name, struct cm
 
        e = ENOENT;
        idx = -1;
-loop:
-       while ((fullname = padvance(&path, name)) != NULL) {
-               stunalloc(fullname);
+       for (;(fullname = padvance(&path, name)) != NULL; stunalloc(fullname)) {
                idx++;
                if (pathopt) {
                        if (prefix("func", pathopt)) {
                                /* handled below */
                        } else {
-                               goto loop;      /* ignore unimplemented options 
*/
+                               continue; /* ignore unimplemented options */
                        }
                }
                if (fullname[0] != '/')
@@ -378,13 +376,12 @@ loop:
                if (stat(fullname, &statb) < 0) {
                        if (errno != ENOENT && errno != ENOTDIR)
                                e = errno;
-                       goto loop;
+                       continue;
                }
                e = EACCES;     /* if we fail, this will be the error */
                if (!S_ISREG(statb.st_mode))
-                       goto loop;
+                       continue;
                if (pathopt) {          /* this is a %func directory */
-                       stalloc(strlen(fullname) + 1);
                        readcmdfile(fullname);
                        if ((cmdp = cmdlookup(name, 0)) == NULL || 
cmdp->cmdtype != CMDFUNCTION)
                                error("%s not defined in %s", name, fullname);
@@ -405,6 +402,7 @@ loop:
 #endif
                TRACE(("searchexec \"%s\" returns \"%s\"\n", name, fullname));
                INTOFF;
+               stunalloc(fullname);
                cmdp = cmdlookup(name, 1);
                if (cmdp->cmdtype == CMDFUNCTION)
                        cmdp = &loc_cmd;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to