* Use gnulib.
[elisp/starttls.git] / starttls.c
index 7343396..a3ddf94 100644 (file)
@@ -29,6 +29,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdbool.h>
 
 #include <unistd.h>
 
 #ifdef HAVE_POLL_H
 #include <sys/poll.h>
 #endif
-#define _GNU_SOURCE
 #include "getopt.h"
+#include "getaddrinfo.h"
+#include "gettext.h"
+#include "inet_ntop.h"
+#include "strdup.h"
 
 extern void tls_negotiate (int, const char *, const char *);
 extern int tls_write(int, const char *, int);
@@ -84,16 +88,9 @@ int
 tcp_connect (hostname, service)
      const char *hostname, *service;
 {
-  int server, false = 0;
-#ifdef HAVE_ADDRINFO
+  int server, _false = 0;
   struct addrinfo *in, *in0, hints;
-#else
-  struct hostent *host;
-  struct servent *serv;
-  struct sockaddr_in sin;
-#endif
 
-#ifdef HAVE_ADDRINFO
   memset (&hints, 0, sizeof (hints));
   hints.ai_family = AF_UNSPEC;
   hints.ai_socktype = SOCK_STREAM;
@@ -115,31 +112,9 @@ tcp_connect (hostname, service)
 
   if (server < 0)
     return -1;
-#else
-  memset (&sin, 0, sizeof (sin));
-  host = gethostbyname (hostname);
-  if (!host)
-    return -1;
-  memcpy (&sin.sin_addr, host->h_addr, host->h_length);
-  serv = getservbyname (service, "tcp");
-  if (serv)
-    sin.sin_port = serv->s_port;
-  else if (isdigit (service[0]))
-    sin.sin_port = htons (atoi (service));
-  sin.sin_family = AF_INET;
-  server = socket (sin.sin_family, SOCK_STREAM, 0);
-  if (server == -1)
-    return -1;
-
-  if (connect (server, (struct sockaddr *)&sin, sizeof (sin)) < 0)
-    {
-      close (server);
-      return -1;
-    }
-#endif
 
-  setsockopt (server, SOL_SOCKET, SO_KEEPALIVE, (const char *) &false,
-             sizeof (false));
+  setsockopt (server, SOL_SOCKET, SO_KEEPALIVE, (const char *) &_false,
+             sizeof (_false));
 
   return server;
 }
@@ -183,14 +158,14 @@ main (argc, argv)
          opt_key_file = optarg;
          break;
        default:
-         usage (basename (argv[0]));
+         usage (argv[0]);
          return 1;
        }
     }
 
   if (optind+2 != argc)
     {
-      usage (basename (argv[0]));
+      usage (argv[0]);
       return 1;
     }