From d22b00e51653ed4c81d1e078f1aa4ff9eb6b1a5b Mon Sep 17 00:00:00 2001 From: Jason Rumney Date: Thu, 25 Oct 2007 23:56:53 +0000 Subject: (sock_err_message): New function. (set_tcp_socket): Use it. --- lib-src/emacsclient.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'lib-src/emacsclient.c') diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index c7f0bcf561..adc580e476 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; } -- cgit v1.2.3