From 5e960545193eeb7f52acc7ec505d908db3785e30 Mon Sep 17 00:00:00 2001 From: 卜部昌平 Date: Fri, 12 Jun 2020 14:24:41 +0900 Subject: dln_find_1: do not goto into a branch I'm not necessarily against every goto in general, but jumping into a branch is definitely a bad idea. Better refactor. --- dln_find.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'dln_find.c') diff --git a/dln_find.c b/dln_find.c index b08612764e..ca62441631 100644 --- a/dln_find.c +++ b/dln_find.c @@ -248,26 +248,14 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size, /* now append the file name */ i = fnlen; if (fspace < i) { - toolong: - PATHNAME_TOO_LONG(); - goto next; + goto toolong; } fspace -= i; memcpy(bp, fname, i + 1); #if defined(DOSISH) if (exe_flag && !ext) { - needs_extension: - for (j = 0; j < sizeof(extension) / sizeof(extension[0]); j++) { - if (fspace < strlen(extension[j])) { - PATHNAME_TOO_LONG(); - continue; - } - strlcpy(bp + i, extension[j], fspace); - if (stat(fbuf, &st) == 0) - return fbuf; - } - goto next; + goto needs_extension; } #endif @@ -284,7 +272,25 @@ dln_find_1(const char *fname, const char *path, char *fbuf, size_t size, if (*ep == '\0') { return NULL; } + continue; + + toolong: + PATHNAME_TOO_LONG(); + goto next; +#if defined(DOSISH) + needs_extension: + for (j = 0; j < sizeof(extension) / sizeof(extension[0]); j++) { + if (fspace < strlen(extension[j])) { + PATHNAME_TOO_LONG(); + continue; + } + strlcpy(bp + i, extension[j], fspace); + if (stat(fbuf, &st) == 0) + return fbuf; + } + goto next; +#endif /* otherwise try the next component in the search path */ } } -- cgit v1.2.3