1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-01 08:17:38 +00:00

emacsclient: fix child exit when exec fails

* lib-src/emacsclient.c (start_daemon_and_retry_set_socket):
If the execvp of Emacs fails exit instead of having the child
run on and do the work of the parent.  Coalesce duplicate code.
This commit is contained in:
Paul Eggert 2018-11-23 00:33:37 -08:00
parent ef1f60301a
commit 652dabfff6

View File

@ -1484,13 +1484,6 @@ start_daemon_and_retry_set_socket (void)
/* Try connecting, the daemon should have started by now. */ /* Try connecting, the daemon should have started by now. */
message (true, message (true,
"Emacs daemon should have started, trying to connect again\n"); "Emacs daemon should have started, trying to connect again\n");
if ((emacs_socket = set_socket (1)) == INVALID_SOCKET)
{
message (true, ("Error: Cannot connect "
"even after starting the Emacs daemon\n"));
exit (EXIT_FAILURE);
}
} }
else if (dpid < 0) else if (dpid < 0)
{ {
@ -1518,6 +1511,7 @@ start_daemon_and_retry_set_socket (void)
# endif # endif
execvp ("emacs", d_argv); execvp ("emacs", d_argv);
message (true, "%s: error starting emacs daemon\n", progname); message (true, "%s: error starting emacs daemon\n", progname);
exit (EXIT_FAILURE);
} }
# else /* WINDOWSNT */ # else /* WINDOWSNT */
DWORD wait_result; DWORD wait_result;
@ -1583,13 +1577,15 @@ start_daemon_and_retry_set_socket (void)
if (!w32_window_app ()) if (!w32_window_app ())
message (true, message (true,
"Emacs daemon should have started, trying to connect again\n"); "Emacs daemon should have started, trying to connect again\n");
if ((emacs_socket = set_socket (1)) == INVALID_SOCKET) # endif /* WINDOWSNT */
emacs_socket = set_socket (true);
if (emacs_socket == INVALID_SOCKET)
{ {
message (true, message (true,
"Error: Cannot connect even after starting the Emacs daemon\n"); "Error: Cannot connect even after starting the Emacs daemon\n");
exit (EXIT_FAILURE); exit (EXIT_FAILURE);
} }
# endif /* WINDOWSNT */
} }
#endif /* HAVE_SOCKETS && HAVE_INET_SOCKETS */ #endif /* HAVE_SOCKETS && HAVE_INET_SOCKETS */