summaryrefslogtreecommitdiffhomepage
path: root/irssi-0.8.18.local.patch
blob: a65fd02b922d7496404dd6c57fe1d8c366f4e67f (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
62
63
64
65
66
67
68
69
--- irssi-0.8.18/build-aux/config.sub.orig	2016-02-08 20:16:25.000000000 +0000
+++ irssi-0.8.18/build-aux/config.sub	2016-03-06 18:06:18.154558135 +0000
@@ -804,6 +804,10 @@
 	microblaze*)
 		basic_machine=microblaze-xilinx
 		;;
+	midipix)
+		basic_machine=x86_64-pc
+		os=-midipix
+		;;
 	mingw64)
 		basic_machine=x86_64-pc
 		os=-mingw64
@@ -1384,7 +1388,7 @@
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* | -cegcc* \
 	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
 	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
--- irssi-0.8.18/src/core/servers.c.orig	2016-01-20 22:08:07.000000000 +0000
+++ irssi-0.8.18/src/core/servers.c	2016-06-13 11:28:49.187797037 +0000
@@ -407,6 +407,36 @@
 		/* connect with unix socket */
 		server_real_connect(server, NULL, server->connrec->address);
 	} else {
+	#ifdef __midipix__
+		IPADDR ip4, ip6, *ip;
+
+		connect_address = server->connrec->proxy != NULL ?
+			server->connrec->proxy : server->connrec->address;
+		if (net_gethostbyname(connect_address, &ip4, &ip6) == -1) {
+			g_warning("net_gethostbyname(): -1");
+			g_free(server->tag);
+			g_free(server->nick);
+			return FALSE;
+		} else if (server->connrec->family == 0) {
+			/* prefer IPv4 addresses */
+			ip = ip4.family != 0 ? &ip4 : &ip6;
+		} else if (server->connrec->family == AF_INET6) {
+			/* IPv6 address, use if possible */
+			if (ip6.family != 0) {
+				ip = &ip6;
+			} else {
+				ip = &ip4;
+			}
+		} else {
+			/* IPv4 address, use if possible */
+			if (ip4.family != 0) {
+				ip = &ip4;
+			} else {
+				ip = &ip6;
+			}
+		}
+		server_real_connect(server, ip, NULL);
+	#else
 		/* resolve host name */
 		if (pipe(fd) != 0) {
 			g_warning("server_connect(): pipe() failed.");
@@ -433,6 +463,7 @@
 		lookup_servers = g_slist_append(lookup_servers, server);
 
 		signal_emit("server looking", 1, server);
+	#endif
 	}
 	return TRUE;
 }