From: Pranit Bauva <pranit.bauva@xxxxxxxxx> Remove the `static` keyword from `exists_in_PATH()` function and declare the function in `run-command.h` file. The function will be used in bisect_visualize() in a later commit. Mentored by: Christian Couder <chriscool@xxxxxxxxxxxxx> Mentored by: Johannes Schindelin <Johannes.Schindelin@xxxxxx> Signed-off-by: Tanushree Tumane <tanushreetumane@xxxxxxxxx> Signed-off-by: Miriam Rubio <mirucam@xxxxxxxxx> --- run-command.c | 4 ++-- run-command.h | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/run-command.c b/run-command.c index f72e72cce7..da02553f44 100644 --- a/run-command.c +++ b/run-command.c @@ -210,9 +210,9 @@ static char *locate_in_PATH(const char *file) return NULL; } -static int exists_in_PATH(const char *file) +int exists_in_PATH(const char *command) { - char *r = locate_in_PATH(file); + char *r = locate_in_PATH(command); int found = r != NULL; free(r); return found; diff --git a/run-command.h b/run-command.h index af1296769f..aad027984d 100644 --- a/run-command.h +++ b/run-command.h @@ -182,6 +182,18 @@ void child_process_clear(struct child_process *); int is_executable(const char *name); +/** + * Check if the command exists on $PATH. This emulates the path search that + * execvp would perform, without actually executing the command so it + * can be used before fork() to prepare to run a command using + * execve() or after execvp() to diagnose why it failed. + * + * The caller should ensure that command contains no directory separators. + * + * Returns 1 if it is found in $PATH or 0 if the command could not be found. + */ +int exists_in_PATH(const char *command); + /** * Start a sub-process. Takes a pointer to a `struct child_process` * that specifies the details and returns pipe FDs (if requested). -- 2.29.2