diff options
author | Jason Rumney <jasonr@gnu.org> | 2007-10-25 23:56:34 +0000 |
---|---|---|
committer | Jason Rumney <jasonr@gnu.org> | 2007-10-25 23:56:34 +0000 |
commit | c9912c7e313a280043f903e4542061e28c6ed8cb (patch) | |
tree | 416e670db952b7a7234eb5f3b3f9ec54bf46e7e9 /lib-src | |
parent | b5dfef3ffd9aaf937ce7d21d64c3bfd9e18b65f6 (diff) | |
download | emacs-c9912c7e313a280043f903e4542061e28c6ed8cb.tar.gz |
(sock_err_message): New function.
(set_tcp_socket): Use it.
Diffstat (limited to 'lib-src')
-rw-r--r-- | lib-src/emacsclient.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index c7f0bcf5613..adc580e4768 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -395,6 +395,29 @@ extern int errno; char send_buffer[SEND_BUFFER_SIZE + 1]; int sblen = 0; /* Fill pointer for the send buffer. */ +/* On Windows, the socket library was historically separate from the standard + C library, so errors are handled differently. */ +void +sock_err_message (function_name) + char *function_name; +{ +#ifdef WINDOWSNT + char* msg = NULL; + + FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_ALLOCATE_BUFFER + | FORMAT_MESSAGE_ARGUMENT_ARRAY, + NULL, WSAGetLastError (), 0, (LPTSTR)&msg, 0, NULL); + + message (TRUE, "%s: %s: %s\n", progname, function_name, msg); + + LocalFree (msg); +#else + message (TRUE, "%s: %s: %s\n", progname, function_name, strerror (errno)); +#endif +} + + /* Let's send the data to Emacs when either - the data ends in "\n", or - the buffer is full (but this shouldn't happen) @@ -646,7 +669,7 @@ set_tcp_socket () */ if ((s = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { - message (TRUE, "%s: socket: %s\n", progname, strerror (errno)); + sock_err_message ("socket"); return INVALID_SOCKET; } @@ -655,7 +678,7 @@ set_tcp_socket () */ if (connect (s, (struct sockaddr *) &server, sizeof server) < 0) { - message (TRUE, "%s: connect: %s\n", progname, strerror (errno)); + sock_err_message ("connect"); return INVALID_SOCKET; } |