ByteInStream_{SecMemor, File},
ByteOutStream_File: Set iostate::eofbit at
close(), ensure ending potential loops
FileStats (java): Expose ctor using DirItem for efficiency
Add [[nodiscard]] to Byte{In,Out}Stream read(), peek(),
write() interface and all specializations, refine single byte API.
Add ByteOutStream and ByteOutStream_File
POSIX 'fd' implementation
io_util/byte_stream: Decouple from Botan,
add iostate and new Byte*Stream* super
iostate_func class for std::basic_ios's
iostate functionality
Add jau::io::read_stream() with double-buffered reading
to ensure last consumer_fn() call gets
is_final set if next buffer has eof() w/ zero
bytes
jau::io::ByteInStream_File: Replace
std::ifstream for file-descriptor (fd) POSIX layer to
support dirfd and plain fd operations
jau::fs::file_stats: Support new fmode_t
types sock, blk, chr and fifo, move fd from type -> attribute,
support sole file_stats(fd) ctor,
Add jau::fs::traverse_options::lexicographical_order as
required when computing an order dependent outcome like a hash
value
Add jau::fs::copy_option::into_existing_dir: Copy
source dir content into an already existing destination directory as if
destination directory did not exist
Add support for FreeBSD
Build clean and passes all tests.
Motivation: Have one more target system for POSIX and clang
validation.
Add support for (named) file descriptor:
jau::fs::file_stat and
jau::io::ByteInStream_File
sub-project pipe dreams for
cipherpack.
allow stream-processing via pipes (e.g. stdin/stdout)
Resolve OpenJDK segmentation fault running via qemu binfmt_misc
armhf or aarch64 on x86_64 host (cross build and test)
copy_options::ignore_symlink_errors: Also ignore
symlinks if not supported by target filesystem if not using
follow_symlinks (e.g.: vfat target)
fraction_timespec::to_iso8601_string(),
file_stats::to_string(): Drop use_space
parameter and print UTC ISO8601 w/ nanoseconds if not zero
Mapped jau::io::to_ByteInStream() to
org.jau.io.ByteInStreamUtil.to_ByteInStream()
Mapped jau::io::uri_tk to
org.jau.io.UriTk
Added java unit test TestByteStream01 covering above,
same as native test_bytestream01
Add jau::fs::mount_image() and umount()
mount_image() is currently only supported on
Linux
Enable testing on Linux via
-DTEST_WITH_SUDO=ON as it requires root
permissions.
Require to be called as user with capabilities
cap_sys_admin,cap_setuid,cap_setgid+eip or as root via
sudo
Uses fork() to have child-process seteuid(0) if not already for
loop-control and mount only.
Update Catch2 to v3.0.1, generated 2022-05-17 and adopt build and
tests
Use libcurl optional, enable via cmake option
-DUSE_LIBCURL=ON and remove dependencies if unused.
libunwind default is disabled (must be explicitly
enabled via -DUSE_LIBUNWIND=ON)
Fix issues with gcc 9.4 used on Ubuntu 20.04
file_util, namespace jau::fs
file_stats fully maps symbolic links via
link_target() and exposing stored
link_target_path()
dir_item reduces . and .. in
given path, drop taking splitted dirname and basename arguments
fmode_{bits->t}: Add full POSIX protection bit
support
file_stats: Use statx() or { lstat64() and stat64() },
maintain retrieved field_t, contain the linked-target as
std::shared_ptr<file_stats>.
Add dirname() and basename()
Add fmode_t POSIX protection bits to mkdir() and
touch()
Add traverse_event as path_visitor()
argument and traverse_options - both supporting visit();
remove() uses traverse_options
Add jau::fs::copy() with [recursive,
follow_symlinks, overwrite,
preserve_all, sync] copy_options,
using visit()
Move JavaVM Group to namespace jau::jni
Security
ringbuffer<T>: Add clear() argument bool
zeromem=false, allowing to explicitly zero memory if used w/o
sec_mem
ByteInStream_URL, ByteInStream_Feed: Zero
ringbuffer at close()/dtor() to be on par with
ByteInStream_SecMemory and ByteInStream_File +
secure_vector<T> usage.
Add secure_string typedef along with
secure_vector using ::explicit_bzero()jau::callocator_sec<T>
Add jau::io::uri_tk to Group IOUtils
0.13.0
string_util.hpp: Add jau::to_string()
support for std::string and std::string_view
as well as for std::vector<T> lists
Add namespace jau::io::uri_tk, limited URI scheme
functionality to query whether implementation may handle the protocol.
Query libcurl supported protocols at runtime
Test for local file protocol
Test whether protocol in given uri is supported by
libcurl
jau::io::read_url_stream(), sync and async, return
immediately if protocol in given url is not supportet
async variant returns
std::unique_ptr<std::thread>, where a nullptr is used
for no support
jau::io::ByteInStream_File recognizes the local file
protocol and cuts off file:// is used.
Fix: Recognition of a non-existing path, unaccessbile path or
non-file case properly
jau::io::ByteInStream_URL recognizes a non supported
protocol via async jau::io::read_url_stream().
Add sleep_for(), sleep_until() and wait_for() & wait_until()
using fraction, fraction_timespec, as well as choice over clock
type.
Introduce new types: fraction, fraction_timespec; its constants
& literals as well adoption in latch, ringbuffer, service_runner and
simple_timer.
int_math.hpp: Add Integer overflow aware arithmetic, use Integer
Overflow Builtins if available (GCC + Clang)
Refine sign(), invert_sign(), abs() and digits10() template funcs:
Better type and signed/unsigned variant for invert_sign() and abs()
Add stdint literals in namespace jau::int_literals,
e.g. 3_i64 for (int64_t)3 for all stdint
signed and unsigned 8-64 bit wide types
Always add libatomic (will be required for new fraction)
0.8.6
Enhance service_runner and fix
simple_timer, i.e. end waiting if stopped
Disable libunwind on
armhf/arm32 for stability, see
USE_LIBUNWIND cmake variable above
OpenJDK 17 compatible w/o warnings, use if available via build
scripts.
0.8.0
Enhance service_runner: fix using
service_shutdown_timeout_ms(), add join(),
remove service_end_post_notify (leak),
Add simple_timer: A simple timer for timeout and
interval applications, using one dedicated service_runner
thread per instance.
Fix EUI48[Sub] ctor with byte-ptr: Don't swap if given
byte_order == endian::native, we store in native order
uint[128,192,256]_t: Add ctor with given byte array in
native byte order, useful for const initialization
SIGSEGV workaround in jau::get_backtrace(..) of
libunwind [1.3 - 1.6.2]'s unw_step(..) using g++ 10.2.1
aarch64: Disable Optimization
0.7.12
git version info: Added post-tag: VERSION_COMMITS and
VERSION_SHA1_SHORT. VERSION_LONG reflects
post-tag and dirty. Added mapping to project version var-names.