| |
| |
| @@ -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)); |
| } |
| } |
| |
| |
| @@ -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; |
| } |
| |
| |
| @@ -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 |
| |
| |
| @@ -35,7 +35,8 @@ |
| #include <openssl/err.h> |
| |
| /* 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; |