diff --git a/.gitignore b/.gitignore index 6700d9b..ffaa94d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ # Ignore libxml2 while we're currently using the included distribution version before upgrading to newer HydraIRC/libs/libxml2/* -# Ignore libxml2-old folder, where we save the previous version of libxml -HydraIRC/libs/libxml2-old/* # Ignore VS Autogenerated Files *.ipch *.opensdf diff --git a/CHANGES.TXT b/CHANGES.TXT index 587ac9d..e40f47a 100644 --- a/CHANGES.TXT +++ b/CHANGES.TXT @@ -15,6 +15,15 @@ Key: (name) - the name of the person running HydraIRC who first reported the problem or requested the feature +9/October/2023 - PM (0.3.169) + gdwnldsKSC + + Resolved IRC Protocol issue from github issue https://github.com/HydraIRC/hydrairc/issues/17 + +24/August/2023 - AM (0.3.168) + gdwnldsKSC + * Updated libXML2 from 2.5.1 to current libXML2 master as of 22/October/2022 + * Upgraded WTL8 to WTL9.1 + 23/September/2022 - AM (0.3.167) - Experimental gdwnldsKSC * Updated DEVELOPER.TXT with instructonis for building under Visual Studio 2008 diff --git a/HydraIRC/Channel.cpp b/HydraIRC/Channel.cpp index b4f072f..7d7cb30 100644 --- a/HydraIRC/Channel.cpp +++ b/HydraIRC/Channel.cpp @@ -1,29 +1,21 @@ /* HydraIRC - Copyright (C) 2002-2006 Dominic Clifton aka Hydra + Copyright (C) 2002-2023 Dominic Clifton aka Hydra HydraIRC limited-use source license - 1) You can: - 1.1) Use the source to create improvements and bug-fixes to send to the - author to be incorporated in the main program. - 1.2) Use it for review/educational purposes. - - 2) You can NOT: - 2.1) Use the source to create derivative works. (That is, you can't release - your own version of HydraIRC with your changes in it) - 2.2) Compile your own version and sell it. - 2.3) Distribute unmodified, modified source or compiled versions of HydraIRC - without first obtaining permission from the author. (I want one place - for people to come to get HydraIRC from) - 2.4) Use any of the code or other part of HydraIRC in anything other than - HydraIRC. - - 3) All code submitted to the project: - 3.1) Must not be covered by any license that conflicts with this license - (e.g. GPL code) - 3.2) Will become the property of the author. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ diff --git a/HydraIRC/ChannelPropertiesDlg.cpp b/HydraIRC/ChannelPropertiesDlg.cpp index 1934252..82a0185 100644 --- a/HydraIRC/ChannelPropertiesDlg.cpp +++ b/HydraIRC/ChannelPropertiesDlg.cpp @@ -1,29 +1,19 @@ -/* +/* HydraIRC - Copyright (C) 2002-2006 Dominic Clifton aka Hydra - - HydraIRC limited-use source license - - 1) You can: - 1.1) Use the source to create improvements and bug-fixes to send to the - author to be incorporated in the main program. - 1.2) Use it for review/educational purposes. - - 2) You can NOT: - 2.1) Use the source to create derivative works. (That is, you can't release - your own version of HydraIRC with your changes in it) - 2.2) Compile your own version and sell it. - 2.3) Distribute unmodified, modified source or compiled versions of HydraIRC - without first obtaining permission from the author. (I want one place - for people to come to get HydraIRC from) - 2.4) Use any of the code or other part of HydraIRC in anything other than - HydraIRC. - - 3) All code submitted to the project: - 3.1) Must not be covered by any license that conflicts with this license - (e.g. GPL code) - 3.2) Will become the property of the author. + Copyright (C) 2002-2023 Dominic Clifton aka Hydra + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ diff --git a/HydraIRC/HydraIRC.cpp b/HydraIRC/HydraIRC.cpp index d835348..b0f4bc8 100644 --- a/HydraIRC/HydraIRC.cpp +++ b/HydraIRC/HydraIRC.cpp @@ -1,29 +1,19 @@ /* HydraIRC - Copyright (C) 2002-2006 Dominic Clifton aka Hydra - - HydraIRC limited-use source license - - 1) You can: - 1.1) Use the source to create improvements and bug-fixes to send to the - author to be incorporated in the main program. - 1.2) Use it for review/educational purposes. - - 2) You can NOT: - 2.1) Use the source to create derivative works. (That is, you can't release - your own version of HydraIRC with your changes in it) - 2.2) Compile your own version and sell it. - 2.3) Distribute unmodified, modified source or compiled versions of HydraIRC - without first obtaining permission from the author. (I want one place - for people to come to get HydraIRC from) - 2.4) Use any of the code or other part of HydraIRC in anything other than - HydraIRC. - - 3) All code submitted to the project: - 3.1) Must not be covered by any license that conflicts with this license - (e.g. GPL code) - 3.2) Will become the property of the author. + Copyright (C) 2002-2023 Dominic Clifton aka Hydra + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ diff --git a/HydraIRC/HydraIRC.rc b/HydraIRC/HydraIRC.rc index de96e58..5690c4f 100644 --- a/HydraIRC/HydraIRC.rc +++ b/HydraIRC/HydraIRC.rc @@ -92,8 +92,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,3,168,0 - PRODUCTVERSION 0,3,168,0 + FILEVERSION 0,3,169,0 + PRODUCTVERSION 0,3,169,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -111,12 +111,12 @@ BEGIN VALUE "Comments", "http://www.HydraIRC.com" VALUE "CompanyName", "Hydra Productions" VALUE "FileDescription", "HydraIRC" - VALUE "FileVersion", "0, 3, 168, 0" + VALUE "FileVersion", "0, 3, 169, 0" VALUE "InternalName", "HydraIRC" VALUE "LegalCopyright", "Dominic Clifton - Copyright 2002-2022" VALUE "OriginalFilename", "HydraIRC.exe" VALUE "ProductName", "HydraIRC" - VALUE "ProductVersion", "0.3.168.0" + VALUE "ProductVersion", "0.3.169.0" END END BLOCK "VarFileInfo" diff --git a/HydraIRC/Server.cpp b/HydraIRC/Server.cpp index 4cd26c5..739ac4f 100644 --- a/HydraIRC/Server.cpp +++ b/HydraIRC/Server.cpp @@ -1,29 +1,19 @@ /* HydraIRC - Copyright (C) 2002-2006 Dominic Clifton aka Hydra - - HydraIRC limited-use source license - - 1) You can: - 1.1) Use the source to create improvements and bug-fixes to send to the - author to be incorporated in the main program. - 1.2) Use it for review/educational purposes. - - 2) You can NOT: - 2.1) Use the source to create derivative works. (That is, you can't release - your own version of HydraIRC with your changes in it) - 2.2) Compile your own version and sell it. - 2.3) Distribute unmodified, modified source or compiled versions of HydraIRC - without first obtaining permission from the author. (I want one place - for people to come to get HydraIRC from) - 2.4) Use any of the code or other part of HydraIRC in anything other than - HydraIRC. - - 3) All code submitted to the project: - 3.1) Must not be covered by any license that conflicts with this license - (e.g. GPL code) - 3.2) Will become the property of the author. + Copyright (C) 2002-2023 Dominic Clifton aka Hydra + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ @@ -78,41 +68,41 @@ BOOL UpdateServerDetails(IRCServerDetails *pServerDetails) char *g_QuitMessages[] = { - //"WOW! This IRC Client ownz! \002HydraIRC\002 -> http://www.hydrairc.com <-", - "\002HydraIRC\002 -> http://www.hydrairc.com <- \\o/", - //"\002HydraIRC\002 -> http://www.hydrairc.com <- Get \002hot chicks\002 here!", - "\002HydraIRC\002 -> http://www.hydrairc.com <- Chicks dig it", - //"The IRC Client of the Gods! -> http://www.hydrairc.com <- \002HydraIRC\002", - //"\002HydraIRC\002 -> http://www.hydrairc.com <- irc client ownage!", - "\002HydraIRC\002 -> http://www.hydrairc.com <- *\002I\002* use it, so it must be good!", - "\002HydraIRC\002 -> http://www.hydrairc.com <- Nine out of ten l33t h4x0rz prefer it", - "\002HydraIRC\002 -> http://www.hydrairc.com <- s0 d4Mn l33t |t'z 5c4rY!", - //"\002HydraIRC\002 rocks! -> http://www.hydrairc.com <-", - "I love my \002HydraIRC\002 -> http://www.hydrairc.com <-", - //"Like VS.net's GUI? Then try \002HydraIRC\002 -> http://www.hydrairc.com <-", - "\002HydraIRC\002 -> http://www.hydrairc.com <-", - //"\002HydraIRC\002 -> http://www.hydrairc.com <- The dawn of a new IRC era", - //"\002HydraIRC\002 -> http://www.hydrairc.com <- IRC has never been so good", - "\002HydraIRC\002 -> http://www.hydrairc.com <- The professional IRC Client :D", - //"\002HydraIRC\002 -> http://www.hydrairc.com <- Try something fresh", - //"\002HydraIRC\002 -> http://www.hydrairc.com <- Leading Edge IRC", - //"\002HydraIRC\002 -> http://www.hydrairc.com <- The future of IRC", - //"\002HydraIRC\002 -> http://www.hydrairc.com <- State of the art IRC", - "\002HydraIRC\002 -> http://www.hydrairc.com <- IRC with a difference", - "\002HydraIRC\002 -> http://www.hydrairc.com <- Go on, try it!", - //"\002HydraIRC\002 -> http://www.hydrairc.com <- 100,000+ downloads can't be wrong", - //"\002HydraIRC\002 -> http://www.hydrairc.com <- IRC for those that like to be different", - "Want to be different? Try \002HydraIRC\002 -> http://www.hydrairc.com <-", - "\002HydraIRC\002 -> http://www.hydrairc.com <- The alternative IRC client", - "\002HydraIRC\002 -> http://www.hydrairc.com <- Like it? Visit #hydrairc on Freenode", - "\002HydraIRC\002 -> http://www.hydrairc.com <- Would you like to know more?", - "\002HydraIRC\002 -> http://www.hydrairc.com <- Organize your IRC", - "\002HydraIRC\002 -> http://www.hydrairc.com <- Now with extra fish!", - "\002HydraIRC\002 -> http://www.hydrairc.com <- Wibbly Wobbly IRC", - "\002HydraIRC\002 -> http://www.hydrairc.com <- It'll be on slashdot one day...", - "\002HydraIRC\002 -> http://www.hydrairc.com <- In tests, 0x09 out of 0x0A l33t h4x0rz prefer it :)", - "\002HydraIRC\002 -> http://www.hydrairc.com <- Po-ta-to, boil em, mash em, stick em in a stew.", - "Try \002HydraIRC\002 -> http://www.hydrairc.com <-" + //"WOW! This IRC Client ownz! \002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <-", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- \\o/", + //"\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Get \002hot chicks\002 here!", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Chicks dig it", + //"The IRC Client of the Gods! -> https://github.com/HydraIRC/hydrairc <- \002HydraIRC\002", + //"\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- irc client ownage!", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- *\002I\002* use it, so it must be good!", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Nine out of ten l33t h4x0rz prefer it", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- s0 d4Mn l33t |t'z 5c4rY!", + //"\002HydraIRC\002 rocks! -> https://github.com/HydraIRC/hydrairc <-", + "I love my \002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <-", + //"Like VS.net's GUI? Then try \002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <-", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <-", + //"\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- The dawn of a new IRC era", + //"\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- IRC has never been so good", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- The professional IRC Client :D", + //"\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Try something fresh", + //"\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Leading Edge IRC", + //"\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- The future of IRC", + //"\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- State of the art IRC", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- IRC with a difference", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Go on, try it!", + //"\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- 100,000+ downloads can't be wrong", + //"\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- IRC for those that like to be different", + "Want to be different? Try \002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <-", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- The alternative IRC client", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Like it? Visit #hydrairc on Freenode", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Would you like to know more?", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Organize your IRC", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Now with extra fish!", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Wibbly Wobbly IRC", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- It'll be on slashdot one day...", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- In tests, 0x09 out of 0x0A l33t h4x0rz prefer it :)", + "\002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <- Po-ta-to, boil em, mash em, stick em in a stew.", + "Try \002HydraIRC\002 -> https://github.com/HydraIRC/hydrairc <-" }; char *g_ServerStatusNames[4] = @@ -1985,6 +1975,9 @@ void IRCServer::Parse( char *processstr ) { username = a; topictime = b; + if (topictime[0] == ':') { + topictime++; + } time_t l = (time_t)atol(topictime); // FIXME - no check for null string t = localtime(&l); } @@ -2023,23 +2016,31 @@ void IRCServer::Parse( char *processstr ) { char *channelname; channelname = strtok(rest, " "); - //username = UseEmptyString(strtok(NULL, " ")); - - time_t l = (time_t)atol(UseEmptyString(strtok(NULL, ""))); // FIXME - no check for null string + char *timeStr = UseEmptyString(strtok(NULL, "")); + if (!timeStr) { + sys_Printf(BIC_ERROR, "ERROR: Failed to parse creation time for channel %s\n", channelname); + break; + } + // ircd protocol fix for servers not putting space after + if (timeStr[0] == ':') { + timeStr++; + } + + time_t l = (time_t)atol(timeStr); tm *t = localtime(&l); - m_Variables[VID_CHANNEL] = channelname; m_Variables[VID_PARAM1] = channelname; - m_Variables[VID_PARAM2] = t ? stripcrlf(asctime(t)) : "unknown"; + m_Variables[VID_PARAM2] = t ? stripcrlf(asctime(t)) : "unknown"; - IRCChannel *pChannel = FindChannel(channelname); - if (pChannel) - { - pChannel->OutputFormatter(BIC_TOPIC,num); - } - else - sys_Printf(BIC_ERROR,"ERROR: Received channel information for a channel that we've not joined (%s)\n",channelname); - } + IRCChannel *pChannel = FindChannel(channelname); + + if (pChannel) + { + pChannel->OutputFormatter(BIC_TOPIC,num); + } + else + sys_Printf(BIC_ERROR,"ERROR: Received channel information for a channel that we've not joined (%s)\n",channelname); + } break; case RPL_NAMREPLY: @@ -2117,6 +2118,10 @@ void IRCServer::Parse( char *processstr ) channelname = strtok(rest, " "); channelmode = UseEmptyString(strtok(NULL,"")); + if (channelmode && channelmode[0] == ':') { + channelmode++; + } + m_Variables[VID_CHANNEL] = channelname; m_Variables[VID_CHANNELMODE] = channelmode; m_Variables[VID_PARAM1] = channelname; @@ -2687,6 +2692,12 @@ void IRCServer::Parse( char *processstr ) m_Variables[VID_PARAM1] = to; m_Variables[VID_PARAM2] = tmpnick; m_Variables[VID_PARAM3] = UseEmptyString(rest); + + char *colonPos = strchr(rest, ':'); + if (colonPos) { + memmove(colonPos, colonPos + 1, strlen(colonPos)); + } + if (ischannelstartchar(to[0])) { IRCChannel *pChannel = FindChannel(to); diff --git a/HydraIRC/version.h b/HydraIRC/version.h index b7ed615..14a9cce 100644 --- a/HydraIRC/version.h +++ b/HydraIRC/version.h @@ -27,8 +27,8 @@ */ -#define VERSIONNUM "v0.3.168" -#define VERSIONDATE "(13/November/2022)" +#define VERSIONNUM "v0.3.169" +#define VERSIONDATE "(9/October/2023)" #ifdef RELEASE_VERSION #define VERSIONSTRING_EXTRA_1 ""