Swirc Changelog

What's new in Swirc 3.4.7

Mar 12, 2024
  • Added command /dcc
  • Added event BATCH (IRCv3). The following types were added:
  • chathistory
  • netjoin
  • netsplit
  • znc.in/playback
  • Added tab completion for:
  • /mode
  • Added the following config options:
  • batch (bool)
  • dcc (bool)
  • dcc_cipher_suite (string)
  • dcc_own_ip (string)
  • dcc_port (int)
  • dcc_upload_dir (string)
  • multi_prefix (bool)
  • Did code optimizations:
  • Measure string length once, found by PVS-Studio.
  • ...
  • Enabled iconv_conversion by default.
  • Fixed an off-by-one error in the IRC module. The previous program versions weren't really affected however.
  • Fixed building on any setup where Ncurses is built with opaque types.
  • Fixed new Coverity defects
  • Fixed the precision of the error log size in KB.
  • Improved C++ exception handling. Among other things, handle if 'new' throws.
  • Renamed option ircv3_server_time to server_time and enabled it by default.

New in Swirc 3.4.6 (Nov 6, 2023)

  • Added adoption of SPDX-tags for the distributed manual pages
  • Added better detection of server Wallops
  • Added command-line option -S (Force TLS)
  • Added event 249 (RPL_STATSDEBUG)
  • Added extensive use of the CPPFLAGS make macro
  • Added handling of empty user@host combinations in Wallops messages
  • Added handling of znc messages. (Made them look like notices and appear in the active window.)
  • Added protection for bad filenames for IRC logs
  • Added translations
  • Changed the way of recognizing a user mode versus channel mode
  • Did code improvements
  • Fixed occurrences of hardcoded function names in messages
  • Fixed typos in manual pages
  • Improved C++ exception handling
  • Limited notification messages in length

New in Swirc 3.4.4 (Jul 30, 2023)

  • Added a man page that describes how to write themes.
  • Added and made use of a pointer validation function.
  • Added improved unicode support in the printtext and readline modules.
  • Added usage of a binary search algorithm.
  • Added validation of nicknames before they go into the names hash table.
  • Allowed the names htbl modify API to alter names even if the list is incomplete. (But only in ICB mode.)
  • Changed the file suffix for theme files from .the to .thm. (.the looks too much like the English word "the".)
  • Closed an open stream before exit
  • Defined noreturn for C++ in fallbackattrs.h
  • Fixed hardcoded function names in error messages
  • Fixed unchecked return values

New in Swirc 3.4.3 (Mar 10, 2023)

  • Added event 320 (the same as 275 and 671, whois ssl)
  • Added MULTIPLE new translations
  • Added code improvements:
  • Added constructors/destructors
  • Added improved algorithms
  • Added usage of initializer lists
  • Added usage of new/delete
  • Deleted unused includes

New in Swirc 3.4.2 (Feb 22, 2023)

  • Added usage of typedefs (STRING, CSTRING, errno_t, ...)
  • Fixed printtext() bugs due to not checking if the wide character passed to wcrtomb_s() or wcrtomb() is a null character.

New in Swirc 3.4.1 (Feb 19, 2023)

  • Changed the requirements for checking if a connection is lost. (The change avoids flooding the server with PING commands better.)
  • Improved algorithms.
  • Optimized commonly used functions for speed.
  • Replaced C-style casts in C++.

New in Swirc 3.4.0 (Feb 10, 2023)

  • Added a SOCKS proxy client
  • Added command /fetchdic
  • Added destruction of null bytes on receive where appropriate
  • Added spelling support with Hunspell
  • Added the following config options:
  • socks (bool)
  • socks_atyp (int)
  • socks_host (string)
  • socks_port (string)
  • spell (bool)
  • spell_lang (string)
  • spell_syswide (bool)
  • Added usage of emplace_back()
  • Fixed possible crashes
  • Windows:
  • Fixed launch by toast. (COM appends the -Embedding flag to the args passed, which caused troubles.)
  • It is no longer necessary to enable the option "Use Unicode UTF-8 for worldwide language support", because this is now done in the exe-manifest, only for Swirc.
  • Upgraded to...
  • Curl 7.87.0
  • LibreSSL 3.6.2

