File Fix-initialization-of-erl_call.patch of Package erlang
From 5f5aafa365a7a7e70e15a330cf318f89700ba80a Mon Sep 17 00:00:00 2001
From: Rickard Green <rickard@erlang.org>
Date: Fri, 15 Mar 2019 15:15:20 +0100
Subject: [PATCH] Fix initialization of erl_call
Previously erl_call relied on the implicit initialization made
of the ei-lib if no explicit initialization had been done. This
implicit initialization was utterly broken and was removed in
erl_interface-3.11 (OTP 21.3) since it has been documented for
a very long time that an explicit initialization is required.
---
 lib/erl_interface/src/prog/erl_call.c | 50 ++-------------------------
 1 file changed, 2 insertions(+), 48 deletions(-)
diff --git a/lib/erl_interface/src/prog/erl_call.c b/lib/erl_interface/src/prog/erl_call.c
index 52ad6885e87..a9840bfa8b6 100644
--- a/lib/erl_interface/src/prog/erl_call.c
+++ b/lib/erl_interface/src/prog/erl_call.c
@@ -157,6 +157,8 @@ int erl_call(int argc, char **argv)
     char* progname = argv[0];
     ei_cnode ec;
 
+    ei_init();
+
     /* Get the command line options */
     while (i < argc) {
 	if (argv[i][0] != '-') {
@@ -317,14 +319,6 @@ int erl_call(int argc, char **argv)
       struct in_addr h_ipadr;
       char* ct;
 
-#ifdef __WIN32__
-      /*
-       * FIXME Extremly ugly, but needed to get ei_gethostbyname() below
-       * to work.
-       */
-      initWinSock();
-#endif
-
       /* gethostname requires len to be max(hostname) + 1 */
       if (gethostname(h_hostname, EI_MAXHOSTNAMELEN+1) < 0) {
 	  fprintf(stderr,"erl_call: failed to get host name: %d\n", errno);
@@ -857,46 +851,6 @@ static void usage(const char *progname) {
   exit(0);
 }
 
-
-/***************************************************************************
- *
- *  OS specific functions
- *
- ***************************************************************************/
-
-#ifdef __WIN32__
-/*
- * FIXME This should not be here.  This is a quick fix to make erl_call
- * work at all on Windows NT.
- */
-static void initWinSock(void)
-{
-    WORD wVersionRequested;  
-    WSADATA wsaData; 
-    int err; 
-    static int initialized;
-
-    wVersionRequested = MAKEWORD(1, 1); 
-    if (!initialized) {
-	initialized = 1;
-	err = WSAStartup(wVersionRequested, &wsaData); 
- 
-	if (err != 0) {
-	    fprintf(stderr,"erl_call: "
-		    "Can't initialize windows sockets: %d\n", err);
-	}
-  
-	if ( LOBYTE( wsaData.wVersion ) != 1 || 
-	    HIBYTE( wsaData.wVersion ) != 1 ) { 
-	    fprintf(stderr,"erl_call: This version of "
-		    "windows sockets not supported\n");
-	    WSACleanup(); 
-	}
-    }
-}
-#endif
-
-
 /***************************************************************************
  *
  *  Utility functions