Changelog for skalibs. In 2.13.2.0 ----------- - Bugfixes. - New accessor function: selfpipe_fd(). - New functions: slurpn(), openslurpnclose(). - slurp() and openslurpclose() are now macros. - New strerr macros to warn with a "fatal" message. - New cdb functions: cdb_hashv(), cdbmake_addv(). - child_spawn() revamp. Prototype change (last arg is a size_t). In 2.13.1.1 ----------- - Bugfixes. In 2.13.1.0 ----------- - New macro: SKALIBS_PATH_MAX, in posixishard.h. Defined to 4096 on systems that do not define PATH_MAX. - New function: sals(). In 2.13.0.0 ----------- - Bugfixes. - New functions: buffer_timed_put(), buffer_timed_puts(). - strerr.h revamped. strerr_die, strerr_warn, strerr_diesys, strerr_warnsys and all the previous strerr2 macros are now __VA_ARGS__ macros around strerr_diev() and friends. In 2.12.0.1 ----------- - Bugfixes. In 2.12.0.0 ----------- - librandom revamped (again). * random_init() and random_finish() removed. * random_char() removed. * random_string() renamed to random_buf(). * early versions added. - New djbunix functions: waitn_posix(), waitn_reap_posix(). - readnclose() made public, now doesn't touch errno on success. - openreadnclose_at() now returns a ssize_t. In 2.11.2.0 ----------- - Bugfixes. - User-provided CPPFLAGS, CFLAGS and LDFLAGS are now honored in sysdep autodetection. - envdir_internal() now supports a SKALIBS_ENVDIR_NOCLAMP option, for unlimited-size variable reading. In 2.11.1.0 ----------- - fd_close() doesn't retry if close() fails. (i.e. adapts to Linux's behaviour over HP-UX's.) - New function: opendir_at. In 2.11.0.0 ----------- - libbiguint removed. - Obsolete skalibs/environ.h and skalibs/getpeereid.h removed. - rc4 and md5 removed. - iobuffer removed. - fd_cat and fd_catn changed signatures. - All *_t types renamed to avoid treading on POSIX namespace. - subgetopt() renamed to lgetopt(). - signal functions reworked; skasigaction removed; sig_stack removed - Various functions removed: skaoffsetof(), selfpipe_untrap() - cdb_make renamed to cdbmake; ui changed to 1=success/0=failure. - cdb redesigned. cdb is now fixed, cdb_reader holds the state for cdb_find, which puts data pointer and len directly into a cdb_data. A cdb is always a map, pointers should always work. - cdb_successor removed (unsafe to use); cdb_nextkey changed to cdb_traverse_next, which puts key and data into two cdb_data's. - cdb does not touch errno anymore. - New posixplz function: munmap_void. In 2.10.0.3 ----------- - Bugfixes. In 2.10.0.2 ----------- - Bugfixes. In 2.10.0.1 ----------- - Bugfixes. In 2.10.0.0 ----------- - New openc_* functions. - New function: ipc_bind_reuse_lock(), taking a lock before unconditionally deleting the socket. - ipc_bind_reuse() rewritten to use ipc_bind_reuse_lock(), so it does the right thing instead of clobbering sockets. - Complete revamping of the pathexec functions, see exec.h. - Revamping of the locking functions. - Use of standard O_NONBLOCK and O_CLOEXEC instead of adhoc DJBUNIX_FLAG_NB and DJBUNIX_FLAG_COE. - Better header separation; webipc.h removed (stuff moved to socket.h) - New function: mkptemp2(), creating a fifo with a templated name (like mkptemp) but with options for O_NONBLOCK and O_CLOEXEC. - New sysdep to test for chroot(). In 2.9.3.0 ---------- - New stralloc_readyplus_tuned() function. - Bugfixes. In 2.9.2.1 ---------- - Bugfixes. In 2.9.2.0 ---------- - Bugfixes. - New bigkv_* set of functions in libdatastruct. In 2.9.1.0 ---------- - Bugfixes. - Better support for GNU Hurd. - Added path_canonicalize(). In 2.9.0.0 ---------- - Bugfixes. - Better support of out-of-path toolchains (among other things, that means better autotools emulation). - Build more friendly to recent glibc. - Refactoring and optimization of scanning and formatting functions. - Refactoring of stopwatch/wallclock functions. The --enable-clock and --enable-monotonic configure switches have been removed. tain_now() can now be set at run time to use a wall clock (default, or via tain_now_set_wallclock()) or a stopwatch (via tain_now_set_stopwatch()), instead of it being fixed at build time. - Easy cross-compilation: no need to provide a whole sysdeps directory anymore. Only a few sysdeps have to be provided manually, via a --with-sysdep-K=V option to configure. Currently, that means one: --with-sysdep-devurandom=yes|no In 2.8.1.0 ---------- - Added skalibs_regcomp(), accepting empty regexes on BSDs. In 2.8.0.1 ---------- - Bugfixes. - Better reporting in utc_from_tai() and localtm_from_*() In 2.8.0.0 ---------- - Bugfixes. - avltreeb removed. (It used VLAs inside of structures, which is GNU C, not C99.) The AVLTREEN_DECLARE_AND_INIT() macro should be used instead. - New functions: env_dump(), mk?temp(), autosurf(), autosurf_name() - mkdir_unique() removed. (Duplicate functionality with mkdtemp.) - ancilautoclose and nbwaitall sysdeps removed. - New header: skalibs/posixishard.h - Static libraries are now PIC by default. In 2.7.0.0 ---------- - Bugfixes. - New functions: ipc_timed_sendv(), unlink_void(), genset_deepfree(), gensetdyn_deepfree(), skagetln_loose(), skagetlnsep_loose() - dir_close() now returns void and leaves errno unchanged - absolutepath(), sarealpath_tmp(), avl*_deletnode(), mininetstring, prot functions removed - djbunix.h doesn't include env.h anymore In 2.6.4.0 ---------- - Bugfixes. - New functions: execvep_loose(), byte_zzero(), openb_read(), sig0_scan() - New function family: skalibs/genqdyn.h In 2.6.3.1 ---------- - Bugfixes. In 2.6.3.0 ---------- - New dir_fd function wrapping dirfd() (Solaris doesn't have dirfd()) - memmem implementation for platforms that don't provide it. - memmem wrappers: byte_search, siovec_search. - New functions: atomic_symlink, skagetlnmaxsep, child_spawn3 - New header: skalibs/posixplz.h, some header reorganization. - New family of functions: textmessage and textclient - skalibs/environ.h and skalibs/getpeereid.h are now obsolescent. - Bugfixes. In 2.6.2.0 ---------- - New functions: access_at() (MacOS and Solaris don't support faccessat), skaclient_timed_aflush(). - stralloc.h and tai.h are suitable for inclusion in C++ headers. - New sysdep: SKALIBS_HASODIRECTORY. (MacOS doesn't support O_DIRECTORY.) In 2.6.1.0 ---------- - New function: lock_unx(). In 2.6.0.2 ---------- - Bugfixes. - Optimized packing/unpacking routines. In 2.6.0.1 ---------- - Better CPPFLAGS/CFLAGS/LDFLAGS management. - openwritenclose() and openwritevnclose() now use mkstemp. In 2.6.0.0 ---------- - Bugfixes. - New unixmessage_receiver_hasmsginbuf() function to address an issue in unixmessage_handle(). - fd_close() now returns void. This mandates a major version bump. - new skalibs_setgroups(), setgroups_with_egid() and setgroups_and_gid() functions to work around supplementary group mismanagement in... can you guess what operating system? (You get 3 tries. One for each BSD.) In 2.5.1.1 ---------- - Bugfixes. In 2.5.1.0 ---------- - Bugfixes. - More workarounds for OpenBSD (who else). - More workarounds for sysdeps detection by broken toolchains. - Added the xpathexec_* family of functions (in djbunix.h). In 2.5.0.0 ---------- - Added this NEWS file. :) - Dropped support for old versions of OpenBSD (at least 4.9 isn't working anymore). Newer versions are still supported: 5.7 and up are working. - --enable-replace-libc flag dropped. All supported systems now have a compliant-enough libc for skalibs' purposes. - Major types overhaul to be more POSIXly correct. 64-bit operations are now supported on 64-bit archs where int is 32-bit. Use of POSIX types wherever important, e.g. where pointers are used: datastruct.h indices, for instance, are uint32_t. stralloc et al. lengths are size_t. - Related API changes: skalibs/ushort.h, skalibs/uint.h and skalibs/ulong.h have disappeared - replaced with skalibs/types.h that also includes basic fmtscan support for common POSIX types. The uint16, uint32 and uint64 integer types have disappeared - replaced with stdint.h types. uint64_t is defined by skalibs/uint64.h when stdint.h omits it. - Lots of minor bugfixes and cleanups related to the types system. - Better support for getrandom() and arc4random().