aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
Diffstat (limited to 'libbb')
-rw-r--r--libbb/executable.c32
1 files changed, 11 insertions, 21 deletions
diff --git a/libbb/executable.c b/libbb/executable.c
index aec829945..835341ed9 100644
--- a/libbb/executable.c
+++ b/libbb/executable.c
@@ -28,10 +28,6 @@ int FAST_FUNC file_is_executable(const char *name)
28 * in all cases (*PATHp) contents are temporarily modified 28 * in all cases (*PATHp) contents are temporarily modified
29 * but are restored on return (s/:/NUL/ and back). 29 * but are restored on return (s/:/NUL/ and back).
30 */ 30 */
31#if !ENABLE_PLATFORM_MINGW32
32#define next_path_sep(s) strchr(s, ':')
33#endif
34
35char* FAST_FUNC find_executable(const char *filename, char **PATHp) 31char* FAST_FUNC find_executable(const char *filename, char **PATHp)
36{ 32{
37 /* About empty components in $PATH: 33 /* About empty components in $PATH:
@@ -44,38 +40,32 @@ char* FAST_FUNC find_executable(const char *filename, char **PATHp)
44 */ 40 */
45 char *p, *n; 41 char *p, *n;
46#if ENABLE_PLATFORM_MINGW32 42#if ENABLE_PLATFORM_MINGW32
47 char *w; 43 char sep, *w;
48#endif 44#endif
49 45
50 p = *PATHp; 46 p = *PATHp;
51 while (p) { 47 while (p) {
52 int ex; 48 int ex;
53#if ENABLE_PLATFORM_MINGW32
54 char sep;
55 49
56 n = (char*)next_path_sep(p); 50#if !ENABLE_PLATFORM_MINGW32
57 if (n) {
58 sep = *n;
59 *n = '\0';
60 }
61#else
62 n = strchr(p, ':'); 51 n = strchr(p, ':');
63 if (n) *n = '\0'; 52 if (n) *n = '\0';
53#else
54 n = (char*)next_path_sep(p);
55 if (n) { sep = *n; *n = '\0'; }
64#endif 56#endif
65 p = concat_path_file( 57 p = concat_path_file(
66 p[0] ? p : ".", /* handle "::" case */ 58 p[0] ? p : ".", /* handle "::" case */
67 filename 59 filename
68 ); 60 );
69#if ENABLE_PLATFORM_MINGW32 61#if !ENABLE_PLATFORM_MINGW32
70 if (n) *n++ = sep;
71#else
72 if (n) *n++ = ':'; 62 if (n) *n++ = ':';
73#endif 63#else
74#if ENABLE_PLATFORM_MINGW32 64 if (n) *n++ = sep;
75 if ((w=add_win32_extension(p))) { 65 if ((w=alloc_win32_extension(p))) {
76 *PATHp = n;
77 free(p); 66 free(p);
78 return w; 67 p = w;
68 /* following test will succeed */
79 } 69 }
80#endif 70#endif
81 ex = file_is_executable(p); 71 ex = file_is_executable(p);