--- irssi-0.8.20/src/core/pidwait.c.orig 2016-08-11 14:59:21.000000000 +0200 +++ irssi-0.8.20/src/core/pidwait.c 2016-12-18 01:14:30.017866300 +0100 @@ -39,8 +39,10 @@ void pidwait_add(int pid) { if (g_hash_table_lookup(child_pids, GINT_TO_POINTER(pid)) == NULL) { +#ifndef __midipix__ int id = g_child_watch_add_full(10, pid, sig_child, NULL, NULL); g_hash_table_insert(child_pids, GINT_TO_POINTER(pid), GINT_TO_POINTER(id)); +#endif pids = g_slist_append(pids, GINT_TO_POINTER(pid)); } } --- irssi-0.8.20/src/core/servers.c.orig 2016-09-14 13:46:13.000000000 +0200 +++ irssi-0.8.20/src/core/servers.c 2016-12-18 01:17:03.451031500 +0100 @@ -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; } --- irssi-0.8.20/src/fe-common/core/fe-exec.c.orig 2016-09-14 13:46:13.000000000 +0200 +++ irssi-0.8.20/src/fe-common/core/fe-exec.c 2016-12-18 01:14:30.018866300 +0100 @@ -288,6 +288,9 @@ } } +#ifdef __midipix__ +static void sig_pidwait(void *pid, void *statusp); +#endif static void process_exec(PROCESS_REC *rec, const char *cmd) { const char *shell_args[4] = { "/bin/sh", "-c", NULL, NULL }; @@ -535,6 +538,14 @@ (GInputFunction) sig_exec_input_reader, rec); processes = g_slist_append(processes, rec); +#ifdef __midipix__ + int status; + waitpid(rec->pid, &status, 0); + while (rec->read_tag != -1) { + sig_exec_input_reader(rec); + } + sig_pidwait((void *)rec->pid, &status); +#endif if (rec->target == NULL && interactive) rec->target_item = exec_wi_create(active_win, rec); diff -ru irssi-1.1.1.orig/src/core/network-openssl.c irssi-1.1.1/src/core/network-openssl.c --- irssi-1.1.1.orig/src/core/network-openssl.c 2018-02-15 00:53:44.000000000 +0100 +++ irssi-1.1.1/src/core/network-openssl.c 2018-04-04 17:17:45.180379304 +0200 @@ -35,7 +35,8 @@ #include /* OpenSSL 1.1.0 introduced some backward-incompatible changes to the api */ -#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER) +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \ + (!defined(LIBRESSL_VERSION_NUMBER) || LIBRESSL_VERSION_NUMBER < 0x2070000fL) /* The two functions below could be already defined if OPENSSL_API_COMPAT is * below the 1.1.0 version so let's do a clean start */ #undef X509_get_notBefore @@ -47,7 +48,8 @@ /* OpenSSL 1.1.0 also introduced some useful additions to the api */ #if (OPENSSL_VERSION_NUMBER >= 0x10002000L) -#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined (LIBRESSL_VERSION_NUMBER) +#if (OPENSSL_VERSION_NUMBER < 0x10100000L) && \ + (!defined(LIBRESSL_VERSION_NUMBER) || LIBRESSL_VERSION_NUMBER < 0x2070000fL) static int X509_STORE_up_ref(X509_STORE *vfy) { int n;