- 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
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.
Needs lzma.jam file in tools/build module.
See also trac ticket 7534.
The code has been around in random places since some time,
I only added tests and build system updates and
minor fixes for issues those tests discovered.
Based on Zhuo Qiang's patch with added tests and support
for `operator=`.
I also used `codecvt_type` to detect `filesystem3::path`
instead of `string_type`. Using `string_type` made
`filesystem2::path` ambiguous because it has both
`string_type` and `external_string_type` members.
The member types are a bit arbitrary, but a more precise
distinction would probably also be more expensive.
[SVN r72382]
* Deprecate the old 'close_on_exit' constructors.
* Introduce new constructors from file handle, taking either
`never_close_handle` or `close_handle`.
* Close current file handle when opening a new file handle,
if it would have been closed in the destructor.
[SVN r63430]
- added "slice" as an alias for "restrict", for platforms on which "restrict" is a keyword
- attempted to configure file_descriptor for __IBMCPP__
- added better error output to stream_offset_64bit_test.cpp
[SVN r42565]
fix for Visual Age: std::min was passed arguments of different types; replaced std:: min with conditional
detail/streambuf/indirect_streambuf.hpp:
removed trailing comma in enum definition
test/combine_test.cpp:
test/symmetric_filter_test.cpp:
test/compose_test.cpp:
test/close_test.cpp:
test/invert_test.cpp:
test/tee_test.cpp:
test/restrict_test.cpp:
test/Jamfile.v2:
moved tests for close() into the test files for various adapters
[SVN r42544]
and made corresponding changes throughout the iostreams library.
New spec is:
template<typename T>
void close(T& t);
Convenience function for closing a device; calls close(t, in) and
close(t, out).
template<typename T>
void close(T& t, openmode which);
template<typename T, typename Sink>
void close(T& t, Sink& snk, openmode which);
These two functions should only be called by the library implementation
or by advanced users. The openmode parameter must always equal in or
out, never in | out.
There are three cases:
1. If T is not closable and which == out, calls boost::iostreams::flush
2. If T operates on a single sequence, and is NOT a dual-use filter:
a. If which == in and the mode of T is convertible to input but
not to output, calls t.close() (or t.close(snk))
b. If which == out and the mode of T is not convertible to input or
is convertible to input and to output, calls t.close()
(or t.close(snk))
The effect of a. and b. is that for any T in this category,
close() is called exactly once.
3. If T operates on two sequences or is a dual-use filter, calls
t.close(which) (or t.close(snk, which))
If multiple operations that might throw must be called in the course
of closing a filter or device, all of the operations are attempted
and the first exception thrown by any of the operations is rethrown
The new test close_test.cpp contains 95 checks verifying that the operation
behaves as sepcified.
This affects the following files:
chain.hpp
close.hpp
code_converter.hpp
combine.hpp
compose.hpp
copy.hpp
detail/adapter/basic_adapter.hpp [removed]
detail/adapter/device_adapter.hpp [new]
detail/adapter/direct_adapter.hpp
detail/adapter/filter_adapter.hpp [new]
detail/adapter/mode_adapter.hpp
detail/broken_overload_resolution/stream_buffer.hpp
detail/closer.hpp [removed]
detail/config/limits.hpp
detail/execute.hpp [new]
detail/functional.hpp [new]
detail/streambuf/direct_streambuf.hpp
detail/streambuf/indirect_streambuf.hpp
detail/streambuf/linked_streambuf.hpp
detail/vc6/close.hpp
device/null.hpp
filter/aggregate.hpp
filter/bzip2.hpp
filter/gzip.hpp
filter/line.hpp
filter/newline.hpp
filter/symmetric.hpp
filter/test.hpp
invert.hpp
restrict.hpp
tee.hpp
example/finite_state_filter.hpp
test/Jamfile.v2
test/close_test.cpp [new]
test/code_converter_test.cpp
test/execute_test.cpp [new]
test/operation_sequence_test.cpp [new]
II. When exceptions are caught and ignored, we now use catch (...)
uniformly instead of catch (std::exception&). This affects the
following files:
stream_buffer.hpp
src/mapped_file.cpp
III. Unnecessary dependence on Boost.Range has been eliminated. This
affects the following files:
detail/is_iterator_range.hpp
detail/resolve.hpp
traits.hpp
test/Jamfile.v2
test/filtering_stream_test.cpp
test/offset_test.cpp
test/seek_test.hpp
test/seekable_filter_test.cpp
test/sequence_test.cpp [new]
test/wide_stream_test.cpp
IV. There are several fixes to the documentation. This affects the
following files:
doc/classes/symmetric_filter.html
doc/guide/concepts.html
doc/guide/modes.html
doc/tutorial/container_device.html [serious error in algorithm]
doc/tutorial/dictionary_filters.html [unused member variable]
doc/tutorial/multichar_filters.html
V. Other changes include:
stream.hpp [missing include directive]
example/container_device.hpp [serious error in algorithm]
example/container_device_example.cpp [outdated naming]
example/container_sink_example.cpp [outdated naming]
example/container_source_example.cpp [outdated naming]
example/dictionary_filter.hpp [unused member variable]
test/compose_test.cpp [added comments]
test/example_test.cpp [reformatted]
[SVN r42047]
Adjust tests to use always use static linking to Boost.Test, since
linking to the shared version requires test changes.
Patch from Juergen Hunold.
[SVN r35989]