* default setting is to use one thead
* multiple threads can be set using the lzma options
* old behavior can be forced by defining BOOST_IOSTREAMS_LZMA_NO_MULTITHREADED
- travis with valgrind, cppcheck, ubsan, codecov, covscan (future)
- appveyor with MSVC 2010 through 2017, cygwin 32/64, mingw 32/64
- README, LICENSE, etc.
Additional fixes for cygwin builds to work
Boost is attempting to use a function not in the standard, seekpos(),
guarded by this setting. Looks like Boost can use the standards
conforming interface for MSVC++ instead. It should work going
back effectively "forever" as far as MSVC++ is concerned, but this
guard applies the change only to 2017. It's possible there is a better
control in boost.config I missed.
Non-blocking adapter read() wasn't tracking amount read properly which
could cause an infinite loop when underlying (infinite) source returns amounts
smaller than requested. Also amounts read previously were
overwritten by subsequent calls.
When bad data is encounted during compression/decompression exception is
thrown (through bzip2::check()) but memory associated with the bzip2 stream
wasn't properly released (BZ2_bzCompressEnd()/BZ2_bzDecompressEnd() must be
called to do that - which is done by calling bzip2_base::end()).
As end() throws on error, and we are now calling end() in destructor, nothrow
version needed to be made so we don't terminate user program in case end()
fails.
The workaround in VC++ CRT of MSVC compiler bug leads to the fact that if your class inherits from std streams you will get C4250 warning. (https://connect.microsoft.com/VisualStudio/feedback/details/733720/)
```
..\..\..\..\boost/iostreams/stream.hpp(145) : warning C4250: 'boost::iostreams::stream<Device>' : inherits 'std::basic_istream<_Elem,_Traits>::std::basic_istream<_Elem,_Traits>::_Add_vtordisp1' via dominance
..\..\..\..\boost/iostreams/stream.hpp(145) : warning C4250: 'boost::iostreams::stream<Device>' : inherits 'std::basic_ostream<_Elem,_Traits>::std::basic_ostream<_Elem,_Traits>::_Add_vtordisp2' via dominance
```
This harmless warning could not be avoided in any other way (except adding
those dummy functions `_Add_vtordisp1` and `_Add_vtordisp2`).