git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 3/6] run-command: make `exists_in_PATH()` non-static

From
Miriam Rubio <mirucam@gmail.com>
Date
Aug 17, 2021, 08:14 UTC
Message-ID
<20210817081458.53136-4-mirucam@gmail.com>
In-Reply-To
<20210817081458.53136-1-mirucam@gmail.com>
From: Pranit Bauva <pranit.bauva@gmail.com>

Removes the `static` keyword from `exists_in_PATH()` function and declares the function in `run-command.h` file. The function will be used in bisect_visualize() in a later commit.

Mentored by: Christian Couder <chriscool@tuxfamily.org>
Mentored by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Tanushree Tumane <tanushreetumane@gmail.com>
Signed-off-by: Miriam Rubio <mirucam@gmail.com>
---
 run-command.c |  2 +-
 run-command.h | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/run-command.c b/run-command.c
index f72e72cce7..390f46819f 100644
--- a/run-command.c
+++ b/run-command.c
@@ -210,7 +210,7 @@ static char *locate_in_PATH(const char *file)
 	return NULL;
 }
 
-static int exists_in_PATH(const char *file)
+int exists_in_PATH(const char *file)
 {
 	char *r = locate_in_PATH(file);
 	int found = r != NULL;
diff --git a/run-command.h b/run-command.h
index af1296769f..54d74b706f 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);
 
+/**
+ * Search if a $PATH for a command exists.  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 file 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 *file);
+
 /**
  * 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
Previous: Miriam R.Next: Miriam Rubio
Message 9 of 20 in “Finish converting git bisect to C part 4”
  1. 0/6 Finish converting git bisect to C part 4Miriam Rubio, Aug 17, 2021
  2. 1/6 t6030-bisect-porcelain: add tests to control bisect run exit casesMiriam Rubio, Aug 17, 2021
  3. Bagas SanjayaAug 17, 2021
  4. Christian CouderAug 17, 2021
  5. Miriam R.Aug 17, 2021
  6. 2/6 t6030-bisect-porcelain: add test for bisect visualizeMiriam Rubio, Aug 17, 2021
  7. Bagas SanjayaAug 17, 2021
  8. Miriam R.Aug 17, 2021
  9. 3/6 run-command: make `exists_in_PATH()` non-staticMiriam Rubio, Aug 17, 2021
  10. 4/6 bisect--helper: reimplement `bisect_visualize()`shell function in CMiriam Rubio, Aug 17, 2021
  11. Johannes SchindelinAug 17, 2021
  12. Miriam R.Aug 17, 2021
  13. 5/6 bisect--helper: reimplement `bisect_run` shell function in CMiriam Rubio, Aug 17, 2021
  14. Johannes SchindelinAug 17, 2021
  15. Miriam R.Aug 17, 2021
  16. Johannes SchindelinAug 17, 2021
  17. Christian CouderAug 18, 2021
  18. Miriam R.Aug 18, 2021
  19. 6/6 bisect--helper: retire `--bisect-next-check` subcommandMiriam Rubio, Aug 17, 2021
  20. Johannes SchindelinAug 17, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.