Changelog for 0.3.20 / 0.4.6
dclib 0.3.20
- 08/08/2008 Add minimum segment size setting, which is currently also the maximum segment size.
- 09/08/2008 All CBase32 CBase64 CEncrypt functions are now static.
- 09/08/2008 CString ToUpper() and ToLower() were optimized. (These functions are largely useless for dealing with UTF-8 and are no longer used with searching, but are still used on hostnames.)
- 11/08/2008 Optimize appending a single char to a CString.
- 12/08/2008 Simplify CConfig::AliasToPath() on top level folders.
- 12/08/2008 CDir::ReadEntrys() no longer stats entries multiple times and now fills in the timestamps on directories instead of leaving them uninitialized.
- 13/08/2008 Bring back -Wconversion compiler warning flag.
- 13/08/2008 Change CClient GetShareSize() / SetShareSize() to take / return a ulonglong not a CString.
- 16/08/2008 Remove unused includes from cdir.cpp.
- 16/08/2008 Also check the user's additional groups when checking file accessibility when reading directories.
- 16/08/2008 Make CDir::FreeDiscSpace() static.
- 16/08/2008 Only define _XOPEN_SOURCE and _BSD_SOURCE on linux, fixing OS X build.
- 16/08/2008 Optimize testing for segment support in cdownloadmanager.
- 17/08/2008 Make CBZ functions static.
- 18/08/2008 Remove unused m_sMD5 and m_sIndex from queue objects.
- 18/08/2008 Add things needed for downloading folders from search.
- 19/08/2008 Ignore saved hub m_nID, it is assigned automatically, all you get from using the saved value is that it could be wrong. It is still saved to the file.
- 19/08/2008 Hub m_nID reduced from unsigned long long to unsigned long.
- 19/08/2008 Remove unused m_nID and m_nTime from DCTransferFileObject.
- 19/08/2008 Fix CFile::Seek paramater and return value checking. File offset is signed 64bit int and previously it would only return true if using SEEK_SET although the actual seek probably worked.
- 19/08/2008 Remove not needed XML flags from dclib Makefile.am, only needed in core dir.
- 19/08/2008 CString::setNum() actually does not, it has been renamed CString::number() and made static for efficiency and consistency with Qt QString.
- 19/08/2008 Remove unused m_nShareSize from CFileManager.
- 19/08/2008 Yet more CString optimisations. IsEmpty() is no longer used inside CString on itself because unusually for dclib, it is not an inline function. Also some unused pointers in string to number conversions were removed.
- 19/08/2008 Fix fwrite() return value checking in CShareList. fwrite() returns the number of elements written not the number of bytes.
- 20/08/2008 Avoid doing same thing twice when loading traffic stats.
- 20/08/2008 CBase32/64: add some consts and change arrays to char.
- 20/08/2008 Change one DC_USER_FILELIST_HE3 to DC_USER_FILELIST in commented out code.
- 20/08/2008 Remove some unneeded CString wrappers around DC_USER_FILELIST_??? in download manager.
- 20/08/2008 The file copy routine used to move a file to the finished download dir was clean up and moved into CFile. It stats the target file not the source so uses the right block size, and does not bother copying file permissions/ownership/timestamps because it is only used for copying files that dclib itself has just finished writing.
- 20/08/2008 Cleanup CString::Find functions to only allocate variables when necessary (C++ style) instead of all at the top of the function (C style).
- 20/08/2008 Cleanup CDCProto so that the string being built up does not start empty, remove obsolete unused SendLock().
- 20/08/2008 Fix -Wconversion warnings in csharelist. More unsigned long long that should have only been unsigned long.
- 21/08/2008 Remove unused leftover variable in reorder bookmarks code.
- 21/08/2008 Fix update public hubs always adding new entries for hubs that have numbers (2) etc. added to their name.
- 21/08/2008 Change CMessageHandler to work with CDCMessage instead of the less useful CObject class.
- 21/08/2008 Make CDCMessage m_eType const, rename ADCGET/SND message m_eType member which accidentally was given the same name.
- 21/08/2008 Remove unhandled "$YourIP" string from CMessageHandler. Whatever it was, was never handled, and UserIP2 is now supported.
- 21/08/2008 Fix new CFile::Copy(), win32 does not have block size member in stat struct.
- 21/08/2008 Add tests for strtoll and _strtoi64 etc. and remove own strtoull routine.
- 21/08/2008 Change CClient DC_CallBack to take CDCMessage*.
- 21/08/2008 Move some code into new dcobject.cpp file because some functions in dcobject.h are too big.
- 21/08/2008 Add copy constructors for all data objects with lists (except the one with the CStringList).
- 21/08/2008 Fix DCTransferFileObject::copy(), forgot to add things for downloading folders from search.
- 21/08/2008 Change connection and hublist managers DC_CallBack to take CDCMessage*.
- 22/08/2008 Split CMutex out of cthread.h/.cpp into it's own file.
- 22/08/2008 Add one more needed copy constructor.
- 22/08/2008 Change all files to include their own header first, and fix all the ensuing missing definitions/includes.
- 22/08/2008 Change DC_DownloadManagerCallBack to take CDCMessage*.
- 22/08/2008 Turn CStringList into a template class which makes code involving it much clearer.
- 23/08/2008 Now that CStringList is a template class, CString and a lot of other classes do not need to inherit CObject or have a virtual destructor. These properties were removed from CString and a few other classes.
- 23/08/2008 Fix CConnection calling a CList<CObject> when it really was CList<CByteArray>.
- 23/08/2008 Remove CStringList from CQueryManager, not required, replaced with std::list<CString>.
- 23/08/2008 Replace all remaining CList<CObject> with a more specific template parameter (except in CHE3, where it's not even really a CObject).
- 23/08/2008 Add new CSSL functions for creating TSL v1 only SSL objects and use them for new SSL mode, speeding up establishing an SSL connection slightly.
- 23/08/2008 Add additional SSL cleanup in CSocket destructor.
- 23/08/2008 Make some CSSL functions which are static, static.
- 23/08/2008 Add CDir::RmDir().
- 24/08/2008 Fix ZLine support yet again. It is broken in all previous releases.
- 24/08/2008 Go back to hardcoded UTF-8 as local encoding where __APPLE__ is defined (Mac OS X).
- 25/08/2008 Fix error in dclib-ssl-tests.m4.
- 25/08/2008 Use autoconf for detecting CPU big/little endian and 64bit wordsize, for the TTH calculating code. Although now PPC64 can be detected as 64bit and big-endian the (faster?) 64bit code was never used on PPC so has not been enabled.
- 25/08/2008 Fix compilation failure on PPC because HASH_SIZE had not been renamed to BYTES inside that #ifdef'd code in TigerHash.cpp.
- 25/08/2008 The code for listing network interfaces was re-written, because it was reported broken on OS X. That and the code for getting an interface's IP address is now simpler. But they're now both broken?
- 26/08/2008 Remove never used always 0 CObject* parameter of CThread::Thread().
- 26/08/2008 Change default connection settings, now using IP instead of network interface and UserIP2 enabled.
- 27/08/2008 Remove empty unused SM_ClientCallBack from CConnectionManager.
- 28/08/2008 Remove unused CCallbackList.
- 28/08/2008 There are now 3 callback classes for sending 0, 1, or 2 parameters and parameters are now templates instead of CObject*.
- 28/08/2008 Remove CObject inheritance and virtual destructors from many more objects, in particular the objects used to implement the lists and some objects put into lists.
- 29/08/2008 Move CTraffic class into its own header.
- 29/08/2008 There was a null pointer check missing on the IsIpAddressValid function resulting in crash on receiving UserIP2 message with empty address.
- 29/08/2008 Remove CSingleton as various friend classes, CSingleton does not need to access anything. (Specifying friend classes allows them to access private things.)
- 30/08/2008 Replace all CThreadList / CThreadStringList with separate list and mutex. Reduces library size slightly, makes them easier to replace with std::list/map, and a couple were never locked so no mutex was added there.
- 30/08/2008 Move all network address relate code into CNetAddr static class, taking the opportunity to rename most functions. Optional CString pointer parameters added for getting any error message. gethostbyname() replace with getaddrinfo() which does not need a mutex.
- 30/08/2008 Do not turn certain characters of private messages into %DCNXXX%, that is not for chat. Fixes sending messages with ` (backtick) to DC++.
- 30/08/2008 Remove unused alternate CLogFile::Write() function.
- 30/08/2008 Remove unused m_sVersion and related get/set functions from CClient.
- 31/08/2008 Some very minor string optimisations, CDir::SimplePath() no longer builds a string one char at a time so is slightly faster.
- 31/08/2008 Make it so only one call is needed to give a permanent slot.
- 31/08/2008 Free the contents of index.lst after sharelist creation, when it is no longer needed. It was being kept in two places and is easily 250KiB.
- 01/09/2008 Remove CObject entirely. CObject was the base class of all dclib classes. Because CStringList and the CCallback classes were changed into template classes, there is no casting from CObject* anymore, so it is not needed. The tiny performance gain was already got when CString stopped inheriting CObject and having a virtual destructor.
- 01/09/2008 Remove .cpp files where all the code is in the header file: ccallback.cpp clist.cpp cplugin.cpp csingleton.cpp cstringlist.cpp removed.
- 01/09/2008 Change the case folding class for fewer iconv_open / iconv_close calls. Expecting to handle lots of searches, the query manager keeps a CCaseFolder with its 2 iconv's open permanently. Case folding = making lower case, but done in unicode so it handles more than just plain ASCII letters.
- 02/09/2008 Fix private chat parser to handle nicks containing spaces (even though they are not supported anywhere else).
- 02/09/2008 Optimize CDir::GetStat() to reduce CString creation. Improves the efficiency of filelist refresh a little.
valknut 0.3.20 / 0.4.6
- 08/08/2008 Transfer settings were split into 4 tabs to make room for more download settings, starting with the minimum segment size.
- 09/08/2008 Any remaining CMutex objects were replaced with QMutex.
- 09/08/2008 Keeping the options dialog tree in sync with the tabs was improved.
- 10/08/2008 A few no longer used icons are no longer loaded or installed.
- 10/08/2008 Qt4: The toolbar icons are now all the same size. Due to differences between the sizes of generated icons and the pixmaps supplied, they're still slightly different in Qt3 (and in the action menu too).
- 10/08/2008 Add functions for closing all offline chats, filelists or searches.
- 10/08/2008 Various things were moved into the .ui files.
- 11/08/2008 Checkable groupboxes were used in the options dialog to reduce the amount of widget enabling/disabling code.
- 12/08/2008 Two unused ulonglong members of DCHubListManager were removed.
- 13/08/2008 Fix file transfer window progress dialog for files over 2GiB on 32bit machines.
- 14/08/2008 Remove event filter on DCConnectionManager, not needed.
- 14/08/2008 Use customEvent() to receive custom events for filelist browser, chat, friends list. Replaces event() which gets all events.
- 15/08/2008 Improve %[line:reason] handling, now a single dialog for all lines, can be cancelled, can be applied to all nicks.
- 16/08/2008 Add "Debug Settings" to Help menu for changing -v and --socketlog options while running.
- 17/08/2008 Replace some custom code with .ui files.
- 17/08/2008 Qt3: "make clean" now deletes the .qm files. Qt4 already did.
- 17/08/2008 Rewrite various things so that there is no longer an event filter in the main dcgui class.
- 17/08/2008 Fix the application briefly being visible when starting with --trayicon.
- 17/08/2008 Qt4: Fix starting with --trayicon (cannot adjust sizes relative to current size before a widget is visible).
- 18/08/2008 Optimize display of filelist refresh progress slightly.
- 18/08/2008 Support downloading folders from search. Not currently supported: choosing destination folder, re-using an already open filelist instead of downloading it again. Queued folders are shown in the wait list but not the files list.
- 19/08/2008 Only use the order the user menu commands appear in the config file for ordering. Use iterators for map access, remove the position member of the user command object and always use the map key. This way the ordering is only stored in one place.
- 19/08/2008 Apply patch from Hanspeter Niederstrasser to fix OS X .dmg file creation.
- 19/08/2008 Qt3: Fix file transfer info window displaying garbage.
- 19/08/2008 Updates for CString::setNum() getting renamed.
- 20/08/2008 Use DC_USER_FILELIST not DC_USER_FILELIST_HE3. They are currently the same value.
- 21/08/2008 Updates for CMessageHandler using CDCMessage not CObject.
- 21/08/2008 Updates for CDCMessage m_eType being const.
- 21/08/2008 Change DCClient to work with CDCMessage not CObject.
- 21/08/2008 Qt3: Replace CList<CObject> with QPtrQueue<CDCMessage> in DCClient, hublist manager and connection manager.
- 21/08/2008 Qt4: Replace CList<CObject> with QList<CDCMessage*> in DCClient, hublist manager and connection manager. There doesn't seem to be any point in using QQueue in Qt4, it just extends QList and provides different names for two QList functions.
- 21/08/2008 Remove selectedItems() function from DCClient and generate a QStringList instead at the only place it was called.
- 21/08/2008 Fix userlist "copy row" to respect column visibility and ordering.
- 22/08/2008 Change all classes to include their own headers first. Only QString missing from dcfiletool.h.
- 22/08/2008 Change transfer view to use QPtrQueue / QList.
- 22/08/2008 Updates for CStringList now being a template class.
- 23/08/2008 Replace CList with QPtrList for chat commands and auto responses, handle chat commands differently to reduce copying.
- 23/08/2008 Use more specific CLists in dchubsearch instead of lists of CObject (lists are of CDCMessage / CMessageSearchResult).
- 23/08/2008 CDir::SimplePath() is now static.
- 24/08/2008 Warn about changing to some bad settings:
- Tag <DCGUI V:0.3.19 ...> should be enabled.
- H:3/2/1 in tag should be enabled.
- Disable hash list should not be used.
- ZLine aka "Enable compressed hub to client communication" should not be used (because it keeps ending up broken).
- Remote Encoding really should not be "None".
- 24/08/2008 Add WINDOWS-1250 to the (non-exhaustive) list of available encodings.
- 24/08/2008 Change rules for putting files into the Valknut.app directory for OS X .dmg creation to use "make install-strip", so that it will not need updating when the contents of the valknut data folder change.
- 24/08/2008 Qt4: Add untested --enable-frameworks and --with-framework-dir=DIR configure script options for attempting to compile using Qt installed as frameworks.
- 25/08/2008 Text encoding was completely failing, at least on OS X, because creating the QApplication was not the very first thing valknut did.
- 26/08/2008 Remove DCConnectionManager event filter, everything now done the same was as putting the message icon into the tab bar.
- 27/08/2008 Use dynamic_cast to ensure casting from dclib CClient to valknut DCClient in the connection manager is safe.
- 28/08/2008 Allow multi download when starting from the resume/overwrite/cancel dialog.
- 28/08/2008 Changes for CCallback classes changes.
- 28/08/2008 Remove CObject/virtual from emoticon object.
- 28/08/2008 Qt4: Fix possible crash on closing hubs. Only crashed on Qt 4.3. As a result, closing a hub no longer makes another hub the current window.
- 29/08/2008 Fix broken new line conversions in chat display/handling, which were converting the two characters "\" then "r" instead of the carriage return character.
- 29/08/2008 Create all dialogs with new, a very small number were allocated as normal variables.
- 29/08/2008 Replace QString(tr("text")) with just tr("text") since tr() returns a QString.
- 30/08/2008 Updates for functions moving from CSocket to CNetAddr in dclib.
- 30/08/2008 More detailed error messages returned for cannot get host IP/interface IP/interface list in options dialog.
- 30/08/2008 Remove sleeping in crash dialog.
- 30/08/2008 Rename DCOptions slotSave -> accept so it overrides the QDialog slot.
- 31/08/2008 Remove DCChat::InitView() which was adjusting the size of chat output/input, set the ratio of output:input 8:1 and use that.
- 31/08/2008 Fix crash on right clicking the chat tabs when not using tabs for chat and the chat list widget is the current tab.
- 31/08/2008 Remove some unecessary temporary string creating (almost all QString which is very efficient and creating extra temps hardly matters).
- 31/08/2008 Changes for granting permanent slots being more efficient in dclib.
- 31/08/2008 Remove some InitDocument() functions, which were only called once in the class constructor, moving the code into the constructor.
- 02/09/2008 Move the code for "adjust hub details in search results" so that it is done on receiving results not on display, so it is not done again when re-grouping results.
- 02/09/2008 Fix the uncompressed xml file type filter in filelist browser open file dialog.