commit a6d58bb6052ac8cb01805a48c4ad2f129126116f
Author: tpearson
Date: Wed Feb 24 02:13:59 2010 +0000
Added KDE3 version of kvirc
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kvirc@1095341 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..969ac28
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,2280 @@
+02 May 2007 - 12 March 2008
+ [KVIrc Development Team]
+ - A lot of changes documented in the svn log. See http://svn.kvirc.de/kvirc/ for the timeline.
+
+02 May 2007
+ [Alexey]
+ - New KVS functions: $serialize and $unserialize to deal with JSON-serialized strings
+
+16 Apr 2007
+ [Noldor] (with the input from Pragma and Iakko)
+ - Iakko's notifier is back. New in this version:
+ 1) QT4 compatible (on win and macos it is uses fast setWindowOpacity effect instead internal notifier blend())
+ 2) Added Option to disable fadein/out effect useful on slow machine (need test)
+ 3) Fixed strange crash on QT4 and some minor bug in show/hide event. (it is a trick... need to debug)
+ This a w.i.p. and need some test on linux.
+
+12 Apr 2007
+ [TheXception]
+ - Added $system.call to call functions of dll/so files via kvs.
+
+10 Apr 2007
+ [Alexey]
+ - Configurable avatar scaling on load
+ - Human-redable file sized on dcc transfers
+
+12 Mar 2007
+ [Alexey]
+ - Added support for remote dns on socks5 proxy
+ - Added option to configure identd output mode
+
+06 Mar 2007
+ [Pragma]
+ - Added svg and generated png icons for kvs,kvc,kvt and kva files.
+ Added the KDE mimetypes too.
+ - Some fixes for Qt4 support
+
+26 Feb 2007
+ [Alexey]
+ - Added Export/Import feature to channel list module
+
+25 Feb 2007
+ [Alexey]
+ - Repainted reuser list
+ - Added search field for mask editors
+
+24 Feb 2007
+ [Noldor]
+ - New QT4 win compiling projects: still unusable... kvilib and kvirc compile but only in release;
+ you need to compile qt libraries by yourself then try to compile kvilib and kvirc (use COMPILE_USE_QT4 in kvi_wincfg.h).
+ Some module compile without problem... others need to be ported.
+
+20 Feb 2007
+ [Alexey]
+ - Completely reworked ignore system
+ - Implemented reguser match caching
+ - Implemented custom color for registered user caching
+ [Pragma]
+ - Yet more Qt4 port.
+ - We now require Qt >= 4.2.2 for Qt4 support to work. Older 4.x versions
+ have bugs that can't be worked around and tend to crash kvirc
+ in various circumstances (including displaying tooltips).
+ Qt 4.2 also re-adds the possibility to add QWidget objects to popup menus.
+ - Yet more modules ported.
+ - A fix for the KVS expression operator precedence.
+ - A couple of general fixes that I can't remember but have been reported on
+ the list.
+ - I'm thinking about qmake support (as suggested by Matteo Catanese some time ago)
+ ... will require some work ... what do you think about it ?
+
+18 Feb 2007
+ [Alexey]
+ - Fixed dns resolver under win32
+ - Fixed minimized channels open
+ - Added bot detection icon (who will write docs?)
+ - Fixed winamp plugin problem under win32 (removed msvcr80.dll dependency)
+
+08 Feb 2007
+ [Pragma]
+ - More Qt 4.x port.
+ Solved the most disturbing problems: it looks a lot better now.
+ - Font metric cache values can no longer be computed directly from a
+ widget's font. We must use the painter idea of the font instead.
+ This complicates caching a bit.
+ - Some of the QPainter functions seem to behave in a bit different way
+ - QFrame::drawContents() is gone... we need to reimplement paintEvent()
+ - The setAutoFillBackground(false) setting seems to be propagated to children
+ in some way (?) (as opposed to backgroundMode(NoBackground) in Qt3)
+ - QToolButton::drawButton() is gone, need to directly drawPixmaps instead...
+ - ...
+ Ported also the first couple of modules.
+
+ Qt 4 causes a lot of problems in porting but I'm starting to feel
+ like the new library is very cool :)
+
+05 Feb 2007
+ [Pragma]
+ - The KVIrc executable now compiles and starts with Qt4. With Qt3 everythin
+ should work just like it did before.
+
+ No modules are ported yet so a lot of functionality is not available...
+ ... but it CAN connect to a server :)
+ It tends to crash once in a while, has nasty problems with
+ graphics and size of certain widgets: will need some hours of debugging.
+
+ When testing the Qt4 port make sure you (re)move your old binary
+ modules from /usr/local/share/kvirc/3.2/. KVIrc will attempt to load
+ some modules from there and since they're linked to Qt3 the runtime
+ (loader) is likely to go nuts with two Qt versions in memory.
+ You have been warned... :)
+
+30 Jan 2007
+ [Alexey]
+ - Introduced option "using identd only on connect"
+
+29 Jan 2007
+ [Alexey]
+ - Introduced search in log files
+
+25 Jan 2007
+ [Pragma]
+ - Yet more Qt 4.x port
+ - Added the torrent interface module by Alexander Stillich
+
+21 Jan 2007
+ [Pragma]
+ - More Qt 4.x port
+ - More multiple identities work
+ - Added the first considerations about the Qt 4.x port to hackers.guide.txt
+
+20 Jan 2007
+ [Pragma]
+ - Another quick fix (for config values not saved correctly)
+ - Started the implementation of multiple identities.
+
+19 Jan 2007
+ [Pragma]
+ - Added the fixes for a couple of bugs introduced with the yesterday commit.
+ Thnx to Alexander Stillich for the detailed report :)
+
+18 Jan 2007
+ [Pragma]
+ - More Qt 4.x port. kvilib now compiles cleanly with both Qt 4.x and Qt 3.x.
+ Don't know if it really works since kvirc compilation still bails out. We'll see :)
+
+15 Jan 2007
+ [Pragma]
+ - Fixed the smart encoders a bit more
+ - Theme management: rewritten the theme save dialog as a wizard, added screenshot management.
+ - Really first step to Qt 4.x support: added ./configure switches to handle qt4 and
+ fiddled the makefile variables to contain the right include and library paths.
+ Still have no idea if everything works correctly since compilation bails out
+ very early in kvilib.
+ You're likely to have problems with moc since the configure script tends
+ to find the Qt 3.x moc instead of the correct one. Use the --with-qt4-moc option
+ to force the right moc compiler path.
+ In Qt 4.x mode the COMPILE_USE_QT4 preprocessor variable is set: use it for conditionals...
+ an #ifdef COMPILE_USE_QT4 is more or less equivalent to #if QT_VERSION >= 0x040000.
+ We will need to "abstract" several collection classes to make everything
+ work with both Qt 3.x and Qt 4.x. The goal is (or better would be) to hide everything in
+ kvilib in order to have almost no conditional compilation in the kvirc core and in the modules.
+ - Added a discussion about the versioning scheme in the hackers.guide.txt. Give
+ it a read and make/add your comments :)
+
+12 Jan 2007
+ [Pragma]
+ - Added a set of smart encoders that send in UTF-8 instead of the child encoding
+ - Fixed a nasty bug in KviQString::vsprintf() that caused KVIrc to crash in response
+ to certain messages from server
+ - Added corrections and null checks in some places to make KVIrc resist to
+ the ircfuzz.c attack.
+ - Committed the spanish translation by Roberto Ciria
+
+08 Jan 2007
+ [Pragma]
+ - More work on the themeing engine. Nearly finished.
+ The theme packages created since Dec 28 aren't compatible anymore.
+ (nobody was able to load them yet anyway :D), sorry.
+ - Added support for the audacious media player, thnx to Alexander Stillich :)
+ - Added #kvirc channel links in the help menu. Please add your own localized #kvirc channel.
+
+06 Jan 2007
+ [Alexey]
+ - Added gender info sharing tricks
+
+28 Dec 2006
+ [Pragma]
+ - Added handling of unknown RPL_WHOIS* numeric replies by implementing a nice
+ "guessing" algorithm suggested by Elephantman
+ - Added a file with KVIrc file extension definitions. We should use the defs instead
+ of hardcoding extensions like .kvt, .kvs or .kvp.
+ - Added a fast generic packaging engine. A KVIrc package is a kind of zip archive
+ with an uncompressed metadata header. It can be used to distribute both themes and addons.
+ - First works on the theme exporting engine. Saving and packaging are now different operations.
+ One first saves his theme to disk, eventually edits it manually (maybe by adding a nice
+ splash screen or fixing some icons) and finally packages it by invoking a nice
+ wizard based procedure. Still need to write the installation dialog.
+ - Moved the whole theme management engine to a new module. It exports the
+ management dialogs and some utility commands. There is no reason to load
+ all this stuff at startup with the options dialog now.
+
+27 Dec 2006
+ [Noldor]
+ - Alias editor module:
+ added the possibility to save a selection of aliases in separated files (every file will have the alias name);
+ fixed search function;
+ - Script editor module:
+ fixed replace command(in "replace all aliases" too);
+ now syntax highlighter recognize command "function" and "internal";
+ - Objects module:
+ added objects.classes, objects.variables, objects.classAllHandlers;
+ fixed crash in listviewitem class;
+ fixed little bug in multilinnedit class (function $setWordWrap);
+
+
+19 Dec 2006
+ [Pragma]
+ - help.open: open only one help window unless -n is used
+
+17 Dec 2006
+ [Pragma]
+ - Committed the new german translation file by Mihai "Ionic" Moldovan
+ - Switched the source control system to SVN: happy coding :)
+
+15 Dec 2006
+ [Pragma]
+ - Yet more work on the options dialog
+ - Added an option for the "network name in taskbar": it's cool, but we want to choose :)
+
+12 Dec 2006
+ [Alexey]
+ - Added option to create minimized channels
+ - Fixed nick selecting in userlist via ircview
+ - Fixed mouse hover link effect
+ - Network name now will be shown in the taskabr instead on server name
+
+07 Dec 2006
+ [Pragma]
+ - Yet more work on the options dialog
+ - Fixed a crash related to the dialog.* module calls
+
+28 Nov 2006
+ [Pragma]
+ - More work on the options dialogs
+ - Removed the duplicated kvc_ icon.
+
+19 Nov 2006
+ [Alexey]
+ - New function - $chan.getUrl
+ - NickServ identity can now accept masks in nick field
+
+16 Nov 2006
+ [Alexey]
+ - Added a simple browser-like address bar to console
+ - Clicking on nick in channel ircview now selects it in the userlist
+ - Avatar dcc send rejected if avatar size greater, then max filesize, setted in options
+
+15 Nov 2006
+ [HelLViS69]
+ - Added a checkbox on AwayIndicator applet popup to choose to go away
+ on all IRC Contexts
+
+14 Nov 2006
+ [Pragma]
+ - Moved the userlist feature options page to the theme option dialog
+ and splitted all the userlist options in tabs
+ - Corrected some typos around
+ - Reworked the output options page
+ - Updated the directory selection dialog under KDE
+ - Avatars bigger than 1024x768 make KVIrc complain when setting them
+ and are scaled to a saner size when they are received from others.
+
+13 Nov 2006
+ [Pragma]
+ - Added $object.instances(): useful when implementing singletons.
+ - Fixed a small image dialog issue
+
+9 Nov 2006
+ [Pragma]
+ - Added support for chunked HTTP transfer encoding as required by HTTP/1.1
+ - A fix for object toolbar position not saved properly
+ - A fix for the addon management dialog not repainted correctly
+ - A fix for loading of files by the means of KviFileUtils::loadFile()...
+ /parse is one of them and it expects an utf8 encoded file.
+ (read: all *.kvs files must be utf8 encoded, there is no other decent
+ portable way to preserve the national characters...)
+
+8 Nov 2006
+ [Pragma]
+ - A fix for KviStr handling incorrectly multibyte strings (fixes some localization issues)
+ - A simple hack-in for a protocol filter.. maybe msn ?
+
+6 Nov 2006
+ [Pragma]
+ - Various minor fixes around
+ - Splitted the core small icons libraries in separate icons.
+ - Moved the small icons to a subdirectory to speed up the loading (we are already at more than 280 icons...)
+
+1 Nov 2006
+ [Alexey]
+ - Added unreal NAMESX and UHNAMES support
+ - Fixed $hexToAscii function
+ - Make DCC File Open/Save dialogs have native look on windows
+ - Fixes in filesystem handling. Fixed bug when KVIrc unable to load translation from non-latin folders
+ - Fixed actions' accelerators
+ - CTCP Page dialog now stays on top of desktop
+ - Fixed in tray minimizing/restoring on win32
+
+Oct 2006
+ [Alexey]
+ - WIN32 compiling need QTTAG env var with "mtnc321" value for non-commercial QT 3.2.1 or "mt336" for QT 3.3.6
+ - New win32 tray icon
+ - Added snd.mute, snd.unmute, $snd.isMuted to KVS
+ - Moved theme selection out from theme options to avoid partyally applying of themes
+ - Added some lost functions to "painter" class
+ - Fixed ignore system
+ - Fixed input themeing (black on black bug)
+ - "play" command is now alias for snd.play
+ - IMPORTANT: fixed proper soket closing on win32
+ - Fixed crash after first run wizard on *nix
+ - Make possible installation on USB removable drives (WIN32). KVIrc can store settings in program folder
+ - Make pathes in configs system-independent
+
+23 Sep 2006
+ [Zerg] (commited by Alexey)
+ - Change dock icon size to 22x22 on KDE. Fixed style of icon
+ - Better in-tray minimizing
+ [Alexey]
+ - Setted tray icon background to transparent
+
+18 Sep 2006
+ [Noldor]
+ - Added alphablend in objects.blend
+ - Added doc to class image and function setOpacity()
+ ... now we can create some weird, cool effect :=D
+
+08 Sep 2006
+ [Alexey]
+ - Fixed input line painting bug: cursor goes out of visible range
+
+25 Aug - 07 Sep 2006
+ [Alexey]
+ - Fixed couple of bugs, include crashbug when applying a new theme
+ - Rewrited channel mode handling
+ - Rewrited setup wizard
+ - Corrected themeing of input
+ - Del key deletes selected transfer in filetransfers
+ - Changed trayicon bechaviour. Now it's configurable.
+
+
+25 Aug 2006
+ [Pragma]
+ - uparser is definitively gone: KVS is the reality.
+ - cleanups all around, removing unused code etc.
+ - documentation cleanups
+
+13 Aug 2006
+ [Pragma]
+ - Fixed some docs about KVS
+ - $boolean(), $string(), $integer() casts.
+
+27 Jul 2006
+ [Alexey]
+ - Classic taskbar now looks fine in os-style. It uses new frames and borders
+ - Make classic taskbar resizable
+ - Make Tree taskbar header hidable. Hide it by default
+ - Tree taskbar change cursor to hand while moving over an item
+
+27 Jul 2006
+ [Alexey]
+ - New -a | --all-networks switch for away and back commands to apply their action to all connected networks
+ - Fixed bug with long channellins scrolling; removed horisontal scrollbar
+
+27 Jul 2006
+ [Alexey]
+ - Timestamp format now can be configured via options
+ - Input saves string in history when it was send via Ctrl+Return
+ - Fixed case sensivity mode handling in usermode popup
+
+26 Jul 2006
+ [Alexey]
+ - Added option to include MSGTYPE info in theme packs
+ - Added support fot ports, greater than 65536
+
+25 Jul 2006
+ [Pragma]
+ - Comparison operators now prefer numeric operands instead of strings.
+ - Added $str.printf()
+ [Alexey]
+ - Fixed bug in language seletor
+ - New XML load addon dialog
+ - Show progress bar while indexing help
+
+24 Jul 2006
+ [Alexey]
+ - Added XML (single file) theme export/import
+ - Added ability to delete installed themes
+
+22 Jul 2006
+ [Alexey]
+ - Fixed bugs in filetransfers window while operating with localized filenames
+ - Renamed "orphan_servers" to "Standalone Servers"
+
+21 Jul 2006
+ [Alexey]
+ - Added e2k URL highlighting
+
+20 Jul 2006
+ [Alexey]
+ - Implemented help topics and keywords caching
+ - Topic can be viewed via double-click for non-opers in read-only mode
+ - Fixed PageUp/PageDown in logviewer
+ - Fixed defsctipt. Kickban now uses mask from kvirc prefs
+ - Fixed avatar handling while it trnsfered via DCC, filename contains space, but replacing spaces with _ enabled
+ - Fixed connection to stupid win32 proxies
+ - Added HTTP Proxy error displaying
+ - New autojoin channel editor; fixed bugs in channel autojoining
+
+19 Jul 2006
+ [Alexey]
+ - Fixed DCC non-latin filenames handling
+ - Fixed avatars with non-latin names handling
+
+07 Jul 2006
+ [Alexey]
+ - Fixed proxy connection (HTTP proxy doesn't require Server ip resolving now)
+
+
+28 Jun 2006
+ [Pragma]
+ - Fixed some CTCP handling as suggested by CtrlAltCa
+ - foreach now doesn't iterate over empty variables unless the -a switch is used.
+
+23 Jun 2006
+ [Ahinu]
+ - Work on the mediaplayer module: more linux support + cmd/fnc cleaning
+
+10 Jun 2006
+ [Alexey]
+ - Added icons to some tooltips
+ - Added Alt+DIGIT hotkey for window switching. Removed Ctrl+End hotkey(changed to Ctrl+F4)
+
+05 Jun 2006
+ [Alexey]
+ - Fixed join channels menu
+ - Added insert text icon submenu to input editor popup
+ - Added feature to autosave logs
+
+23 May 2006
+ [Alexey]
+ - Channel/topic input lines now have a OS-style border
+ [Fiber^]
+ - Added hungarian translation
+
+21 May 2006
+ [Alexey]
+ - Fixed crash while topic contains a text icon
+ - Fixed colorizing nick as in the userlist while custom color is set for the normal users
+
+20 May 2006
+ [Alexey]
+ - Added automatic codepage select for servers, that doesn't insart "CODAPAGES" in RPL_ISUPPORT message
+ - Now recent channels are network-dependend. For example #kvirc@Freenode and #kvirc@Azzurra are the different channels
+ - Switched to 3.2.3
+ - Fixed (finally?) window restoring from tray icon
+ - Fixes in mIRC color handling
+
+15 May 2006
+ [Alexey]
+ - Fixed issues when IP specified instead of server name in server properties
+
+13 May 2006
+ [Alexey]
+ - Added search and document index to the help system
+
+10 May 2006
+ [Alexey]
+ - Added texticon module to manage text icon collection
+ - Added detection if the KVIrc running to the win32 insatll script (patch contributed by Zerg)
+
+02 May 2006
+ - Improved win32 insatll script (patch contributed by Zerg)
+
+22 Apr 2006
+ [Alexey]
+ - Now user can define position and/or tiling methood of backgrounds
+
+22 Apr 2006
+ [Alexey]
+ - Added visual effects to the tree taskbar
+
+19 Apr 2006
+ [Alexey]
+ - [WIN32] Added installer script for NSIS installer (nsis.sf.net). It can properly uninstall local data dir, automatically install Winamp plugin
+ - Added ability to bind sounds on some events via options dialog
+
+18 Apr 2006
+ [Alexey]
+ - !KVIrc now can run from localized folder (generally WIN32 fix)!
+ - Added options to strip colors from logs
+ - Filelist retirned to the left in logviewer
+ - Restyled win32 tray icon (now it looks similar to the *nix tray icon)
+ - Added tray icon flashing
+ - Added $lang function to detect user language
+ - Updated default toolbars
+
+15 Apr 2006
+ [Alexey]
+ - updated graphical emotions
+ - added ability to hide channel's tool buttons
+ - options dialog is now closable by escape button
+ - added ability to hide input tool buttons
+ - colors and msgtypes now can be saved into the logfiles
+
+07 Apr 2006
+ [Alexey]
+ - added support for caculating md5, md4, md2, sha1, mdc2, ripemd160, dss1 digests via new $str.digest function
+
+01 Apr 2006
+ [Alexey]
+ - changed KVS_PT_STRINGLIST type to QStringList
+ - added option to set default ban mask
+ - added options to set maximum width of classic taskbar button
+
+17 Mar 2006
+ [Alexey]
+ - More intelligent word highlighting
+
+14 Mar 2006
+ [Alexey]
+ - Added HTTP Auth compatability
+ - Redesigned log viewer
+ - Added ability to remove logs in log viewer
+ - Added nicer styling of Tool buttons
+ - Fixed bugs in logfiles naming
+
+07 Mar 2006
+ [Alexey]
+ - Added ability to choose smyles from external file
+ - Fixed sorting bans (invites,exempts) by date
+
+05 Mar 2006
+ [Alexey]
+ - Added option to sort received files by nicks
+
+26 Feb 2006
+ [Pragma]
+ - KVS now uses 64 bit integers, if possible
+ - More work on zero port DCC handshakes (still a bit work in progress)
+ - Finally managed the KviListView to display a transparent background
+ picture (hopefully) without flickering. Does it work on windows ?
+ - Added $hptimestamp() for high(er) precision time intervals computation
+ - Recently also more work on the options dialog
+ - the theme options now have its own toplevel dialog
+ (some of the options still need to be moved around)
+ - added a (still primitive) search function
+
+26 Feb 2006
+ [Alexey]
+ - added "away" section to the dockwidget menu
+ - tray icon now transparent under *nix
+ - added autohide indicator to notifier
+
+24 Feb 2006
+ [Alexey]
+ - added option for closing in tray (patch by Zerg)
+ - added option for startup minimized
+ - added deeper nick change customization in away
+ - added "Quit" item to the main menu
+ - new tray icon under *nix, more selective tray tooltip
+
+22 Feb 2006
+ [Alexey]
+ - improved nick colorization in KViIrcView: now registered nicks are colorised as in the userlist
+ - now it is possible to assign a comment to the registered user. Comment will be shown it tooltip and WATCH join/quit messages
+ - added option for colorizing own nick in different color
+
+21 Feb 2006
+ [Alexey]
+ - added option to disable avatar scaling if it less that required size
+
+20 Feb 2006
+ - registered users can be organazid into groups
+ - some fixes in maskeditor
+
+13 Feb 2006
+ [Ahinu]
+ - regchan.list -> regchan.showlist, added $regchan.list
+ - Added $str.stripcolors
+
+05 Feb 2006
+ [Pragma]
+ - Started the big cleanup of the options dialog. Identity options for now.
+ - Moved the translations of the options module to a specific po file.
+ This makes the job units smaller (for translators) and doesn't force
+ kvirc to load all these strings at startup.
+ The original translations are preserved and the translators should
+ remove the unused overlapping (and commented out) portions of the kvirc_*.po
+ and options_*.po at the next opportunity.
+
+03 Feb 2006
+ - Improved maskedior. Now it can edit masks;)
+ - Fixed issues with [] symbols in Wildcard expressions
+
+02 Feb 2006
+ [Pragma]
+ - Added zero port request handling also for DCC CHAT.
+ We support it also in outgoing requests now.
+ - Fixed the problems with execution of perl script that contain warnings.
+
+27 Jan 2006
+ [Pragma]
+ - Again missed updated
+ - Initial support for shared double buffering (will reduce memory usage)
+ - Finished the cool listview initiated by Alexey (still needs testing on windows tough)
+ - Some other things I have forgot :D
+
+17 Jan 2006
+ [Pragma]
+ - We now suppor the mIrc zero port DCC protocol both in incoming and *outgoing* transfers
+ The outgoing protocol is activated by /dcc.rsend -z
+ - A couple of fixes for the KVS engine
+ - Some fixes for the perlcore module (almost finished: it just needs a better warning handler...)
+ [Grifisx & Noldor]
+ - Some projects updated
+ - Fixed varius bug in object module (we hope less crashes ;) )
+ - Deleted some old, unused objects classes function
+ - Added function $height() and $width() in class pixmap
+ - Fixed and optimized objects.blend command: now it is very cool and you can create some eyes candy effect
+ very easily =)(more new graphic commands will come in the near future)
+ - The porting of the module object is near to finish: only class socket is missing.
+
+14 Jan 2006
+ [Grifisx & Noldor]
+ - Added the new class object named "image": at this moment it is in alpha state and without docs;
+ - Added command objects.blend.
+ [Pragma]
+ - Added the math.* module
+ - Fixed comparison of variables in KVS
+
+13 Jan 2006
+ [Grifisx & Noldor]
+ - Fixed bugs in object classes
+ [Alexey]
+ - Window now saves logging state and userlist state
+ - CTCP VERSION reply now shows os version and QT version
+ - Added support for RPL_ENDOFSTATS (219) message
+ [Pragma]
+ - Missed to update this file for a while :D
+ - The object classes are now persistent: they are stored on disk so one does not need to always redeclare them in aliases
+ - Added the "user friendly commandline" button to the input widget and the global option to keep it automatically on/off
+ - Other small fixes that I can't remember
+
+11 Jan 2006
+ [Alexey]
+ - Added an option to disable notifier window flashing
+ - Fixed doubleclick interval in ircview
+ - Added support for guessing max modes per line from RPL_ISUPPORT
+ - Now you must use // prefix in nput line to use full KVS syntax. The / prefix don't parse arguments at all
+
+10 Jan 2006
+ [KVirc Development Team]
+ - Events now works in objects module
+ - Lots of other improvements in objects module
+ - Options to minimize in tray
+ - New styled checkboxes are fully functional now under all OS
+ - Fixed mIRC color handling
+ - Fixed file handling in snd module on localized filesystems
+
+4 Jan 2006
+ [Pragma]
+ - Started porting events on new KVS
+ [Alexey]
+ - Added colors to the topic history widget
+ - Added ability to count total connection time for all connections for the connection timer applet
+
+25 Dec 2005 - 3 Jan 2006
+ - Removed old KVS
+ - Added history to the topic editor
+ - Redisigned splash screen
+
+24 Dec 2005
+ [Pragma]
+ - More modules ported to KVS: only dcc and dialog are partially missing
+ at this point. Prepare for the big cleanup :)
+ - Added JIS7 and euc-JP to the list of supported codecs (thnx hagabaka!)
+ - Some small fixes to the options dialog that was going nuts recently...
+
+20 Dec 2005
+ [Pragma]
+ - Almost finished the work on alias namespaces: they should be usable now
+ - Ported the perl modules to the new KVS
+ - Ported the sharedfile module to the new KVS too, really few modules
+ are missing now
+ - Fixed a couple of buggies in KviCommandFormatter that prevented
+ aliases from being correctly removed
+ - Some work in the new KVS engine: the big cleanup is coming...be afraid!
+
+18 Dec 2005
+ [Pragma]
+ - Alias namespaces and other curious thingies all around
+
+10 Dec 2005
+ [Alexey]
+ - [Kernel] New theme package format. Now theme s\is a king of addon
+ - [KVS] Fixed crash while calling $tr("") in new KVS
+ - [Kernel] Other bugfixes
+
+ [Pragma]
+ - [Kernel] Fixed crashbugs in KVS kernel
+
+09 Dec 2005
+ [Alexey]
+ - [Kernel] Fixed bugs in handling modes. Now it is case sensivity
+ - [UI] Fixed bug with deleting selected text from input line or topic editor
+ - [UI] Pressing a key in userlist now selects the first nick with first letter, equal to the pressed key
+ - [UI] Now options splitted into 3 categories: for novice,normal and experienced users. Newbies should see really simple configuration dialog
+
+07 Dec 2005
+ [Alexey]
+ - [Kernel] KVirc *hopefelly* supports now localized file names and file pathes! (but it really partially support it now:)))
+ - [UI] Added missed option to the irc option widget. Now user can specify number of maximum send channel modes per line
+
+06 Dec 2005
+ [Alexey]
+ - [UI] Added themes previews to the setup wizard
+
+05 Dec 2005
+ [Alexey]
+ - [Kernel] Added soma additional checks to KviRegisteredUser class.
+ - [Kernel] Mode work on filesystem interfave
+ - [Kernel] Much better filenames encoding function from internationalization point of view. Logfile names becomes not so ugly:)
+
+01 Dec 2005
+ [Alexey]
+ - [UI] Fixed bug with nick completion
+
+26 Nov 2005
+ [Alexey]
+ - [UI] Now it is a programm option to disable splash and no more --disable-splash configure option
+27 Nov 2005
+ [Alexey]
+ - [Kernel] Fixed crashes in action and toolbar modules under windows
+ - [Kernel] Added trick to resolve unmasked local hostname from 001 server message, even when you using +x mode
+
+26 Nov 2005
+ [Alexey]
+ - [UI] Fixed bug with non-latin search in ircview. Now it works:)
+ - [UI] Improved \r handling in ircview. Now it can contain colors in the label title.
+ - [UI] Improved smart nick and channel highlighting.
+ - [UI] Escape hotkey (minimize window) replaced with Ctrl+Esc hotkey.
+ - [UI] Better code highlighting and code completion in scripteditor.
+
+25 Nov 2005
+ [Alexey]
+ - [UI] Added smart nick and channel highlighting. Now most of channel names and nicknames are recognized and you can click on it by mouse:)
+
+24 Nov 2005
+ [Alexey]
+ - [KVS] config module ported
+ - [KVS] mediaplayer module ported
+ - [KVS] fixed _tonns_ of crashes in objects module with new KVS
+
+23 Nov 2005
+ [Alexey]
+ - [Kernel] Added ability to choose proxy server in irc server's preferences. You can choose different proxyes for different servers
+
+22 Nov 2005
+ [Alexey]
+ - [KVS] Removed ugly $insertInInput function, added commands window.setInputText,window.insertInInputText and function $windos.inputText
+ - [KVS] Make new KVS allows to use '_' symbol in functions' names,commands' names and variables' names
+ - [Kernel] Added support for RPL_ADMINME, RPL_ADMINLOC1, RPL_ADMINLOC2, RPL_ADMINEMAIL, RPL_COMMANDSYNTAX, RPL_INVITING, RPL_INFO, RPL_INFOSTART, RPL_ENDOFINFO, RPL_TIME, ERR_NOSUCHSERVER, ERR_NOSUCHCHANNEL, ERR_CANNOTSENDTOCHAN, ERR_NOCOLORSONCHAN server messages
+ - [Kernel] Added support for gzipping logs and viewing gzipped logs
+ [Pragma]
+ - First step for the implementation of namespaces in aliases (new KVS only)
+
+21 Nov 2005
+ [Alexey]
+ - [UI] Ctrl+Enter now sends text to the channel(query,dcc chat,etc..) even if it has "/" at beginning.
+ - [Kernel] Tuned output and string formatting functions. Really solves TONNS of internationalization problems:))
+ - [Kernel] Code tuning: chack all sources to proper encodig data, sended to server. Make corrections.
+ - [Modules] Some other internationalization fixes in DCC module
+ - [UI] Added option to colorize nicks in channel messages the same, as they colorized in the userlist view
+ [Pragma]
+ - ported dialog.textinput
+ - more fixes around
+
+20 Nov 2005
+ [Pragma]
+ - Started porting the dialog module
+ - Added the callback object KVS base class
+ - a small fix for KviInput (gcc warning)
+
+08 Nov 2005
+ [Alexey]
+ - [KVS] Error and warning texts are now readable in localized versions
+ - [UI] Added option to enable or disable showing query information label
+ - [UI] Added some items into the main menu
+ - [UI] Added default menu on right click at url link
+ - [KVS] Added $str.fromClipboard function and str.toClipboard command
+ - [UI] Channel mode label now allows to edit chanmodes
+ - [UI] Added new information label into Query window
+ - [KVS] Fixed bug 0000270 with OnChannelModeChange event
+ - [Kernel] Fixed click vs double click bug
+ - [Kernel] Added parsing of 703(WeNet) and 020 messages
+ - [UI] New topic editor
+ - [Misc] Fixed some other bugs
+ - [UI] Fixed permission on topiceditor and mode editors(for ircOps and halfops)
+ - [Kernel] Fixed bug when message, that have raw event handlers decode 2 times
+ - [Modules] Fixed internationalization issues in avatar module
+ - [KVS] Window,reguser,url,term,toolbareditor,regchan modules are ported..
+ - [KVS] Log module ported, porting logging system from KviStr to QString
+ - [kernel] Some fixes for COMPILE_ONLY_NEW_KVS
+
+ [Pragma]
+ - More work on the KVS engine
+ - avatar module ported...
+ - Merged various small fixes done in the last days
+
+05 Nov 2005
+ [Alexey]
+ - added 7 new events to hangle single clicks
+ - added 2 new functions to get/set/insert text in window's inut lineedit
+ - added 2 new options for the proper handling of winamp encoding and ID3 tags' encodings
+ - started dcc module porting from KviStr to QString
+ - resolved lot of internatiolization problems in DCC module
+ - improved defscript
+
+26 Oct 2005
+ [Alexey]
+ - Added Ctrl+A shortcut for select all
+ - Total latin1() elemination
+ - Fixed bugs from bugtrack
+ - Improved usermode menu
+ - Resolved issues with encodings in DCC chat and transfer
+ - Editbox now has focus by default in search window
+ - Changed /ame and /amsg behaviour
+ - Make connect/disconnect button to reconnect to last used in this context server,not to last used globally
+ - Added WeNet network
+ - Fixed CTCP handling
+ - Fixed +e and +I chanmodes handling
+ - Fixed issues with non-latin symbols in scripts
+ - Fixed encodings in logfiles
+ - Fixed encodings in socket agent window
+ - Fixed logfile names
+ [Pragma]
+ - A quick fix for the connect button handling
+ - A fix for a crash in the listview KVS class (new parser)
+ - More KVS all around
+
+19 Jun 2005
+ [Grifisx/Noldor]
+ - code improvements in the editor(...stil a work in progress):
+ added code completition (shift+insert keys), added a dynamic help: move over a command/function.
+ then right button and "help command/function" (... its in beta status, need some workaround :D) :
+ an help window will appear.
+ - added some options to hide graphic elements in the gui to build a very "minimalist" KVIrc.
+
+15 Jun 2005
+ [Grifisx/Noldor]
+ - code improvements in the editor(...a work in progress):
+ added find/replace in alias editor, fixed some bugs and added some user friendly feature.
+ To do: code completition;
+ - win code improvements in the system module;
+ - added setBackground command in window module;
+
+24 May 2005
+ [Pragma]
+ - Added queueing for slow paste
+ - Added http.asyncGet
+
+14 Apr 2005
+ [Grifisx/Noldor]
+ - Add wrapper and wizard classes,
+ added parameters support to all classes,
+ some fix and changes in many objects classes.
+ Moved commands "connect","disconnect","clearobjects","killclass" in the module objects.
+05 Apr 2005
+ [Grifisx/Noldor]
+ - Added mediaplayer.setVol and mediaplayer.jumpTo commands for winamp,
+ painter and pixmap class optimization,
+ added 'Paste file' and 'Stop slow paste' on chan and query.
+24 Mar 2005
+ [Pragma]
+ - Added the CIA open source project tracing script to the cvs (only for
+ the kvirccvs module). Please write informative CVS comments from
+ now on :)
+
+23 Mar 2005
+ [Grifisx/Noldor]
+ - added boolInputHistory option to disable Input History window and it's log memory
+
+20 Mar 2005
+ [Grifisx/Noldor]
+ - added painter, textbrowser and pixmap classes and some extensions to widget class
+ - add minimize and close button to the iconstable's window
+
+13 Mar 2005
+ [Grifisx/Noldor]
+ - added functions and signals to manage some event in the lineedit class:
+ $lostFocusEvent, $returnPressedEvent, $textChangedEvent
+ - added function $str.section(,,,) in 'str module'
+
+12 Mar 2005
+ [Crissi]
+ - mp3player module updated: kde mediaplayers
+
+09 Mar 2005
+ [Grifisx/Noldor]
+ - some new classes in the object module:
+ mainwindow, toolbar, toolbutton
+
+08 Mar 2005
+ [Grifisx/Noldor]
+ - Fixed CTRL+K, CTRL+B, CTRL+U, CTRL+I...escapes in the topic widget
+
+27 Feb 2005
+ [Pragma]
+ - Fixed the CTRL+D terminal window crash
+ - Fixed the Rijndael encryption module
+
+22 Feb 2004: 3.2.0 "Realia" released.
+
+20 Feb 2005
+ [Pragma/Iakko/Noldor/Grifisx]
+ - Several fixes on the notifier
+ - A lot of enchancements in the objects module (some new classes
+ and some extensions to the existing ones)
+ - Improved auto-resume DCC handling: now files are not
+ auto-resumed when the incoming size is unknown or smaller
+ than the existing file. The auto-resume is disabled also
+ if there is a running transfer with the same loca file name.
+ - Fixed several bugtrack issues.
+ - Cleaned up the -ansi -pedantic compilation. It looks that
+ only one real warning remains and it is related to the "deprecated"
+ flags of KApplication constructor which will be removed
+ in KDE 4.0. We must live with it for a while.
+ All the other warnings are due to the system headers.
+ - Caught a couple of potential segmentation faults in the reguser
+ module.
+ - Committed the catalan translation by Marc Serra
+
+09 Feb 2005
+ [Tom]
+ - Fixed several positioning issues for widgets with saved geometry
+ on MacOS X
+
+09 Feb 2005:
+ [Noldor/Grifisx]
+ - Added the KVS process class
+ - Several fixes for other object classes
+ - Added Drag&Drop support to the queries: now a drop operation
+ triggers the OnQueryFileDropped event
+ - Added support for CTRL+K, CTRL+B, CTRL+U, CTRL+I ... escapes
+ in the topic widget.
+
+08 Feb 2005:
+ [Noldor/Grifisx]
+ - Added the KVS radiobutton class
+
+08 Feb 2005:
+ [Pragma]
+ - Fixed the bug of KviIrcView that caused the background to be repainted
+ incorrectly when the mouse was hovering over the links
+ - Private background now has priority even over the global transparency
+ - Added a menu option to reset the private background pixmap when no longer needed
+ - Removed the "FrameCaption" option since it was only freaking the people
+ out when it wasn't updated on version change...
+
+07 Feb 2005:
+ [Pragma]
+ - Finally managed to handle correctly the IME events: text input for chinese/japanese
+ korean etc... should work now.
+ - Fixed the logging of emoticons: they are written to the log files now
+ - More tricks on KviHeapObject
+ - Added the fixes for the _horrible_ VC++ compiler bug that implicitly
+ creates helper functions (vftable entries) residing in code sections where
+ operator new is called on a class with a virtual destructor. This is
+ simply destructive when it happens in a module that can be unloaded
+ before the object allocated with new is destroyed: at delete time
+ the code flow obviously jumps into no man's land.
+ - Committed the ldcnumber class by Noldor and Griffisx
+
+04 Feb 2005:
+ [Pragma]
+ - Added the fixes for windows segfaults reported and bughunted by Noldor and Grifisx.
+ Maybe these KviHeapObject trick will help to solve the issue.
+ - Added a warning message about sending more than 20 lines of text
+ at once in a query or channel. The warning can be obviously disabled
+ forever by answering "Always".
+ - Added the XIM "hot spot" handling for the input window.
+
+
+01 Feb 2005:
+ [Pragma]
+ - Bandwidth limits for DCC finished. They are configurable "on the fly" now.
+ - Fixed the Ctrl+Arrows and Ctrl+Shift+Arrows behaviour: now they skip/select
+ entire words in the input widget. Window switching has been moved to
+ Alt+Arrows and Alt+Shift+Arrows.
+
+31 Jan 2005:
+ [Noldor/Grifisx]
+ - Yet more object classes: time for spinbox and slider.
+
+30 Jan 2005:
+ [Pragma]
+ - DCC Bandwidth limit implemented, "on the fly setting" is still missing tough
+
+29 Jan 2005:
+ [Iakko]
+ - Added Notifier 2.0 in a more stable and usable version, now tabs and
+ "blinking onFocusOut/showing" are working. The Notifier is still on Beta version.
+ - Some kvi_sp_literal.cpp and kvi_sp_ctcp.cpp (under kvirccvs/kvirc/src/kvirc/sparser) changes
+ needed for notifier to work. A core recompilation is suggested even if
+ not strongly necessary.. it's a matter of string output on the notifier, nothing critical.
+ - Graphic features are waiting to be added asap.
+
+29 Jan 2005:
+ [Noldor/Grifisx]
+ - Added a new widget class "progressbar" with the following functions:
+ $setProgress, $setTotalSteps, $reset, $setCenterIndicator,
+ $setPercentageVisible, $isCenterIndicator, $isPercentageVisible
+
+28 Jan 2005:
+ [Pragma]
+ - Added the possibility of exporting toolbars from the toolbar
+ customization dialog. The export function can also export
+ the associated actions.
+ - Moved the toolbar customization dialog to a separate module
+ - Added the mircryption/blowfish crypt engine. It actually supports
+ both the standard ECB mode and the (really) new CBC mode.
+ - Fixed some remaining bugs in the action editor: now it should
+ be ready for the public :)
+ - Added a couple of object functions to the layout object class
+ to support the nice minesweeper script :D
+ - A full set of action.* and toolbar.* commands is now available
+ - Added compatibility loading functions for old toolbars
+ - Added handling of the ERROR server message.
+ - Added the support for actions that can be enabled only in
+ specified windows and only if there is a nonempty selection inside.
+ This allows to create user toolbars that perform quick actions
+ on the selected channel users. This is a *really* quick kick
+ for example.
+ - Fixed a couple of bugs related to the mask handling
+ - Fixed a possible bug related to acknowledges in the DCC send code
+ - Other small fixes all around as usual.
+
+
+27 Jan 2005:
+ [Noldor/Grifisx]
+ - added $setFont to the class widget,$setDragEnabled and $setInputMask
+ to the lineedit class;
+
+20 Jan 2005:
+ [Noldor/Grifisx]
+ - added some new functions to the class widget: $setToolTip,
+ $setForegroundColor,...
+ - some code improvements in the win version of the filetransferwindow:
+ added context menu like open,open with,delete file,open destination folder
+
+8 Jan 2005:
+ [Pragma]
+ - Added handling for ERROR and the relevant OnError event.
+
+7 Jan 2005:
+ [Pragma]
+ - Again more than 20 days of changes to report.
+ - The action based toolbars are almost working and have replaced
+ completely the old scriptable toolbars.
+ - The toolbar customisation dialog is ready
+ - Actioneditor is almost ready too, needs just minor adjustments
+ - Added $chan.userJoinTime() and $chan.userLastActionTime()
+ - Added several new $mask() types: now it is possible to get different
+ host masks (only *.domain.ext or *.anything.anythingelse.domain.ext).
+ Another mask set tries to handle correctly the hidden hostnames (+x)
+ on some servers (this does not work 100% tough...)
+ - Added the initial stuff for the language recognition module. Still
+ don't know if it will end up in the official release: needs interfacing with
+ the core... but the standalone engine is starting to work.
+ - Added several "smart" encodings that will try to decode as UTF8 first
+ and then apply the local encoding rules.
+ - Added a couple of new emoticon images (Thnx Penny!, Thnx Sidhe! :)
+ - Created the "scripts" cvs module and added a first script example
+ (a simple ezbounce irc proxy interface)
+ - Fixed runtime localization of the action and toolbar names: they
+ should work fine now.
+ - Fixed some bugs in the objects module (still needs a lot of work)
+ signaled by Noldor.
+ - Bumped up libtool and ltmain.sh to 1.5.10 (hoping that it will stop
+ relinking the modules when installing... this is extremely annoying)
+ - Suggest installing the default script if no toolbars or popups are available
+ - Fixed http avatars not being correctly loaded after the transfer has finised.
+ - Iakko is working hard on the new (cool!) notifier interface :)
+ - Various other fixes all around
+
+15 Dec 2004:
+ [Pragma]
+ - Hacked the avatar cache to support masked ip addresses
+ (added some new parameter options to the $mask function by the way)
+ - Added the possibility of setting a temporary background for any IRC view.
+ This is still an experiment.
+
+12 Dec 2004:
+ [Pragma]
+ - Added minimal support for /DCC ALLOW
+ - Fixed config files loading that truncated lines longer than 32K
+
+8 Dec 2004:
+ [Pragma]
+ Yet another huge set of commits.
+ The major changes are:
+ - New "action" based toolbar and popup menu system.
+ Now the user can just drag & drop actions to customize toolbars :)
+ - The "big cleanup" has started:
+ - "Scripttoolbar" is gone: the functionality is completely superseeded by
+ the action based toolbars now. I already know that some people will want to kill
+ me for this but from now on the actions are the only method to create toolbars.
+ This is a good idea since the old method was a bit ugly (for example because
+ it needed overriding events to enable/disable the actions).
+ Moreover, another piece of the old non-unicode parser has been wiped out: this is Good(TM).
+ - Module extension toolbars are gone: replaced by the action stuff now (see above).
+ - Several structural changes to the default script that reflect the changes in the core.
+ It IS a good idea to reparse it (execute default script) once now.
+
+4 Nov 2004:
+ [Pragma]
+ - Fixed various minor bugs introduced with the last huge commit.
+ - Merged the Mirco Macrelli's patch that adds the chanowner flag
+ support.
+
+1 Nov 2004:
+ [Pragma]
+ I've missed to update this file for a while: my fault :/
+ The major changes until now are:
+ - New statusbar showing the server informations.
+ This is intended to replace the irc context applet which
+ often has problems with space.
+ - 5 moveable statusbar applets
+ - Per network settings: nick,user,OnLogin,OnConnect,NickServ
+ authentication etc. as per-network settings.
+ - Both the servers and the networks can have a preferred
+ encoding now.
+ - More UNICODE support all around: the encodings are honored
+ almost anywhere with the exception of the scripting engine.
+ The scripting engine uses a hack that makes the encodings
+ survive through trivial scripts too. This will become yet
+ better when the new KVS core will be ready.
+ - Support for unicode nicks and channel names.
+ In fact almost anything that the server sends out may be unicode
+ data encoded with some 16->8bit scheme.
+ - A new rewritten lag meter that will avoid to ping the server
+ if possible (when other lag-check probes are spontaneously
+ being sent). The improved algorithm computes the lag better
+ and does not "hang up" when the server doesn't reply at all.
+ - The default quit and part messages can contain scripting identifiers
+ that are evaluated at quit or part time.
+ - The windows problem with keyboard input has been resolved
+ - Several enchancements to the actual scripting engine including
+ but not limited to echoprivmsg, query, notice, notifier.* ,
+ perl.*, server, ...
+ - Added OnDisconnectRequest event
+ - Added support for /CODEPAGE
+ - Avoided unnecessary repaints when in SDI mode: this made
+ KVIrc a bit faster when switching windows and lowered
+ the overall cpu usage.
+ - The "unread" text in a window is now clearly marked by a horizontal
+ line in the text view. If the text line is out of the view
+ then a triangle in the upper corner of the view signals it.
+ - KviWStr stuff definitively removed :)))
+ - Several other minor bugtrack issues fixed.
+
+
+6 Aug 2004:
+ [Juanjo]
+ - Make some pointer = 0 after delete assignations when:
+ Pointer is a member pointer or a global pointer.
+ The delete is not in a destructor.
+ It makes sense.
+
+1 Aug 2004:
+ [Juanjo]
+ - Added an autopackage dir with two (very initial) apsepc files to build a
+ .autopackage autoinstaller.
+ If you have not
+ checked autopackage (http://autopackage.org) DO IT NOW :) is the real
+ solution for Linux third party software installation across distributions
+ (somewhat like autoconf at the binary installation level, but without
+ damn M4 :)
+
+20 Jul 2004:
+ [Pragma]
+ - Now you can use perl from KVS and KVS from perl :)
+ See /help perl.begin
+
+13 Jul 2004:
+ [Pragma]
+ - Perl support has been widely requested. Added the initial modules
+ for that purpose. Needs more work tough.
+ - More work on the notifier: now it's fully working.
+ Added also the options to disable it in several ways (even completely).
+ - Fixed various bugs all around
+
+11 Jul 2004:
+ [Pragma]
+ - Added /AHOST command
+ - More work on the notifier, now it flashes, pops up only when really
+ needed and can be temporairly disabled.
+ - Hardwired the event manager of the new KVS engine and officially
+ killed the old uparser based event manager. We're getting closer and
+ closer...
+
+08 Jul 2004:
+ [Pragma]
+ - Added the notifier module: really nice!
+ Thnx to Penny for the images :)
+
+06 Jul 2004:
+ [Pragma]
+ - Added a Always/Yes/No message box that asks the user for confirmation
+ when attempting to close a connected console.
+ - Added the Always/Yes/No option to the "Quit-Kvirc-On-Close-Last-Console"
+ operation.
+ - Fixed the input history handling bug as reported by Soliton
+ - Added several fixes for UNICODE misbehaviours reported by Dusan
+ - Fixed the configuration files parsing: now the entries
+ and the keys have whitespace encoded separately and the UTF8
+ encoding/decoding is done in the proper places.
+ - Added the code to make the translation of the tips possible.
+ The translations MUST be UTF8 encoded and use the
+ libkvitip_.kvc name.
+ - Finally fixed the copy&paste behaviour:
+ In the input the selection and the middle click
+ use QClipboard::Selection if supported by the operating system.
+ All the other methods use QClipboard::Clipboard.
+ The IRCView now copies to both QClipboard::Clipboard and
+ QClipboard::Selection (if supported)
+ - Again huge structural reorganizing in the networking stack
+ now I start to like it :)
+ - Committed several translation updates by Dusan
+ - The reconnect timer can now be stopped before it triggers
+ and on disconnect it uses the correct server entry.
+ (see Trisk's ChangeLog entry for 12 Mar 2004).
+
+26 Jun 2004:
+ [Pragma]
+ - Fixed a mismatched new[]/delete pair in kvi_locale.cpp
+ - More KviConsole->KviIrcConnection moving
+ - Fixed a couple of potential segvs related to the connection management
+ - More UNICODE fixes all around
+
+24 Jun 2004:
+ [Pragma]
+ - Yet more bug fixing
+ - Added the cs translations of the modules and fixed some unicode issues reported by Dusan
+
+21 Jun 2004:
+ [Pragma]
+ - Fixed a bug introduced by the previous fix about date encodings :D
+ - Fixed log files not being properly encoded to UTF-8 (question: should
+ the logs be UTF-8, use the local encoding or use the source window charset ?)
+ - Committed more work on kvirc_cs.po by Dusan Hokuv
+
+20 Jun 2004:
+ [Pragma]
+ - More reorganizing of the networking stack
+ - Fixed some bugs with encoding of the dates in non-english locales
+
+16 Jun 2004:
+ [Pragma]
+ - Fixed a crash in the /foreach command as reported by Ahinu (thnx ;)
+ - Added the OnNetsplit event
+ - More reorganizing of the networking stack
+
+12 Jun 2004:
+ [Pragma]
+ - A lot of UNICODE updates
+ - More reorganizing of the networking stack
+ - Added a lot of new text encodings including the missing ISO-8859-XX variants
+ and some CPXXX.
+
+4 Jun 2004:
+ [Pragma]
+ - Added first bulgarian translation by bugar@developer.bg
+ - Completly reorganized the
+ class set. Now it should become more usable/readable/manteinable/coherent ...
+ Really work in progress: expect misbehaviour and compile time warnings about
+ deprecated functions...
+
+2 Jun 2004:
+ [Pragma]
+ - Added profiling support (--enable-profiling)
+
+31 May 2004: 3.0.1 "System Virtue" released.
+
+11-30 May 2004:
+ [Pragma]
+ - More console splitting , still not finished
+ - Created the initial hackers guide document (this will be always work in progress)
+ - Fixed some online doc bugs
+ - Fixed a bug with popup menu prologues not being saved correctly
+ - Fixed a SEGV related to focus management
+ - Fixed a couple of translation related SEGVS
+ - Preserved UNICODE in the logs by encoding to UTF-8
+ (maybe this should be the local 8 bit ? feedback will be needed later)
+ - Fixed several typos and dead links in the documentation signaled
+ by Klaus Weidenbach
+ - Added a couple of window.* module commands/functions
+ - Unicode fixes related to IrcView tooltips
+ - Added $msgtype function and fixed the related echo documentation
+ - Added the export function in the event editor
+ - Fixed a bug in the popup export function that caused extpopup entries
+ without icons to be exported as simple popups (thnx again Klaus).
+ - Added an option to redirect WHOIS replies to the active window (on by default)
+ - Added the /echoprivmsg command
+ - Added the "delete file" function to the file transfers window
+ - Various fixes all around
+
+10 May 2004:
+ [Pragma]
+ - Fixed the problem with tooltips displaying the wrong avatar image
+ - Started splitting KviConsole in smaller logical classes (irc context, irc connection)
+
+06 May 2004:
+ [Trisk]
+ - Changed parsing for 004 numeric, properly works with hybrid now.
+
+17 Apr 2004: 3.0.0 "Awakening" released.
+
+16 Apr 2004:
+ [Pragma]
+ - Fixed a bug with creation of KviWindow derived classes: the constructor
+ of the base class was calling virtual functions from subclasses (it is curious
+ that this was effectively failing only on Windows and not on Linux).
+ - Reworked a bit the str module to avoid compiler parameter passing problems
+ - Fixed a bug with $str.replacenocase
+ - Fixed a bug that prevented the color option selector buttons from
+ displaying the proper color
+ - Miscelaneous fixes for the release
+
+15 Apr 2004:
+ [Trisk]
+ - Miscellaneous minor stuff (set avatars to 0 width/height to disable).
+ - More reasonable defaults (seriously, the coloured nicks hurt people's
+ eyes =\ ). The fact that unrecognised commands result in parse errors
+ confuses new users (and annoys the heck out of me, too). Turned off
+ message icons too. Rationale is that it will disgust former
+ epic/BX/irssi/xchat users.
+ - And, I don't think most new users will use avatars regularly, so turning
+ the nicklist grid off by default, since it makes the nicklist more
+ cluttered.
+ * Forgot to add nick completion suffix. Oh well, the 3.0 series is just
+ beginning...
+ - Almost forgot to clean up really bad spelling in tip of the day. ><
+
+13 Apr 2004:
+ [Pragma]
+ - Added the default low-resolution (Minimalist) and high-resolution
+ (fancy) themes
+ - Added the selection of the default theme at first setup
+ - Added one time nickname generation at first startup
+ - Modified the Identity dialog to handle better the multiple
+ nickname alternatives. The combobox was not that intuitive
+ thus added a separate dialog for the alternatives.
+ - Removed the "Change now" button from the Identity dialog: it never
+ worked correctly.
+ - Fixed the "concurrency" crash reported on the mailing list
+ - Fixed a SEGV related to shared files
+ - Fixed an infinite loop in the toolbar editor
+ - Fixed a bug with the Color Selector not displaying the right color on windows
+ - Adjusted acinclude.m4.in to handle the new icons added by Trisk: still not
+ installed in the proper locations
+ - Added a couple of GUI option pages that were really missing (mdi captions
+ and toolbar applets)
+ - A couple of new icons added
+ - Fixed a couple of strange behaviours of the input widget
+ - Some source code rearrangements all around
+ - More things that I can't remember :D
+
+11 Apr 2004:
+ [Trisk]
+ - New application icon by Arty2 / Hercules Papatheodorou
+ , updated icon set.
+ * Too lazy to get icons installing in proper locations.
+
+08 Apr 2004:
+ [Pragma]
+ - Added the highly requested /exec command in the core
+ - Also added an example script that runs an interactive telnet
+ session and sends mail with the use of /exec: powerful :)
+ - Fixed a script editor highlighting bug
+ - Fixed another problem with overlapping dns queries...
+ ... it should have been written this way from the beginning :D
+ - Miscelaneous changes & fixes all around...
+
+06 Apr 2004:
+ [Trisk]
+ - Fixed null KviWStr problem.
+ - Fixed /$sw(e) crash.
+
+04 Apr 2004:
+ [Trisk]
+ - Hacked KviWStr to use QTextCodec instead of charset translation tables. =P
+ *** Chinese, Japanese, Korean seem to work!
+ - Fixed encoding names.
+ - Added ISO 8859-9 (Latin-5 Turkish, requested), Big5, GB18030, SJIS,
+ EUC-KR, TIS-620.
+ - Added options to not show tooltips in taskbar and userlist.
+ - Added option to disable taskbar sorting.
+
+02 Apr 2004:
+ [Trisk]
+ - DCC message changes.
+ - Use proper capitalisation in events, Irc->IRC.
+ - Hack to allow showing +e (and +I) when used for channel modes (not user
+ modes).
+ * Should implement better 005 parsing.
+
+31 Mar 2004:
+ [Pragma]
+ - Added the quit confirmation dialog when there are active connections in the
+ window being closed
+ - Added some descriptive messages to the setup dialog
+ - Fixed a crash related to received CTCP's
+ - Fixed the theme loading that was not updating all the icons
+ - Fixed some functionality of the theme selection dialog
+ - Added some message color presets
+ - Fixed a crash with overlapping dns queries
+ - Added updating of the KDE root pixmap when autochange is active
+ - Added the "execute script" menu entry
+ - ...
+ [Trisk]
+ - Some message changes.
+ - Added redirect to active window options for services notices, server
+ notices, broadcast/wallops, and renamed ToConsole options.
+ - Minor server parser changes.
+
+28 Mar 2004:
+ [Pragma]
+ - Added the default theme (useful to restore the default settings) to the distro
+ - Some bug-fixes and cleanups in the theme engine
+ - Added the themes section on www.kvirc.net and placed the first Marble theme by Sbrokka on ftp.kvirc.net
+ - Adjusted the menubar to dynamically setup the popup menus (it reloads the icons etc..)
+ - Fixed a crash in ctcp action
+ - Added the option to flash the KVirc's taskbar entry when new messages arrive in a query and KVIrc is
+ not the active application. Works only with KDE support and on Windows for now.
+ - Added the special "all" parameter to $active to return the application active window
+ - Forced eval to use the calling variable scope: in this way local variables can be passed too
+ - Fixed a bug in the servers dialog "recent servers" popup: now it finds the correct entry also
+ when two servers with the same name but different port are present
+ - Added the exporting of aliases to external files (single aliases and the whole alias set).
+ - Fixed the popup tester in the popupeditor: now it works again (it was totally disappeared :)
+ - Misc hacks that I can't remember...
+
+25 Mar 2004:
+ [Pragma]
+ - Code cleanups all around
+ - Updated various docs for the upcoming release
+ - Removed the obsoleted _c2q stuff and --with-local-8bit option
+ - Changed the close/maximize/restore/minimize icons to black ones: they look better
+ - Added a heap mess windows workaround class
+ - Re-implemented the shared files editing (still missing some code)
+
+24 Mar 2004:
+ [Trisk]
+ - Various input editor fixes.
+ - CTCP parser improved.
+ - Updated default script.
+ - Options dialog fixes.
+
+21 Mar 2004:
+ [Trisk]
+ - Many, many more options dialog changes.
+
+20 Mar 2004:
+ [Pragma]
+ - Added several window.* functions
+ - Redirected /whois output to the active window
+ - Options dialog fixes
+ - Added scripting toolbar
+ - Cleaned up some documentation and forced gendoc.pl to ignore the new kvs docs that are not "hardwired" yet
+ - Added some graphics for the final 3.0.0 release
+ - Added a couple of keyboard shortcuts (all described in doc_keyboard.html)
+
+20 Mar 2004:
+ [Trisk]
+ - Some parsing of 005/RPL_ISUPPORT added. Uses PREFIX and and CHANTYPES.
+
+18 Mar 2004:
+ [Trisk]
+ - KviUserListView API change: set[beI]Entries -> setMaskEntries().
+ - KviUserListView minimum width is 100px (due to continuing annoyance of
+ mode editor resizing the thing... not a good solution, but whatever).
+ - Lots of options dialog changes.
+ - Classic taskbar now limits number of rows (when horizontal).
+ - KviChannel API change: banMask(), etc. removed in favour of setMask().
+ - Mask editor requests new list when opened after a mode change.
+ * Fixes problem with CR ircd where -b messages may not match bans in list due to stupid inconsistent hostmasking.
+
+12 Mar 2004:
+ [Trisk]
+ - Auto-reconnect attempts are now counted, delay configurable.
+ * FIXME: Make it possible to stop the reconnect timer before it triggers.
+ - Several huge if() conditions replaced with switch() statements.
+ - Various minor issues fixed.
+
+07 Mar 2004:
+ [Trisk]
+ - Improved script editor cursor location tracking and configuration dialog.
+ - Input widget clean-ups, global input history fixed.
+
+03 Mar 2004:
+ [Pragma]
+ - Some work on the options dialog: moved some options to more appropriate places,
+ rearranged some options widget orders, fixed descriptions etc..
+ - Fix for OnChannelNotice not passing the target argument
+ - More misc hacks that I can't remember :)
+
+02 Mar 2004:
+ [Pragma]
+ - Added OnQueryWindowRequest to catch and block the query window creation events.
+ - Added OnQueryTargetAdded
+ - Corrected a lot of bugs reported on bugtrack.kvirc.omnikron.net
+ - Corrected the $mask.nick() problem
+ - Removed the $ic warning when there was no current IRC context
+ - Moved the server database to unicode
+ - Misc hacks that I can't remember :D
+
+28 Feb 2004:
+ [Pragma]
+ - Fixed the "keep channels open on kick" crash
+ - Probably fixed a sort of a race condition based crash between
+ the socket and the console
+ - More fiddling with KVS events
+
+24 Feb 2004:
+ [Pragma]
+ - Yet more work on the KVS engine: events this time
+ - Temporairly removed the "force last server" hack since it was breaking the
+ servers dialog: one couldn't select a different server to connect to.
+ This is commented out until we find a more strict activation condition.
+ - Activated the $sw function, this time for real :)
+
+20 Feb 2004:
+ [Trisk]
+ Added $date function for formatted time strings.
+
+18 Feb 2004:
+ [Trisk]
+ - Added "all" target for $me and $server functions.
+ - Fixed possible $mask() problem, not sure why Pragma removed '*' from
+ *user. Behaviour should be consistent with docs now.
+ - Cleaned up channel prefix and nick mode prefix (considers invalid chars
+ in nick to be a mode prefix).
+ * Closes ID 200402112009267112
+ * Somebody needs to update the bugtracker...
+
+14-17 Feb 2004:
+ [Pragma]
+ - Rewritten the script editor widget to use QTextEdit. Dropped
+ the whole internal editor since it was not unicode and simply
+ too huge for the feature it provided.
+ - Modularized and cleaned up the localisation of the editor module
+ - More work on KVS engine, module interface nearly estabilished
+ - Added support for changing the order of option items in the
+ options dialog tree display. Most common options should go at the top.
+ - Random fixes around :)
+
+14 Feb 2004:
+ [Trisk]
+ - Changed 005 numeric parser output a bit, fixes issues with skipping to
+ last word of messages.
+ * /me hugs Aeri ;)
+ - Removed check for KviProperty_FocusOwner.
+
+09 Feb 2004:
+ [Juanjo]
+ - Fixed a miscompilation --without-info-tips
+ - Added the lag to the irc context indicator tooltip.
+ - Make the irc context indicator a little bigger (but the correct way
+ would be to make it resize itself depending on the inside text size).
+
+06 Feb 2004:
+ [Pragma]
+ - More work on the KVS engine
+ - Added the IrcContextToolbar to the toolbars menu, now it can be hidden
+ should the TaskBar be there too ?
+ - Moved the TaskBar to be a toolbar like the other ones (and
+ thus inherit the toolbars menu on right click etc...)
+
+05 Feb 2004:
+ [istari]
+ - reformating ChangeLog
+ * please use current schema
+ * break lines after 80 chars
+ - intserting ChangeLog into website
+
+23 Jan 2004:
+ [Pragma]
+ - More work on the KVS engine : popups almost ready
+ - Fixed a regusers bug that didn't allow to register channels with a '@'
+ character in it
+ - More windows port: kvilib, kvirc and several modules are already working
+ - Fixed an expression parser bug related to string/number comparisons
+ - Added $sw() function for switch handling in aliases
+
+20 Jan 2004:
+ [Trisk]
+ - Dock icon menu bug fixed, new entries added.
+ * Problem with switching to console on frame window restore still present,
+ Pragma: Please fix
+ - Input right-click menu shows shortcut keys.
+
+19 Jan 2004:
+ [Trisk]
+ - Adding multiple servers wtih the same hostname (different port) works.
+
+17 Jan 2004:
+ [Trisk]
+ - Fixed some more encoding issues.
+ - mkprocinstances.sh doesn't use zsh/bash-specific variable arrays now.
+
+15 Jan 2004:
+ [Trisk]
+ * PragmaOff's been idle for a long time. =\
+ - Made logfiles lowercase (helps sorting, if any issues contact me).
+ - Made channel and query windows's default logfile contain network name
+ instead of console #... makes more sense.
+ - Massive server parser changes to ensure text is converted to current
+ encoding (fixes issues displaying ISO 8859-1 extended ascii (127+) text).
+ - Changed all %d d %d h %d m %d s to %dd %dh %dm %ds.
+
+09 Jan 2004:
+ [Trisk]
+ - Lots of notify list message changes.
+
+08 Jan 2004:
+ [Trisk]
+ - More widget width problems fixed (presumably).
+ - WHO reply is more informative now.
+ - Shortened some taskbar button captions.
+ - KviConsole::createQuery() tries to prevent duplicate single-target queries.
+
+06 Jan 2003:
+ [Pragma]
+ - More work on the new KVS engine
+ - Added a -nosplash commandline argument to avoid showing the splash screen
+ - Reverted the kvi_activitymeter.png icon: the bars should eventually grow
+ from left to right (in the image) instead of top to bottom.
+ - Re-added $window to kvi_kvs_corefunctions_sz.cpp : it's the new parser
+ version and it will replace the old parser's version in the near future.
+ If you want to test the new parser capabilities then run the commands
+ by preceding them with a dash:
+ /- echo "This is the new parser's version of echo"
+ /- echo $window this is the new parser's version of echo \$window
+ ...
+ - Added four ways of painting the user list view grid. It is user selectable
+ now.
+ Please tell me which is the best one (to choose the default)
+
+04 Jan 2004:
+ [Trisk]
+ - Removed duplicate of $window from KviKvsCoreFunctions
+ (kvi_kvs_corefunctions_sz.cpp), original is in the uparser...
+ - Fixed all the "Jan 2003" dates in the ChangeLog. =)
+ - Fixed KviStringSelector etc. width problem.
+
+03 Jan 2004:
+ [Trisk]
+ - New images, help browser uses Bluecurve ones (temporarily).
+ - Taskbar now displays same number of buttons per row.
+ - Various spacing changes to selectors again.
+ - Fixes to identity dialog.
+ * For some reason, the 4th nickname stays blank... not sure why.
+ - Various QFrame::Panel -> QFrame::StyledPanel.
+ - Dead channels unset limit and key too.
+ - Window list shows same name for dead channels and queries.
+
+02 Jan 2004:
+ [Pragma]
+ - Solaris Forte 7 port (still needs hacking to compile and run flawlessly)
+ - Fix for Solaris dns resolver
+ - More work on the new KVS engine
+ - stdarg.h wrapper to accomodate ugly compilers
+
+01 Jan 2004:
+ [Trisk]
+ - Dotted line drawn next to nick/avatar in nicklist instead.
+ - Changed IP addy editor widget to properly accept '.' and ':'.
+ - Redid identity config dialog.
+
+New Years Eve, 2003:
+ [Trisk]
+ - Draw separator lines above and below avatar and nick.
+ - Join channels dialog cleanup.
+ - Dock widget minor header changes.
+
+30 Dec 2003:
+ [Trisk]
+ - Cleaned up some options dialog stuff.
+ - Added $version function.
+
+ [Pragma]
+ - HTTP avatar option support
+ - More unicode porting all around
+ - Windows port (kvirc and kvilib projects nearly working)
+
+29 Dec 2003:
+ [Trisk]
+ - Fixed problem with toolbar options dialog command.
+ - Changed ident, proxy, SSL, and transport options pages to use QGroupBox to
+ organise options. Maybe add add*SelectorToGroupBox functions later.
+
+28 Dec 2003:
+ [Trisk]
+ - More new toolbar icons, currently using Bluecurve/Crystal mix.
+ - Recent channel, server, and nickname list removes duplicates even if case
+ differs.
+
+27 Dec 2003:
+ [Trisk]
+ - Possible fix for crash if m_pConnectionInfo->szNickName is not set when
+ server disconnects the client (before login).
+ - Sets AsyncServerCommand on disconnect only if nonexistant; /SERVER works
+ now (sorry about that, Pragma).
+ - New Connect/Connecting/Disconnected icons.
+ - Removed border from channel state and mode icons in user list view and
+ lined up icons with text when avatar is used.
+
+ [Pragma]
+ - Added avatar caching
+ - Reworked the code that remembers the last irc server connected in each
+ console now it doesn't break the servers dialog.
+ After the commit I've discovered that it collided with the Trisk's solution:
+ merged the two solutions in something yet better.
+ - Obscure internals: reworked KviIrcMask interface a bit...
+ still needs QString porting
+ - Written a ChangeLog entry after months of "hidden changes" :D
+
+Christmas Eve (Western Hemisphere) 2003:
+ [Trisk]
+ - Modified window tooltips a bit...
+ - Unset channel mode for dead channels
+ - Fixed (hopefully) crash on closing dead channels if disconnected.
+ - Remove src/kvirc/kvs/moc_kvi_kvs_object.cpp from repository.
+ * Merry Christmas everyone! =)
+
+21 Dec 2003:
+ [Trisk]
+ - Output correct message when RPL_CHANNELMODEIS is used for user modes.
+ - URL highlighting matches only if followed by char greater than 46.
+ - Selected text includes control codes (this is a bit of a hack, gets them
+ from block attributes). Shift-select strips codes from the selection.
+ - Consoles remember last nick (correctly now).
+ - PART, TOPIC, and MODE messages will use current channel if no argument.
+ KICK will send proper command if no reason specified.
+ - Non-query notices and privmsgs go to active window if it is a common
+ channel, else to first common channel.
+
+16 Dec 2003:
+ [Trisk]
+ - GRAMMAR FIXES EVERYWHERE
+ * Breaks translations!
+ * Breaks stats program log parsers too (pisg)
+ - Cleaned up gendocs.pl link names.
+ - Rearranged menubar to conform to KDE style standard.
+ - Edit menus and buttons for "Book Title" style, changed some item names.
+ * PLEASE FELLOW THE KDE STYLE STANDARD, it looks better and is less confusing
+ - Made KviUIntSelector use QSpinBox instead of QLineEdit (again).
+ - Added uop/userop (+u) support. Currently uses +h icon, will change later.
+ - Removed many hardcoded font references.
+ - Made logfiles rotate at midnight to update date.
+ * Put timer in KviTimerManager for lack of a better place, somebody check
+ that this is correct, please...
+ - Changed tree window list to show server name for consoles of console caption
+ (too long to view). Set bold font for consoles.
+ - Fixed channel name showing up twice on part when no message is specified
+ - Made external messages (whois info, server notices, etc.) go to console by
+ default, added option ExternalMessagesToActiveWindow to override this.
+ - Also fixed opnotice (NOTICE @#chan) and made non-query private notices and
+ privmsg go to common channel.
+ - Replaced CPPFLAGS in all Makefile.am with AM_CPPFLAGS.
+ - Made channels missing request mask list when mask list editor is opened.
+ - Changed KviIrcMask::getHostDomainMaskPtr() to strip only first part of host;
+ user@x.y.z.tld.cc returns user@*.y.z.tld.cc, not user@*.tld.cc - much
+ more specific bans, same as getIpDomainMaskLen().
+ * This code was already there, but commented out - why?
+ - Made console windows remember last server and nickname.
+
+21 Oct 2003:
+ [Crissi]
+ - 'Always highlight messages with my nick on them' added: Check
+ irc::output::highlight tab on options.
+ - 'Hightlight only at normal msg' added: Check irc::output::highlight
+ tab on options.
+ - 'Highlight at highlight msg too' added: Check irc::output::highlight
+ tab on options.
+ - 'Highlight at query msg too' added: Check irc::output::highlight
+ tab on options.
+ - 'Highlight only at costum alert level reached' added: Check
+ irc::output::highlight tab on options.
+ - Translation updated
+ - 'Old Tools' menu moved into 'Tools' menu.
+ - convert all source files to unix line end because bug in gettext for
+ extracting strings from window lineend
+
+
+12 Oct 2003:
+ [Crissi]
+ - auto connect of servers after succuessful KVirc startup. Look into advanced
+ server info, connection tab.
+ For each server you can specify if should autoconnect.
+
+11 Oct 2003:
+ [Crissi]
+ - Channels can now stored for each server and then auto join them if
+ successfully connected to the server. Look into advanced server info,
+ 'After login join channels' tab. Simply check the channels (from history)
+ you want to join. Also you can add a new channel (current bug: after
+ adding close/reopen the dialog for showing new channel in list).
+ - Minimize console after successful login. Look into Preferences - Options -
+ Connection.
+
+12 Aug 2003:
+ [Crissi]
+ - 'Minimize all windows' and 'Restore all windows' added. Check Menu -
+ Window and window action toolbar.
+
+01 Aug 2003:
+ [Juanjo]
+ - I'm back, ahhh nothing like vacations to do some free software ;)
+ - The channel completion will also complete on the list of recent channels.
+ - New server completion, if the first four letters of something written on
+ the input are "irc." it will try to complete on the list of recent servers.
+
+18 Apr 2003:
+ [Crissi]
+ - exec module added. Check kvirccvs/modules/exec/README for more info.
+
+26 Mar 2003:
+ [Crissi]
+ - GUI option 'Use taskbar activity meter' added.
+ - GUI option 'Disable ban list request on join' added.
+ - GUI option 'Disable ban exception list request on join' added.
+ - GUI option 'Disable invite list request on join' added.
+ - GUI option 'Use taskbar activity meter' added.
+ - Translation extract script fixed
+ - Translations and translation template updated.
+ - Some comments in kvi_options.h added.
+
+26 Mar 2003:
+ [Pragma]
+ - Option 'Use taskbar activity meter' added.
+
+28 Feb 2003:
+ [Crissi]
+ - The width of the taskbar entries is now custoumizable.
+ - GUI option 'Minimal width of taskbar buttons' added.
+
+25 Feb 2003:
+ [Istari]
+ - Moved to the new CVS machine
+
+25 Feb 2003:
+ [Crissi]
+ - GUI options for symbols on taskbar and disabling global who added.
+ - Try to show emoticons with start not with : correctly (not from me...)...
+ tell me if you got problems with this...
+
+25 Feb 2003:
+ [Pragma]
+ - Option for disabling icons in taskbar added.
+
+21 Feb 2003:
+ [Crissi]
+ - Fixed text on first setup page, Translation possibility for buttons in
+ wizard added.
+
+20 Feb 2003:
+ [Pragma]
+ - Auto-resume transfers when auto-accepted (also GUI option) added.
+
+19 Feb 2003:
+ [Crissi]
+ - Password field for server shows now only stars instead not plain password.
+
+18 Feb 2003:
+ [Crissi]
+ - Size of toolbar icon fixed. Right size s now selected if toolbar size if
+ changed.
+
+18 Feb 2003:
+ [Pragma]
+ - Support for broken filename RESUME requests (mIrc's file.ext) added.
+
+15 Feb 2003:
+ [Crissi]
+ - $mp3player.getmp3tag_album added => get the album
+
+12 Feb 2003:
+ [Crissi]
+ - The mp3player module now supports reading of mp3 tags.
+ - New commands are:
+ - $mp3player.getmp3tag_artist => get the artist
+ - $mp3player.getmp3tag_comment => get the comment
+ - $mp3player.getmp3tag_copright => get the copyright
+ - $mp3player.getmp3tag_crc =) get the crc
+ - $mp3player.getmp3tag_date => get the year
+ - $mp3player.getmp3tag_emphasis => get the emphasis
+ - $mp3player.getmp3tag_genre => get the genre
+ - $mp3player.getmp3tag_layer => get the MPEG layer
+ - $mp3player.getmp3tag_original => get the orginal flag
+ - $mp3player.getmp3tag_title => get the title
+ - $mp3player.getmp3tag_tracknumber => get the track number
+ - $mp3player.getmp3tag_version => get MPEG version
+ - A example script was added (kvirccvs/kvirc/doc/scriptexamples/mp3info.kvs)
+
+4 November 2002:
+ [Juanjo]
+ - Added widgets to the identity an server dialogs to set a default user mode
+ after a conexion to the server.
+
+24 Oct 2002:
+ [Juanjo]
+ - Reworked a little the Tools menu.
+ - Spanish translation updates (only 1000 translations to go, hehe).
+
+19 Oct 2002:
+ [Juanjo]
+ - Added the alias 'lag' to the default script (it just returns the lag
+ using $lag.lag()).
+ - Added the event 'OnLagCheck' that get triggered every time there is a
+ new lag data. This should help scripters to write their own lagmeters
+ without having to poll KVIrc.
+ - Added an option to display the lag on the IRC context indicator, making
+ all those changes actually useful for the final user :)
+
+18 Oct 2002:
+ [Juanjo]
+ - Added a new (and very simple) Lagmeter (see the new 'lag' module
+ commands and functions), the 'Lag Options' dialog in the options/irc
+ window and the 'OnLagAlarmTimeUp' and 'OnLagAlarmTimeDown' events. I'll
+ add an applet displaying the lag to the lag module as soon as I figure
+ how to do it :)
+ - Added the OnPong event.
+ - Fixed bug 200210130200522026
+
+
+10 Oct 2002:
+ [Juanjo]
+ - I'm back, prepare your debuggers
+ - Added a 'Ignore' menu to the userlist users menu.
+ - New feature: User highlights (argh, I hate that word). Just update your
+ default.kvs and right-click on a user to see how it works. Very
+ usefull on very crowded channels with lots of parallel conversations
+ running and you trying to keep track of one (hello #debian). Also
+ added the pertinent commands on the module tmphighlight.
+ - The 'clear' command now also clears the message view on channels.
+
+06-24 Jun 2002:
+ [Pragma]
+ - Pre-release fixes all around
+ - SSL stuff..
+ - About dialog
+ - Fixes for KviIrcView
+ - Windows porting
+ - uh... I forgot all the things I did :D
+
+29 May - 06 Jun 2002:
+ [Pragma]
+ - More SSL support
+ - A lot of bugfixes (see bugtrack.kvirc.omnikron.net)
+ - Arrays support in the whole user parser (uh...this was huge , but
+ necessary) a huge set of functions has been moved to the new array
+ interface WARNING: the dictionaries have a new syntax now! %dict{key}
+ %something[id] is now reserved to arrays (with numeric id).[br]
+ - FOR command added
+ - Updated all the example scripts to support the new syntax
+
+23-28 May 2002:
+ [Pragma]
+ - Preliminary SSL support (try /server -s)
+ - Fix for the messed default.kvs (dialog problem)
+ - A lot of mem-leaks catched with valgdind
+ - Various fixes
+
+22 May 2002:
+ [Pragma]
+ - KDE Terminal window fix
+ - Some new icons
+
+21 May 2002:
+ [Juanjo]
+ - Using Pragma's support for text icons, added the option to substitute
+ some icons (currently ':)', ':D', ':-)', ':-D' and ':-O') in the irc view
+ (Options -> Look & Feel -> Irc View). Still not finished.
+
+18-21 May 2002:
+ [Pragma]
+ - More fixes for windoze
+ - Some reguser hacks
+ - Command, channel, function and directory completion in the input widget
+ - Various thingies all around
+ - CTCP Page support (partial for now , need some more options)
+
+7-17 May 2002:
+ [Pragma]
+ - Tons of fixes for windoze
+ - More modules ported to windoze (snd, dockwidget)
+ - Text icons initial implementation (try CTRL+I and have fun :)
+ - On*Created and OnWindowActivated are now called in the correct order
+ - Various thingies all around
+
+6 May 2002:
+ [Juanjo]
+ - spaste module completed (spaste.setdelay,spaste.list,spaste.stop,etc)
+ - Workaround for the tooltips-following-desktops problem (close tooltips
+ on input widget keyevent).
+
+1-6 May 2002:
+ [Pragma]
+ - Fixes for Solaris compilation: thanks to Kenneth Larea for the hints :)
+ - Random fixes for make dist
+ - Support for anti-flood on CTCP DCC *
+ - Failed DCC Handshakes are now optionally reported to the sender with a
+ CTCP ERRMSG. The options in the dialog are still missing
+ - Fixes for the "bad console repainting" problem
+ - es.po charset fixed
+ - Added sr.po (thnx Prethorian :)
+ - Added auto-windows-tiling feature to the MDI manager
+ - Other cleanups here and there...
+
+27 Apr 2002:
+ [Juanjo]
+ - New module 'spaste' to send text slowly to a conversation window.
+ - New option for the input widget right button men in conversation
+ windows: 'Paste (slowly)'.
+
+25 Apr 2002:
+ [Juanjo]
+ - Now the log viewer can be also a MDI window
+ - Log viewer listview icons
+
+21 Apr 2002:
+ [Juanjo]
+ - snd module
+
+1-12 Apr 2002:
+ [Pragma]
+ - Minor fixes around
+ - Fix for the KDE style toolbars
+ - Fixes for the liquid KDE theme (transparency).
+ not everything works... some label stuff must be fixed in the theme
+ engine...
+ - Query user list view invisible by default (also saved in the window state)
+ - Same for the channel double view
+ - Removed /tbutton and /wbutton and added generic /button and /buttonctl
+ instead updated the example scripts accordingly
+ - Merged the libtool update patch and added more fixes for this
+ - Fixes for --with-local-8bit compilation
+ - Added kvi_list.h and the compatibility KviPtrList defines to work both
+ with qt2 and qt3
+
+31 Mar 2002:
+ [Pragma]
+ - Mini-Fixes for the snd module (threading arguments) for gcc 3.0.0
+ - Mini-fix for libaudiofile check in configure
+ - More work on window position saving
+ - More work on the offer list window stuff.
+ - General fixes for gcc 3.0.0 (can anybody test it ?)
+
+30 Mar 2002:
+ [Pragma]
+ - Added the beginning of the offer list window
+ - Preliminary window properties saving... now handling defaults too
+ - Minor utility-functions in the window popup menus
+ - Preliminary rearrangements of code for KviConsole.... the header is
+ becoming a mess need to order the code syntactically and then maybe extract
+ some code to be put in external classes. KviIrcConnection could be an idea.
+ - Beginning of code for the toolbar button management... need a module ?
+
+29 Mar 2002:
+ [Pragma]
+ - Will I ever start to use this ChangeLog ? :D
+
+7 Mar 2002:
+ [Juanjo]
+ - kvisounds script, the sound on OnMeNamed event is usefull, really ;)
+
+28 Feb 2002:
+ [Juanjo]
+ - Pragma branded str module optimizations, docs for all the implemented
+ functions.
+
+26 Feb 2002:
+ [Juanjo]
+ - More str functions, removed strFindFirst for str.findfirst and updated
+ the scripts using it (UPDATE YOUR SCRIPTS!!!)
+
+21 Feb 2002:
+ [Juanjo]
+ - More str functions (still no docs)
+
+19 Feb 2002:
+ [Juanjo]
+ - Some new functions in the str module
+
+13 Feb 2002:
+ [Juanjo]
+ - /IGNORE && /UNIGNORE support
+ BTW the other guys are also making things, they just don't update the
+ Changelog :P
+
+10 Feb 2002:
+ [Juanjo]
+ - $isOp() $isMeVoice() $isVoice() $isMeHalfOp() and $isHalfOp() added
+
+9 Feb 2002:
+ [Juanjo]
+ - New log viewer module (logview.open)
+ - Fix for the editor not saving his options
+
+4 Feb 2002:
+ [Juanjo]
+ - Fixes so pragma could add --with-qt-embedded to compile againt Qt Embedded
+ (wow!)
+ - Get rid of the 'commit' and 'discard' buttons on the user editor; now
+ all changes are synced with the local db.
+
+25 Jan 2002:
+ [Juanjo]
+ - New notify list editor
+
+21 Jan 2002:
+ [Juanjo]
+ - New identity button on the toolbar, posibility to change nick from the
+ identity dialog if we're connected and es.po work
+
+20 Jan 2002:
+ [Juanjo]
+ - Added the config widget for the create query on server notice option.
+ - Events and events doc: OnDCCChatConnected, OnDCCChatMessage,
+ OnDCCSendTransferComplete, OnDCCGetTransferComplete, OnCTCPFlood,
+ OnServerNotice, OnChannelNotice...
+
+19 Jan 2002:
+ [Juanjo]
+ - Added a 'close after join' checkbox to the join channels dialog & fixes.
+
+18 Jan 2002:
+ [Juanjo]
+ - Added OnAction event
+ - Fixes
+
+17 Jan 2002:
+ [balboy]
+ - updated po file
+ - anti idle script changed... but pragma's syntax he gave me is not working
+ yet :p
+
+ [Juanjo, which is alive]
+ - Added the 'recent servers' Qlist to the servers dialog
+ - Added the 'Show after connecting to server' checkbox to the channelsjoin
+ widget
+ - Servers widget bug fixed
+ - Default nick link actions & men
+ - Config widget for the tree-taskbar minimum? width option
+
+07 Jan 2002:
+ [balboy]
+ - minor changes to the default script
+
+05 Jan 2002:
+ [balboy]
+ - anti idle script added
+ - dcc bug alias fixed
+
+22 Nov 2001:
+ [Juanjo]
+ - Added a bunch of events (On[me]ban/deban, On[me]op/deop,
+ On[me]voice/devoice, OnChannelMessage, OnQueryMessage, OnLimitSet/Unset,
+ OnKeySet/Unset, OnInvite, On[me]BanException, On[me]BanExceptionRemove,
+ etc).
+
+18 Nov 2001:
+ [Juanjo]
+ - Added a 'Connect to servers' dialog (serversjoin.open) -> update:
+ serversconnec.open
+ - Added scripted buttons for the channels and servers dialogs.
+ - Added $anyConsoleConnected() function.
+ - Fixes
+
+12 Nov 2001:
+ [YaP]
+ - Added DCC user defined port range
+
+10 Nov 2001:
+ [Juanjo]
+ - Now it has all the functionality ;)
+
+ [YaP]
+ - IPv6 porting from Win XP to Win 2000 (Preprocessor definition: WIN2K)
+
+8 Nov 2001:
+ [Juanjo]
+ - Added a 'Join Channels' widget. It still don't have all the
+ funcionality.
+
+4 Nov 2001:
+ [Juanjo]
+ - Improved away system
+ - Option to always highlight own nick on messages
+ - Made the splash screen a managed window
+ - Added an 'apply' button to the general options dialog
+
+24 Sep 2001:
+ [Kristoff]
+ - Made Dcc Voice completely configurable, options dialog also added
+ - Volume slider for dcc voice added
+ - Fixed a bug in alt+arrows switching (sigsegv when window had no context
+ assigned)
+
+23 Sep 2001:
+ [Kristoff]
+ - Switching between windows using ctrl/alt + arrows
+
+13 Sep 2001:
+ [Balboy]
+ - some more changes to the defscript
+
+12 Sep 2001:
+ [Kristoff]
+ - Text selected in Help Browser window is now automagically copied into the
+ clipboard and can be pasted (Balboy's request).
+ - Pressing Enter in Help Browser's lineedit starts search. When the search
+ starts the cursor changes into waitCursor (cosmetical improvement :))
+ - 22 Mar - 12 Sep... man...
+ - biff module added - not functional at all - adding some code not to mess
+ with makefiles anymore
+
+12 Sep 2001:
+ [Balboy]
+ - updated the changelog :p
+ - added some functions to the defscript
+
+30 Mar 2001:
+ [Balboy]
+ - quit function added
+
+22 Mar 2001:
+ [Kristoff]
+ - combobox object added
+
+17 Mar 2001:
+ [Pragma]:
+ - A lot of unreported changes again
+ - Added anti-aliased font support
+
+17 Feb 2001:
+ [Pragma]
+ - A lot of changes: removed the libkvigui, it was rather useless, and it is
+ better to have all the GUI code into the core executable...(for many
+ reasons).
+ - Added the first "shy" icq module.
+
+15 Feb 2001:
+ [Kristoff]
+ - Added urllabel object
+ Note: I'm proud to be the first person, that uses this file in the
+ year 2001 :-)
+
+05 Dec 2000:
+ [Number1]
+ - Cleaned up the about dialog, added some new entries and fixed the
+ background bug.
+ Note: Could people start using this log again please? ;)
+
+12 Sep 2000:
+ [Kristoff]
+ - started this ChangeLog (to avoid confusion: newset entries go above
+ this one ;))
+ - added widget object
diff --git a/FAQ b/FAQ
new file mode 100644
index 0000000..c9355db
--- /dev/null
+++ b/FAQ
@@ -0,0 +1,712 @@
+1. PROJECT RELATED QUESTIONS
+
+1.1 What is KVIrc ? What the "KVIrc" name stands for ?
+1.2 Why KVIrc is not totally integrated in KDE ?
+
+
+2. COMPILATION
+
+2.1 I can't compile kvirc from cvs, what's wrong?
+2.2 Internal Compiler Errors ?
+2.3 On Mandrake 10.0 (or other) KVIrc fails to start
+ saying that it can't find libkvisetup.so.
+2.4 I got 'amarokInterface.cpp:29:31: amarokInterface.moc: No such file or directory'. Whats going wrong?
+2.5 Configure complains about a missing libdl.so but I seem to have it
+
+
+3. INSTALLATION
+
+3.1 There is a problem during package installation/creation
+ file /usr/share/services/irc.protocol from install
+ kvirc-version.package conflicts with file from package xxx
+
+
+4. IRC
+
+4.1 How do i join a channel ?
+4.2 How do i autojoin channels ?
+4.3 How do I enable automatic NickServ identification ?
+4.4 I can't see my national characters, what's wrong ?
+4.5 I can't connect to an IPV6 server, what's wrong ?
+4.6 /me doesn't support the '$' character, what's wrong ?
+4.7 /me doesn't support the '"' (double quote) character, what's wrong ?
+4.8 /me can't contain the ';' character, what's wrong ?
+4.9 I try to do a /whois on nick blah\ but i get the reply for blah (without the slash)
+4.10 What is AVATAR protocol ? Is there any documentation about it ?
+4.11 The log files seem to be saved randomly, when I open a log
+ I can see only a part of the text that actually should be there
+4.12 The DCC transfers seem to be interrupted after the first few bytes:
+ KVIrc says that the remote end has closed the connection.
+
+
+5. ADVANCED IRC FEATURES
+
+5.1 How do I connect to an SSL-enabled IRC server ?
+5.2 How do I use DCC over SSL ?
+5.3 Do I need a SSL certificate ?
+5.4 How do I create a SSL certificate ?
+5.5 I can't get KVIrc to use my SSL certificate in a DCC, what's wrong ?
+5.6 KVIrc crashes when a certificate is used under Windows, what's wrong ?
+5.7 How do I enable mircryption (encryption in general) for a specific channel ?
+5.8 How do I execute a process and send its output to a channel ?
+5.9 How do I keep channels and queries open after a disconnect ?
+5.10 I have an unreliable ISP connection but KVIrc takes a really long
+ time to detect a disconnection and reconnect.
+5.11 I'm in a LAN and KVIrc uses a wrong IP address in dcc transfers
+
+6. APPAREANCE
+
+6.1 On Windows KVIrc seems to slow-down sometimes, what's wrong ?
+6.2 I don't see the channel popup menus anymore, what's wrong ?
+6.3 Does KVIrc support Themes?
+6.4 I hate all that colors, what can I do about it ?
+6.5 On Windows, how do I use firefox/opera/any_other_browser to open links instead of explorer ?
+
+
+7. CRASHES
+
+7.1 KVIrc crashes when the multiline text input is opened (obsolete)
+7.2 What the heck is a gdb stack trace and how do I get it ?
+7.3 KVIrc hangs up, but doesn't crash. How do i report debug informations ?
+7.4 KVIrc exits by itself or simply "disappears" without any apparent reason.
+7.5 KVIrc dies randomly and "Alarm Clock" is printed in the console
+7.6 KVIrc dies when using alias(identify){ identify password; }
+
+--------------------------------------------------------------------------------
+1. PROJECT RELATED QUESTIONS
+--------------------------------------------------------------------------------
+
+
+1.1 What is KVIrc ?
+
+ KVIrc is a cross-platform Internet Relay Chat client.
+ The name stands for K Visual Internet Relay Chat client.
+ The K prefix comes from the old times, when KVIrc was bound to the
+ KDE project and depended on the KDE libraries to run. Actually this
+ is not true anymore since KVIrc depends only on the Qt library from
+ TrollTech and runs also on platforms where KDE can't run.
+
+
+1.2 Why KVIrc is not totally integrated in KDE ?
+
+ First of all read the answer for question 1.1.
+ We could provide a more complete integration by the means of conditional
+ compilation but since it would require additional efforts to synchronize
+ the KVIrc sources with the KDE library changes we choose not to do it.
+ If you wish to contribute some code that better integrates KVIrc with
+ KDE you're welcome to do so: we will happily accept your patches as long
+ as you promise to mantain them :)
+
+
+--------------------------------------------------------------------------------
+2. COMPILATION
+--------------------------------------------------------------------------------
+
+2.1 I can't compile kvirc from svn, what's wrong?
+
+ Have you checked the requirements ?
+ *Carefully* read the INSTALL file that comes with the distribution:
+ it contains the informations to solve 95% of the problems that
+ you may encounter. You may also try digging in our mailing list
+ archive: many problems have been solved there.
+ If you still can't get it to work please either subscribe to the KVIrc
+ mailing list (see www.kvirc.net) and report the problem there or join #kvirc
+ on IRCNet and ask the channel members for a hint.
+
+
+2.2 Internal Compiler Errors ?
+
+ Compile errors like this:
+ In file [somefile]:[someline] internal error:
+ Segmentation fault
+ Please submit a full bug report,
+ with preprocessed source if appropriate.
+ See for instructions.
+
+ This error can have multiple reasons.
+ 1) A compiler bug: my GCC 3.2 20020903 (default on RH 8.0) spits
+ out 5-6 of them daily. Usually it is solved by simply restarting the "make" command.
+ If it doesn't go away or if it gets really frequent and annoying you might try to upgrade the compiler.
+ 2) A memory corruption: this is really frequent: one of your memory banks is spitting random bytes
+ sometimes. Usually the problems come out under heavy system load (kernel, KDE or kvirc compilation for example).
+ You can check for memory corruption by trying different RAM modules (or removing them one at a time to discover
+ the broken bank). You can also try a program called memtest and a kernel
+ patch that can force the broken memory banks to be ignored by the kernel (allocated permanently to a dummy kernel task).
+ These tools can be found by digging the web with your favorite search engine.
+ 3) A deeper hardware problem: if upgrading the compiler and changing memory banks doesn't help then
+ it *might* be a deeper hardware problem: bus errors , faulty IDE (or SCSI) controller or even buggy CPU...
+ Well....
+
+
+2.3 On Mandrake 10.0 (or other) KVIrc fails to start
+ saying that it can't find libkvisetup.so.
+
+ Mandrake 10.0 default libtool package is broken. Either upgrade
+ the libtool package or try to run ./autogen.sh --bundled-libtool
+ and then recompile (./configure, make, make install).
+ This *might* apply to other systems too.
+
+
+2.4 I got 'amarokInterface.cpp:29:31: amarokInterface.moc: No such file or directory'. Whats going wrong?
+
+ You have to install qt3 devel tools which include uic and moc. If installed, be sure that uic and moc are in PATH.
+
+
+2.5 Configure complains about a missing libdl.so but I seem to have it
+
+ The most common causes are two:
+
+ 1) You have libdl.so.X (where X is usually a number or a set of numbers) but not libdl.so
+
+ You need to do a symbolic link from libdl.so.X to libdl.so. You do it by entering the directory
+ where libdl.so.X is and issuing a ln -s command, for example:
+
+ # cd /lib
+ # ls libdl*
+ # ln -s libdl.so.2 libdl.so
+
+ Then try to ./configure again
+
+ 2) You don't have a c++ compiler installed
+
+ The libdl test is the first ./configure test made with a c++ compiler.
+ The confirmation for this error can be found in the config.log file
+ where you can find lines similar to the following:
+
+ configure:21637: g++ -o conftest conftest.cc -rdynamic -ldl >&5
+ ./configure: line 1: g++: command not found
+ configure:21643: $? = 127
+ configure: failed program was:
+ ...
+
+ Your distribution probably ships the c++ frontend to gcc in a package
+ separated from gcc itself. The package might be also named g++.
+ Look it up on your installation CD and install it, then ./configure again.
+
+-------------------------------------------------------------------------------
+3. INSTALLATION
+-------------------------------------------------------------------------------
+
+3.1 There is a problem during package installation/creation
+ file /usr/share/services/irc.protocol from install
+ kvirc-version.package conflicts with file from package xxx
+
+ This is a known issue with all types of packages that handle
+ file conflicts. KVIrc installs the irc protocol handler for KDE
+ and the same is done by ksirc and kopete (and maybe others).
+ There is no particular reason for KVIrc to fix it in the core
+ distribution (and there is also no simple way to do it).
+ Either the package maker must exclude the irc.protocol
+ file from installation or mark it as "optional" in some way or the
+ users must use some sort of "force" flag during the installation.
+
+
+-------------------------------------------------------------------------------
+4. IRC
+-------------------------------------------------------------------------------
+
+4.1 How do i join a channel ?
+
+ Type "/join #channelname"
+
+
+4.2 How do i autojoin channels?
+
+ There are many ways to do it.
+ For example:
+ Select "Scripting/Events" from the KVIrc menu.
+ Lookup the "OnIrc" entry in the left pane of the window that pops up.
+ Right-click on that entry and select "Add handler".
+ A "default" handler will be created. In the right pane write:
+ join #kvirc
+ join #kde-users
+ join #somechannel
+ ....
+ Now click OK and you're done: you have just created a handler for an event.
+ Reconnect to a server and KVIrc will autojoin the channels that you have selected.
+ Another option (nicer, if you use several servers) is to go to the servers options
+ page and click the button labeled 'Advanced' on the entry for the single server.
+ There is a server-specific "On connect execute..." event.
+
+
+4.3 How do I enable automatic NickServ identification ?
+
+ KVIrc supports two kind of NickServ identification rules: per-network and global.
+ The per-network rules can be accessed from the server options page.
+ You need to select a network in the list view (not a server!) and then click
+ "Advanced...". In the dialog that appears there is a NickServ tab
+ on that you can add your identification rules. Adding a rule
+ should be straightforward (if you stop the mouse over an item you will likely get a small
+ tool tip with the explaination). Each rule is composed of:
+ - the nickname that is being identified: the rule will be applied only
+ when your current nickname corresponds to this one.
+ - a nick server user mask that must be matched by the NickServ user
+ in order for him to be recognized as the real NickServ asking for
+ identification. You will probably use something like NickServ!service@*
+ - a message regular expression that must be matched by the message
+ that the NickServ sends when requesting the identification.
+ You will probably use something like "If this is your nick,
+ identify yourself with /ns IDENTIFY password"
+ - an identification command that will be executed when all the rules
+ above match. You will probably use something like "ns IDENTIFY yourpassword"
+ The global rules can be created in the IRC::NickServ page of the options dialog
+ (accessible from the Settings/Configure KVIrc... menu). The main difference
+ is that each rule has a server mask that must be matched by the current
+ server name for the rule to be applied.
+ KVIrc first looks in the per-network rules and if none matches it looks
+ in the global rules.
+
+
+4.4 I can't see my national characters, what's wrong ?
+
+ There are several ways to fix your national characters display.
+ General encoding:
+ Open the options dialog and go to the "Encoding" page.
+ You can set explicitly the encoding to be used for the whole application.
+ If you choose "Use Language Encoding" KVIrc will try to guess the
+ encoding from your system settings. If this doesn't work then the reasons
+ may be:
+ - Your system settings are wrong
+ You need to fix them
+ - Your server applies some specific encoding to the data
+ See "Server encoding"
+ - You're chatting with people that have different system settings
+ See "Channel & Query encoding"
+ Server encoding
+ Besides the general encoding you can set one encoding per server.
+ This is done in the server options dialog (Click Advanced...).
+ The encoding will be applied to all the text that comes from
+ and goes to the server. If you choose "Use system encoding"
+ then the server will inherit the "General encoding" value above.
+ If this doesn't work then you have either set it incorrectly or
+ you are chatting with people that use different encodings.
+ In this case see "Channel & Query encoding"
+ The server encoding is used also to decode nicknames and
+ channel names on servers that support it.
+ Channel & Query encoding
+ Besides the general and server encoding you can set also per-window
+ encoding in channels and queries. This encoding will be applied
+ ONLY to the text sent to or received from that channel or query.
+ This feature is useful when chatting over a non unicode aware
+ IRC server (nearly all at the time of writing) with people
+ that have settings different than your general defaults or
+ the server default.
+
+ Keep in mind that IRC has a MAJOR problem with character encoding
+ and in fact the formal definition of the protocol requires it
+ to be only 7bit safe. This means that on some servers you may
+ see your national characters eaten by the IRC network and there
+ is almost nothing you can do about that...
+
+ UTF-8 is the best encoding we can get on IRC. Try to convince
+ other people to use it :)
+
+
+4.5 I can't connect to an IPV6 server, what's wrong ?
+
+ First of all make sure that your IPV6 stack is setup correctly.
+ Can you ping6 other IPV6 other machines ?
+
+ # ping6 www.6bone.net
+
+ Is the IPV6 support enabled in your kvirc executable ?
+ To find it out , try
+
+ /echo $features
+
+ in the KVIrc commandline. You should get a comma separated list of
+ features compiled in the executable. If the list contains "IPv6" then
+ the support is compiled in, otherwise you must check your compilation
+ stage to guess what went wrong.
+ To connect to an IPV6 server you can use /server -i
+ If you can ping other IPV6 machines, the IPv6 support is compiled in your
+ executable and you still can't connect to an *existing* IPv6 server then
+ you may have found a bug :) Report it.
+
+
+4.6 /me doesn't support the '$' character, what's wrong ?
+
+ This is NOT a bug : this is a feature : kvirc supports (and substitutes!) variables in all the commands.
+ You can escape your $ sign by using the backslash character: /me has gained \$100 will work correctly
+
+
+4.7 /me doesn't support the '"' (double quote) character, what's wrong ?
+
+ This is NOT a bug : this is a feature : a string enclosed in double quotes will have its whitespace preserved
+ while the other strings will have the whitespace simplified. This is valid for ANY command.
+ You can escape your " sign by using the backslash character: /me feels a bit \"foo\" will work correctly
+
+
+4.8 /me can't contain the ';' character, what's wrong ?
+
+ This is NOT a bug : this is a feature : kvirc supports multiple commands on a single line and uses ';' as a command
+ separator. You can escape your ';' sign by using the backslash character: /me is hungry \;) will work correctly.
+
+
+4.9 I try to do a /whois on nick blah\ but i get the reply for blah (without the slash)
+
+ In KVIrc /whois is a scripting command and the nickname is a command parameter.
+ In scripting commands the backslash is a special character with several "escape"
+ meanings. To include a literal backslash inside a parameter you MUST double it,
+ thus the correct command to issue is /whois blah\\
+
+
+4.10 What is AVATAR protocol? Is there any documentation about it ?
+
+ AVATAR is a simple CTCP based protocol that allows associating images (avatars)
+ to IRC users. The protocol definition is simple:
+
+ - CTCP AVATAR QUERY:
+ :
"
+ } else {
+ %:labelText << $tr("is not registered")""
+ }
+ }
+
+ label(%:labelText)
+
+ item($tr("Register")"...") (!%:regName)
+ {
+ reguser.wizard $mask($0)
+ }
+
+ popup($tr("Quick Registration")) (!%:regName)
+ {
+ item($tr("Register as") $0 "("$mask($0,11)")") ("$reguser.exactMatch($mask($0,11))" == "")
+ {
+ reguser.add $0 $mask($0,11)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,12)")") ("$reguser.exactMatch($mask($0,12))" == "")
+ {
+ reguser.add $0 $mask($0,12)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,13)")") ("$reguser.exactMatch($mask($0,13))" == "")
+ {
+ reguser.add $0 $mask($0,13)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,3)")") ("$reguser.exactMatch($mask($0,3))" == "")
+ {
+ reguser.add $0 $mask($0,3)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,4)")") ("$reguser.exactMatch($mask($0,4))" == "")
+ {
+ reguser.add $0 $mask($0,4)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,5)")") ("$reguser.exactMatch($mask($0,5))" == "")
+ {
+ reguser.add $0 $mask($0,5)
+ }
+ }
+
+ item($tr("Edit Registration")"...",113) (%:regName)
+ {
+ reguser.edit "%:regName"
+ }
+
+ item($tr("Unregister") %:regName) (%:regName)
+ {
+ reguser.remove "%:regName"
+ }
+
+ separator
+
+ item($tr("Add to Notify")) (%:regName && !%:inNotifyList)
+ {
+ reguser.setproperty -n "%:regName" notify $0
+ }
+
+ item($tr("Remove from Notify")) (%:regName && %:inNotifyList)
+ {
+ reguser.setproperty -n "%:regName" notify
+ }
+
+ popup($tr("Avatar")) (%:regName)
+ {
+ item($tr("Choose")"...") (%:regName)
+ {
+ dialog.image(f,$tr("Choose Avatar Image File"),"","",$0,"%:regName")
+ {
+ if($0)
+ {
+ reguser.setproperty -a $2 avatar $0;
+ }
+ }
+ }
+
+ item($tr("Set as Default")) (%:curAvatar && ("%:curAvatar" != "%:defAvatar"))
+ {
+ reguser.setproperty "%:regName" avatar %:curAvatar
+ }
+
+ item($tr("Clear Default")) (%:defAvatar)
+ {
+ reguser.setproperty %:regName avatar
+ # Force the avatar to update
+ # if("%:curAvatar" == "")who $0
+ }
+ }
+}
+
+defpopup("urlpopup")
+{
+ item($tr("Copy To Clipboard"),259)
+ {
+ str.toClipboard $0
+ }
+}
+
+# This code adds a channel popup that accepts
+# a comma separated list of nicknames as parameter (to the /popup command)
+
+defpopup(channel)
+{
+ prologue
+ {
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ %:itemBanName = $tr("Ban")
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ %:itemBanMask = "*!user@*.host.tld"
+ %:itemBanNick = "nick"
+ } else {
+ %:itemBanMask = $mask(%:visible,$option(uintDefaultBanType))
+ if("%:itemBanMask" == "*!*@*")%:itemBanName = $tr("&Ban")
+ %:itemBanNick = %:visible
+ }
+ # speed it up
+
+ %:isMeHalfOp = $chan.isMeHalfOp()
+ %:isMeOp = $chan.isMeOp()
+ %:isMeOwner = $chan.isMeOwner()
+ %:isMeAdmin = $chan.isMeAdmin()
+ %:bCanKB = 0;
+
+ if(%:isMeHalfOp)
+ {
+ foreach(%nick,$str.split(",",$0))
+ {
+ if($chan.usermodelevel(%nick) <= $chan.usermodelevel($me))
+ {
+ %:bCanKB = 1;
+ break;
+ }
+ }
+ }
+ }
+
+ item("/WHOIS" %:visible "("$tr("idle time")")",75,whois_item)
+ {
+ foreach(%i,$str.split(",",$0))
+ whois %i %i
+ }
+
+ separator
+
+ popup($tr("&Information"),49,"information_popup")
+ {
+ item("/WHOIS" %:visible,75,"whois_item")
+ {
+ whois $0
+ }
+
+ item(/WHOWAS %:visible,92)
+ {
+ whowas $0
+ }
+
+ item(/WHO %:visible,75)
+ {
+ who $0
+ }
+
+ separator
+
+ item($tr("DNS for") %:visible,75)
+ {
+ foreach(%i,$str.split(",",$0))dns %i
+ }
+
+ item($tr("Mask for") %:visible,75) (!%:multiple)
+ {
+ echo $mask($0,11)
+ }
+ }
+
+ popup($tr("&Control"),9,"control_popup") (%:isMeHalfOp)
+ {
+ label($usermodename($me()))
+
+ item($tr("O&wner") %:visible,260) (%:isMeOwner)
+ {
+ chanowner $0
+ }
+
+ item($tr("&Deowner") %:visible,261) (%:isMeOwner)
+ {
+ dechanowner $0
+ }
+
+ item($tr("&Administrator") %:visible,242) (%:isMeAdmin)
+ {
+ chanadmin $0
+ }
+
+ item($tr("&Deadministrator") %:visible,243) (%:isMeAdmin)
+ {
+ dechanadmin $0
+ }
+
+ item($tr("&Op") %:visible,34) (%:isMeOp)
+ {
+ op $0
+ }
+
+ item($tr("&Deop") %:visible,62) (%:isMeOp)
+ {
+ deop $0
+ }
+
+ item($tr("&Halfop") %:visible,174) (%:isMeOp)
+ {
+ halfop $0
+ }
+
+ item($tr("&Dehalfop") %:visible,175) (%:isMeOp)
+ {
+ dehalfop $0
+ }
+
+ item($tr("&Voice") %:visible,35) (%:isMeHalfOp)
+ {
+ voice $0
+ }
+
+ item($tr("D&evoice") %:visible,63) (%:isMeHalfOp)
+ {
+ devoice $0
+ }
+
+ separator
+
+ item($tr("&Kick") %:visible,110) (%:bCanKB)
+ {
+ foreach(%i,$str.split(",",$0))kick %i
+ }
+
+ item($tr("K&ick") %:visible $tr("With..."),110) (%:bCanKB)
+ {
+ dialog.textinput -d="$me" -i=110 ($tr("Kick Reason"),$tr("Enter a kick reason"),$tr("&Kick"),$tr("Cancel"),,$0)
+ {
+ if($0 == 0)
+ {
+ foreach(%i,$str.split(",",$2))kick %i $1
+ }
+ }
+ }
+
+ item($tr("&Ban") %:visible "("%:itemBanMask")",67) (("%:itemBanMask" != "*!*@*") && %:bCanKB)
+ {
+ ban $mask($0,$option(uintDefaultBanType))
+ }
+
+ item(%:itemBanName %:visible "("%:itemBanNick!*@*")",67) (%:bCanKB)
+ {
+ ban $0
+ }
+
+ item($tr("Kick/Ban") %:visible,110) (%:bCanKB)
+ {
+ kb $0
+ }
+
+ item($tr("Kick/Ban") %:visible $tr("With..."),110) (%:bCanKB)
+ {
+ dialog.textinput -d="$me" -i=110 ($tr("Kick/Ban Reason"),$tr("Enter a kick/ban reason"),$tr("&Kick/Ban"),$tr("Cancel"),,$0)
+ {
+ if($0 == 0)
+ {
+ kb $2 $1
+ }
+ }
+ }
+ separator
+
+ item($tr("Configure ban mask..."),20)
+ {
+ options.edit KviChannelAdvancedOptionsWidget
+ }
+ }
+
+ separator
+
+ item($tr("&Query") %:visible,47)
+ {
+ query $0
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77) (!%:multiple)
+
+ separator
+
+ extpopup($tr("&Registration"),registration,111) (!%:multiple)
+
+ extpopup($tr("&Highlight"),highlight,181) (!%:multiple)
+
+ extpopup($tr("Ig&nore"),ignore,203) (!%:multiple)
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+}
+
+# Popup to show on right-clicking channel links
+#
+defpopup(channelpopup)
+{
+ item($tr("&Join") $0,145)
+ {
+ hop $0
+ }
+
+ item($tr("&Part") $0,40)
+ {
+ if($channel($0)) part $0 $option(stringPartMessage);
+ }
+
+ separator
+
+ item(/NAMES $0,75)
+ {
+ names $0;
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0;
+ }
+ separator
+
+ item($tr("Copy Channel Address"),259)
+ {
+ str.toClipboard $chan.getUrl($0)
+ }
+
+}
+
+defpopup(channels)
+{
+ item(#KVirc,46)
+ {
+ j #KVirc
+ }
+
+ item(#MDE,46)
+ {
+ j #MDE
+ }
+
+ item(#kde,46)
+ {
+ j #kde
+ }
+}
+
+defpopup(channeltextview)
+{
+ extpopup($tr("Channels"),channels,46)
+
+ item($tr("&Join Channels..."),46) ($server)
+ {
+ if($option(boolShowChannelsJoinDialogAsToplevel))channelsjoin.open -t;else channelsjoin.open
+ }
+
+ separator
+
+ item($tr("&Hop") $0,145)
+ {
+ hop $0
+ }
+
+ item($tr("&Part") $0,40)
+ {
+ if($channel($0)) part $0 $option(stringPartMessage);
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ separator
+
+ item(/NAMES $0,75)
+ {
+ names $0;
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0;
+ }
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Copy Channel URL to Clipboard"),259)
+ {
+ str.toClipboard $chan.getUrl
+ }
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear;
+ }
+
+}
+
+defpopup(consoletextview)
+{
+ label($tr("You're not connected to a server")) (!$server)
+
+ extpopup($tr("Channels"),channels,46)
+
+ separator
+
+ item($tr("&Join Channels..."),46) ($server)
+ {
+ if($option(boolShowChannelsJoinDialogAsToplevel))channelsjoin.open -t;else channelsjoin.open
+ }
+
+ popup($tr("&Information"),13) ($server)
+ {
+ item(/MOTD,30)
+ {
+ motd
+ }
+
+ item(/INFO,29)
+ {
+ info
+ }
+
+ item(/LUSERS,57)
+ {
+ lusers
+ }
+
+ popup(/STATS,22)
+ {
+ item(d "(Debug/DNS?)")
+ {
+ stats d
+ }
+
+ item($tr("l (Connections)"))
+ {
+ stats l
+ }
+
+ item($tr("m (Command Usage)"))
+ {
+ stats m
+ }
+
+ item($tr("o (Operators)"))
+ {
+ stats o
+ }
+
+ item($tr("t (Connection stats ?)"),23)
+ {
+ stats t
+ }
+
+ item($tr("u (Uptime)"),93)
+ {
+ stats u
+ }
+
+ item($tr("y (y-Lines)"))
+ {
+ stats y
+ }
+
+ item($tr("z (Debug Stats?)"),11)
+ {
+ stats z
+ }
+ }
+
+ item(/TIME,93)
+ {
+ time
+ }
+
+ item(/ADMIN,29)
+ {
+ admin
+ }
+
+ item(/VERSION,16)
+ {
+ version
+ }
+
+ item(/HELP,49)
+ {
+ raw help
+ }
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear;
+ }
+}
+
+# This is a common popup , accepts a list of nicknames as parameter
+defpopup(ctcp)
+{
+ item(PING,36)
+ {
+ ctcp $0 PING
+ }
+
+ item(FINGER,53)
+ {
+ ctcp $0 FINGER
+ }
+
+ item(VERSION,16)
+ {
+ ctcp $0 VERSION
+ }
+
+ item(USERINFO,57)
+ {
+ ctcp $0 USERINFO
+ }
+
+ item(CLIENTINFO,52)
+ {
+ ctcp $0 CLIENTINFO
+ }
+
+ item(SOURCE,14)
+ {
+ ctcp $0 SOURCE
+ }
+
+ item(TIME,93)
+ {
+ ctcp $0 TIME
+ }
+
+ item(PAGE...,223)
+ {
+ #dialog.textinput -d="Wakeup!" ($tr("CTCP Page to") $0,$tr("Enter the message text"),$tr("Ok"),$tr("Cancel"))
+ dialog.textinput(CTCP Page $0,Enter the message text,&Page,Cancel,"",$0)
+ {
+ if($0 == 0)ctcp $2 PAGE $1
+ }
+ }
+
+ item(AVATAR,57)
+ {
+ ctcp $0 AVATAR
+ }
+}
+
+defpopup(dcc)
+{
+ prologue
+ {
+
+ if($features("SSL"))%:bHaveSSL=1
+ else %:bHaveSSL=0
+ }
+
+ item($tr("Chat with") $0,78)
+ {
+ dcc.chat $0
+ }
+
+ item($tr("Reverse Chat with") $0,78)
+ {
+ dcc.chat -z $0
+ }
+
+ item($tr("Secure Chat with") $0,78) (%:bHaveSSL)
+ {
+ dcc.chat -s $0
+ }
+
+ separator
+
+ item($tr("Send to") $0,79)
+ {
+ dcc.send $0
+ }
+
+ item($tr("Secure send to") $0,79)
+ {
+ dcc.send -s $0
+ }
+
+ item($tr("Reverse Send to") $0,79)
+ {
+ dcc.rsend -z $0
+ }
+
+ item($tr("Secure Reverse Send to") $0,79)
+ {
+ dcc.rsend -z -s $0
+ }
+
+ separator
+
+ item($tr("TDCC Send to") $0,77)
+ {
+ dcc.send -t $0
+ }
+
+ item($tr("TDCC Reverse Send to") $0,77)
+ {
+ dcc.rsend -t $0
+ }
+
+ separator
+
+ popup($tr("Voice Chat"),166)
+ {
+ item($tr("Default")": ADPCM 8 KHz (32 kbps)")
+ {
+ dcc.voice $0
+ }
+
+ separator
+
+ item("ADPCM 11.025 KHz (44.1 kbps)")
+ {
+ dcc.voice -h=11025 $0
+ }
+
+ item("ADPCM 16 KHz (64 kbps)")
+ {
+ dcc.voice -h=16000 $0
+ }
+
+ item("ADPCM 22.05 KHz (88.2 kbps)")
+ {
+ dcc.voice -h=22050 $0
+ }
+
+ item("GSM 8 KHz (13.2 kbps)")
+ {
+ dcc.voice -g=gsm $0
+ }
+
+ item("GSM 11.025 KHz (18.1 kbps)")
+ {
+ dcc.voice -g=gsm -h=11025 $0
+ }
+
+ item("GSM 16 KHz (26.4 kbps)")
+ {
+ dcc.voice -g=gsm -h=16000 $0
+ }
+
+ item("GSM 22.05 KHz (36.2 kbps)")
+ {
+ dcc.voice -g=gsm -h=22050 $0
+ }
+
+ item("GSM 44.1 KHz (72.4 kbps)")
+ {
+ dcc.voice -g=gsm -h=44100 $0
+ }
+
+ item("NULL 8 KHz (128 kbps)")
+ {
+ dcc.voice -g=null $0
+ }
+
+ item("NULL 11.025 KHz (176.4 kbps)")
+ {
+ dcc.voice -g=null -h=11025 $0
+ }
+ }
+}
+
+defpopup(dccchat)
+{
+ prologue
+ {
+
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ }
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77)
+
+ separator
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear
+ }
+}
+
+#
+# Some minimal work on the query
+# A text view popup (right click on a query view)
+#
+
+defpopup(querytextview)
+{
+ prologue
+ {
+
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ }
+ }
+
+ item(/WHOIS $0 "("$tr("idle time")")",75) (!%:multiple)
+ {
+ whois $0 $0
+ }
+
+ separator
+
+ popup($tr("&Information"),49)
+ {
+ item(/WHOIS $0,75)
+ {
+ whois $0
+ }
+
+ item(/WHOWAS $0,92)
+ {
+ whowas $0
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0
+ }
+
+ separator
+
+ item($tr("DNS for") $0,75)
+ {
+ foreach(%i,$str.split(",",$0))dns %i
+ }
+
+ item($tr("Mask for") $0,75) (!%:multiple)
+ {
+ echo $mask($0,11)
+ }
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77)
+
+ separator
+
+ extpopup($tr("&Ignore"),ignore,203) (!%:multiple)
+
+ extpopup($tr("&Registration"),registration,111) (!%:multiple)
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear
+ }
+}
+
+
+#
+# Logging popup for the windows
+#
+defpopup(logging)
+{
+ prologue
+ {
+
+ # If this window is being logged actually , $log.file will be non empty
+ # and pointing to the log file actually open.
+ %:logfile = $str.replace($log.file,,$file.localdir)
+ }
+
+ label($tr("Logging to"): %:logfile) ("%:logfile" != "")
+
+ item($tr("Flush Log File"),19) (%:logfile)
+ {
+ log.flush
+ }
+
+ separator
+
+ item($tr("Stop Logging"),58) (%:logfile)
+ {
+ log.stop
+ }
+
+ label($tr("Not Logging")) (!%:logfile)
+
+ item($tr("Log To Default File"),119) (!%:logfile)
+ {
+ log.start
+ }
+
+ item($tr("Log To Default File") "("$tr("Include Existing Buffer")")",119) (!%:logfile)
+ {
+ log.start -p
+ }
+
+ item($tr("Log To..."),119) (!%:logfile)
+ {
+ dialog.file(save,$tr("Choose Log Filename"))
+ {
+ if($0)log.start $0
+ }
+ }
+
+ item($tr("Log To...") "("$tr("Include Existing Buffer"),119) (!%:logfile)
+ {
+ dialog.file(save,$tr("Choose Log Filename"))
+ {
+ if($0)log.start -p $0
+ }
+ }
+}
+
+defpopup(defaulttextview)
+{
+ prologue
+ {
+
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ }
+ }
+
+ item(/WHOIS $0 "("$tr("idle time")")",75) (!%:multiple)
+ {
+ whois $0 $0
+ }
+
+ separator
+
+ popup($tr("&Information"),49)
+ {
+ item(/WHOIS $0,75)
+ {
+ whois $0
+ }
+
+ item(/WHOWAS $0,92)
+ {
+ whowas $0
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0
+ }
+
+ separator
+
+ item(DNS $0,75)
+ {
+ foreach(%i,$str.split(",",$0))dns %i
+ }
+ }
+
+ separator
+
+ item($tr("&Query") %:visible,47)
+ {
+ query $0
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77)
+
+ separator
+
+ extpopup($tr("&Registration"),registration,111) (!%:multiple)
+
+ extpopup($tr("&Highlight"),highlight,181) (!%:multiple)
+
+ extpopup($tr("Ig&nore"),ignore,203) (!%:multiple)
+
+ item($tr("Notify avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear
+ }
+}
+
+file.addimagepath %mypath/pics/
+
+#
+# FIXME: Add uninstall part:
+# file.delimagepath
+#
+
+
+#
+# A default popup for the middle click in a text view
+# This should manage logging , buffer saving and other
+# stuff common to ALL windows
+#
+
+defpopup(windowpopup)
+{
+ extpopup(Logging,logging,119)
+
+# popup(Buffer)
+# {
+# item("Save to file...")window.savebuffer
+# item("Clear")window.clear
+# item("Find...")window.findtext
+# }
+# popup(View)
+# {
+# item("Show images")($window.images == 0)window.images 1
+# item("Enable timestamps")($window.timestamp == 0)window.timestamp 1
+# item("Disable timestamps")($window.timestam == 1)window.timestamp 0
+# item("Set font...")$window.setfont
+# item("Set background...")$window.setbackground
+# }
+# popup(Mdi)
+# {
+# item("Minimize")window.minimize
+# item("Maximize")window.maximize
+# }
+}
+
+# Host link popup
+
+defpopup(hostpopup)
+{
+ item(Look Up $0,13)
+ {
+ host -a $0
+ }
+
+ separator
+
+ item(Open ftp://$0/,145) ("$system.ostype" == "unix")
+ {
+ openurl ftp://$0/
+ }
+
+ item(Telnet to $0,25)
+ {
+ if("$system.ostype" == "unix")run xterm -e telnet $0
+ else run telnet $0
+ }
+
+ separator
+
+ item(Traceroute $0,42)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Traceroute to $0...\" && traceroute $0 && cat"
+ else run tracert $0
+ }
+
+ item(Traceroute6 $0,42)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Traceroute (inet6) to $0...\" && traceroute6 $0 && cat"
+ else run tracert6 $0
+ }
+
+ item(Ping $0,147)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Ping $0...\" && ping $0 && cat"
+ else run ping $0
+ }
+
+ item(Ping6 $0,147)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Ping (inet6) $0...\" && ping6 $0 && cat"
+ else run ping6 $0
+ }
+}
\ No newline at end of file
diff --git a/data/defscript/theme-install.kvs b/data/defscript/theme-install.kvs
new file mode 100644
index 0000000..febbbbc
--- /dev/null
+++ b/data/defscript/theme-install.kvs
@@ -0,0 +1,30 @@
+addon.register("Theme: @THEMENAME@","@THEMEVERSION@",$tr("@THEMENAME@"),$tr("@THEMEDESCRIPTION@"),"3.2.0.99")
+{
+ # This is our uninstall callback: it will be called by KVIrc when addon.uninstall is invoked
+
+ # This is an automatically generated alias that will erase the installed files
+ @ALIASNAME@_uninstallfiles
+ file.rmdir $file.localdir("themes/@SUBDIR@")
+ alias(@ALIASNAME@_uninstallfiles) {}
+ # Done
+}
+
+# Ok, addon.register succeeded. We can go on with the installation.
+
+# Get the path that this script was launched from
+%mypath = $file.extractPath($0)
+
+# get the installer helper class (this is pretty standard and included in the distro)
+parse %mypath/utils/installer.kvs
+
+# The installer will copy our files and generate automatically
+# an uninstallation alias for them
+%installer = $new(installer,0,myinstaller)
+
+# copy files in each subdirectory
+# the pics
+
+%installer->$copyFiles("%mypath/files/","*",$file.localdir("themes/@SUBDIR@"))
+%installer->$generateUninstallAlias("@ALIASNAME@_uninstallfiles")
+# finally kill the installer helper
+delete %installer
diff --git a/data/defscript/toolbars.kvs b/data/defscript/toolbars.kvs
new file mode 100644
index 0000000..84e7b93
--- /dev/null
+++ b/data/defscript/toolbars.kvs
@@ -0,0 +1,43 @@
+# Default toolbars file
+
+toolbar.create irccontext $tr("IRC Context") $icon("irc4")
+# toolbar.additem irccontext kvirc.irccontextdisplay - info dublicated with te status line
+toolbar.additem irccontext kvirc.connect
+toolbar.additem irccontext kvirc.servermenu
+toolbar.additem irccontext kvirc.newirccontext
+toolbar.additem irccontext kvirc.separator
+toolbar.additem irccontext kvirc.nicknamemenu
+toolbar.additem irccontext kvirc.irctools
+toolbar.additem irccontext kvirc.ircactions
+toolbar.additem irccontext kvirc.usermodemenu
+toolbar.show irccontext
+
+toolbar.create options $tr("Options") $icon("options")
+toolbar.additem irccontext kvirc.serveroptions
+toolbar.additem options kvirc.identityoptions
+toolbar.additem options kvirc.generaloptions
+toolbar.additem options kvirc.themeoptions
+toolbar.show options
+
+toolbar.create help $tr("Help") 49
+toolbar.additem help kvirc.helpindex
+if($lang(short)==ru)
+ toolbar.additem help kvirc.kvircruhomepage
+else
+ toolbar.additem help kvirc.kvirchomepage
+toolbar.show help
+
+toolbar.create scripting $tr("Scripting") $icon("binarytext")
+toolbar.additem scripting kvirc.actioneditor
+toolbar.additem scripting kvirc.aliaseditor
+toolbar.additem scripting kvirc.eventeditor
+toolbar.additem scripting kvirc.popupeditor
+toolbar.additem scripting kvirc.raweditor
+toolbar.additem scripting kvirc.codetester
+toolbar.additem scripting kvirc.separator
+toolbar.additem scripting kvirc.executekvs
+
+toolbar.create winops $tr("Window operations") $icon("cascadewindows")
+toolbar.additem winops kvirc.cascadewindows
+toolbar.additem winops kvirc.tilewindows
+toolbar.additem winops kvirc.minimizeallwindows
\ No newline at end of file
diff --git a/data/deftheme/Makefile.am b/data/deftheme/Makefile.am
new file mode 100644
index 0000000..c6ce91e
--- /dev/null
+++ b/data/deftheme/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = silverirc
+
diff --git a/data/deftheme/silverirc/Makefile.am b/data/deftheme/silverirc/Makefile.am
new file mode 100644
index 0000000..e4f01a6
--- /dev/null
+++ b/data/deftheme/silverirc/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(themedir)/silverirc
+
+tmp_DATA = themeinfo.kvc themedata.kvc pixmapIrcViewBackground.png pixmapInputBackground.png pixmapUserListViewBackground.png
+
+EXTRA_DIST = $(tmp_DATA)
\ No newline at end of file
diff --git a/data/deftheme/silverirc/pixmapInputBackground.png b/data/deftheme/silverirc/pixmapInputBackground.png
new file mode 100644
index 0000000..8e90335
Binary files /dev/null and b/data/deftheme/silverirc/pixmapInputBackground.png differ
diff --git a/data/deftheme/silverirc/pixmapIrcViewBackground.png b/data/deftheme/silverirc/pixmapIrcViewBackground.png
new file mode 100644
index 0000000..f02f916
Binary files /dev/null and b/data/deftheme/silverirc/pixmapIrcViewBackground.png differ
diff --git a/data/deftheme/silverirc/pixmapUserListViewBackground.png b/data/deftheme/silverirc/pixmapUserListViewBackground.png
new file mode 100644
index 0000000..90560c8
Binary files /dev/null and b/data/deftheme/silverirc/pixmapUserListViewBackground.png differ
diff --git a/data/deftheme/silverirc/themedata.kvc b/data/deftheme/silverirc/themedata.kvc
new file mode 100644
index 0000000..a83296b
--- /dev/null
+++ b/data/deftheme/silverirc/themedata.kvc
@@ -0,0 +1,273 @@
+# KVIrc configuration file
+[ThemeData]
+pixmapUserListViewBackground=pixmapUserListViewBackground.png
+msgtypeSearch=206,14,100,1,1
+msgtypeMeBanExcept=197,3,100,1,5
+msgtypeNickServ=164,5,100,1,2
+msgtypeChanPrivmsgCrypted=101,1,100,1,3
+msgtypeNotifyOffLine=95,2,100,1,1
+msgtypeSocketMessage=21,14,100,1,1
+boolDisablePopupIcons=false
+boolUseExtendedPrivmsgView=false
+msgtypeMeChanAdmin=244,3,100,1,1
+msgtypeMeBanUnExcept=198,3,100,1,5
+msgtypeMeBan=195,5,100,1,5
+msgtypeMeOp=189,3,100,1,5
+msgtypeWallops=139,5,100,1,3
+msgtypeQueryTrace=181,15,100,1,1
+msgtypeHalfDeOp=175,3,100,1,2
+msgtypeIcq=122,5,100,1,1
+msgtypeOwnPrivmsgCrypted=100,1,100,1,3
+uintUserListPixmapAlign=1
+colorInputSelectionForeground=0,0,0
+colorCaptionTextInactive=0,0,0
+stringExtendedPrivmsgPrefix=[
+boolShowTreeTaskbarHeader=false
+boolShowUserChannelIcons=true
+boolUseGlobalPseudoTransparency=false
+msgtypeMeDeVoice=192,3,100,1,5
+msgtypeBroadcastPrivmsg=183,1,100,1,3
+msgtypeChanServ=165,5,100,1,2
+msgtypeWhoisOther=92,2,100,1,1
+msgtypeWhoisChannels=89,2,100,1,1
+msgtypeWhoisUser=88,2,100,1,1
+msgtypeOp=34,3,100,1,2
+msgtypeParserError=11,4,100,1,1
+colorIrcViewMarkLine=40,40,40
+colorUserListViewNormalForeground=0,0,0
+boolUseDifferentColorForOwnNick=true
+boolScaleAvatars=true
+msgtypeServerError=272,14,100,1,1
+msgtypeMeInviteExcept=199,3,100,1,5
+msgtypeChannelNoticeCrypted=154,5,100,1,3
+msgtypeIrc=105,3,100,1,0
+msgtypeCtcpRequestUnknown=55,5,100,1,2
+msgtypeCtcpRequestReplied=52,5,100,1,2
+colorUserListViewChanOwnerForeground=81,87,111
+colorUserListViewUserOpForeground=0,127,178
+colorUserListViewVoiceForeground=0,0,200
+colorInputForeground=0,0,0
+colorCaptionTextActive2=0,0,0
+colorMdiCaptionActive=113,125,190
+colorTaskBarNormalText=0,0,0
+boolIrcViewUrlHighlighting=true
+stringIconThemeSubdir=silverirc
+msgtypeAway=170,3,100,1,4
+msgtypeIcqMessage=128,5,100,1,1
+msgtypeLinks=112,2,100,1,1
+msgtypeBan=67,5,100,1,1
+msgtypeVoice=35,3,100,1,1
+msgtypeQuit=58,14,100,1,2
+msgtypeQueryPrivateMessage=48,1,100,1,4
+msgtypeTopic=42,3,100,1,1
+msgtypeHostLookup=13,2,100,1,1
+fontIrcToolBarApplet=Verdana,10,5,50,i
+uintToolBarAppletPixmapAlign=0
+uintUserListViewGridType=3
+colorTreeTaskBarProgress=150,150,150
+colorGlobalTransparencyFade=255,255,255
+colorTaskBarHighlight2Text=32,0,255
+boolUseTreeWindowListTaskBar=true
+pixmapInputBackground=pixmapInputBackground.png
+mirccolor0=255,255,255
+msgtypeMeChanOwner=262,3,100,1,2
+msgtypeChanOwner=260,3,100,1,2
+msgtypeUserDeOp=175,3,100,1,1
+msgtypeGenericError=135,4,100,1,1
+msgtypeStats=205,1,100,1,1
+msgtypeIcqMessageSent=129,5,100,1,1
+msgtypeQueryPrivmsgCrypted=102,1,100,1,3
+msgtypeAvatarChange=57,15,100,1,2
+msgtypeUnrecognized=41,5,100,1,1
+msgtypeSocketWarning=22,5,100,1,3
+msgtypeSelection=0,0,15,1,1
+uintIrcViewPixmapAlign=34
+colorTreeTaskBarHighlight2Foreground=167,222,163
+colorTreeTaskBarActiveForeground=0,0,0
+colorIrcToolBarAppletForegroundMidContrast=110,110,110
+colorUserListViewBackground=255,255,255
+colorTaskBarHighlight1Text=0,16,144
+colorTaskBarMinimizedText=60,60,60
+boolStripMircColorsInUserMessages=false
+boolIrcViewShowImages=true
+mirccolor1=0,0,0
+msgtypeIgnore=203,15,100,1,1
+msgtypeMeInviteUnexcept=200,3,100,1,5
+msgtypeMultimedia=177,5,100,1,2
+msgtypeServerNotice=141,5,100,1,1
+msgtypeDccChatMsg=103,1,100,1,3
+msgtypeCreationTime=93,15,100,1,1
+msgtypeWhoisServer=91,2,100,1,1
+msgtypeInviteUnexcept=72,15,100,1,1
+msgtypeSplit=59,15,100,1,2
+msgtypeCtcpRequestIgnored=53,5,100,1,1
+msgtypeSystemError=24,4,100,1,4
+msgtypeHighlight=0,7,100,1,5
+fontTaskbar=Sans%20Serif,10,5,50
+uintTreeTaskBarPixmapAlign=0
+uintGlobalTransparencyParentFadeFactor=10
+colorTreeTaskBarHighlight3Foreground=128,0,255
+colorTaskBarHighlight4Text=220,0,255
+colorTaskBarProgressBar=180,180,180
+colorMdiBackground=0,0,0
+boolUseTaskBarActivityMeter=false
+boolColorNicks=false
+mirccolor2=0,0,140
+msgtypeMeChanUnAdmin=245,3,100,1,1
+msgtypeWho=75,2,100,1,1
+msgtypeDeop=62,3,100,1,1
+msgtypeRaw=25,2,100,1,1
+uintTimeStampBackground=100
+colorUserListViewChanAdminForeground=83,54,5
+colorTreeTaskBarHighlight4Foreground=220,0,255
+colorTaskBarHighlight3Text=128,20,255
+colorTreeTaskBarActiveBackground=200,200,200
+colorLabelForeground=0,0,0
+colorUserListViewSelectionForeground=0,0,0
+colorInputBackgroundColor=255,255,255
+boolDisableUserListLabel=false
+mirccolor10=0,150,180
+mirccolor3=0,100,0
+msgtypeGenericSuccess=136,14,100,1,3
+msgtypeDccChatMsgCrypted=104,1,100,1,3
+msgtypeAction=56,13,100,1,3
+msgtypeSystemWarning=26,4,100,1,3
+uintTimeStampForeground=14
+colorTreeTaskBarHighlight5Foreground=255,0,0
+colorTreeTaskBarForeground=0,0,0
+colorIrcViewBackground=255,255,255
+boolUseFlatClassicTaskbarButtons=true
+boolDisableAvatars=false
+boolUserListViewDrawGrid=false
+boolUseGlobalApplicationFont=false
+iccolor0=250,250,0
+mirccolor11=170,170,255
+mirccolor4=230,0,0
+msgtypeChanUnOwner=261,3,100,1,2
+msgtypeVerbose=259,15,100,1,0
+msgtypeMeDeHalfOp=194,3,100,1,5
+msgtypeBroadcastNotice=184,5,100,1,3
+msgtypeBanExcept=69,15,100,1,1
+msgtypeNick=61,2,100,1,1
+msgtypeOwnPrivateMessage=45,1,100,1,3
+msgtypeLink=0,2,100,1,0
+uintGlobalTransparencyChildFadeFactor=50
+colorTaskBarHighlight5Text=255,0,0
+colorTreeTaskBarBackground=255,255,255
+colorIrcToolBarAppletForegroundHighContrastInactive1=40,40,40
+colorLabelBackground=255,255,255
+colorInputSelectionBackground=198,198,198
+boolObtainGlobalBackgroundFromKde=false
+pixmapLabelBackground=
+iccolor1=0,0,0
+mirccolor12=15,15,255
+mirccolor5=150,0,0
+msgtypeChanAdmin=242,3,100,1,1
+msgtypeGenericStatus=133,14,100,1,1
+msgtypeHalfOp=174,3,100,1,1
+msgtypeDevoice=63,3,100,1,1
+msgtypeJoin=39,14,100,1,2
+msgtypeMotd=30,1,100,1,0
+fontIrcView=Trebuchet%20MS,10,5,50
+colorIrcToolBarAppletForegroundHighContrastInactive2=40,40,40
+colorIrcToolBarAppletForegroundLowContrast=180,180,180
+pixmapGlobalTransparencyBackground=
+pixmapTreeTaskBarBackground=
+iccolor2=0,0,200
+mirccolor13=200,0,200
+mirccolor6=80,0,80
+msgtypeMeChanUnOwner=263,3,100,1,2
+msgtypeMeUserOp=193,3,100,1,1
+msgtypeWhoisIdle=90,2,100,1,1
+msgtypeNicknameProblem=87,3,100,1,1
+msgtypeDccError=79,5,100,1,1
+msgtypeInviteExcept=71,15,100,1,1
+msgtypeConnection=14,5,100,1,1
+msgtypeParserWarning=12,5,100,1,0
+colorUserListViewOwnForeground=126,74,131
+colorUserListViewHalfOpForeground=119,0,178
+colorIrcToolBarAppletForegroundHighContrastActive1=0,0,0
+colorMdiCaptionInactive=180,180,180
+stringExtendedPrivmsgPostfix=]%20
+boolDrawEmoticons=false
+boolIrcViewWrapMargin=true
+iccolor3=200,0,0
+mirccolor14=80,80,80
+mirccolor7=255,90,0
+msgtypeUserOp=174,3,100,1,1
+msgtypeGenericVerbose=137,14,100,1,1
+msgtypeMeUnban=196,5,100,1,5
+msgtypeMeHalfOp=193,3,100,1,5
+msgtypeInvite=176,7,100,1,4
+msgtypeIdent=171,2,100,1,3
+msgtypeChanMode=73,15,100,1,1
+msgtypeBanUnexcept=70,15,100,1,1
+msgtypeKey=65,15,100,1,2
+msgtypeServerInfo=29,1,100,1,1
+fontInput=Trebuchet%20MS,10,5,50
+colorUserListViewAwayForeground=143,143,143
+colorIrcToolBarAppletForegroundHighContrastActive2=0,60,0
+colorInputCursor=72,216,72
+boolUseSpecialColorForTimestamp=true
+pixmapIrcToolBarAppletBackground=
+iccolor4=255,255,255
+mirccolor15=170,170,170
+mirccolor8=255,255,0
+msgtypeSSL=229,2,100,1,0
+msgtypeMeVoice=190,3,100,1,5
+msgtypeChannelNotice=153,5,100,1,3
+msgtypeNotifyOnLine=94,2,100,1,1
+msgtypeCtcpReply=51,5,100,1,2
+msgtypeUnhandledReply=28,2,100,1,1
+msgtypeSystemMessage=27,2,100,1,1
+fontApplication=Sans%20Serif,10,5,50
+colorUserListViewGrid=216,216,216
+colorTreeTaskBarHighlight1Foreground=165,165,165
+colorCaptionTextActive=255,255,255
+pixmapIrcViewBackground=pixmapIrcViewBackground.png
+iccolor5=0,150,190
+mirccolor9=0,255,0
+msgtypeTextEncoding=236,1,100,1,0
+msgtypeMeDeOp=191,3,100,1,5
+msgtypeJoinError=182,5,100,1,4
+msgtypeQueryNotice=155,5,100,1,3
+msgtypeSpam=120,14,100,1,3
+msgtypeKick=110,4,100,1,2
+msgtypeDccRequest=77,5,100,1,3
+msgtypeUnban=68,5,100,1,1
+msgtypeLimit=66,15,100,1,1
+msgtypeMode=64,15,100,1,1
+msgtypePart=40,14,100,1,2
+msgtypeServerPing=36,15,100,1,0
+colorUserListViewOpForeground=200,0,0
+colorInputControl=200,100,0
+colorCaptionTextInactive2=30,30,30
+pixmapMdiBackground=
+iccolor6=0,130,0
+msgtypeHelp=49,3,100,1,1
+msgtypeMeDeUserOp=194,3,100,1,1
+msgtypeChanUnAdmin=243,3,100,1,1
+msgtypeMeKick=188,4,100,1,5
+msgtypeList=173,1,100,1,1
+msgtypeQueryNoticeCrypted=156,5,100,1,3
+msgtypeChannelPrivateMessage=46,1,100,1,3
+msgtypeSocketError=23,4,100,1,4
+msgtypeEcho=0,1,100,1,1
+uintInputPixmapAlign=32
+colorIrcToolBarAppletBackground=255,255,255
+boolShowUserChannelState=false
+boolBoldedNicks=false
+boolShowUserAndHostInPrivmsgView=false
+iccolor7=150,0,170
+msgtypeGenericCritical=134,4,100,1,4
+msgtypeGenericWarning=132,5,100,1,0
+msgtypeCtcpReplyUnknown=162,5,100,1,1
+msgtypeDccMsg=78,5,100,1,2
+msgtypeQuitSplit=60,14,100,1,2
+msgtypeCtcpRequestFlood=54,5,100,1,1
+msgtypeUrl=0,2,100,1,1
+fontLabel=Sans%20Serif,10,5,50
+fontUserListView=Sans%20Serif,10,5,50,i
+uintClassicTaskBarMaximumButtonWidth=100
+colorUserListViewSelectionBackground=194,194,194
+boolClassicTaskBarSetMaximumButtonWidth=true
diff --git a/data/deftheme/silverirc/themeinfo.kvc b/data/deftheme/silverirc/themeinfo.kvc
new file mode 100644
index 0000000..14fbdcc
--- /dev/null
+++ b/data/deftheme/silverirc/themeinfo.kvc
@@ -0,0 +1,10 @@
+# KVIrc configuration file
+[ThemeInfo]
+Author=Alexey
+Version=0.7
+Name=SilverIRC
+MinimumKvircVersion=3.2.4
+Date=08.01.2007
+Description=Default KVIrc Theme
+ThemeInfoFileVersion=1.0.0
+Application=KVIrc 3.2.4
diff --git a/data/doctemplates/Makefile.am b/data/doctemplates/Makefile.am
new file mode 100644
index 0000000..edd4722
--- /dev/null
+++ b/data/doctemplates/Makefile.am
@@ -0,0 +1 @@
+EXTRA_DIST = rfc2812.template kvircintro.template ircintro.template
diff --git a/data/doctemplates/ircintro.template b/data/doctemplates/ircintro.template
new file mode 100644
index 0000000..9b51485
--- /dev/null
+++ b/data/doctemplates/ircintro.template
@@ -0,0 +1,60 @@
+/*
+ @doc: ircintro
+ @title:
+ Introduction to IRC
+ @short:
+ Introduction to IRC
+ @keyterms:
+ irc,channel,channels,channel operator,irc server,server,irc network,irc user,irc users,irc client,internet relay chat,nickname,nicknames,irc etiquette
+ @body:
+ [big]What is IRC ?[/big][br]
+ Internet Relay Chat (IRC) is one of the most popular and most interactive services on the Internet.
+ When you've been wondering 'where the others are?', then IRC is what you're looking for.
+ IRC allows real-time conversations with people from the whole planet, 24-hours a day, worldwide.
+ [br]
+ [big]How does it work ?[/big][br]
+ IRC consists of various separate networks (or "nets") of IRC servers: machines that allow users to connect to IRC.
+ The largest nets are EFnet (the original IRC net, often having more than 32,000 people at once), Undernet, IRCnet, DALnet, and NewNet.
+ Generally, the user (such as you) runs a program (called "irc client") to connect to a server on one of the IRC nets.
+ The server will relay the informations between you and the "rest" of the network (obviously including the other irc users).
+ Each user is known on IRC by a nickname (or "nick"), such as smartgal or FunGuy.
+ To avoid conflicts with other users, it is best to use a nick that is not too common, e.g., "john" is a poor choice.
+ Some networks allow the registration of nicknames: once you have registered a nickname noone else will be able to use it.
+ Once connected to an IRC server on an IRC network, you will usually join one or more [b]channels[/b] and converse with other irc users.
+ On EFnet, there often are more than 12,000 channels, each one devoted to a different topic.
+ [br]
+ [big]Channels[/big][br]
+ Channel names usually begin with a #, as in #irchelp.
+ The same channels are shared among all IRC servers on the same net, so you do not have to be on the same IRC server as your friends.
+ Each channel can be joined by a "virtually" unlimited number of users and every word spoken "to the channel" is
+ seen by all the users that have joined it.
+ Each channel has a topic that usually describes the ideas being exchanged between users in that moment.
+ It is a good idea to take a look at the topic before starting to talk "randomly" :).
+ Channels are run by channel operators, or just "ops" for short, who can control the channel by choosing who may join (by "banning" some users),
+ who must leave (by "kicking" them out), and even who may speak (by making the channel "moderated")!
+ Channel ops have complete control over their channel, and their decisions are final.
+ If you are banned from a channel, send a /msg to a channel op and ask nicely to be let in
+ (see the /who command in the next section to learn how to find ops).
+ If they ignore you or /who gives no response because the channel is in secret mode (+s),
+ just go somewhere else where you are more welcome.
+ Some IRC networks have a richer hierarchy of channel users and you may find half-operators, channel administrators or
+ channel owners.
+ [br]
+ [big]Just a bit of IRC Etiquette...[/big][br]
+ You'll find all kinds of people on IRC. Some nice, and some not so nice.
+ Simply behave as you would in the real world. Most people will be friendly and considerate, if you are as well.
+ When you join a channel, say hello. Don't expect to get hello's back from everyone,
+ especially when there are lots of people on the channel.
+ If you've never visited the channel before and have no idea what to expect,
+ just sit back and watch for awhile to get a feel for the flow of the channel (thats called "lurking").
+ [br]
+ [big]Finding more info[/big][br]
+ The web is full of informations about IRC: it's just a matter of typing "IRC" in a search engine.
+ An user-friendly site to start from might be www.irchelp.org: you will find a huge list of
+ documents and links that will hopefully answer to all your questions.
+ You may also give a short read to the [doc:kvircintro]Introduction to KVIrc[/doc] which will
+ give you an idea of what an IRC client is.
+ [br]
+ [big]Well...[/big][br]
+ Have fun :)
+*/
diff --git a/data/doctemplates/kvircintro.template b/data/doctemplates/kvircintro.template
new file mode 100644
index 0000000..149590a
--- /dev/null
+++ b/data/doctemplates/kvircintro.template
@@ -0,0 +1,67 @@
+/*
+ @doc: kvircintro
+ @title:
+ Introduction to KVIrc
+ @short:
+ Introduction to KVIrc
+ @keyterms:
+ KVIrc
+ @body:
+ [big]Introduction[/big]
+
+ In really simple words KVIrc is a Chat client: you use it to talk to other
+ people over the internet. More specifically KVIrc is an IRC client
+ and if you haven't readed it yet please take a look at the [doc:ircintro]IRC introduction[/doc]
+ then come back here. Now that you know what IRC is then you already know
+ that an IRC client acts as a relay for the informations that you
+ exchange with your IRC server. KVIrc also acts as a filter and provides
+ an user-friendly interface for the communication protocol that is a bit complex
+ and rude when seen in its original form (by using telnet for example).
+ KVIrc also contains a sophisticated scripting language that allows you to
+ implement automated reactions to the network events. This is something similar
+ to creating a robot that acts spontaneously after you have told him what to do.
+ The scripting language allows you to enchance the KVIrc's interface and
+ to handle special IRC network features that KVIrc itself isn't aware of.
+
+ [big]History[/big]
+
+ The original meaning of the name "KVIrc" was, more or less, "K Visual IRC Client".
+ The initial K is a common prefix for the applications written for the KDE
+ desktop environment: this was the case of the initial versions of KVIrc.
+ Starting from version 2.0.0 the absolute KDE dependancy has been dropped (for several
+ valid reasons) and the support became optional.[br]
+ "Visual" was (and is) one of the client goals: having an user-friendly interface to the IRC world.
+ Many extreme-unix users have misinterpreted the "user-friendly" interface and have tagged
+ KVIrc as a client for "newbies". Well... that is partially true: KVIrc is ALSO a client for newbies:
+ A total IRC novice should be able to "chat" in few minutes after installing the program,
+ preferably without bothering to read any manual. Yes ,I know that it is not in "unix"-style.
+ On the other side, KVIrc contains a whole bunch of compex features that can be discovered
+ only by reading the documentation and experimenting. I bet that you can also
+ find a lot of undocumented tricks :)
+
+ [big]A bit of "philosophy"[/big]
+
+ At the time of writing (Feb 2005) KVIrc approaches release 3.2.0. The small
+ [b]one-man-project[/b] has grown to the level of a small [b]community[/b].
+ People from around the world have joined our development efforts and are
+ constantly donating their time, eyes and bandwidth in order to make KVIrc
+ a really good IRC client. Besides of simply giving you a free (as in freedom!) and nice
+ program for chatting, they are giving you the great opportunity to see what's behind
+ the scenes: you have the source code for the whole application.
+ In practical terms this means more or less 300.000 lines of tested, debugged and
+ commented C++ code, several perl scripts, dozens of makefiles and all the means
+ that you need to produce a working KVIrc executable on all the supported platforms.
+ There is a lot of knowledge (some people call it "technology" because it sells better)
+ inside, ready to be acquired by an attentive reader. Don't forget that the freedom of
+ building your own executable from the sources gives you the opportunity
+ of verifying the source itself: for example you might be interested in verifying
+ that KVIrc will not run any malware code on your machine nor will collect
+ your private data and sell it to someone while you're happily chatting with a friend.
+ [b]We call it freedom, please respect it.[/b]
+
+ [big]Well...[/big]
+
+ Have fun :)[br]
+ [br]
+ Szymon Stefanek and The KVIrc Development Team
+*/
diff --git a/data/doctemplates/rfc2812.template b/data/doctemplates/rfc2812.template
new file mode 100644
index 0000000..9d81a1c
--- /dev/null
+++ b/data/doctemplates/rfc2812.template
@@ -0,0 +1,3312 @@
+/*
+ @doc: rfc2812
+ @title:
+ RFC2812
+ @short:
+ The IRC protocol specification (revised)
+ @keyterms:
+ irc, protocol, bnf, irc user, irc channel, server protocol,
+ server messages, server replies, numeric messages
+ @body:
+
+[table]
+
+[tr][td][pre]
+Network Working Group, C.Kalt, April 2000
+Request for Comments: 2812
+Updates: 1459
+Category: Informational
+[/pre][/td][/tr]
+
+[tr][td]
+[center][big]Internet Relay Chat: Client Protocol[/big][/center]
+[/td][/tr]
+
+[tr][td]
+[b]Status of this Memo[/b]
+[/td][/tr]
+
+[tr][td]
+This memo provides information for the Internet community. It does
+not specify an Internet standard of any kind. Distribution of this
+memo is unlimited.
+[/td][/tr]
+
+[tr][td]
+[b]Copyright Notice[/b]
+[/td][/tr]
+
+[tr][td]
+Copyright (C) The Internet Society (2000). All Rights Reserved.
+[/td][/tr]
+
+[tr][td]
+[b]IESG NOTE:[/b]
+[/td][/tr]
+
+[tr][td]
+The IRC protocol itself enables several possibilities of transferring
+data between clients, and just like with other transfer mechanisms
+like email, the receiver of the data has to be careful about how the
+data is handled. For more information on security issues with the IRC
+protocol, see for example http://www.irchelp.org/irchelp/security/.
+[/td][/tr]
+
+[tr][td]
+[b]Abstract[/b]
+[/td][/tr]
+
+[tr][td]
+The IRC (Internet Relay Chat) protocol is for use with text based
+conferencing; the simplest client being any socket program capable of
+connecting to the server.
+[p]
+This document defines the Client Protocol, and assumes that the
+reader is familiar with the IRC Architecture [IRC-ARCH].
+[/td][/tr]
+
+[tr][td]
+[b]Table of Contents[/b]
+[/td][/tr]
+
+[tr][td]
+[ul]
+[li]1. Labels[/li]
+[ul]
+[li]1.1 Servers[/li]
+[li]1.2 Clients[/li]
+[ul]
+[li]1.2.1 Users[/li]
+[ul]
+[li]1.2.1.1 Operators[/li]
+[/ul]
+[li]1.2.2 Services[/li]
+[/ul]
+[li]1.3 Channels[/li]
+[/ul]
+[li]2. The IRC Client Specification[/li]
+[ul]
+[li]2.1 Overview[/li]
+[li]2.2 Character codes[/li]
+[li]2.3 Messages[/li]
+[ul]
+[li]2.3.1 Message format in Augmented BNF[/li]
+[/ul]
+[li]2.4 Numeric replies[/li]
+[li]2.5 Wildcard expressions[/li]
+[/ul]
+[li]3. Message Details[/li]
+[ul]
+[li]3.1 Connection Registration[/li]
+[ul]
+[li]3.1.1 Password message[/li]
+[li]3.1.2 Nick message[/li]
+[li]3.1.3 User message[/li]
+[li]3.1.4 Oper message[/li]
+[li]3.1.5 User mode message[/li]
+[li]3.1.6 Service message[/li]
+[li]3.1.7 Quit[/li]
+[li]3.1.8 Squit[/li]
+[/ul]
+[li]3.2 Channel operations[/li]
+[ul]
+[li]3.2.1 Join message[/li]
+[li]3.2.2 Part message[/li]
+[li]3.2.3 Channel mode message[/li]
+[li]3.2.4 Topic message[/li]
+[li]3.2.5 Names message[/li]
+[li]3.2.6 List message[/li]
+[li]3.2.7 Invite message[/li]
+[li]3.2.8 Kick command[/li]
+[/ul]
+[li]3.3 Sending messages[/li]
+[ul]
+[li]3.3.1 Private messages[/li]
+[li]3.3.2 Notice[/li]
+[/ul]
+[li]3.4 Server queries and commands[/li]
+[ul]
+[li]3.4.1 Motd message[/li]
+[li]3.4.2 Lusers message[/li]
+[li]3.4.3 Version message[/li]
+[li]3.4.4 Stats message[/li]
+[li]3.4.5 Links message[/li]
+[li]3.4.6 Time message[/li]
+[li]3.4.7 Connect message[/li]
+[li]3.4.8 Trace message[/li]
+[li]3.4.9 Admin command[/li]
+[li]3.4.10 Info command[/li]
+[/ul]
+[li]3.5 Service Query and Commands[/li]
+[ul]
+[li]3.5.1 Servlist message[/li]
+[li]3.5.2 Squery[/li]
+[/ul]
+[li]3.6 User based queries[/li]
+[ul]
+[li]3.6.1 Who query[/li]
+[li]3.6.2 Whois query[/li]
+[li]3.6.3 Whowas[/li]
+[/ul]
+[li]3.7 Miscellaneous messages[/li]
+[ul]
+[li]3.7.1 Kill message[/li]
+[li]3.7.2 Ping message[/li]
+[li]3.7.3 Pong message[/li]
+[li]3.7.4 Error[/li]
+[/ul]
+[/ul]
+[li]4. Optional features[/li]
+[ul]
+[li]4.1 Away[/li]
+[li]4.2 Rehash message[/li]
+[li]4.3 Die message[/li]
+[li]4.4 Restart message[/li]
+[li]4.5 Summon message[/li]
+[li]4.6 Users[/li]
+[li]4.7 Operwall message[/li]
+[li]4.8 Userhost message[/li]
+[li]4.9 Ison message[/li]
+[/ul]
+[li]5. Replies[/li]
+[ul]
+[li]5.1 Command responses[/li]
+[li]5.2 Error Replies[/li]
+[li]5.3 Reserved numerics[/li]
+[/ul]
+[li]6. Current implementations[/li]
+[li]7. Current problems[/li]
+[ul]
+[li]7.1 Nicknames[/li]
+[li]7.2 Limitation of wildcards[/li]
+[li]7.3 Security considerations[/li]
+[/ul]
+[li]8. Current support and availability[/li]
+[li]9. Acknowledgements[/li]
+[li]10. References[/li]
+[li]11. Author's Address[/li]
+[li]12. Full Copyright Statement[/li]
+[/ul]
+[/td][/tr]
+
+[tr][td]
+[b]1. Labels[/b]
+[/td][/tr]
+
+[tr][td]
+This section defines the identifiers used for the various components
+of the IRC protocol.
+[/td][/tr]
+
+[tr][td]
+[b]1.1 Servers[/b]
+[/td][/tr]
+
+[tr][td]
+Servers are uniquely identified by their name, which has a maximum
+length of sixty three (63) characters. See the protocol grammar
+rules (section 2.3.1) for what may and may not be used in a server
+name.
+[/td][/tr]
+
+[tr][td]
+[b]1.2 Clients[/b]
+[/td][/tr]
+
+[tr][td]
+For each client all servers MUST have the following information: a
+netwide unique identifier (whose format depends on the type of
+client) and the server which introduced the client.
+[/td][/tr]
+
+[tr][td]
+[b]1.2.1 Users[/b]
+[/td][/tr]
+
+[tr][td]
+Each user is distinguished from other users by a unique nickname
+having a maximum length of nine (9) characters. See the protocol
+grammar rules (section 2.3.1) for what may and may not be used in a
+nickname.
+[p]
+While the maximum length is limited to nine characters, clients
+SHOULD accept longer strings as they may become used in future
+evolutions of the protocol.
+[/td][/tr]
+
+[tr][td]
+[b]1.2.1.1 Operators[/b]
+[/td][/tr]
+
+[tr][td]
+To allow a reasonable amount of order to be kept within the IRC
+network, a special class of users (operators) is allowed to perform
+general maintenance functions on the network. Although the powers
+granted to an operator can be considered as 'dangerous', they are
+nonetheless often necessary. Operators SHOULD be able to perform
+basic network tasks such as disconnecting and reconnecting servers as
+needed. In recognition of this need, the protocol discussed herein
+provides for operators only to be able to perform such functions.
+See sections 3.1.8 (SQUIT) and 3.4.7 (CONNECT).[br]
+[p]
+A more controversial power of operators is the ability to remove a
+user from the connected network by 'force', i.e., operators are able
+to close the connection between any client and server. The
+justification for this is very delicate since its abuse is both
+destructive and annoying, and its benefits close to inexistent. For
+further details on this type of action, see section 3.7.1 (KILL).
+[/td][/tr]
+
+[tr][td]
+[b]1.2.2 Services[/b]
+[/td][/tr]
+
+[tr][td]
+Each service is distinguished from other services by a service name
+composed of a nickname and a server name. As for users, the nickname
+has a maximum length of nine (9) characters. See the protocol
+grammar rules (section 2.3.1) for what may and may not be used in a
+nickname.
+[/td][/tr]
+
+[tr][td]
+[b]1.3 Channels[/b]
+[/td][/tr]
+
+[tr][td]
+Channels names are strings (beginning with a '&', '#', '+' or '!'
+character) of length up to fifty (50) characters. Apart from the
+requirement that the first character is either '&', '#', '+' or '!',
+the only restriction on a channel name is that it SHALL NOT contain
+any spaces (' '), a control G (^G or ASCII 7), a comma (','). Space
+is used as parameter separator and command is used as a list item
+separator by the protocol). A colon (':') can also be used as a
+delimiter for the channel mask. Channel names are case insensitive.
+See the protocol grammar rules (section 2.3.1) for the exact syntax
+of a channel name.[br]
+[p]
+Each prefix characterizes a different channel type. The definition
+of the channel types is not relevant to the client-server protocol
+and thus it is beyond the scope of this document. More details can
+be found in "Internet Relay Chat: Channel Management" [IRC-CHAN].
+[/td][/tr]
+
+[tr][td]
+[b]2. The IRC Client Specification[/b]
+[/td][/tr]
+
+[tr][td]
+[b]2.1 Overview[/b]
+[/td][/tr]
+
+[tr][td]
+The protocol as described herein is for use only with client to
+server connections when the client registers as a user.
+[/td][/tr]
+
+[tr][td]
+[b]2.2 Character codes[/b]
+[/td][/tr]
+
+[tr][td]
+No specific character set is specified. The protocol is based on a
+set of codes which are composed of eight (8) bits, making up an
+octet. Each message may be composed of any number of these octets;
+however, some octet values are used for control codes, which act as
+message delimiters.[br]
+[p]
+Regardless of being an 8-bit protocol, the delimiters and keywords
+are such that protocol is mostly usable from US-ASCII terminal and a
+telnet connection.
+[p]
+Because of IRC's Scandinavian origin, the characters {}|^ are
+considered to be the lower case equivalents of the characters []\~,
+respectively. This is a critical issue when determining the
+equivalence of two nicknames or channel names.
+[/td][/tr]
+
+[tr][td]
+[b]2.3 Messages[/b]
+[/td][/tr]
+
+[tr][td]
+Servers and clients send each other messages, which may or may not
+generate a reply. If the message contains a valid command, as
+described in later sections, the client should expect a reply as
+specified but it is not advised to wait forever for the reply; client
+to server and server to server communication is essentially
+asynchronous by nature.
+[p]
+Each IRC message may consist of up to three main parts: the prefix
+(OPTIONAL), the command, and the command parameters (maximum of
+fifteen (15)). The prefix, command, and all parameters are separated
+by one ASCII space character (0x20) each.
+[p]
+The presence of a prefix is indicated with a single leading ASCII
+colon character (':', 0x3b), which MUST be the first character of the
+message itself. There MUST be NO gap (whitespace) between the colon
+and the prefix. The prefix is used by servers to indicate the true
+origin of the message. If the prefix is missing from the message, it
+is assumed to have originated from the connection from which it was
+received from. Clients SHOULD NOT use a prefix when sending a
+message; if they use one, the only valid prefix is the registered
+nickname associated with the client.
+[p]
+The command MUST either be a valid IRC command or a three (3) digit
+number represented in ASCII text.
+[p]
+IRC messages are always lines of characters terminated with a CR-LF
+(Carriage Return - Line Feed) pair, and these messages SHALL NOT
+exceed 512 characters in length, counting all characters including
+the trailing CR-LF. Thus, there are 510 characters maximum allowed
+for the command and its parameters. There is no provision for
+continuation of message lines. See section 6 for more details about
+current implementations.
+[/td][/tr]
+
+[tr][td]
+[b]2.3.1 Message format in Augmented BNF[/b]
+[/td][/tr]
+
+[tr][td]
+The protocol messages must be extracted from the contiguous stream of
+octets. The current solution is to designate two characters, CR and
+LF, as message separators. Empty messages are silently ignored,
+which permits use of the sequence CR-LF between messages without
+extra problems.
+[p]
+The extracted message is parsed into the components ,
+ and list of parameters ().
+[p]
+[pre]
+ The Augmented BNF representation for this is:
+
+ message = [ ":" prefix SPACE ] command [ params ] crlf
+ prefix = servername / ( nickname [ [ "!" user ] "@" host ] )
+ command = 1*letter / 3digit
+ params = *14( SPACE middle ) [ SPACE ":" trailing ]
+ =/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ]
+
+ nospcrlfcl = %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF
+ ; any octet except NUL, CR, LF, " " and ":"
+ middle = nospcrlfcl *( ":" / nospcrlfcl )
+ trailing = *( ":" / " " / nospcrlfcl )
+
+ SPACE = %x20 ; space character
+ crlf = %x0D %x0A ; "carriage return" "linefeed"
+
+ NOTES:
+ 1) After extracting the parameter list, all parameters are equal
+ whether matched by or . is just a
+ syntactic trick to allow SPACE within the parameter.
+
+ 2) The NUL (%x00) character is not special in message framing, and
+ basically could end up inside a parameter, but it would cause
+ extra complexities in normal C string handling. Therefore, NUL
+ is not allowed within messages.
+
+ Most protocol messages specify additional semantics and syntax for
+ the extracted parameter strings dictated by their position in the
+ list. For example, many server commands will assume that the first
+ parameter after the command is the list of targets, which can be
+ described with:
+
+ target = nickname / server
+ msgtarget = msgto *( "," msgto )
+ msgto = channel / ( user [ "%" host ] "@" servername )
+ msgto =/ ( user "%" host ) / targetmask
+ msgto =/ nickname / ( nickname "!" user "@" host )
+ channel = ( "#" / "+" / ( "!" channelid ) / "&" ) chanstring
+ [ ":" chanstring ]
+ servername = hostname
+ host = hostname / hostaddr
+ hostname = shortname *( "." shortname )
+ shortname = ( letter / digit ) *( letter / digit / "-" )
+ *( letter / digit )
+ ; as specified in RFC 1123 [HNAME]
+ hostaddr = ip4addr / ip6addr
+ ip4addr = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit
+ ip6addr = 1*hexdigit 7( ":" 1*hexdigit )
+ ip6addr =/ "0:0:0:0:0:" ( "0" / "FFFF" ) ":" ip4addr
+ nickname = ( letter / special ) *8( letter / digit / special / "-" )
+ targetmask = ( "$" / "#" ) mask
+ ; see details on allowed masks in section 3.3.1
+ chanstring = %x01-07 / %x08-09 / %x0B-0C / %x0E-1F / %x21-2B
+ chanstring =/ %x2D-39 / %x3B-FF
+ ; any octet except NUL, BELL, CR, LF, " ", "," and ":"
+ channelid = 5( %x41-5A / digit ) ; 5( A-Z / 0-9 )
+
+ Other parameter syntaxes are:
+
+ user = 1*( %x01-09 / %x0B-0C / %x0E-1F / %x21-3F / %x41-FF )
+ ; any octet except NUL, CR, LF, " " and "@"
+ key = 1*23( %x01-05 / %x07-08 / %x0C / %x0E-1F / %x21-7F )
+ ; any 7-bit US_ASCII character,
+ ; except NUL, CR, LF, FF, h/v TABs, and " "
+ letter = %x41-5A / %x61-7A ; A-Z / a-z
+ digit = %x30-39 ; 0-9
+ hexdigit = digit / "A" / "B" / "C" / "D" / "E" / "F"
+ special = %x5B-60 / %x7B-7D
+ ; "[", "]", "\", "`", "_", "^", "{", "|", "}"
+
+ NOTES:
+ 1) The syntax is given here for the sole purpose of
+ indicating the format to follow for IP addresses. This
+ reflects the fact that the only available implementations of
+ this protocol uses TCP/IP as underlying network protocol but is
+ not meant to prevent other protocols to be used.
+
+ 2) has a maximum length of 63 characters. This is a
+ limitation of the protocol as internet hostnames (in
+ particular) can be longer. Such restriction is necessary
+ because IRC messages are limited to 512 characters in length.
+ Clients connecting from a host which name is longer than 63
+ characters are registered using the host (numeric) address
+ instead of the host name.
+
+ 3) Some parameters used in the following sections of this
+ documents are not defined here as there is nothing specific
+ about them besides the name that is used for convenience.
+ These parameters follow the general syntax defined for
+ .
+[/pre]
+[/td][/tr]
+
+[tr][td]
+[b]2.4 Numeric replies[/b]
+[/td][/tr]
+
+[tr][td]
+Most of the messages sent to the server generate a reply of some
+sort. The most common reply is the numeric reply, used for both
+errors and normal replies. The numeric reply MUST be sent as one
+message consisting of the sender prefix, the three-digit numeric, and
+the target of the reply. A numeric reply is not allowed to originate
+from a client. In all other respects, a numeric reply is just like a
+normal message, except that the keyword is made up of 3 numeric
+digits rather than a string of letters. A list of different replies
+is supplied in section 5 (Replies).
+[/td][/tr]
+
+[tr][td]
+[b]2.5 Wildcard expressions[/b]
+[/td][/tr]
+
+[tr][td]
+When wildcards are allowed in a string, it is referred as a "mask".
+[p]
+For string matching purposes, the protocol allows the use of two
+special characters: '?' (%x3F) to match one and only one character,
+and '*' (%x2A) to match any number of any characters. These two
+characters can be escaped using the character '\' (%x5C).
+[p]
+[pre]
+ The Augmented BNF syntax for this is:
+
+ mask = *( nowild / noesc wildone / noesc wildmany )
+ wildone = %x3F
+ wildmany = %x2A
+ nowild = %x01-29 / %x2B-3E / %x40-FF
+ ; any octet except NUL, "*", "?"
+ noesc = %x01-5B / %x5D-FF
+ ; any octet except NUL and "\"
+ matchone = %x01-FF
+ ; matches wildone
+ matchmany = *matchone
+ ; matches wildmany
+
+ Examples:
+
+ a?c ; Matches any string of 3 characters in length starting
+ with "a" and ending with "c"
+
+ a*c ; Matches any string of at least 2 characters in length
+ starting with "a" and ending with "c"
+[/pre]
+[/td][/tr]
+
+[tr][td]
+[b]3. Message Details[/b]
+[/td][/tr]
+
+[tr][td]
+On the following pages there are descriptions of each message
+recognized by the IRC server and client. All commands described in
+this section MUST be implemented by any server for this protocol.
+[p]
+Where the reply ERR_NOSUCHSERVER is returned, it means that the
+target of the message could not be found. The server MUST NOT send
+any other replies after this error for that command.
+[p]
+The server to which a client is connected is required to parse the
+complete message, and return any appropriate errors.
+[p]
+If multiple parameters is presented, then each MUST be checked for
+validity and appropriate responses MUST be sent back to the client.
+In the case of incorrect messages which use parameter lists with
+comma as an item separator, a reply MUST be sent for each item.
+[/td][/tr]
+
+[tr][td]
+[b]3.1 Connection Registration[/b]
+[/td][/tr]
+
+[tr][td]
+The commands described here are used to register a connection with an
+IRC server as a user as well as to correctly disconnect.
+[p]
+A "PASS" command is not required for a client connection to be
+registered, but it MUST precede the latter of the NICK/USER
+combination (for a user connection) or the SERVICE command (for a
+service connection). The RECOMMENDED order for a client to register
+is as follows:
+[p]
+[pre]
+ 1. Pass message
+ 2. Nick message 2. Service message
+ 3. User message
+[/pre]
+[p]
+Upon success, the client will receive an RPL_WELCOME (for users) or
+RPL_YOURESERVICE (for services) message indicating that the
+connection is now registered and known the to the entire IRC network.
+The reply message MUST contain the full client identifier upon which
+it was registered.
+[/td][/tr]
+
+[tr][td]
+[b]3.1.1 Password message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: PASS
+Parameters:
+
+The PASS command is used to set a 'connection password'. The
+optional password can and MUST be set before any attempt to register
+the connection is made. Currently this requires that user send a
+PASS command before sending the NICK/USER combination.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED
+
+ Example:
+
+ PASS secretpasswordhere
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.2 Nick message[/b]
+[/pre][/td][/tr]
+
+
+[tr][td][pre]
+Command: NICK
+Parameters:
+
+NICK command is used to give user a nickname or change the existing
+one.
+
+ Numeric Replies:
+
+ ERR_NONICKNAMEGIVEN ERR_ERRONEUSNICKNAME
+ ERR_NICKNAMEINUSE ERR_NICKCOLLISION
+ ERR_UNAVAILRESOURCE ERR_RESTRICTED
+
+ Examples:
+
+ NICK Wiz ; Introducing new nick "Wiz" if session is
+ still unregistered, or user changing his
+ nickname to "Wiz"
+
+ :WiZ!jto@tolsun.oulu.fi NICK Kilroy
+ ; Server telling that WiZ changed his
+ nickname to Kilroy.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.3 User message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: USER
+Parameters:
+
+The USER command is used at the beginning of connection to specify
+the username, hostname and realname of a new user.
+
+The parameter should be a numeric, and can be used to
+automatically set user modes when registering with the server. This
+parameter is a bitmask, with only 2 bits having any signification: if
+the bit 2 is set, the user mode 'w' will be set and if the bit 3 is
+set, the user mode 'i' will be set. (See Section 3.1.5 "User
+Modes").
+
+The may contain space characters.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED
+
+ Example:
+
+ USER guest 0 * :Ronnie Reagan ; User registering themselves with a
+ username of "guest" and real name
+ "Ronnie Reagan".
+
+ USER guest 8 * :Ronnie Reagan ; User registering themselves with a
+ username of "guest" and real name
+ "Ronnie Reagan", and asking to be set
+ invisible.
+[/pre][/td][/tr]
+
+
+[tr][td][pre]
+[b]3.1.4 Oper message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: OPER
+Parameters:
+
+A normal user uses the OPER command to obtain operator privileges.
+The combination of and are REQUIRED to gain
+Operator privileges. Upon success, the user will receive a MODE
+message (see section 3.1.5) indicating the new user modes.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS RPL_YOUREOPER
+ ERR_NOOPERHOST ERR_PASSWDMISMATCH
+
+ Example:
+
+ OPER foo bar ; Attempt to register as an operator
+ using a username of "foo" and "bar"
+ as the password.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.5 User mode message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: MODE
+Parameters:
+*( ( "+" / "-" ) *( "i" / "w" / "o" / "O" / "r" ) )
+
+The user MODE's are typically changes which affect either how the
+client is seen by others or what 'extra' messages the client is sent.
+
+A user MODE command MUST only be accepted if both the sender of the
+message and the nickname given as a parameter are both the same. If
+no other parameter is given, then the server will return the current
+settings for the nick.
+
+ The available modes are as follows:
+
+ a - user is flagged as away;
+ i - marks a users as invisible;
+ w - user receives wallops;
+ r - restricted user connection;
+ o - operator flag;
+ O - local operator flag;
+ s - marks a user for receipt of server notices.
+
+Additional modes may be available later on.
+The flag 'a' SHALL NOT be toggled by the user using the MODE command,
+instead use of the AWAY command is REQUIRED.
+
+If a user attempts to make themselves an operator using the "+o" or
+"+O" flag, the attempt SHOULD be ignored as users could bypass the
+authentication mechanisms of the OPER command. There is no
+restriction, however, on anyone `deopping' themselves (using "-o" or
+"-O").
+
+On the other hand, if a user attempts to make themselves unrestricted
+using the "-r" flag, the attempt SHOULD be ignored. There is no
+restriction, however, on anyone `deopping' themselves (using "+r").
+This flag is typically set by the server upon connection for
+administrative reasons. While the restrictions imposed are left up
+to the implementation, it is typical that a restricted user not be
+allowed to change nicknames, nor make use of the channel operator
+status on channels.
+
+The flag 's' is obsolete but MAY still be used.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_USERSDONTMATCH
+ ERR_UMODEUNKNOWNFLAG RPL_UMODEIS
+
+ Examples:
+
+ MODE WiZ -w ; Command by WiZ to turn off
+ reception of WALLOPS messages.
+
+ MODE Angel +i ; Command from Angel to make herself
+ invisible.
+
+ MODE WiZ -o ; WiZ 'deopping' (removing operator
+ status).
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.6 Service message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SERVICE
+Parameters:
+
+
+The SERVICE command to register a new service. Command parameters
+specify the service nickname, distribution, type and info of a new
+service.
+The parameter is used to specify the visibility of a
+service. The service may only be known to servers which have a name
+matching the distribution. For a matching server to have knowledge
+of the service, the network path between that server and the server
+on which the service is connected MUST be composed of servers which
+names all match the mask.
+
+The parameter is currently reserved for future usage.
+
+ Numeric Replies:
+
+ ERR_ALREADYREGISTRED ERR_NEEDMOREPARAMS
+ ERR_ERRONEUSNICKNAME
+ RPL_YOURESERVICE RPL_YOURHOST
+ RPL_MYINFO
+
+ Example:
+
+ SERVICE dict * *.fr 0 0 :French Dictionary ; Service registering
+ itself with a name of "dict". This
+ service will only be available on
+ servers which name matches "*.fr".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.7 Quit[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: QUIT
+Parameters: [ ]
+
+A client session is terminated with a quit message. The server
+acknowledges this by sending an ERROR message to the client.
+
+ Numeric Replies:
+
+ None.
+
+ Example:
+
+ QUIT :Gone to have lunch ; Preferred message format.
+
+ :syrk!kalt@millennium.stealth.net QUIT :Gone to have lunch ; User
+ syrk has quit IRC to have lunch.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.8 Squit[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SQUIT
+Parameters:
+
+The SQUIT command is available only to operators. It is used to
+disconnect server links. Also servers can generate SQUIT messages on
+error conditions. A SQUIT message may also target a remote server
+connection. In this case, the SQUIT message will simply be sent to
+the remote server without affecting the servers in between the
+operator and the remote server.
+
+The SHOULD be supplied by all operators who execute a SQUIT
+for a remote server. The server ordered to disconnect its peer
+generates a WALLOPS message with included, so that other
+users may be aware of the reason of this action.
+
+ Numeric replies:
+
+ ERR_NOPRIVILEGES ERR_NOSUCHSERVER
+ ERR_NEEDMOREPARAMS
+
+ Examples:
+
+ SQUIT tolsun.oulu.fi :Bad Link ? ; Command to uplink of the server
+ tolson.oulu.fi to terminate its
+ connection with comment "Bad Link".
+
+ :Trillian SQUIT cm22.eng.umd.edu :Server out of control ; Command
+ from Trillian from to disconnect
+ "cm22.eng.umd.edu" from the net with
+ comment "Server out of control".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2 Channel operations[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+This group of messages is concerned with manipulating channels, their
+properties (channel modes), and their contents (typically users).
+For this reason, these messages SHALL NOT be made available to
+services.
+
+All of these messages are requests which will or will not be granted
+by the server. The server MUST send a reply informing the user
+whether the request was granted, denied or generated an error. When
+the server grants the request, the message is typically sent back
+(eventually reformatted) to the user with the prefix set to the user
+itself.
+
+The rules governing how channels are managed are enforced by the
+servers. These rules are beyond the scope of this document. More
+details are found in "Internet Relay Chat: Channel Management" [IRC-
+CHAN].
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.1 Join message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: JOIN
+Parameters: ( *( "," ) [ *( "," ) ] )
+/ "0"
+
+The JOIN command is used by a user to request to start listening to
+the specific channel. Servers MUST be able to parse arguments in the
+form of a list of target, but SHOULD NOT use lists when sending JOIN
+messages to clients.
+
+Once a user has joined a channel, he receives information about
+all commands his server receives affecting the channel. This
+includes JOIN, MODE, KICK, PART, QUIT and of course PRIVMSG/NOTICE.
+This allows channel members to keep track of the other channel
+members, as well as channel modes.
+
+If a JOIN is successful, the user receives a JOIN message as
+confirmation and is then sent the channel's topic (using RPL_TOPIC) and
+the list of users who are on the channel (using RPL_NAMREPLY), which
+MUST include the user joining.
+
+Note that this message accepts a special argument ("0"), which is
+a special request to leave all channels the user is currently a member
+of. The server will process this message as if the user had sent
+a PART command (See Section 3.2.2) for each channel he is a member
+of.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_BANNEDFROMCHAN
+ ERR_INVITEONLYCHAN ERR_BADCHANNELKEY
+ ERR_CHANNELISFULL ERR_BADCHANMASK
+ ERR_NOSUCHCHANNEL ERR_TOOMANYCHANNELS
+ ERR_TOOMANYTARGETS ERR_UNAVAILRESOURCE
+ RPL_TOPIC
+
+ Examples:
+
+ JOIN #foobar ; Command to join channel #foobar.
+
+ JOIN &foo fubar ; Command to join channel &foo using
+ key "fubar".
+
+ JOIN #foo,&bar fubar ; Command to join channel #foo using
+ key "fubar" and &bar using no key.
+
+ JOIN #foo,#bar fubar,foobar ; Command to join channel #foo using
+ key "fubar", and channel #bar using
+ key "foobar".
+
+ JOIN #foo,#bar ; Command to join channels #foo and
+ #bar.
+
+ JOIN 0 ; Leave all currently joined
+ channels.
+
+ :WiZ!jto@tolsun.oulu.fi JOIN #Twilight_zone ; JOIN message from WiZ
+ on channel #Twilight_zone
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.2 Part message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PART
+Parameters: *( "," ) [ ]
+
+The PART command causes the user sending the message to be removed
+from the list of active members for all given channels listed in the
+parameter string. If a "Part Message" is given, this will be sent
+instead of the default message, the nickname. This request is always
+granted by the server.
+
+Servers MUST be able to parse arguments in the form of a list of
+target, but SHOULD NOT use lists when sending PART messages to
+clients.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL
+ ERR_NOTONCHANNEL
+
+ Examples:
+
+ PART #twilight_zone ; Command to leave channel
+ "#twilight_zone"
+
+ PART #oz-ops,&group5 ; Command to leave both channels
+ "&group5" and "#oz-ops".
+
+ :WiZ!jto@tolsun.oulu.fi PART #playzone :I lost
+ ; User WiZ leaving channel
+ "#playzone" with the message "I
+ lost".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.3 Channel mode message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: MODE
+Parameters: *( ( "-" / "+" ) * * )
+
+The MODE command is provided so that users may query and change the
+characteristics of a channel. For more details on available modes
+and their uses, see "Internet Relay Chat: Channel Management" [IRC-
+CHAN]. Note that there is a maximum limit of three (3) changes per
+command for modes that take a parameter.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_KEYSET
+ ERR_NOCHANMODES ERR_CHANOPRIVSNEEDED
+ ERR_USERNOTINCHANNEL ERR_UNKNOWNMODE
+ RPL_CHANNELMODEIS
+ RPL_BANLIST RPL_ENDOFBANLIST
+ RPL_EXCEPTLIST RPL_ENDOFEXCEPTLIST
+ RPL_INVITELIST RPL_ENDOFINVITELIST
+ RPL_UNIQOPIS
+
+ The following examples are given to help understanding the syntax of
+ the MODE command, but refer to modes defined in "Internet Relay Chat:
+ Channel Management" [IRC-CHAN].
+
+ Examples:
+
+ MODE #Finnish +imI *!*@*.fi ; Command to make #Finnish channel
+ moderated and 'invite-only' with user
+ with a hostname matching *.fi
+ automatically invited.
+
+ MODE #Finnish +o Kilroy ; Command to give 'chanop' privileges
+ to Kilroy on channel #Finnish.
+
+ MODE #Finnish +v Wiz ; Command to allow WiZ to speak on
+ #Finnish.
+
+ MODE #Fins -s ; Command to remove 'secret' flag
+ from channel #Fins.
+
+ MODE #42 +k oulu ; Command to set the channel key to
+ "oulu".
+
+ MODE #42 -k oulu ; Command to remove the "oulu"
+ channel key on channel "#42".
+
+ MODE #eu-opers +l 10 ; Command to set the limit for the
+ number of users on channel
+ "#eu-opers" to 10.
+
+ :WiZ!jto@tolsun.oulu.fi MODE #eu-opers -l
+ ; User "WiZ" removing the limit for
+ the number of users on channel "#eu-
+ opers".
+
+ MODE &oulu +b ; Command to list ban masks set for
+ the channel "&oulu".
+
+ MODE &oulu +b *!*@* ; Command to prevent all users from
+ joining.
+
+ MODE &oulu +b *!*@*.edu +e *!*@*.bu.edu
+ ; Command to prevent any user from a
+ hostname matching *.edu from joining,
+ except if matching *.bu.edu
+
+ MODE #bu +be *!*@*.edu *!*@*.bu.edu
+ ; Comment to prevent any user from a
+ hostname matching *.edu from joining,
+ except if matching *.bu.edu
+
+ MODE #meditation e ; Command to list exception masks set
+ for the channel "#meditation".
+
+ MODE #meditation I ; Command to list invitations masks
+ set for the channel "#meditation".
+
+ MODE !12345ircd O ; Command to ask who the channel
+ creator for "!12345ircd" is
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.4 Topic message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: TOPIC
+Parameters: [ ]
+
+The TOPIC command is used to change or view the topic of a channel.
+The topic for channel is returned if there is no
+given. If the parameter is present, the topic for that
+channel will be changed, if this action is allowed for the user
+requesting it. If the parameter is an empty string, the
+topic for that channel will be removed.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOTONCHANNEL
+ RPL_NOTOPIC RPL_TOPIC
+ ERR_CHANOPRIVSNEEDED ERR_NOCHANMODES
+
+ Examples:
+
+ :WiZ!jto@tolsun.oulu.fi TOPIC #test :New topic ; User Wiz setting the
+ topic.
+
+ TOPIC #test :another topic ; Command to set the topic on #test
+ to "another topic".
+
+ TOPIC #test : ; Command to clear the topic on
+ #test.
+
+ TOPIC #test ; Command to check the topic for
+ #test.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.5 Names message[/b]
+
+Command: NAMES
+Parameters: [ *( "," ) [ ] ]
+
+By using the NAMES command, a user can list all nicknames that are
+visible to him. For more details on what is visible and what is not,
+see "Internet Relay Chat: Channel Management" [IRC-CHAN]. The
+ parameter specifies which channel(s) to return information
+about. There is no error reply for bad channel names.
+
+If no parameter is given, a list of all channels and their
+occupants is returned. At the end of this list, a list of users who
+are visible but either not on any channel or not on a visible channel
+are listed as being on `channel' "*".
+
+If the parameter is specified, the request is forwarded to
+that server which will generate the reply.
+
+Wildcards are allowed in the parameter.
+
+ Numerics:
+
+ ERR_TOOMANYMATCHES ERR_NOSUCHSERVER
+ RPL_NAMREPLY RPL_ENDOFNAMES
+
+ Examples:
+
+ NAMES #twilight_zone,#42 ; Command to list visible users on
+ #twilight_zone and #42
+
+ NAMES ; Command to list all visible
+ channels and users
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.6 List message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: LIST
+Parameters: [ *( "," ) [ ] ]
+
+The list command is used to list channels and their topics. If the
+ parameter is used, only the status of that channel is
+displayed.
+
+If the parameter is specified, the request is forwarded to
+that server which will generate the reply.
+
+Wildcards are allowed in the parameter.
+
+ Numeric Replies:
+
+ ERR_TOOMANYMATCHES ERR_NOSUCHSERVER
+ RPL_LIST RPL_LISTEND
+
+ Examples:
+
+ LIST ; Command to list all channels.
+
+ LIST #twilight_zone,#42 ; Command to list channels
+ #twilight_zone and #42
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.7 Invite message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: INVITE
+Parameters:
+
+The INVITE command is used to invite a user to a channel. The
+parameter is the nickname of the person to be invited to
+the target channel . There is no requirement that the
+channel the target user is being invited to must exist or be a valid
+channel. However, if the channel exists, only members of the channel
+are allowed to invite other users. When the channel has invite-only
+flag set, only channel operators may issue INVITE command.
+Only the user inviting and the user being invited will receive
+notification of the invitation. Other channel members are not
+notified. (This is unlike the MODE changes, and is occasionally the
+source of trouble for users.)
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHNICK
+ ERR_NOTONCHANNEL ERR_USERONCHANNEL
+ ERR_CHANOPRIVSNEEDED
+ RPL_INVITING RPL_AWAY
+
+ Examples:
+
+ :Angel!wings@irc.org INVITE Wiz #Dust
+
+ ; Message to WiZ when he has been
+ invited by user Angel to channel
+ #Dust
+
+ INVITE Wiz #Twilight_Zone ; Command to invite WiZ to
+ #Twilight_zone
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.8 Kick command[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: KICK
+Parameters: *( "," ) *( "," )
+[]
+
+The KICK command can be used to request the forced removal of a user
+from a channel. It causes the to PART from the by
+force. For the message to be syntactically correct, there MUST be
+either one channel parameter and multiple user parameter, or as many
+channel parameters as there are user parameters. If a "comment" is
+given, this will be sent instead of the default message, the nickname
+of the user issuing the KICK.
+
+The server MUST NOT send KICK messages with multiple channels or
+users to clients. This is necessarily to maintain backward
+compatibility with old client software.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL
+ ERR_BADCHANMASK ERR_CHANOPRIVSNEEDED
+ ERR_USERNOTINCHANNEL ERR_NOTONCHANNEL
+
+ Examples:
+
+ KICK &Melbourne Matthew ; Command to kick Matthew from
+ &Melbourne
+
+ KICK #Finnish John :Speaking English
+ ; Command to kick John from #Finnish
+ using "Speaking English" as the
+ reason (comment).
+
+ :WiZ!jto@tolsun.oulu.fi KICK #Finnish John
+ ; KICK message on channel #Finnish
+ from WiZ to remove John from channel
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.3 Sending messages[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+The main purpose of the IRC protocol is to provide a base for clients
+to communicate with each other. PRIVMSG, NOTICE and SQUERY
+(described in Section 3.5 on Service Query and Commands) are the only
+messages available which actually perform delivery of a text message
+from one client to another - the rest just make it possible and try
+to ensure it happens in a reliable and structured manner.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.3.1 Private messages[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PRIVMSG
+Parameters:
+
+PRIVMSG is used to send private messages between users, as well as to
+send messages to channels. is usually the nickname of
+the recipient of the message, or a channel name.
+
+The parameter may also be a host mask (#) or server
+mask ($). In both cases the server will only send the PRIVMSG
+to those who have a server or host matching the mask. The mask MUST
+have at least 1 (one) "." in it and no wildcards following the last
+".". This requirement exists to prevent people sending messages to
+"#*" or "$*", which would broadcast to all users. Wildcards are the
+'*' and '?' characters. This extension to the PRIVMSG command is
+only available to operators.
+
+ Numeric Replies:
+
+ ERR_NORECIPIENT ERR_NOTEXTTOSEND
+ ERR_CANNOTSENDTOCHAN ERR_NOTOPLEVEL
+ ERR_WILDTOPLEVEL ERR_TOOMANYTARGETS
+ ERR_NOSUCHNICK
+ RPL_AWAY
+
+ Examples:
+
+ :Angel!wings@irc.org PRIVMSG Wiz :Are you receiving this message ?
+ ; Message from Angel to Wiz.
+
+ PRIVMSG Angel :yes I'm receiving it !
+ ; Command to send a message to Angel.
+
+ PRIVMSG jto@tolsun.oulu.fi :Hello !
+ ; Command to send a message to a user
+ on server tolsun.oulu.fi with
+ username of "jto".
+
+ PRIVMSG kalt%millennium.stealth.net@irc.stealth.net :Are you a frog?
+ ; Message to a user on server
+ irc.stealth.net with username of
+ "kalt", and connected from the host
+ millennium.stealth.net.
+
+ PRIVMSG kalt%millennium.stealth.net :Do you like cheese?
+ ; Message to a user on the local
+ server with username of "kalt", and
+ connected from the host
+ millennium.stealth.net.
+
+ PRIVMSG Wiz!jto@tolsun.oulu.fi :Hello !
+ ; Message to the user with nickname
+ Wiz who is connected from the host
+ tolsun.oulu.fi and has the username
+ "jto".
+
+ PRIVMSG $*.fi :Server tolsun.oulu.fi rebooting.
+ ; Message to everyone on a server
+ which has a name matching *.fi.
+
+ PRIVMSG #*.edu :NSFNet is undergoing work, expect interruptions
+ ; Message to all users who come from
+ a host which has a name matching
+ *.edu.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.3.2 Notice[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: NOTICE
+Parameters:
+
+The NOTICE command is used similarly to PRIVMSG. The difference
+between NOTICE and PRIVMSG is that automatic replies MUST NEVER be
+sent in response to a NOTICE message. This rule applies to servers
+too - they MUST NOT send any error reply back to the client on
+receipt of a notice. The object of this rule is to avoid loops
+between clients automatically sending something in response to
+something it received.
+
+This command is available to services as well as users.
+
+This is typically used by services, and automatons (clients with
+either an AI or other interactive program controlling their actions).
+
+See PRIVMSG for more details on replies and examples.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4 Server queries and commands[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+The server query group of commands has been designed to return
+information about any server which is connected to the network.
+
+In these queries, where a parameter appears as , wildcard
+masks are usually valid. For each parameter, however, only one query
+and set of replies is to be generated. In most cases, if a nickname
+is given, it will mean the server to which the user is connected.
+
+These messages typically have little value for services, it is
+therefore RECOMMENDED to forbid services from using them.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.1 Motd message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: MOTD
+Parameters: [ ]
+
+The MOTD command is used to get the "Message Of The Day" of the given
+server, or current server if is omitted.
+
+Wildcards are allowed in the parameter.
+
+ Numeric Replies:
+ RPL_MOTDSTART RPL_MOTD
+ RPL_ENDOFMOTD ERR_NOMOTD
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.2 Lusers message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: LUSERS
+Parameters: [ [ ] ]
+
+The LUSERS command is used to get statistics about the size of the
+IRC network. If no parameter is given, the reply will be about the
+whole net. If a is specified, then the reply will only
+concern the part of the network formed by the servers matching the
+mask. Finally, if the parameter is specified, the request
+is forwarded to that server which will generate the reply.
+
+Wildcards are allowed in the parameter.
+
+ Numeric Replies:
+
+ RPL_LUSERCLIENT RPL_LUSEROP
+ RPL_LUSERUNKOWN RPL_LUSERCHANNELS
+ RPL_LUSERME ERR_NOSUCHSERVER
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.3 Version message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: VERSION
+Parameters: [ ]
+
+The VERSION command is used to query the version of the server
+program. An optional parameter is used to query the version
+of the server program which a client is not directly connected to.
+
+Wildcards are allowed in the parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER RPL_VERSION
+
+ Examples:
+
+ VERSION tolsun.oulu.fi ; Command to check the version of
+ server "tolsun.oulu.fi".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.4 Stats message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: STATS
+Parameters: [ [ ] ]
+
+The stats command is used to query statistics of certain server. If
+ parameter is omitted, only the end of stats reply is sent
+back.
+
+A query may be given for any single letter which is only checked by
+the destination server and is otherwise passed on by intermediate
+servers, ignored and unaltered.
+
+Wildcards are allowed in the parameter.
+Except for the ones below, the list of valid queries is
+implementation dependent. The standard queries below SHOULD be
+supported by the server:
+
+ l - returns a list of the server's connections, showing how
+ long each connection has been established and the
+ traffic over that connection in Kbytes and messages for
+ each direction;
+ m - returns the usage count for each of commands supported
+ by the server; commands for which the usage count is
+ zero MAY be omitted;
+ o - returns a list of configured privileged users,
+ operators;
+ u - returns a string showing how long the server has been
+ up.
+
+It is also RECOMMENDED that client and server access configuration be
+published this way.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_STATSLINKINFO RPL_STATSUPTIME
+ RPL_STATSCOMMANDS RPL_STATSOLINE
+ RPL_ENDOFSTATS
+
+ Examples:
+
+ STATS m ; Command to check the command usage
+ for the server you are connected to
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.5 Links message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: LINKS
+Parameters: [ [ ] ]
+
+With LINKS, a user can list all servernames, which are known by the
+server answering the query. The returned list of servers MUST match
+the mask, or if no mask is given, the full list is returned.
+
+If is given in addition to , the LINKS
+command is forwarded to the first server found that matches that name
+(if any), and that server is then required to answer the query.
+
+Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_LINKSRPL_ENDOFLINKS
+
+Examples:
+
+LINKS *.au ; Command to list all servers which
+ have a name that matches *.au;
+
+LINKS *.edu *.bu.edu; Command to list servers matching
+ *.bu.edu as seen by the first server
+ matching *.edu.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.6 Time message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: TIME
+Parameters: [ ]
+
+The time command is used to query local time from the specified
+server. If the parameter is not given, the server receiving
+the command must reply to the query.
+
+Wildcards are allowed in the parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER RPL_TIME
+
+ Examples:
+ TIME tolsun.oulu.fi ; check the time on the server
+ "tolson.oulu.fi"
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.7 Connect message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: CONNECT
+Parameters: [ ]
+
+The CONNECT command can be used to request a server to try to
+establish a new connection to another server immediately. CONNECT is
+a privileged command and SHOULD be available only to IRC Operators.
+If a is given and its mask doesn't match name of the
+parsing server, the CONNECT attempt is sent to the first match of
+remote server. Otherwise the CONNECT attempt is made by the server
+processing the request.
+
+The server receiving a remote CONNECT command SHOULD generate a
+WALLOPS message describing the source and target of the request.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_NOPRIVILEGES
+ ERR_NEEDMOREPARAMS
+
+ Examples:
+
+ CONNECT tolsun.oulu.fi 6667 ; Command to attempt to connect local
+ server to tolsun.oulu.fi on port 6667
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.8 Trace message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: TRACE
+Parameters: [ ]
+
+TRACE command is used to find the route to specific server and
+information about its peers. Each server that processes this command
+MUST report to the sender about it. The replies from pass-through
+links form a chain, which shows route to destination. After sending
+this reply back, the query MUST be sent to the next server until
+given server is reached.
+
+TRACE command is used to find the route to specific server. Each
+server that processes this message MUST tell the sender about it by
+sending a reply indicating it is a pass-through link, forming a chain
+of replies. After sending this reply back, it MUST then send the
+TRACE message to the next server until given server is reached. If
+the parameter is omitted, it is RECOMMENDED that TRACE
+command sends a message to the sender telling which servers the local
+server has direct connection to.
+
+If the destination given by is an actual server, the
+destination server is REQUIRED to report all servers, services and
+operators which are connected to it; if the command was issued by an
+operator, the server MAY also report all users which are connected to
+it. If the destination given by is a nickname, then only a
+reply for that nickname is given. If the parameter is
+omitted, it is RECOMMENDED that the TRACE command is parsed as
+targeted to the processing server.
+
+Wildcards are allowed in the parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+
+ If the TRACE message is destined for another server, all
+ intermediate servers must return a RPL_TRACELINK reply to indicate
+ that the TRACE passed through it and where it is going next.
+
+ RPL_TRACELINK
+
+ A TRACE reply may be composed of any number of the following
+ numeric replies.
+
+ RPL_TRACECONNECTING RPL_TRACEHANDSHAKE
+ RPL_TRACEUNKNOWN RPL_TRACEOPERATOR
+ RPL_TRACEUSER RPL_TRACESERVER
+ RPL_TRACESERVICE RPL_TRACENEWTYPE
+ RPL_TRACECLASS RPL_TRACELOG
+ RPL_TRACEEND
+
+ Examples:
+
+ TRACE *.oulu.fi ; TRACE to a server matching
+ *.oulu.fi
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.9 Admin command[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: ADMIN
+Parameters: [ ]
+
+The admin command is used to find information about the administrator
+of the given server, or current server if parameter is
+omitted. Each server MUST have the ability to forward ADMIN messages
+to other servers.
+
+Wildcards are allowed in the parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_ADMINME RPL_ADMINLOC1
+ RPL_ADMINLOC2 RPL_ADMINEMAIL
+
+ Examples:
+
+ ADMIN tolsun.oulu.fi ; request an ADMIN reply from
+ tolsun.oulu.fi
+
+ ADMIN syrk ; ADMIN request for the server to
+ which the user syrk is connected
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.10 Info command[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: INFO
+Parameters: [ ]
+
+The INFO command is REQUIRED to return information describing the
+server: its version, when it was compiled, the patchlevel, when it
+was started, and any other miscellaneous information which may be
+considered to be relevant.
+
+Wildcards are allowed in the parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_INFO RPL_ENDOFINFO
+
+ Examples:
+
+ INFO csd.bu.edu ; request an INFO reply from
+ csd.bu.edu
+
+ INFO Angel ; request info from the server that
+ Angel is connected to.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.5 Service Query and Commands[/b]
+[/pre][/td][/tr]
+[tr][td][pre]
+The service query group of commands has been designed to return
+information about any service which is connected to the network.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.5.1 Servlist message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SERVLIST
+Parameters: [ [ ] ]
+
+The SERVLIST command is used to list services currently connected to
+the network and visible to the user issuing the command. The
+optional parameters may be used to restrict the result of the query
+(to matching services names, and services type).
+
+ Numeric Replies:
+
+ RPL_SERVLIST RPL_SERVLISTEND
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.5.2 Squery[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SQUERY
+Parameters:
+
+The SQUERY command is used similarly to PRIVMSG. The only difference
+is that the recipient MUST be a service. This is the only way for a
+text message to be delivered to a service.
+
+See PRIVMSG for more details on replies and example.
+
+ Examples:
+
+ SQUERY irchelp :HELP privmsg
+ ; Message to the service with
+ nickname irchelp.
+
+ SQUERY dict@irc.fr :fr2en blaireau
+ ; Message to the service with name
+ dict@irc.fr.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6 User based queries[/b]
+[/pre][/td][/tr]
+[tr][td][pre]
+User queries are a group of commands which are primarily concerned
+with finding details on a particular user or group users. When using
+wildcards with any of these commands, if they match, they will only
+return information on users who are 'visible' to you. The visibility
+of a user is determined as a combination of the user's mode and the
+common set of channels you are both on.
+
+Although services SHOULD NOT be using this class of message, they are
+allowed to.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6.1 Who query[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: WHO
+Parameters: [ [ "o" ] ]
+
+The WHO command is used by a client to generate a query which returns
+a list of information which 'matches' the parameter given by
+the client. In the absence of the parameter, all visible
+(users who aren't invisible (user mode +i) and who don't have a
+common channel with the requesting client) are listed. The same
+result can be achieved by using a of "0" or any wildcard which
+will end up matching every visible user.
+
+The passed to WHO is matched against users' host, server, real
+name and nickname if the channel cannot be found.
+If the "o" parameter is passed only operators are returned according
+to the supplied.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_WHOREPLY RPL_ENDOFWHO
+
+ Examples:
+
+ WHO *.fi ; Command to list all users who match
+ against "*.fi".
+
+ WHO jto* o ; Command to list all users with a
+ match against "jto*" if they are an
+ operator.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6.2 Whois query[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: WHOIS
+Parameters: [ ] *( "," )
+
+This command is used to query information about particular user.
+The server will answer this command with several numeric messages
+indicating different statuses of each user which matches the mask (if
+you are entitled to see them). If no wildcard is present in the
+, any information about that nick which you are allowed to see
+is presented.
+
+If the parameter is specified, it sends the query to a
+specific server. It is useful if you want to know how long the user
+in question has been idle as only local server (i.e., the server the
+user is directly connected to) knows that information, while
+everything else is globally known.
+
+Wildcards are allowed in the parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_NONICKNAMEGIVEN
+ RPL_WHOISUSER RPL_WHOISCHANNELS
+ RPL_WHOISCHANNELS RPL_WHOISSERVER
+ RPL_AWAY RPL_WHOISOPERATOR
+ RPL_WHOISIDLE ERR_NOSUCHNICK
+ RPL_ENDOFWHOIS
+
+ Examples:
+
+ WHOIS wiz ; return available user information
+ about nick WiZ
+
+ WHOIS eff.org trillian ; ask server eff.org for user
+ information about trillian
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6.3 Whowas[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: WHOWAS
+Parameters: *( "," ) [ [ ] ]
+
+Whowas asks for information about a nickname which no longer exists.
+This may either be due to a nickname change or the user leaving IRC.
+In response to this query, the server searches through its nickname
+history, looking for any nicks which are lexically the same (no wild
+card matching here). The history is searched backward, returning the
+most recent entry first. If there are multiple entries, up to
+ replies will be returned (or all of them if no
+parameter is given). If a non-positive number is passed as being
+, then a full search is done.
+
+Wildcards are allowed in the parameter.
+
+ Numeric Replies:
+
+ ERR_NONICKNAMEGIVEN ERR_WASNOSUCHNICK
+ RPL_WHOWASUSER RPL_WHOISSERVER
+ RPL_ENDOFWHOWAS
+
+ Examples:
+
+ WHOWAS Wiz ; return all information in the nick
+ history about nick "WiZ";
+
+ WHOWAS Mermaid 9 ; return at most, the 9 most recent
+ entries in the nick history for
+ "Mermaid";
+
+ WHOWAS Trillian 1 *.edu ; return the most recent history for
+ "Trillian" from the first server
+ found to match "*.edu".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7 Miscellaneous messages[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Messages in this category do not fit into any of the above categories
+but are nonetheless still a part of and REQUIRED by the protocol.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.1 Kill message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: KILL
+Parameters:
+
+The KILL command is used to cause a client-server connection to be
+closed by the server which has the actual connection. Servers
+generate KILL messages on nickname collisions. It MAY also be
+available available to users who have the operator status.
+
+Clients which have automatic reconnect algorithms effectively make
+this command useless since the disconnection is only brief. It does
+however break the flow of data and can be used to stop large amounts
+of 'flooding' from abusive users or accidents. Abusive users usually
+don't care as they will reconnect promptly and resume their abusive
+behaviour. To prevent this command from being abused, any user may
+elect to receive KILL messages generated for others to keep an 'eye'
+on would be trouble spots.
+
+In an arena where nicknames are REQUIRED to be globally unique at all
+times, KILL messages are sent whenever 'duplicates' are detected
+(that is an attempt to register two users with the same nickname) in
+the hope that both of them will disappear and only 1 reappear.
+
+When a client is removed as the result of a KILL message, the server
+SHOULD add the nickname to the list of unavailable nicknames in an
+attempt to avoid clients to reuse this name immediately which is
+usually the pattern of abusive behaviour often leading to useless
+"KILL loops". See the "IRC Server Protocol" document [IRC-SERVER]
+for more information on this procedure.
+
+The comment given MUST reflect the actual reason for the KILL. For
+server-generated KILLs it usually is made up of details concerning
+the origins of the two conflicting nicknames. For users it is left
+up to them to provide an adequate reason to satisfy others who see
+it. To prevent/discourage fake KILLs from being generated to hide
+the identify of the KILLer, the comment also shows a 'kill-path'
+which is updated by each server it passes through, each prepending
+its name to the path.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES ERR_NEEDMOREPARAMS
+ ERR_NOSUCHNICK ERR_CANTKILLSERVER
+
+NOTE:
+It is RECOMMENDED that only Operators be allowed to kill other users
+with KILL command. This command has been the subject of many
+controversies over the years, and along with the above
+recommendation, it is also widely recognized that not even operators
+should be allowed to kill users on remote servers.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.2 Ping message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PING
+Parameters: [ ]
+
+The PING command is used to test the presence of an active client or
+server at the other end of the connection. Servers send a PING
+message at regular intervals if no other activity detected coming
+from a connection. If a connection fails to respond to a PING
+message within a set amount of time, that connection is closed. A
+PING message MAY be sent even if the connection is active.
+
+When a PING message is received, the appropriate PONG message MUST be
+sent as reply to (server which sent the PING message out)
+as soon as possible. If the parameter is specified, it
+represents the target of the ping, and the message gets forwarded
+there.
+
+ Numeric Replies:
+
+ ERR_NOORIGIN ERR_NOSUCHSERVER
+
+ Examples:
+
+ PING tolsun.oulu.fi ; Command to send a PING message to
+ server
+
+ PING WiZ tolsun.oulu.fi ; Command from WiZ to send a PING
+ message to server "tolsun.oulu.fi"
+
+ PING :irc.funet.fi ; Ping message sent by server
+ "irc.funet.fi"
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.3 Pong message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PONG
+Parameters: [ ]
+
+PONG message is a reply to ping message. If parameter is
+given, this message MUST be forwarded to given target. The
+parameter is the name of the entity who has responded to PING message
+and generated this message.
+
+ Numeric Replies:
+
+ ERR_NOORIGIN ERR_NOSUCHSERVER
+
+ Example:
+
+ PONG csd.bu.edu tolsun.oulu.fi ; PONG message from csd.bu.edu to
+ tolsun.oulu.fi
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.4 Error[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: ERROR
+Parameters:
+
+The ERROR command is for use by servers when reporting a serious or
+fatal error to its peers. It may also be sent from one server to
+another but MUST NOT be accepted from any normal unknown clients.
+
+Only an ERROR message SHOULD be used for reporting errors which occur
+with a server-to-server link. An ERROR message is sent to the server
+at the other end (which reports it to appropriate local users and
+logs) and to appropriate local users and logs. It is not to be
+passed onto any other servers by a server if it is received from a
+server.
+
+The ERROR message is also used before terminating a client
+connection.
+
+When a server sends a received ERROR message to its operators, the
+message SHOULD be encapsulated inside a NOTICE message, indicating
+that the client was not responsible for the error.
+
+ Numerics:
+
+ None.
+
+ Examples:
+
+ ERROR :Server *.fi already exists ; ERROR message to the other server
+ which caused this error.
+
+ NOTICE WiZ :ERROR from csd.bu.edu -- Server *.fi already exists
+ ; Same ERROR message as above but
+ sent to user WiZ on the other server.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4. Optional features[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+This section describes OPTIONAL messages. They are not required in a
+working server implementation of the protocol described herein. In
+the absence of the feature, an error reply message MUST be generated
+or an unknown command error. If the message is destined for another
+server to answer then it MUST be passed on (elementary parsing
+REQUIRED) The allocated numerics for this are listed with the
+messages below.
+
+From this section, only the USERHOST and ISON messages are available
+to services.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.1 Away[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: AWAY
+Parameters: [ ]
+
+With the AWAY command, clients can set an automatic reply string for
+any PRIVMSG commands directed at them (not to a channel they are on).
+The server sends an automatic reply to the client sending the PRIVMSG
+command. The only replying server is the one to which the sending
+client is connected to.
+
+The AWAY command is used either with one parameter, to set an AWAY
+message, or with no parameters, to remove the AWAY message.
+
+Because of its high cost (memory and bandwidth wise), the AWAY
+message SHOULD only be used for client-server communication. A
+server MAY choose to silently ignore AWAY messages received from
+other servers. To update the away status of a client across servers,
+the user mode 'a' SHOULD be used instead. (See Section 3.1.5)
+
+ Numeric Replies:
+
+ RPL_UNAWAY RPL_NOWAWAY
+
+ Example:
+
+ AWAY :Gone to lunch. Back in 5 ; Command to set away message to
+ "Gone to lunch. Back in 5".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.2 Rehash message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: REHASH
+Parameters: None
+
+The rehash command is an administrative command which can be used by
+an operator to force the server to re-read and process its
+configuration file.
+
+ Numeric Replies:
+
+ RPL_REHASHING ERR_NOPRIVILEGES
+
+
+ Example:
+
+ REHASH ; message from user with operator
+ status to server asking it to reread
+ its configuration file.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.3 Die message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: DIE
+Parameters: None
+
+An operator can use the DIE command to shutdown the server. This
+message is optional since it may be viewed as a risk to allow
+arbitrary people to connect to a server as an operator and execute
+this command.
+
+The DIE command MUST always be fully processed by the server to which
+the sending client is connected and MUST NOT be passed onto other
+connected servers.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES
+
+ Example:
+
+ DIE ; no parameters required.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.4 Restart message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: RESTART
+Parameters: None
+
+An operator can use the restart command to force the server to
+restart itself. This message is optional since it may be viewed as a
+risk to allow arbitrary people to connect to a server as an operator
+and execute this command, causing (at least) a disruption to service.
+
+The RESTART command MUST always be fully processed by the server to
+which the sending client is connected and MUST NOT be passed onto
+other connected servers.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES
+
+ Example:
+
+ RESTART ; no parameters required.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.5 Summon message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SUMMON
+Parameters: [ [ ] ]
+
+The SUMMON command can be used to give users who are on a host
+running an IRC server a message asking them to please join IRC. This
+message is only sent if the target server (a) has SUMMON enabled, (b)
+the user is logged in and (c) the server process can write to the
+user's tty (or similar).
+
+If no parameter is given it tries to summon from the
+server the client is connected to is assumed as the target.
+
+If summon is not enabled in a server, it MUST return the
+ERR_SUMMONDISABLED numeric.
+
+ Numeric Replies:
+
+ ERR_NORECIPIENT ERR_FILEERROR
+ ERR_NOLOGIN ERR_NOSUCHSERVER
+ ERR_SUMMONDISABLED RPL_SUMMONING
+
+ Examples:
+
+ SUMMON jto ; summon user jto on the server's
+ host
+
+ SUMMON jto tolsun.oulu.fi ; summon user jto on the host which a
+ server named "tolsun.oulu.fi" is
+ running.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.6 Users[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: USERS
+Parameters: [ ]
+
+The USERS command returns a list of users logged into the server in a
+format similar to the UNIX commands who(1), rusers(1) and finger(1).
+If disabled, the correct numeric MUST be returned to indicate this.
+
+Because of the security implications of such a command, it SHOULD be
+disabled by default in server implementations. Enabling it SHOULD
+require recompiling the server or some equivalent change rather than
+simply toggling an option and restarting the server. The procedure
+to enable this command SHOULD also include suitable large comments.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_FILEERROR
+ RPL_USERSSTART RPL_USERS
+ RPL_NOUSERS RPL_ENDOFUSERS
+ ERR_USERSDISABLED
+
+ Disabled Reply:
+
+ ERR_USERSDISABLED
+
+ Example:
+
+ USERS eff.org ; request a list of users logged in
+ on server eff.org
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.7 Operwall message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: WALLOPS
+Parameters:
+
+The WALLOPS command is used to send a message to all currently
+connected users who have set the 'w' user mode for themselves. (See
+Section 3.1.5 "User modes").
+After implementing WALLOPS as a user command it was found that it was
+often and commonly abused as a means of sending a message to a lot of
+people. Due to this, it is RECOMMENDED that the implementation of
+WALLOPS allows and recognizes only servers as the originators of
+WALLOPS.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS
+
+ Example:
+
+ :csd.bu.edu WALLOPS :Connect '*.uiuc.edu 6667' from Joshua ; WALLOPS
+ message from csd.bu.edu announcing a
+ CONNECT message it received from
+ Joshua and acted upon.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.8 Userhost message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: USERHOST
+Parameters: *( SPACE )
+
+The USERHOST command takes a list of up to 5 nicknames, each
+separated by a space character and returns a list of information
+about each nickname that it found. The returned list has each reply
+separated by a space.
+
+ Numeric Replies:
+
+ RPL_USERHOST ERR_NEEDMOREPARAMS
+
+ Example:
+
+ USERHOST Wiz Michael syrk ; USERHOST request for information on
+ nicks "Wiz", "Michael", and "syrk"
+
+ :ircd.stealth.net 302 yournick :syrk=+syrk@millennium.stealth.net
+ ; Reply for user syrk
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.9 Ison message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: ISON
+Parameters: *( SPACE )
+
+The ISON command was implemented to provide a quick and efficient
+means to get a response about whether a given nickname was currently
+on IRC. ISON only takes one (1) type of parameter: a space-separated
+list of nicks. For each nickname in the list that is present, the
+server adds that to its reply string. Thus the reply string may
+return empty (none of the given nicks are present), an exact copy of
+the parameter string (all of them present) or any other subset of the
+set of nicks given in the parameter. The only limit on the number of
+nicks that may be checked is that the combined length MUST NOT be too
+large as to cause the server to chop it off so it fits in 512
+characters.
+
+ISON is only processed by the server local to the client sending the
+command and thus not passed onto other servers for further
+processing.
+
+ Numeric Replies:
+
+ RPL_ISON ERR_NEEDMOREPARAMS
+
+ Example:
+
+ ISON phone trillian WiZ jarlek Avalon Angel Monstah syrk
+ ; Sample ISON request for 7 nicks.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]5. Replies[/b]
+[/td][/tr]
+
+[tr][td]
+The following is a list of numeric replies which are generated in
+response to the commands given above. Each numeric is given with its
+number, name and reply string.
+[/td][/tr]
+
+[tr][td]
+[b]5.1 Command responses[/b]
+[/td][/tr]
+
+[tr][td]
+Numerics in the range from 001 to 099 are used for client-server
+connections only and should never travel between servers. Replies
+generated in the response to commands are found in the range from 200
+to 399.
+[p]
+[pre]
+ 001 RPL_WELCOME
+ "Welcome to the Internet Relay Network
+ !@"
+ 002 RPL_YOURHOST
+ "Your host is , running version "
+ 003 RPL_CREATED
+ "This server was created "
+ 004 RPL_MYINFO
+ "
+ "
+
+ - The server sends Replies 001 to 004 to a user upon
+ successful registration.
+
+ 005 RPL_BOUNCE
+ "Try server , port "
+
+ - Sent by the server to a user to suggest an alternative
+ server. This is often used when the connection is
+ refused because the server is already full.
+
+ 302 RPL_USERHOST
+ ":*1 *( " " )"
+
+ - Reply format used by USERHOST to list replies to
+ the query list. The reply string is composed as
+ follows:
+
+ reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname
+
+ The '*' indicates whether the client has registered
+ as an Operator. The '-' or '+' characters represent
+ whether the client has set an AWAY message or not
+ respectively.
+
+ 303 RPL_ISON
+ ":*1 *( " " )"
+
+ - Reply format used by ISON to list replies to the
+ query list.
+
+ 301 RPL_AWAY
+ " :"
+ 305 RPL_UNAWAY
+ ":You are no longer marked as being away"
+ 306 RPL_NOWAWAY
+ ":You have been marked as being away"
+
+ - These replies are used with the AWAY command (if
+ allowed). RPL_AWAY is sent to any client sending a
+ PRIVMSG to a client which is away. RPL_AWAY is only
+ sent by the server to which the client is connected.
+ Replies RPL_UNAWAY and RPL_NOWAWAY are sent when the
+ client removes and sets an AWAY message.
+
+ 311 RPL_WHOISUSER
+ " * :"
+ 312 RPL_WHOISSERVER
+ " :"
+ 313 RPL_WHOISOPERATOR
+ " :is an IRC operator
+ 317 RPL_WHOISIDLE
+ " :seconds idle"
+ 318 RPL_ENDOFWHOIS
+ " :End of WHOIS list"
+ 319 RPL_WHOISCHANNELS
+ " :*( ( "@" / "+" ) " " )"
+
+ - Replies 311 - 313, 317 - 319 are all replies
+ generated in response to a WHOIS message. Given that
+ there are enough parameters present, the answering
+ server MUST either formulate a reply out of the above
+ numerics (if the query nick is found) or return an
+ error reply. The '*' in RPL_WHOISUSER is there as
+ the literal character and not as a wild card. For
+ each reply set, only RPL_WHOISCHANNELS may appear
+ more than once (for long lists of channel names).
+ The '@' and '+' characters next to the channel name
+ indicate whether a client is a channel operator or
+ has been granted permission to speak on a moderated
+ channel. The RPL_ENDOFWHOIS reply is used to mark
+ the end of processing a WHOIS message.
+
+ 314 RPL_WHOWASUSER
+ " * :"
+ 369 RPL_ENDOFWHOWAS
+ " :End of WHOWAS"
+
+ - When replying to a WHOWAS message, a server MUST use
+ the replies RPL_WHOWASUSER, RPL_WHOISSERVER or
+ ERR_WASNOSUCHNICK for each nickname in the presented
+ list. At the end of all reply batches, there MUST
+ be RPL_ENDOFWHOWAS (even if there was only one reply
+ and it was an error).
+
+ 321 RPL_LISTSTART
+ Obsolete. Not used.
+
+ 322 RPL_LIST
+ " <# visible> :"
+ 323 RPL_LISTEND
+ ":End of LIST"
+
+ - Replies RPL_LIST, RPL_LISTEND mark the actual replies
+ with data and end of the server's response to a LIST
+ command. If there are no channels available to return,
+ only the end reply MUST be sent.
+
+ 325 RPL_UNIQOPIS
+ ""
+
+ 324 RPL_CHANNELMODEIS
+ ""
+
+ 331 RPL_NOTOPIC
+ " :No topic is set"
+ 332 RPL_TOPIC
+ " :"
+
+ - When sending a TOPIC message to determine the
+ channel topic, one of two replies is sent. If
+ the topic is set, RPL_TOPIC is sent back else
+ RPL_NOTOPIC.
+
+ 341 RPL_INVITING
+ ""
+
+ - Returned by the server to indicate that the
+ attempted INVITE message was successful and is
+ being passed onto the end client.
+
+ 342 RPL_SUMMONING
+ " :Summoning user to IRC"
+
+ - Returned by a server answering a SUMMON message to
+ indicate that it is summoning that user.
+
+ 346 RPL_INVITELIST
+ ""
+ 347 RPL_ENDOFINVITELIST
+ " :End of channel invite list"
+
+ - When listing the 'invitations masks' for a given channel,
+ a server is required to send the list back using the
+ RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A
+ separate RPL_INVITELIST is sent for each active mask.
+ After the masks have been listed (or if none present) a
+ RPL_ENDOFINVITELIST MUST be sent.
+
+ 348 RPL_EXCEPTLIST
+ ""
+ 349 RPL_ENDOFEXCEPTLIST
+ " :End of channel exception list"
+
+ - When listing the 'exception masks' for a given channel,
+ a server is required to send the list back using the
+ RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A
+ separate RPL_EXCEPTLIST is sent for each active mask.
+ After the masks have been listed (or if none present)
+ a RPL_ENDOFEXCEPTLIST MUST be sent.
+
+ 351 RPL_VERSION
+ ". :"
+
+ - Reply by the server showing its version details.
+ The is the version of the software being
+ used (including any patchlevel revisions) and the
+ is used to indicate if the server is
+ running in "debug mode".
+
+ The "comments" field may contain any comments about
+ the version or further version details.
+
+ 352 RPL_WHOREPLY
+ "
+ ( "H" / "G" > ["*"] [ ( "@" / "+" ) ]
+ :"
+
+ 315 RPL_ENDOFWHO
+ " :End of WHO list"
+
+ - The RPL_WHOREPLY and RPL_ENDOFWHO pair are used
+ to answer a WHO message. The RPL_WHOREPLY is only
+ sent if there is an appropriate match to the WHO
+ query. If there is a list of parameters supplied
+ with a WHO message, a RPL_ENDOFWHO MUST be sent
+ after processing each list item with being
+ the item.
+
+ 353 RPL_NAMREPLY
+ "( "=" / "*" / "@" )
+ :[ "@" / "+" ] *( " " [ "@" / "+" ] )
+ - "@" is used for secret channels, "*" for private
+ channels, and "=" for others (public channels).
+
+ 366 RPL_ENDOFNAMES
+ " :End of NAMES list"
+
+ - To reply to a NAMES message, a reply pair consisting
+ of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the
+ server back to the client. If there is no channel
+ found as in the query, then only RPL_ENDOFNAMES is
+ returned. The exception to this is when a NAMES
+ message is sent with no parameters and all visible
+ channels and contents are sent back in a series of
+ RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark
+ the end.
+
+ 364 RPL_LINKS
+ " :"
+ 365 RPL_ENDOFLINKS
+ " :End of LINKS list"
+
+ - In replying to the LINKS message, a server MUST send
+ replies back using the RPL_LINKS numeric and mark the
+ end of the list using an RPL_ENDOFLINKS reply.
+
+ 367 RPL_BANLIST
+ ""
+ 368 RPL_ENDOFBANLIST
+ " :End of channel ban list"
+
+ - When listing the active 'bans' for a given channel,
+ a server is required to send the list back using the
+ RPL_BANLIST and RPL_ENDOFBANLIST messages. A separate
+ RPL_BANLIST is sent for each active banmask. After the
+ banmasks have been listed (or if none present) a
+ RPL_ENDOFBANLIST MUST be sent.
+
+ 371 RPL_INFO
+ ":"
+ 374 RPL_ENDOFINFO
+ ":End of INFO list"
+
+ - A server responding to an INFO message is required to
+ send all its 'info' in a series of RPL_INFO messages
+ with a RPL_ENDOFINFO reply to indicate the end of the
+ replies.
+
+ 375 RPL_MOTDSTART
+ ":- Message of the day - "
+ 372 RPL_MOTD
+ ":- "
+ 376 RPL_ENDOFMOTD
+ ":End of MOTD command"
+
+ - When responding to the MOTD message and the MOTD file
+ is found, the file is displayed line by line, with
+ each line no longer than 80 characters, using
+ RPL_MOTD format replies. These MUST be surrounded
+ by a RPL_MOTDSTART (before the RPL_MOTDs) and an
+ RPL_ENDOFMOTD (after).
+
+ 381 RPL_YOUREOPER
+ ":You are now an IRC operator"
+
+ - RPL_YOUREOPER is sent back to a client which has
+ just successfully issued an OPER message and gained
+ operator status.
+
+ 382 RPL_REHASHING
+ "