diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2018-11-26 11:36:51 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2018-11-26 11:39:45 -0800 |
commit | ed3ae3fc58c12bb413f52026c06320a5fff84084 (patch) | |
tree | c02551f89f2959e3a9c5f39afc6a15f8f5dba871 /lib-src/emacsclient.c | |
parent | 5c1bf59658997eef5bbd7dd10f406d92e3aeb3a5 (diff) | |
download | emacs-ed3ae3fc58c12bb413f52026c06320a5fff84084.tar.gz |
emacsclient: assume HAVE_INET_SOCKETS
* configure.ac (HAVE_INET_SOCKETS): Remove.
* lib-src/emacsclient.c: Simplify by assuming HAVE_SOCKETS and
HAVE_INET_SOCKETS, which are always true nowadays, except perhaps
for MS-DOS and if so this program shouldn’t be built there anyway.
Don’t bother including sys/types.h, as it’s not needed on modern
systems (and syswait.h does it for us anyway).
(main): Simplify by assuming SIGSTOP (which is always defined
if SIGCONT is), and by assuming HAVE_SOCKETS && HAVE_INET_SOCKETS.
Diffstat (limited to 'lib-src/emacsclient.c')
-rw-r--r-- | lib-src/emacsclient.c | 112 |
1 files changed, 48 insertions, 64 deletions
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 084de792eb0..e72c5e8cf16 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -44,20 +44,15 @@ char *w32_getenv (const char *); #else /* !WINDOWSNT */ # ifdef HAVE_NTGUI -# include <windows.h> -# endif /* HAVE_NTGUI */ +# include <windows.h> +# endif # include "syswait.h" -# ifdef HAVE_INET_SOCKETS -# include <netinet/in.h> -# ifdef HAVE_SOCKETS -# include <sys/types.h> -# include <sys/socket.h> -# include <sys/un.h> -# endif /* HAVE_SOCKETS */ -# endif # include <arpa/inet.h> +# include <netinet/in.h> +# include <sys/socket.h> +# include <sys/un.h> # define SOCKETS_IN_FILE_SYSTEM @@ -732,21 +727,19 @@ fail (void) } -#if defined HAVE_SOCKETS && defined HAVE_INET_SOCKETS - -# ifdef SOCKETS_IN_FILE_SYSTEM +#ifdef SOCKETS_IN_FILE_SYSTEM static void act_on_signals (HSOCKET); -# else +#else static void act_on_signals (HSOCKET s) {} static void init_signals (void) {} -# endif +#endif enum { AUTH_KEY_LENGTH = 64 }; static void sock_err_message (const char *function_name) { -# ifdef WINDOWSNT +#ifdef WINDOWSNT /* On Windows, the socket library was historically separate from the standard C library, so errors are handled differently. */ @@ -763,9 +756,9 @@ sock_err_message (const char *function_name) message (true, "%s: %s: %s\n", progname, function_name, msg); LocalFree (msg); -# else +#else message (true, "%s: %s: %s\n", progname, function_name, strerror (errno)); -# endif +#endif } @@ -877,7 +870,7 @@ unquote_argument (char *str) } -# ifdef WINDOWSNT +#ifdef WINDOWSNT /* Wrapper to make WSACleanup a cdecl, as required by atexit. */ void __cdecl close_winsock (void); void __cdecl @@ -901,7 +894,7 @@ initialize_sockets (void) atexit (close_winsock); } -# endif /* WINDOWSNT */ +#endif /* WINDOWSNT */ /* If the home directory is HOME, return the configuration file with @@ -940,10 +933,10 @@ get_server_config (const char *config_file, struct sockaddr_in *server, else { config = open_config (egetenv ("HOME"), config_file); -# ifdef WINDOWSNT +#ifdef WINDOWSNT if (!config) config = open_config (egetenv ("APPDATA"), config_file); -# endif +#endif } if (! config) @@ -1079,7 +1072,7 @@ find_tty (const char **tty_type, const char **tty_name, bool noabort) } -# ifdef SOCKETS_IN_FILE_SYSTEM +#ifdef SOCKETS_IN_FILE_SYSTEM /* Three possibilities: >0 - 'stat' failed with this errno value @@ -1117,10 +1110,10 @@ socket_status (const char *name) static void reinstall_handler_if_needed (int sig, void (*handler) (int)) { -# ifndef SA_RESETHAND +# ifndef SA_RESETHAND /* This is a platform without POSIX's sigaction. */ signal (sig, handler); -# endif +# endif } /* Flags for each signal, and handlers that set the flags. */ @@ -1160,7 +1153,7 @@ handle_sigwinch (int sig) static void install_handler (int sig, void (*handler) (int), sig_atomic_t volatile *flag) { -# ifdef SA_RESETHAND +# ifdef SA_RESETHAND if (flag) { struct sigaction oact; @@ -1170,7 +1163,7 @@ install_handler (int sig, void (*handler) (int), sig_atomic_t volatile *flag) struct sigaction act = { .sa_handler = handler }; sigemptyset (&act.sa_mask); sigaction (sig, &act, NULL); -# else +# else void (*ohandler) (int) = signal (sig, handler); if (flag) { @@ -1182,7 +1175,7 @@ install_handler (int sig, void (*handler) (int), sig_atomic_t volatile *flag) *flag = 0; } } -# endif +# endif } /* Initial installation of signal handlers. */ @@ -1311,10 +1304,10 @@ set_local_socket (const char *local_socket_name) tmpdir = egetenv ("TMPDIR"); if (!tmpdir) { -# ifdef DARWIN_OS -# ifndef _CS_DARWIN_USER_TEMP_DIR -# define _CS_DARWIN_USER_TEMP_DIR 65537 -# endif +# ifdef DARWIN_OS +# ifndef _CS_DARWIN_USER_TEMP_DIR +# define _CS_DARWIN_USER_TEMP_DIR 65537 +# endif size_t n = confstr (_CS_DARWIN_USER_TEMP_DIR, NULL, 0); if (n > 0) { @@ -1322,7 +1315,7 @@ set_local_socket (const char *local_socket_name) confstr (_CS_DARWIN_USER_TEMP_DIR, tmpdir_storage, n); } else -# endif +# endif tmpdir = "/tmp"; } socket_name_storage = @@ -1417,7 +1410,7 @@ set_local_socket (const char *local_socket_name) CLOSE_SOCKET (s); return INVALID_SOCKET; } -# endif /* SOCKETS_IN_FILE_SYSTEM */ +#endif /* SOCKETS_IN_FILE_SYSTEM */ static HSOCKET set_socket (bool no_exit_if_error) @@ -1427,7 +1420,7 @@ set_socket (bool no_exit_if_error) INITIALIZE (); -# ifdef SOCKETS_IN_FILE_SYSTEM +#ifdef SOCKETS_IN_FILE_SYSTEM /* Explicit --socket-name argument. */ if (!socket_name) socket_name = egetenv ("EMACS_SOCKET_NAME"); @@ -1441,7 +1434,7 @@ set_socket (bool no_exit_if_error) progname, socket_name); exit (EXIT_FAILURE); } -# endif +#endif /* Explicit --server-file arg or EMACS_SERVER_FILE variable. */ if (!local_server_file) @@ -1458,12 +1451,12 @@ set_socket (bool no_exit_if_error) exit (EXIT_FAILURE); } -# ifdef SOCKETS_IN_FILE_SYSTEM +#ifdef SOCKETS_IN_FILE_SYSTEM /* Implicit local socket. */ s = set_local_socket ("server"); if (s != INVALID_SOCKET) return s; -# endif +#endif /* Implicit server file. */ s = set_tcp_socket ("server"); @@ -1472,16 +1465,16 @@ set_socket (bool no_exit_if_error) /* No implicit or explicit socket, and no alternate editor. */ message (true, "%s: No socket or alternate editor. Please use:\n\n" -# ifdef SOCKETS_IN_FILE_SYSTEM +#ifdef SOCKETS_IN_FILE_SYSTEM "\t--socket-name\n" -# endif +#endif "\t--server-file (or environment variable EMACS_SERVER_FILE)\n\ \t--alternate-editor (or environment variable ALTERNATE_EDITOR)\n", progname); exit (EXIT_FAILURE); } -# ifdef HAVE_NTGUI +#ifdef HAVE_NTGUI FARPROC set_fg; /* Pointer to AllowSetForegroundWindow. */ FARPROC get_wc; /* Pointer to RealGetWindowClassA. */ @@ -1565,14 +1558,14 @@ w32_give_focus (void) && (get_wc = GetProcAddress (user32, "RealGetWindowClassA"))) EnumWindows (w32_find_emacs_process, (LPARAM) 0); } -# endif /* HAVE_NTGUI */ +#endif /* HAVE_NTGUI */ /* Start the emacs daemon and try to connect to it. */ static HSOCKET start_daemon_and_retry_set_socket (void) { -# ifndef WINDOWSNT +#ifndef WINDOWSNT pid_t dpid; int status; @@ -1605,7 +1598,7 @@ start_daemon_and_retry_set_socket (void) d_argv[0] = emacs; d_argv[1] = daemon_option; d_argv[2] = 0; -# ifdef SOCKETS_IN_FILE_SYSTEM +# ifdef SOCKETS_IN_FILE_SYSTEM if (socket_name != NULL) { /* Pass --daemon=socket_name as argument. */ @@ -1615,12 +1608,12 @@ start_daemon_and_retry_set_socket (void) strcpy (stpcpy (daemon_arg, deq), socket_name); d_argv[1] = daemon_arg; } -# endif +# endif execvp ("emacs", d_argv); message (true, "%s: error starting emacs daemon\n", progname); exit (EXIT_FAILURE); } -# else /* WINDOWSNT */ +#else /* WINDOWSNT */ DWORD wait_result; HANDLE w32_daemon_event; STARTUPINFO si; @@ -1684,7 +1677,7 @@ start_daemon_and_retry_set_socket (void) if (!w32_window_app ()) message (true, "Emacs daemon should have started, trying to connect again\n"); -# endif /* WINDOWSNT */ +#endif /* WINDOWSNT */ HSOCKET emacs_socket = set_socket (true); if (emacs_socket == INVALID_SOCKET) @@ -1704,7 +1697,6 @@ flush_stdout (HSOCKET emacs_socket) while (fdatasync (STDOUT_FILENO) != 0 && errno == EINTR) act_on_signals (emacs_socket); } -#endif /* HAVE_SOCKETS && HAVE_INET_SOCKETS */ int main (int argc, char **argv) @@ -1713,23 +1705,18 @@ main (int argc, char **argv) main_argv = argv; progname = argv[0] ? argv[0] : "emacsclient"; -#if ! (defined HAVE_SOCKETS && defined HAVE_INET_SOCKETS) - message (true, "%s: Sorry, support for Berkeley sockets is required.\n", - progname); - fail (); -#else /* HAVE_SOCKETS && HAVE_INET_SOCKETS */ int rl = 0; bool skiplf = true; char string[BUFSIZ + 1]; int exit_status = EXIT_SUCCESS; -# ifdef HAVE_NTGUI +#ifdef HAVE_NTGUI /* On Windows 7 and later, we need to explicitly associate emacsclient with emacs so the UI behaves sensibly. This association does no harm if we're not actually connecting to an Emacs using a window display. */ w32_set_user_model_id (); -# endif /* HAVE_NTGUI */ +#endif /* Process options. */ decode_options (argc, argv); @@ -1742,7 +1729,7 @@ main (int argc, char **argv) exit (EXIT_FAILURE); } -# ifndef WINDOWSNT +#ifndef WINDOWSNT if (tty) { pid_t pgrp = getpgrp (); @@ -1750,7 +1737,7 @@ main (int argc, char **argv) if (0 <= tcpgrp && tcpgrp != pgrp) kill (-pgrp, SIGTTIN); } -# endif /* !WINDOWSNT */ +#endif /* If alternate_editor is the empty string, start the emacs daemon in case of failure to connect. */ @@ -1774,10 +1761,10 @@ main (int argc, char **argv) fail (); } -# ifdef HAVE_NTGUI +#ifdef HAVE_NTGUI if (display && !strcmp (display, "w32")) w32_give_focus (); -# endif /* HAVE_NTGUI */ +#endif /* Send over our environment and current directory. */ if (create_frame) @@ -1879,7 +1866,7 @@ main (int argc, char **argv) continue; } } -# ifdef WINDOWSNT +#ifdef WINDOWSNT else if (! IS_ABSOLUTE_FILE_NAME (argv[i]) && (isalpha (argv[i][0]) && argv[i][1] == ':')) /* Windows can have a different default directory for each @@ -1898,7 +1885,7 @@ main (int argc, char **argv) else free (filename); } -# endif +#endif send_to_emacs (emacs_socket, "-file "); if (tramp_prefix && IS_ABSOLUTE_FILE_NAME (argv[i])) @@ -2008,7 +1995,6 @@ main (int argc, char **argv) skiplf = str[strlen (str) - 1] == '\n'; exit_status = EXIT_FAILURE; } -# ifdef SIGSTOP else if (strprefix ("-suspend ", p)) { /* -suspend: Suspend this terminal, i.e., stop the process. */ @@ -2017,7 +2003,6 @@ main (int argc, char **argv) skiplf = true; kill (0, SIGSTOP); } -# endif else { /* Unknown command. */ @@ -2036,5 +2021,4 @@ main (int argc, char **argv) CLOSE_SOCKET (emacs_socket); return exit_status; -#endif /* HAVE_SOCKETS && HAVE_INET_SOCKETS */ } |