summaryrefslogtreecommitdiff
path: root/lib-src
diff options
context:
space:
mode:
authorJason Rumney <jasonr@gnu.org>2007-10-25 23:56:34 +0000
committerJason Rumney <jasonr@gnu.org>2007-10-25 23:56:34 +0000
commitc9912c7e313a280043f903e4542061e28c6ed8cb (patch)
tree416e670db952b7a7234eb5f3b3f9ec54bf46e7e9 /lib-src
parentb5dfef3ffd9aaf937ce7d21d64c3bfd9e18b65f6 (diff)
downloademacs-c9912c7e313a280043f903e4542061e28c6ed8cb.tar.gz
(sock_err_message): New function.
(set_tcp_socket): Use it.
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/emacsclient.c27
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;
}