Hello community,

here is the log from the commit of package hexchat for openSUSE:Factory checked 
in at 2019-12-23 22:45:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hexchat (Old)
 and      /work/SRC/openSUSE:Factory/.hexchat.new.6675 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hexchat"

Mon Dec 23 22:45:19 2019 rev:27 rq:758837 version:2.14.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/hexchat/hexchat.changes  2018-09-03 
10:36:00.760810440 +0200
+++ /work/SRC/openSUSE:Factory/.hexchat.new.6675/hexchat.changes        
2019-12-23 22:48:26.906089898 +0100
@@ -1,0 +2,12 @@
+Sun Dec 22 07:44:08 UTC 2019 - Andrey Karepin <[email protected]>
+
+- update to 2.14.3
+  * fix various incorrect parsing of IRC messages relating to trailing
+    parameters
+  * fix SASL negotiation combined with multi-line cap
+  * fix input box theming with Yaru theme
+  * python: Work around Python 3.7 regression causing crash on unload
+  * sysinfo: Add support for /etc/os-release
+  * sysinfo: Ignore irrelevant mounts when calculating storage size
+
+-------------------------------------------------------------------

Old:
----
  hexchat-2.14.2.tar.xz
  hexchat-2.14.2.tar.xz.asc

New:
----
  hexchat-2.14.3.tar.xz
  hexchat-2.14.3.tar.xz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ hexchat.spec ++++++
--- /var/tmp/diff_new_pack.qjPzHg/_old  2019-12-23 22:48:28.218090383 +0100
+++ /var/tmp/diff_new_pack.qjPzHg/_new  2019-12-23 22:48:28.230090387 +0100
@@ -1,8 +1,7 @@
 #
 # spec file for package hexchat
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
-# Copyright (c) 2013 Andrey Karepin <[email protected]>
+# Copyright (c) 2019 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -13,17 +12,17 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           hexchat
-Version:        2.14.2
+Version:        2.14.3
 Release:        0
 Summary:        A graphical IRC (chat) client
 License:        GPL-2.0-or-later
 Group:          Productivity/Networking/IRC
-Url:            https://hexchat.github.io/
+URL:            https://hexchat.github.io/
 Source0:        https://dl.%{name}.net/%{name}/%{name}-%{version}.tar.xz
 Source1:        hexchat-migrate-sh
 Source2:        https://dl.%{name}.net/%{name}/%{name}-%{version}.tar.xz.asc

++++++ hexchat-2.14.2.tar.xz -> hexchat-2.14.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hexchat-2.14.2/data/misc/io.github.Hexchat.appdata.xml.in 
new/hexchat-2.14.3/data/misc/io.github.Hexchat.appdata.xml.in
--- old/hexchat-2.14.2/data/misc/io.github.Hexchat.appdata.xml.in       
2018-08-29 23:13:25.000000000 +0200
+++ new/hexchat-2.14.3/data/misc/io.github.Hexchat.appdata.xml.in       
2019-12-21 07:43:47.642401500 +0100
@@ -26,6 +26,19 @@
     <id>hexchat.desktop</id>
   </provides>
   <releases>
+    <release date="2019-12-20" version="2.14.3">
+      <description>
+        <p>This is a bug-fix release:</p>
+        <ul>
+          <li>Fix various incorrect parsing of IRC messages relating to 
trailing parameters</li>
+          <li>Fix SASL negotiation combined with multi-line cap</li>
+          <li>Fix input box theming with Yaru theme</li>
+          <li>python: Work around Python 3.7 regression causing crash on 
unload</li>
+          <li>sysinfo: Add support for /etc/os-release</li>
+          <li>sysinfo: Ignore irrelevant mounts when calculating storage 
size</li>
+        </ul>
+      </description>
+    </release>
     <release date="2018-08-29" version="2.14.2">
       <description>
         <p>This is a minor release:</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/data/pkgconfig/meson.build 