New in Swirc 3.3.9 (Jan 7, 2023)

  • Added micro optimizations
  • Added rules for nickname highlighting
  • Added SASL auth mechanism: external
  • Added support for the GNU Hurd OS
  • Added tab completion for:
  • /connect
  • /time
  • /version
  • Added the following commands:
  • /qbot
  • /stats
  • Added the following config options:
  • cmd_type_prot (bool)
  • ctcp_reply (bool)
  • qbot_host (string)
  • sasl_x509 (string)
  • Improved tab completion for:
  • /msg
  • /notice
  • /whois

New in Swirc 3.3.8 (Nov 27, 2022)

  • Added an ident protocol daemon (which is OFF by default)
  • Added and made use of printf_and_free()
  • Added exception handling
  • Added tab completion for /theme
  • Added the following config options:
  • awaymsgs_in_privconv (bool)
  • identd (bool)
  • identd_fakenames (bool)
  • identd_port (int)
  • Added the following events:
  • 413 (ERR_NOTOPLEVEL)
  • 414 (ERR_WILDTOPLEVEL)
  • 415 (ERR_BADMASK)
  • Added usage of __func__
  • Added usage of printtext_print()
  • Deleted commented-out code
  • Deleted unused includes
  • Did code refactoring
  • Fixed display of IPv6 addresses in event 338
  • Fixed verification of the X509 certificate presented by the peer
  • Made const arrays static const
  • Made improvements to the following files:
  • commands/theme.c
  • network.cpp
  • printtext.cpp
  • Moved squeeze_text_deco() to a separate file
  • Reduced VA args in printtext calls

New in Swirc 3.3.7 (Oct 22, 2022)

  • Added preprogrammed IRC network OFTC
  • Added usage of swircpaths.h, a header which is automatically generated during the build process.
  • Fixed a case of a possibly negative array subscript
  • Added code to the following scripts:
  • posixshell/link_with_gnu_libidn.sh
  • posixshell/link_with_libnotify.sh

New in Swirc 3.3.6 (Oct 5, 2022)

  • Added cryptographic functions:
  • Added subcommand passwd_s to /sasl which can be used to securely store encrypted SASL passwords in swirc.conf. The encryption technique practice the use of AES and SHA.
  • Added tab completion for:
  • /msg
  • /notice
  • /sasl
  • Changed the program behavior to:
  • Jump between ICB and IRC mode depending on the port number
  • Not create core dump files if NDEBUG is defined at compile time
  • Not echo the server password on input (command line flag -p)
  • Fixed a bug so if a connection attempt fails it's possible to reconnect again after /disconnect.
  • Fixed code duplication
  • Fixed insufficient out of range check, off-by-one, in command /unignore.
  • Made small improvements:
  • Added usage of C++17 fallthrough attr
  • Added usage of PATH_MAX
  • Added usage of __func__ instead of hardcoding it (for example in error messages)
  • Fixed redundant checks
  • Reduced scope of variables
  • Switched to usage of 'sizeof' in BZERO() calls
  • Prevented the config hash table from being paged to the swap area.
  • Rewrote commands/sasl.c in C++
  • Updated preprogrammed IRC servers:
  • Added port numbers and server descriptions
  • Added the IRCNow network
  • Deleted the Blitzed network

New in Swirc 3.3.6 (Oct 5, 2022)

  • added cryptographic functions:
  • Added subcommand passwd_s to /sasl which can be used to securely store encrypted SASL passwords in swirc.conf. The encryption technique practice the use of AES and SHA.
  • Added tab completion for:
  • /msg
  • /notice
  • /sasl
  • Changed the program behavior to:
  • jump between ICB and IRC mode depending on the port number
  • not create core dump files if NDEBUG is defined at compile time
  • not echo the server password on input (command line flag -p)
  • Fixed a bug so if a connection attempt fails it's possible to reconnect again after /disconnect.
  • Fixed code duplication
  • Fixed insufficient out of range check, off-by-one, in command /unignore.
  • Made small improvements:
  • Added usage of C++17 fallthrough attr
  • Added usage of PATH_MAX
  • Added usage of __func__ instead of hardcoding it (for example in error messages)
  • Fixed redundant checks
  • Reduced scope of variables
  • Switched to usage of 'sizeof' in BZERO() calls
  • Prevented the config hash table from being paged to the swap area.
  • Rewrote commands/sasl.c in C++
  • Updated preprogrammed IRC servers:
  • Added port numbers and server descriptions
  • Added the IRCNow network
  • Deleted the Blitzed network

