summaryrefslogtreecommitdiff
path: root/sdk/recipes/patches/libcurl/ppc-amigaos/lib.hostip4.c.p
blob: c6637161a2a041ab1949685e55b6011784137db3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
--- curl_orig/lib/hostip4.c	2013-10-23 21:55:34.000000000 +0100
+++ curl/lib/hostip4.c	2014-01-30 10:19:46.900018967 +0000
@@ -122,6 +122,11 @@ Curl_addrinfo *Curl_getaddrinfo(struct c
  * implying that only threadsafe code and function calls may be used.
  *
  */
+#ifdef __amigaos4__
+#include <proto/exec.h>
+#include <proto/bsdsocket.h>
+#endif
+
 Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname,
                                    int port)
 {
@@ -132,6 +137,9 @@ Curl_addrinfo *Curl_ipv4_resolve_r(const
   struct hostent *h = NULL;
   struct in_addr in;
   struct hostent *buf = NULL;
+#ifdef __amigaos4__
+  struct SocketIFace *ISocket = NULL;
+#endif
 
   if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
     /* This is a dotted IP address 123.123.123.123-style */
@@ -294,7 +302,20 @@ Curl_addrinfo *Curl_ipv4_resolve_r(const
      * gethostbyname() is the preferred one.
      */
   else {
+#ifdef __amigaos4__
+    struct Library *SocketBase = IExec->OpenLibrary("bsdsocket.library", 4);
+    if (SocketBase)
+    {
+       ISocket = (struct SocketIFace *)IExec->GetInterface(SocketBase, "main", 1, NULL);
+    }
+
+    if (ISocket)
+    {
+       h = ISocket->gethostbyname((void*)hostname);
+    }
+#else  
     h = gethostbyname((void*)hostname);
+#endif	
 #endif /* HAVE_GETADDRINFO_THREADSAFE || HAVE_GETHOSTBYNAME_R */
   }
 
@@ -304,7 +325,14 @@ Curl_addrinfo *Curl_ipv4_resolve_r(const
     if(buf) /* used a *_r() function */
       free(buf);
   }
-
+#ifdef __amigaos4__
+  if (ISocket)
+  {
+     struct Library *SocketBase = ISocket->Data.LibBase;
+     IExec->DropInterface((struct Interface *)ISocket);
+     IExec->CloseLibrary(SocketBase);
+  }
+#endif 
   return ai;
 }
 #endif /* defined(CURLRES_IPV4) && !defined(CURLRES_ARES) */