new/hexchat-2.14.3/data/pkgconfig/meson.build
--- old/hexchat-2.14.2/data/pkgconfig/meson.build       2018-08-29 
23:13:25.000000000 +0200
+++ new/hexchat-2.14.3/data/pkgconfig/meson.build       2019-12-21 
07:43:47.642401500 +0100
@@ -2,8 +2,8 @@
 prefix = get_option('prefix')
 pkg_conf.set('prefix', prefix)
 pkg_conf.set('VERSION', meson.project_version())
-pkg_conf.set('hexchatlibdir', join_paths(prefix, plugindir))
-pkg_conf.set('includedir', join_paths(prefix, get_option('includedir')))
+pkg_conf.set('hexchatlibdir', join_paths('${prefix}', plugindir))
+pkg_conf.set('includedir', join_paths('${prefix}', get_option('includedir')))
 
 configure_file(
   input: 'hexchat-plugin.pc.in',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/meson.build 
new/hexchat-2.14.3/meson.build
--- old/hexchat-2.14.2/meson.build      2018-08-29 23:13:25.000000000 +0200
+++ new/hexchat-2.14.3/meson.build      2019-12-21 07:43:47.642401500 +0100
@@ -1,6 +1,6 @@
 project('hexchat', 'c',
-  version: '2.14.2',
-  meson_version: '>= 0.38.0',
+  version: '2.14.3',
+  meson_version: '>= 0.40.0',
   default_options: [
     'c_std=gnu89',
     'buildtype=debugoptimized',
@@ -87,8 +87,6 @@
 
 global_cflags = []
 test_cflags = [
-  '-pipe',
-  '-fPIE',
   '-funsigned-char',
   '-Wno-conversion',
   '-Wno-pointer-sign',
@@ -136,7 +134,13 @@
   '-Wl,--nxcompat',
 ]
 foreach ldflag : test_ldflags
-  if cc.has_argument(ldflag) and cc.links('int main (void) { return 0; }', 
args: ldflag)
+  if meson.version().version_compare('>= 0.46.0')
+    has_arg = cc.has_link_argument(ldflag)
+  else
+    has_arg = cc.has_argument(ldflag)
+  endif
+
+  if has_arg and cc.links('int main (void) { return 0; }', args: ldflag)
     global_ldflags += ldflag
   endif
 endforeach
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/plugins/python/python.c 
new/hexchat-2.14.3/plugins/python/python.c
--- old/hexchat-2.14.2/plugins/python/python.c  2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/plugins/python/python.c  2019-12-21 07:43:47.652401700 
+0100
@@ -2806,6 +2806,9 @@
        xchatout_buffer = NULL;
 
        if (interp_plugin) {
+               PyThreadState *tstate = ((PluginObject*)interp_plugin)->tstate;
+               PyThreadState_Swap(tstate);
+               Py_EndInterpreter(tstate);
                Py_DECREF(interp_plugin);
                interp_plugin = NULL;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/plugins/sysinfo/meson.build 
new/hexchat-2.14.3/plugins/sysinfo/meson.build
--- old/hexchat-2.14.2/plugins/sysinfo/meson.build      2018-08-29 
23:13:25.000000000 +0200
+++ new/hexchat-2.14.3/plugins/sysinfo/meson.build      2019-12-21 
07:43:47.652401700 +0100
@@ -13,13 +13,13 @@
 sysinfo_cargs = []
 
 system = host_machine.system()
-if system == 'linux' or system == 'darwin'
+if system == 'linux' or system == 'gnu' or system.startswith('gnu/') or system 
== 'darwin'
   sysinfo_includes += 'shared'
   sysinfo_sources += [
     'shared/df.c'
   ]
 
-  if system == 'linux'
+  if system == 'linux' or system == 'gnu' or system.startswith('gnu/')
     libpci = dependency('libpci', required: false, method: 'pkg-config')
     if libpci.found()
       sysinfo_deps += libpci
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/plugins/sysinfo/shared/df.c 
new/hexchat-2.14.3/plugins/sysinfo/shared/df.c
--- old/hexchat-2.14.2/plugins/sysinfo/shared/df.c      2018-08-29 
23:13:25.000000000 +0200
+++ new/hexchat-2.14.3/plugins/sysinfo/shared/df.c      2019-12-21 
07:43:47.652401700 +0100
@@ -26,7 +26,7 @@
        FILE *pipe;
        char buffer[bsize];
        
-       pipe = popen("df -k -l -P", "r");
+       pipe = popen("df -k -l -P --exclude-type=squashfs 
--exclude-type=devtmpfs --exclude-type=tmpfs", "r");
        if(pipe==NULL)
                return 1;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/plugins/sysinfo/unix/parse.c 
new/hexchat-2.14.3/plugins/sysinfo/unix/parse.c
--- old/hexchat-2.14.2/plugins/sysinfo/unix/parse.c     2018-08-29 
23:13:25.000000000 +0200
+++ new/hexchat-2.14.3/plugins/sysinfo/unix/parse.c     2019-12-21 
07:43:47.652401700 +0100
@@ -269,6 +269,16 @@
        return 0;
 }
 
+static void strip_quotes(char *string)
+{
+       size_t len = strlen(string);
+       if (string[len - 1] == '"')
+               string[--len] = '\0';
+
+       if (string[0] == '"')
+               memmove(string, string + 1, len);
+}
+
 int xs_parse_distro(char *name)
 {
        FILE *fp = NULL;
@@ -320,6 +330,20 @@
                else
                        g_snprintf(buffer, bsize, "Gentoo Linux %s", keywords);
        }
+       else if((fp = fopen("/etc/os-release", "r")) != NULL)
+       {
+               char name[bsize], version[bsize];
+               strcpy(name, "?");
+               strcpy(version, "?");
+               while(fgets(buffer, bsize, fp) != NULL)
+               {
+                       find_match_char(buffer, "NAME=", name);
+                       find_match_char(buffer, "VERSION=", version);
+               }
+               strip_quotes(name);
+               strip_quotes(version);
+               g_snprintf(buffer, bsize, "%s %s", name, version);
+       }
        else
                g_snprintf(buffer, bsize, "Unknown Distro");
        if(fp != NULL)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/plugins/sysinfo/unix/pci.c 
new/hexchat-2.14.3/plugins/sysinfo/unix/pci.c
--- old/hexchat-2.14.2/plugins/sysinfo/unix/pci.c       2018-08-29 
23:13:25.000000000 +0200
+++ new/hexchat-2.14.3/plugins/sysinfo/unix/pci.c       2019-12-21 
07:43:47.652401700 +0100
@@ -142,7 +142,7 @@
                {
                        position = strstr(buffer, vendor);
                        position += 6;
-                       strncpy(vendorname, position, bsize/2);
+                       g_strlcpy(vendorname, position, sizeof (vendorname));
                        position = strstr(vendorname, "\n");
                        *(position) = '\0';
                        break;
@@ -154,7 +154,7 @@
                {
                        position = strstr(buffer, device);
                        position += 6;
-                       strncpy(devicename, position, bsize/2);
+                       g_strlcpy(devicename, position, sizeof (devicename));
                        position = strstr(devicename, " (");
                        if (position == NULL)
                                position = strstr(devicename, "\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/dcc.c 
new/hexchat-2.14.3/src/common/dcc.c
--- old/hexchat-2.14.2/src/common/dcc.c 2018-08-29 23:13:25.000000000 +0200
+++ new/hexchat-2.14.3/src/common/dcc.c 2019-12-21 07:43:47.695736200 +0100
@@ -1006,7 +1006,7 @@
                sc.type = 1;
                sc.port = htons (dcc->port);
                sc.address = htonl (dcc->addr);
-               strncpy (sc.username, prefs.hex_irc_user_name, 9);
+               g_strlcpy (sc.username, prefs.hex_irc_user_name, sizeof 
(sc.username));
                memcpy (proxy->buffer, &sc, sizeof (sc));
                proxy->buffersize = 8 + strlen (sc.username) + 1;
                proxy->bufferused = 0;
@@ -1618,13 +1618,13 @@
 }
 
 guint32
-dcc_get_my_address (void)      /* the address we'll tell the other person */
+dcc_get_my_address (session *sess)     /* the address we'll tell the other 
person */
 {
        struct hostent *dns_query;
        guint32 addr = 0;
 
-       if (prefs.hex_dcc_ip_from_server && prefs.dcc_ip)
-               addr = prefs.dcc_ip;
+       if (prefs.hex_dcc_ip_from_server && sess->server->dcc_ip)
+               addr = sess->server->dcc_ip;
        else if (prefs.hex_dcc_ip[0])
        {
           dns_query = gethostbyname ((const char *) prefs.hex_dcc_ip);
@@ -1710,7 +1710,7 @@
        /*if we have a dcc_ip, we use that, so the remote client can connect*/
        /*else we try to take an address from hex_dcc_ip*/
        /*if something goes wrong we tell the client to connect to our LAN ip*/
-       dcc->addr = dcc_get_my_address ();
+       dcc->addr = dcc_get_my_address (sess);
 
        /*if nothing else worked we use the address we bound to*/
        if (dcc->addr == 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/dcc.h 
new/hexchat-2.14.3/src/common/dcc.h
--- old/hexchat-2.14.2/src/common/dcc.h 2018-08-29 23:13:25.000000000 +0200
+++ new/hexchat-2.14.3/src/common/dcc.h 2019-12-21 07:43:47.695736200 +0100
@@ -124,7 +124,7 @@
 void handle_dcc (session *sess, char *nick, char *word[], char *word_eol[],
                                          const message_tags_data *tags_data);
 void dcc_show_list (session *sess);
-guint32 dcc_get_my_address (void);
+guint32 dcc_get_my_address (session *sess);
 void dcc_get_with_destfile (struct DCC *dcc, char *utf8file);
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/hexchat.h 
new/hexchat-2.14.3/src/common/hexchat.h
--- old/hexchat-2.14.2/src/common/hexchat.h     2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/common/hexchat.h     2019-12-21 07:43:47.699069700 
+0100
@@ -313,7 +313,6 @@
 
        /* these are the private variables */
        guint32 local_ip;
-       guint32 dcc_ip;
 
        unsigned int wait_on_exit;      /* wait for logs to be flushed to disk 
IF we're connected */
 
@@ -482,6 +481,10 @@
        int proxy_sok4;
        int proxy_sok6;
        int id;                                 /* unique ID number (for plugin 
API) */
+
+       /* dcc_ip moved from haxchatprefs to make it per-server */
+       guint32 dcc_ip;
+
 #ifdef USE_OPENSSL
        SSL_CTX *ctx;
        SSL *ssl;
@@ -575,6 +578,7 @@
        unsigned int sasl_mech;                 /* mechanism for sasl auth */
        unsigned int sent_capend:1;     /* have sent CAP END yet */
        unsigned int waiting_on_cap:1;  /* waiting on another line of CAP LS */
+       unsigned int waiting_on_sasl:1; /* waiting on sasl */
 #ifdef USE_OPENSSL
        unsigned int use_ssl:1;                           /* is server SSL 
capable? */
        unsigned int accept_invalid_cert:1;/* ignore result of server's cert. 
verify */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/inbound.c 
new/hexchat-2.14.3/src/common/inbound.c
--- old/hexchat-2.14.2/src/common/inbound.c     2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/common/inbound.c     2019-12-21 07:43:47.699069700 
+0100
@@ -1420,7 +1420,7 @@
        HostAddr = gethostbyname (ip);
        if (HostAddr)
        {
-               prefs.dcc_ip = ((struct in_addr *) HostAddr->h_addr)->s_addr;
+               sess->server->dcc_ip = ((struct in_addr *) 
HostAddr->h_addr)->s_addr;
                EMIT_SIGNAL_TIMESTAMP (XP_TE_FOUNDIP, 
sess->server->server_session,
                                                                          
inet_ntoa (*((struct in_addr *) HostAddr->h_addr)),
                                                                          NULL, 
NULL, NULL, 0, tags_data->timestamp);
@@ -1768,7 +1768,6 @@
 {
        char buffer[500];       /* buffer for requesting capabilities and 
emitting the signal */
        gboolean want_cap = FALSE; /* format the CAP REQ string based on 
previous capabilities being requested or not */
-       gboolean want_sasl = FALSE; /* CAP END shouldn't be sent when SASL is 
requested, it needs further responses */
        char **extensions;
        int i;
 
@@ -1816,7 +1815,7 @@
                                serv->sasl_mech = sasl_mech;
                        }
                        want_cap = TRUE;
-                       want_sasl = TRUE;
+                       serv->waiting_on_sasl = TRUE;
                        g_strlcat (buffer, "sasl ", sizeof(buffer));
                        continue;
                }
@@ -1842,7 +1841,7 @@
                                                                          
tags_data->timestamp);
                tcp_sendf (serv, "%s\r\n", g_strchomp (buffer));
        }
-       if (!want_sasl && !serv->waiting_on_cap)
+       if (!serv->waiting_on_sasl && !serv->waiting_on_cap)
        {
                /* if we use SASL, CAP END is dealt via raw numerics */
                serv->sent_capend = TRUE;
@@ -1851,13 +1850,25 @@
 }
 
 void
-inbound_cap_nak (server *serv, const message_tags_data *tags_data)
+inbound_cap_nak (server *serv, char *extensions_str, const message_tags_data 
*tags_data)
 {
-       if (!serv->waiting_on_cap && !serv->sent_capend)
+       char **extensions;
+       int i;
+
+       extensions = g_strsplit (extensions_str, " ", 0);
+       for (i=0; extensions[i]; i++)
+       {
+               if (!g_strcmp0 (extensions[i], "sasl"))
+                       serv->waiting_on_sasl = FALSE;
+       }
+
+       if (!serv->waiting_on_cap && !serv->waiting_on_sasl && 
!serv->sent_capend)
        {
                serv->sent_capend = TRUE;
                tcp_send_len (serv, "CAP END\r\n", 9);
        }
+
+       g_strfreev (extensions);
 }
 
 void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/inbound.h 
new/hexchat-2.14.3/src/common/inbound.h
--- old/hexchat-2.14.2/src/common/inbound.h     2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/common/inbound.h     2019-12-21 07:43:47.699069700 
+0100
@@ -92,7 +92,7 @@
                                                         const 
message_tags_data *tags_data);
 void inbound_cap_ls (server *serv, char *nick, char *extensions,
                                                        const message_tags_data 
*tags_data);
-void inbound_cap_nak (server *serv, const message_tags_data *tags_data);
+void inbound_cap_nak (server *serv, char *extensions, const message_tags_data 
*tags_data);
 void inbound_cap_list (server *serv, char *nick, char *extensions,
                                                          const 
message_tags_data *tags_data);
 void inbound_cap_del (server *serv, char *nick, char *extensions,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/meson.build 
new/hexchat-2.14.3/src/common/meson.build
--- old/hexchat-2.14.2/src/common/meson.build   2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/common/meson.build   2019-12-21 07:43:47.699069700 
+0100
@@ -109,6 +109,7 @@
 )
 
 hexchat_common_dep = declare_dependency(
+  sources: [textevents] + marshal,
   link_with: hexchat_common,
   include_directories: common_includes,
   compile_args: common_cflags,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/modes.c 
new/hexchat-2.14.3/src/common/modes.c
--- old/hexchat-2.14.2/src/common/modes.c       2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/common/modes.c       2019-12-21 07:43:47.699069700 
+0100
@@ -735,6 +735,8 @@
                if (!(*word[i + offset]))
                        break;
                num_args++;
+               if (word[i + offset][0] == ':')
+                       break;
        }
 
        /* count the number of modes (without the -/+ chars */
@@ -765,7 +767,7 @@
                        if ((all_modes_have_args || mode_has_arg (serv, sign, 
*modes)) && arg < (num_args + 1))
                        {
                                arg++;
-                               argstr = word[arg + offset];
+                               argstr = STRIP_COLON(word, word_eol, 
arg+offset);
                        }
                        handle_single_mode (&mr, sign, *modes, nick, chan,
                                                                          
argstr, numeric_324 || prefs.hex_irc_raw_modes,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/outbound.c 
new/hexchat-2.14.3/src/common/outbound.c
--- old/hexchat-2.14.2/src/common/outbound.c    2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/common/outbound.c    2019-12-21 07:43:47.699069700 
+0100
@@ -3287,7 +3287,7 @@
        if (!word[2][0])
                return FALSE;
 
-       addr = dcc_get_my_address ();
+       addr = dcc_get_my_address (sess);
        if (addr == 0)
        {
                /* use the one from our connected server socket */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/proto-irc.c 
new/hexchat-2.14.3/src/common/proto-irc.c
--- old/hexchat-2.14.2/src/common/proto-irc.c   2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/common/proto-irc.c   2019-12-21 07:43:47.699069700 
+0100
@@ -60,8 +60,8 @@
 
        tcp_sendf (serv,
                                  "NICK %s\r\n"
-                                 "USER %s %s %s :%s\r\n",
-                                 serv->nick, user, user, serv->servername, 
realname);
+                                 "USER %s 0 * :%s\r\n",
+                                 serv->nick, user, realname);
 }
 
 static void
@@ -714,7 +714,7 @@
                break;
 
        case 333:
-               inbound_topictime (serv, word[4], word[5], atol (word[6]), 
tags_data);
+               inbound_topictime (serv, word[4], word[5], atol 
(STRIP_COLON(word, word_eol, 6)), tags_data);
                break;
 
 #if 0
@@ -726,7 +726,7 @@
 #endif
 
        case 341:                                                 /* INVITE ACK 
*/
-               EMIT_SIGNAL_TIMESTAMP (XP_TE_UINVITE, sess, word[4], word[5],
+               EMIT_SIGNAL_TIMESTAMP (XP_TE_UINVITE, sess, word[4], 
STRIP_COLON(word, word_eol, 5),
                                                                          
serv->servername, NULL, 0, tags_data->timestamp);
                break;
 
@@ -957,6 +957,7 @@
                EMIT_SIGNAL_TIMESTAMP (XP_TE_SASLRESPONSE, 
serv->server_session, word[1],
                                                                          
word[2], word[3], ++word_eol[4], 0,
                                                                          
tags_data->timestamp);
+               serv->waiting_on_sasl = FALSE;
                if (!serv->sent_capend)
                {
                        serv->sent_capend = TRUE;
@@ -1142,7 +1143,7 @@
                {
 
                case WORDL('A','C','C','O'):
-                       inbound_account (serv, nick, word[3], tags_data);
+                       inbound_account (serv, nick, STRIP_COLON(word, 
word_eol, 3), tags_data);
                        return;
 
                case WORDL('A', 'U', 'T', 'H'):
@@ -1150,7 +1151,7 @@
                        return;
 
                case WORDL('C', 'H', 'G', 'H'):
-                       inbound_user_info (sess, NULL, word[3], word[4], NULL, 
nick, NULL,
+                       inbound_user_info (sess, NULL, word[3], 
STRIP_COLON(word, word_eol, 4), NULL, nick, NULL,
                                                           NULL, 0xff, 
tags_data);
                        return;
 
@@ -1330,7 +1331,7 @@
                                }
                                else if (strncasecmp (word[4], "NAK", 3) == 0)
                                {
-                                       inbound_cap_nak (serv, tags_data);
+                                       inbound_cap_nak (serv, word[5][0] == 
':' ? word_eol[5] + 1 : word_eol[5], tags_data);
                                }
                                else if (strncasecmp (word[4], "LIST", 4) == 0) 
                                {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/proto-irc.h 
new/hexchat-2.14.3/src/common/proto-irc.h
--- old/hexchat-2.14.2/src/common/proto-irc.h   2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/common/proto-irc.h   2019-12-21 07:43:47.699069700 
+0100
@@ -28,6 +28,8 @@
                (time_t)0, /* timestamp */              \
        }
 
+#define STRIP_COLON(word, word_eol, idx) (word)[(idx)][0] == ':' ? 
(word_eol)[(idx)]+1 : (word)[(idx)]
+
 /* Message tag information that might be passed along with a server message
  *
  * See http://ircv3.atheme.org/specification/capability-negotiation-3.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/server.c 
new/hexchat-2.14.3/src/common/server.c
--- old/hexchat-2.14.2/src/common/server.c      2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/common/server.c      2019-12-21 07:43:47.699069700 
+0100
@@ -1042,7 +1042,7 @@
        sc.type = 1;
        sc.port = htons (port);
        sc.address = inet_addr (serverAddr);
-       strncpy (sc.username, prefs.hex_irc_user_name, 9);
+       g_strlcpy (sc.username, prefs.hex_irc_user_name, sizeof (sc.username));
 
        send (sok, (char *) &sc, 8 + strlen (sc.username) + 1, 0);
        buf[1] = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/common/servlist.c 
new/hexchat-2.14.3/src/common/servlist.c
--- old/hexchat-2.14.2/src/common/servlist.c    2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/common/servlist.c    2019-12-21 07:43:47.699069700 
+0100
@@ -166,9 +166,6 @@
        /* irc. points to chat. but many users and urls still reference it */
        {0,                             "irc.freenode.net"},
 
-       {"Furnet", 0, 0, 0, 0, 0, TRUE},
-       {0,                     "irc.furnet.org"},
-
        {"GalaxyNet",   0},
        {0,                     "irc.galaxynet.org"},
 
@@ -196,6 +193,11 @@
 #endif
        {0,                     "irc.globalgamers.net"},
 
+#ifdef USE_OPENSSL
+       {"hackint", 0, 0, 0, LOGIN_SASL, 0, TRUE},
+       {0,                     "irc.hackint.org"},
+#endif
+
        {"Hashmark",    0},
        {0,                     "irc.hashmark.net"},
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/fe-gtk/fe-gtk.c 
new/hexchat-2.14.3/src/fe-gtk/fe-gtk.c
--- old/hexchat-2.14.2/src/fe-gtk/fe-gtk.c      2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/fe-gtk/fe-gtk.c      2019-12-21 07:43:47.702403000 
+0100
@@ -293,10 +293,10 @@
                GtkSettings *settings = gtk_settings_get_default ();
                char *theme_name;
 
-               /* gnome-themes-standard 3.20 relies on images to do theming
+               /* gnome-themes-standard 3.20+ relies on images to do theming
                 * so we have to override that. */
                g_object_get (settings, "gtk-theme-name", &theme_name, NULL);
-               if (g_str_has_prefix (theme_name, "Adwaita"))
+               if (g_str_has_prefix (theme_name, "Adwaita") || 
g_str_has_prefix (theme_name, "Yaru"))
                        gtk_rc_parse_string (adwaita_workaround_rc);
                g_free (theme_name);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hexchat-2.14.2/src/fe-gtk/meson.build 
new/hexchat-2.14.3/src/fe-gtk/meson.build
--- old/hexchat-2.14.2/src/fe-gtk/meson.build   2018-08-29 23:13:25.000000000 
+0200
+++ new/hexchat-2.14.3/src/fe-gtk/meson.build   2019-12-21 07:43:47.705736400 
+0100
@@ -39,13 +39,9 @@
   hexchat_gtk_deps += dependency('x11')
 endif
 
-hexchat_gtk_cflags = [
-  '-fPIE'
-]
-
-hexchat_gtk_ldflags = [
-  '-pie'
-]
+hexchat_gtk_cflags = []
+
+hexchat_gtk_ldflags = []
 
 if get_option('with-libnotify')
   hexchat_gtk_sources += 'notifications/notification-libnotify.c'
@@ -89,6 +85,7 @@
   dependencies: hexchat_gtk_deps,
   c_args: hexchat_gtk_cflags,
   link_args: hexchat_gtk_ldflags,
+  pie: true,
   install: true,
   gui_app: true,
 )



Reply via email to