Been a rather busy day, despite the fact that I was supposed to be dealing with RL issues today (they were postphoned). The main topic of today was bringing win32/MSVC compatibility back to normal. Towards that end, the following improvements were made (along with some misc stuff):
- Disabled usage of Tags in PartData ChunkMap (reduces symbol name lengths coming from Boost.MultiIndex to fix crashes on GCC 3.3 and MSVC 7.1 - still crashes on Darwin tho [might not be related]).
- Added duplicate getContains() method to RangeList class to compensate for MSVC's const-handling problems.
- Changed the Boost.Bind placeholder variable names from _1, _2 etc to _b1, _b2 etc, to avoid conflicts with Boost.Lambda placeholders (yes, I did re-define BoostLambda placeholders to __1, __2 earlier already) on MSVC, which seems to get confused (possibly related to name resolution in different namespaces? With using boost::lambda directive in effect, lambda placeholders are brought into namespace, and boost::bind placeholders are already in top-level anonymous namespace, causing the conflict).
- Added some more helper ; symbols for MSVC parser, which can't cope with function-level try/catch blocks very well.
- HydraNode shell server now properly handles win32 telnet client, which sends (a) 0x0d 0x0a on EOL (posix telnet sends 0x0d only), and (b) handle 0x08 as backspace (posix telnet sends DEL (0x7f) on backspace key by default).
- PartData info display is now properly formatted for win32 78-char console window.
- New shell command added: `hs', which displays hasher statistics (amount hashed, avg speed).
- Use std::ios::binary openmode for handling binary files - otherwise things break on win32.
- Hasher is now using filesystem::path types instead of raw strings for paths also, solving several problems regarding hashing.
- Re-enabled debug symbols generation on GCC 3.3.
The GCC bug, which generates
tons of link-time warnings when debug symbols are disabled is still unresolved, and I have no leads on where it came from either. Ideas anyone?
Bottom line: hashing, metadb handling, sharedfiles handling etc work correctly on win32 now.
Next up: Fix the PartData bug which causes us to lose some ranges of data constantly during downloading...
Madcat, ZzZz