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

[PATCH v3 0/2] run-command: new check_command helper

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Apr 7, 2013, 07:45 UTC
Message-ID
<1365320706-13539-1-git-send-email-felipe.contreras@gmail.com>
Hi,
This is a reroll to fix the build with NO_PTHREADS, and also a bit of cleanup.
The interdiff:

--- b/run-command.c +++ a/run-command.c

@@ -226,27 +226,20 @@ static inline void set_cloexec(int fd)
 		fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
 }
 
-static pid_t persistent_waitpid(struct child_process *cmd, pid_t pid, int *status)
-{
-	pid_t waiting;
-
-	if (cmd->last_status.valid) {
-		*status = cmd->last_status.status;
-		return pid;
-	}
-
-	while ((waiting = waitpid(pid, status, 0)) < 0 && errno == EINTR)
-		;	/* nothing */
-	return waiting;
-}
-
 static int wait_or_whine(struct child_process *cmd, pid_t pid, const char *argv0)
 {
 	int status, code = -1;
 	pid_t waiting;
 	int failed_errno = 0;
 
-	waiting = persistent_waitpid(cmd, pid, &status);
+	/* First try the last status from check_command() */
+	if (cmd && cmd->last_status.valid) {
+		status = cmd->last_status.status;
+		waiting = pid;
+	} else {
+		while ((waiting = waitpid(pid, status, 0)) < 0 && errno == EINTR)
+			;	/* nothing */
+	}
 
 	if (waiting < 0) {
 		failed_errno = errno;
@@ -770,7 +763,7 @@ error:
 int finish_async(struct async *async)
 {
 #ifdef NO_PTHREADS
-	return wait_or_whine(cmd, async->pid, "child process");
+	return wait_or_whine(NULL, async->pid, "child process");
 #else
 	void *ret = (void *)(intptr_t)(-1);
 
Felipe Contreras (2):
  run-command: add new check_command helper
  transport-helper: check if remote helper is alive

 git-remote-testgit        | 11 +++++++++++
 run-command.c             | 46 ++++++++++++++++++++++++++++++++++++++++------
 run-command.h             |  5 +++++
 t/t5801-remote-helpers.sh | 19 +++++++++++++++++++
 transport-helper.c        |  8 ++++++++
 5 files changed, 83 insertions(+), 6 deletions(-)
-- 
1.8.2
Next: Felipe Contreras
Message 1 of 19 in “run-command: new check_command helper”
  1. 0/2 run-command: new check_command helperFelipe Contreras, Apr 7, 2013
  2. 1/2 run-command: add new check_command helperFelipe Contreras, Apr 7, 2013
  3. Junio C HamanoApr 7, 2013
  4. Junio C HamanoApr 7, 2013
  5. 2/2 transport-helper: check if remote helper is aliveFelipe Contreras, Apr 7, 2013
  6. Junio C HamanoApr 7, 2013
  7. Jeff KingApr 8, 2013
  8. Felipe ContrerasApr 8, 2013
  9. Jeff KingApr 8, 2013
  10. Felipe ContrerasApr 8, 2013
  11. Junio C HamanoApr 8, 2013
  12. Felipe ContrerasApr 8, 2013
  13. Junio C HamanoApr 8, 2013
  14. Felipe ContrerasApr 8, 2013
  15. Junio C HamanoApr 8, 2013
  16. Jeff KingApr 8, 2013
  17. Junio C HamanoApr 8, 2013
  18. Jeff KingApr 8, 2013
  19. Jeff KingApr 8, 2013

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.