New in Swirc 3.3.5 (Jul 28, 2022)

  • Added command /cap
  • Added config option iconv_conversion (bool)
  • Added config option mouse_events
  • Added new translations
  • Added usage of noexcept and installed a terminate handler
  • Changed the startup screen to show the current language
  • Fixed C style casts in C++
  • Fixed SASLprep by switching to usage of stringprep_profile(). Prep now works on Windows too!
  • Fixed memory leaks
  • Fixed unhandled exceptions
  • Improved memory handling
  • Improved the contents of /help
  • Completed translating everything to Swedish
  • Made config option mouse change take affect at once
  • Made improvements to events/cap.c
  • Made small optimizations
  • Made the dot mo files available for read operations with unveil()
  • Updated the TODO :-)

New in Swirc 3.3.4 (May 4, 2022)

  • Added a TLS server (to be used in a future version)
  • Added config option mouse (defaults to no)
  • Added config option server_cipher_suite
  • Added creation of OpenSSL scripts
  • Added event 335 (RPL_WHOISBOT)
  • Added global hashfunctions
  • Added preprogrammed IRC network
  • AlphaChat
  • Added scrolling using the mouse
  • Added theme item:
  • nicklist_my_nick_color
  • whois_bot
  • Added translations
  • Changed the statusbar to display readline stats
  • Converted
  • commands/services.c -> commands/services.cpp
  • config.c -> config.cpp
  • Defined SLASH once
  • Defined and made use of:
  • UNUSED_PARAM()
  • UNUSED_VAR()
  • colorarray_t
  • g_beginthread_failed
  • g_received_welcome
  • usage_t
  • Fixed bugs discovered with protocol fuzzing
  • Handle PRIVMSGs from "my" server
  • Handle truncation of ICB messages, i.e. allow longer messages than
  • ICB_MESSAGE_MAX.
  • Improved scrolling
  • Made refactoring to multiple files
  • Moved the names hash table modify API
  • Print PRIVMSGs to irc channels from users that aren't in them. (No
  • lookup error.)
  • Reduced code duplication
  • Reformatted and reindented files
  • Windows:
  • Added GNU LibIntl 0.19.8.1 which is part of
  • gettext
  • Curl 7.83.0
  • LibreSSL 3.5.2

New in Swirc 3.3.3 (Nov 27, 2021)

  • Added event 531. Undocumented in the RFC. (You cannot send CTCPs to this user whilst they have the +T u_noctcp mode set.)
  • Added event 728 and 729. Undocumented in the RFC. Channel Quiet List.
  • Added function xstrnlen() and made use of it
  • Added new Libera Chat servers
  • Added null checks
  • Deleted unused includes
  • Fixed macro redefinitions
  • Fixed unchecked return values
  • Made improvements to the following files:
  • commands/invite.c
  • commands/notice.cpp
  • commands/services.c
  • events/invite.cpp
  • events/wallops.cpp
  • assertAPI.c
  • errHand.c
  • icb.c
  • Added status message Idle-Mod.
  • Added status message Timeout.
  • readlineTabCompletion.c
  • Refactoring
  • ...
  • Reformatted and reindented files:
  • commands/me.c
  • commands/msg.c
  • commands/squery.cpp
  • commands/znc.cpp
  • events/account.cpp
  • events/banlist.cpp
  • events/servlist.cpp
  • statusbar.cpp
  • titlebar.c
  • ...
  • Debian:
  • Added patches
  • Windows:
  • Upgraded to LibreSSL 3.4.2

New in Swirc 3.2.0 (Feb 18, 2020)

  • Added:
  • Logging. Which can be toggled on/off with CTRL+L per window and works while IRC connected. The default is off for all windows.
  • Tab completion
  • Better detection for connection loss
  • Changed:
  • For C++, prefer const_cast and static_cast respectively, instead of C style casts.
  • Fixed:
  • Possibly lossy type conversions
  • Readline bugs

New in Swirc 1.6 (May 26, 2017)

  • Added:
  • Event 479. Illegal channel name.
  • Event 716, 717. Error responses for CTCP requests.
  • Changed:
  • The statusbar to display channel modes
  • Fixed:
  • Using plain integer as NULL pointer
  • Possible dereference of NULL pointer
  • A couple of small errors
  • Handle if server sends names for a particular channel twice or more. See this as a vulnerability fix.
  • A memory leak in net_ssl_check_hostname. The leak occurred each time a new TLS/SSL connection was established if config option hostname_checking was set to YES (the default).