From 00ebb752c2ec1f14c8eb089442c3b5ec0eb23594 Mon Sep 17 00:00:00 2001 From: Ramiro Polla Date: Tue, 21 Sep 2010 22:09:14 -0300 Subject: [PATCH] Factorize win32getshell() out of win32execute() --- ccache.h | 1 + execute.c | 32 +++++++++++++++++++++----------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/ccache.h b/ccache.h index 38126ed9d..4a9cc9e9c 100644 --- a/ccache.h +++ b/ccache.h @@ -239,6 +239,7 @@ typedef int (*COMPAR_FN_T)(const void *, const void *); #ifdef _WIN32 char *win32argvtos(char *prefix, char **argv); +char *win32getshell(char *path); int win32execute(char *path, char **argv, int doreturn, const char *path_stdout, const char *path_stderr); # ifndef _WIN32_WINNT diff --git a/execute.c b/execute.c index 73fdde260..6cd0f5682 100644 --- a/execute.c +++ b/execute.c @@ -87,22 +87,13 @@ win32argvtos(char *prefix, char **argv) return str; } -int -win32execute(char *path, char **argv, int doreturn, - const char *path_stdout, const char *path_stderr) +char * +win32getshell(char *path) { - PROCESS_INFORMATION pi; - STARTUPINFO si; - BOOL ret; - DWORD exitcode; char *path_env; char *sh = NULL; - char *args; const char *ext; - memset(&pi, 0x00, sizeof(pi)); - memset(&si, 0x00, sizeof(si)); - ext = get_extension(path); if (ext && strcasecmp(ext, ".sh") == 0 && (path_env = getenv("PATH"))) sh = find_executable_in_path("sh.exe", NULL, path_env); @@ -119,6 +110,25 @@ win32execute(char *path, char **argv, int doreturn, fclose(fp); } } + + return sh; +} + +int +win32execute(char *path, char **argv, int doreturn, + const char *path_stdout, const char *path_stderr) +{ + PROCESS_INFORMATION pi; + STARTUPINFO si; + BOOL ret; + DWORD exitcode; + char *sh = NULL; + char *args; + + memset(&pi, 0x00, sizeof(pi)); + memset(&si, 0x00, sizeof(si)); + + sh = win32getshell(path); if (sh) path = sh; -- 2.47.3