Changes since ZNC-0.062: New stuff: * schat now prints a message if a client connects and there are still some active schats. * awaynick: Set awaynick on connect, not after some time. * Allow adding new servers through /msg *status addserver even if a server with the same name but e.g. a different port is already added. * Show the current server in /msg *status listservers with a star. * /msg *status listmods now displays the module's arguments instead of its description. Use listavailmods for the description. * ZNC now updates the channel buffers for detached channels and thus gives a buffer replay when you reattach. * watch now adds timestamps to messages it adds to the playback buffers. * ZNC should now work on cygwin out of the box (use --disable-ipv6). * Webadmin will handle all HTTP requests on the irc ports. Use -noircport to disable this. Fixes: * Handle read errors in CFile::Copy() instead of going into an endless loop. * Make schat work properly again and clean it up a little. * Removed all calls to getcwd(). We now no longer depend on PATH_MAX. * stickychan: Don't try to join channels if we are not connected to IRC. * watch now saves its settings. * Don't forward PONG replies that we requested to the user. * awaynick evaluated the awaynick multiple times and thus didn't set the nick back. * znc-config --version said '@VERSION@' instead of the actual version number. * Handle JOIN redirects due to +L. * Remove the length restrictions on webadmin's password fields which led to silent password truncation. * Webadmin now reloads global modules if you change their arguments. * The main binary is no longer built with position independent code. * ZNC failed to bounce DCCs if its own ip started with a value above 127. * Savebuff no longer reloads old channel buffers if you do '/msg *status clearbuffer'. * Some work has been done to make ZNC work with mingw (It doesn't work out of the box yet). * modperl used huge amounts of memory after some time. This is now fixed. * shell now generates error messages if e.g. fork() fails. * If the allowed buffer size is lowered, the buffer is now automatically shrunk. * Webadmin now refuses to transfer files bigger than 16 MiB, because it would block ZNC. Minor stuff: * Only reply to /mode requests if we actually know the answer. * Lowered some timeouts. * Memory usage optimizations. * Allow custom compiler flags in znc-buildmod via the $CXXFLAGS and $LIBS environment flags. * Show the client's IP in debug output if no username is available yet. * Allow /msg *status setbuffer for channels we are currently not on. * Updated the README. * Use @includedir@ instead of @prefix@/include in the Makefile. * Use RTLD_NOW for loading modules instead of RTLD_LAZY which could take down the bouncer. * Use stat() instead of lstat() if the latter one isn't available. * CExecSock now generates an error message if execvp() fails. * Improved some error messages. Internal stuff: * Add traffic tracking support to CSocket. Every module that uses CSocket now automatically gets the traffic it causes tracked. * Add VERSION_MINOR and VERSION_MAJOR defines. * Rework CZNC::Get*Path() a little. * Remove the IPv6 stuff from CServer. It wasn't used at all. * Make email use CSocket instead of Csock. * Cleaned up and improved CFile::ReadLine() and CChan::AddNicks() a little. * Replaced most calls to strtoul() and atoi() with calls to the appropriate CString members. * Moved the SetArgs() call before the OnLoad() call so that modules can overwrite their arguments in OnLoad(). * Let 'CZNC::AddUser()' check if the user name is still free. * API stuff: ** Added CModule::IsGlobal(). ** Added CModule::BeginTimers(), EndTimers(), BeginSockets() and EndSockets(). ** Added CModule::ClearNV(). ** Removed ReadFile(), WriteFile(), ReadLine() (Use CFile instead), Lower(), Upper() (Use CString::AsUpper(), ::ToUpper(), ::*Lower() instead) and added CFile::ReadFile() ** Added CModules::OnUnknownUserRaw(). ** Added CUtils::SaltedHash() for computing the salted MD5 hashes ZNC uses. ** Removed CLockFile and made CFile take over its job. ** Change the return type of CUtils::GetPass() to CString. ** Added a DEBUG(f) define that expands to DEBUG_ONLY(cout << f << endl). ** Removed some unused functions and definitions.