# HG changeset patch # User Jason Rumney # Date 1193356594 0 # Node ID 8919d6b286e1f52f2f9554abcac246a4d19b2078 # Parent bd489b08bec683634b6bed56de041bca1cc0c853 (sock_err_message): New function. (set_tcp_socket): Use it. diff -r bd489b08bec6 -r 8919d6b286e1 lib-src/emacsclient.c --- a/lib-src/emacsclient.c Thu Oct 25 14:40:00 2007 +0000 +++ b/lib-src/emacsclient.c Thu Oct 25 23:56:34 2007 +0000 @@ -395,6 +395,29 @@ 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 @@ */ 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 @@ */ 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; }