Nemo DJBIO Library (libdjbio) - Changes

Changes of the second generation of I/O routines.

v2.2.4 - January 28, 2019

This release contains optimisations and minor changes.

Version Notes
• Changed Replaced all comparison instances of '== -1' to '< 0'.
• Changed Renamed conf-home to conf-prefix.
• Changed Removed executable bit from all files.
• Changed Minor changes to build system.
• Requires Nemo DJB Library v2.12 or later.

v2.2.3 - December 28, 2017

This release contains optimisations and fixes.

Version Notes
• New socket_oob_inline() - socket - leave received OOB data in line.
• Changed socket_ip_options_kill() - use IP_OPTIONS in place of numeric literal.
• Changed socket_tcp_no_delay() - use TCP_NODELAY in place of numeric literal.
• Changed Implement #include <nemo/macro_noreturn.h> from Nemo DJB Library.
• Changed Implement #include <nemo/macro_unused.h> from Nemo DJB Library.
• Changed Minor changes to build system.
• Requires Nemo DJB Library v2.11 or later.

v2.2.2 - August 18, 2017

This release contains optimisations and fixes. Particular emphasis has been on cross platform compatibility.

Tested on Linux raspberrypi 4.9.35-v7+ #1014 SMP, armv7l GNU/Linux - Raspbian with Desktop, 32 bit platform.

Version Notes
• Changed conf-cc - expand examples.
• Changed iopause.c - added includes.
• Changed socket4_send.c, socket6_send.c - reorganised includes.
• Changed timeoutio4_accept.c, timeoutio6_accept.c - reorganised includes.
• Changed timeoutio4_connect.c, timeoutio6_connect.c - reorganised includes.
• Requires Nemo DJB Library v2.8.3 or later.

v2.2.1 - February 12, 2017

This release contains new code, optimisations and fixes.

Version Notes
• New openreadlineclose(3) - manual page.
• New openreadlistclose(3) - manual page.
• New djbiofd(3) - manual page details imported from ezmlm.
• New djbio_seek(3) - manual page details imported from ezmlm.
• New djbio_copy(3) - manual page details imported from ezmlm.
• Changed djbio.h, djbiofd.h - name change of the header guard variable.
• Changed openreadlineclose(), readlineclose() - minor code optimisations and rationalisation of return values.
• Changed openreadlistclose(), readlistclose() - minor code optimisations and rationalisation of return values.
• Changed djbio(3) - some manual page details imported from ezmlm.
• Changed djbio_put(3) - some manual page details imported from ezmlm.
• Changed djbio_get(3) - some manual page details imported from ezmlm.
• Changed djbio_get(3) - documented djbio_bget(), djbio_fee() & djbio_peek() - manual page details imported from ezmlm.
• Changed socket6_tcp() & socket6_udp() - socket option IPPROTO_IPV6, IPV6_V6ONLY always set to 1.
• Changed djbio_put.c - split into modules.
• Changed strerr_sys*() - automatically prints ": " in message prior to system error text.
• Fixed djbio_copy(3) - fix macro use.
• Fixed readlineclose() - test return value of close().
• Fixed readlistclose() - close descriptor if no error, test return value of close().
• Removed readwrite.h - declarations are included in Nemo DJB Library unix.h; many routines updated to use unix.h
• Removed FILES - unused and high maintenance.
• Requires Nemo DJB Library v2.7 or later.

v2.2 - July 18, 2016

Version Notes
• API change socket6_*() - scope id is now incorporated in ip6_address.
• API change timeoutio6_*() - scope id is now incorporated in ip6_address.
• Changed socket6_*() - socket data structure length now represented by socklen_t.
• Changed remoteinfo4(), remoteinfo6() - turn NODELAY off after connection.
• Changed Changes to build system.
• Changed print-docman.sh and print-mancat.sh - removed second parameter, output now to stdout.
• Changed print-docman.sh - renamed to print-sedit.sh.
• Requires Nemo DJB Library v2.6 or later.

v2.1.5 - June 20, 2016

Version Notes
• Changed install.c - changed some #include declarations.
• Changed conf-cc - add comment about building on gcc+glibc platform.
• Fixed djbio_get(3) - return value now matches the code.
• Requires Nemo DJB Library v2.5.2 or later.

v2.1.4 - March 30, 2016

Version Notes
• Changed socket_local() - all parameters that can be used for return values are now optional - supply a value of zero.
• Changed remoteinfo6() - removed IPv6 scope id parameter - not needed.
• Changed socket_*() - removed unnecessary cast in parameter list of byte_zero().
• Changed timeoutio6_connect() - scope_id parameter is now uint32_t*.
• Changed hier.c - implemented unsigned int install_manuid from Nemo DJB Library v2.5.1.
• Fixed timeoutio6_connect() - now returns the IPv6 scope id.
• Requires Nemo DJB Library v2.5.1 or later.

v2.1.3 - December 2, 2015

Version Notes
• Changed Updated to accomodate API change in Nemo DJB Library v2.5.
• Changed struct command - verb is now a const char *.
• Changed Minor changes to shell scripts.
• Fixed getln2() - changed ssize_t variable to int.
• Fixed getln2_max() - changed ssize_t variable to int.
• Requires Nemo DJB Library v2.5 or later.

v2.1.2 - July 31, 2015

Version Notes
• Changed djbio.h - implement unixtypes.h from Nemo DJB Library v2.2.4.
• Changed hier.h - implement unixtypes.h from Nemo DJB Library v2.2.4.
• Changed iopause.h - implement unixtypes.h from Nemo DJB Library v2.2.4.
• Changed readwrite.h - implement unixtypes.h from Nemo DJB Library v2.2.4.
• Changed readlineclose.c - implement unixtypes.h from Nemo DJB Library v2.2.4.
• Changed readlistclose.c - implement unixtypes.h from Nemo DJB Library v2.2.4.
• Changed timeoutio.h - implement unixtypes.h from Nemo DJB Library v2.2.4.
• Changed remoteinfo*.c - implement unixtypes.h from Nemo DJB Library v2.2.4.
• Changed timeoutio_read.c - implement unixtypes.h from Nemo DJB Library v2.2.4.
• Changed timeoutio_write.c - implement unixtypes.h from Nemo DJB Library v2.2.4.
• Changed Manual pages - incorporate first line of file 'VERSION' into footer.
• Requires Nemo DJB Library v2.2.4 or later.

v2.1.1 - July 15, 2015

Version Notes
• New getln2_max() - routine - based on getln().
• New getln2(3) - add documentation of getln2_max(3).
• Changed getln_max() - rewrite - based on getln()
• Changed getln(3) - change function parameters to reflect reality.
• Changed getln2(3) - change function parameters to reflect reality.
• Changed Minor cosmetic changes to manual pages.
• Fixed trypoll.c - compilation errors from stricter settings: caused wrong iopause.h to be created.
• Removed trycpp.c

v2.1 - June 29, 2015

Version Notes
• New timeoutio4_accept() - routine - based on similar routine from DJB's publicfile package.
• New timeoutio6_accept() - routine - based on timeoutio4_accept().
• New socket_shutdown_duplex() - routine.
• New socket_shutdown_recvs() - routine.
• New socket_shutdown_sends() - routine.
• API change socket4_*() - rename of IPv4 routines - formerly socket_*4().
• API change socket6_*() - rename of IPv6 routines - formerly socket6_*().
• API change socket*() - changed char * to void * in function parameters.
• API change timeoutio4_*() - rename of IPv4 routines - formerly timeout_*4().
• API change timeoutio6_*() - rename of IPv6 routines - formerly timeout_*6().
• API change Signedness of socket4_send() and socket6_send() functions.
• API change Type of last argument to the call of recvfrom() in socket4_recv() & socket_recv6() functions.
• API change commands() - 2nd argument changed to const struct commands *.
• Fixed Accommodate API changes in Nemo DJB Library v2.1.
• Fixed Stricter compiler error reporting.
• Fixed socket6_send() - correction of socket family (typo).
• Removed x86cpuid.c
• Requires Nemo DJB Library v2.1 or later.

v2.0.1 - January 23, 2015

Version Notes
• Changed Makefile - implemented c-auto-define to create __UNUSED__ macro.
• Changed Minor changes to build process.
• Removed Moved open_*() routines to nemo-libdjb.
• Removed "systype" processing.

v2.0 - January 19, 2015 - Major Changes from Original Distribution

General:

Version Notes
• New Makefile target: "clean".
• New djbio_*() - formerly substdio_*().
• New djbiofd_* data constants - formerly subfd_*.
• New To avoid name clashes with header files, the header files are installed in a subdirectory "nemo" (in the includes directory).
• API change Changed many signed integers into unsigned integers.
• API change Changed many signed return values into unsigned return values.
• Changed Build/installation framework provided by Nemo DJB Library (nemo-libdjb).
• Changed Many routines replaced by those found in Nemo DJB Library (nemo-libdjb).
• Changed Function prototypes for all subroutines.
• Changed Converted K&R prototypes to ANSI.
• Changed Additional manual pages created for existing routines.
• Changed All manual pages have been converted to mdoc(7) format.
• Changed Additional annotations/comments - some source code files.
• Changed Using some of the standard integer types in the POSIX standard.
• Changed All public header files are compatible with C++ development environments.
• Changed Source code formatting is now "Compact Control Readability Style" - variant of K&R, similar to the Stroustrup variant.
One exception: single line conditional returns are on same line as the conditional.
Long lines are rarely wrapped.
Indent size is two spaces.
• Fixed In scripts and the Makefile, all references to "head -1" have been changed to "head -n 1".
• Fixed Patched source code to use #include <errno.h>
• Fixed Resolved all compile errors and warnings from the GNU C compiler (-W -Wall -Werror).
• Requires Nemo DJB Library v2.0 or later.

Routines and data structures:

Version Notes
• New djbio(3) - data structure - formerly substdio & updated to use Nemo DJB Library (nemo-libdjb) routines.
• New djbio_get(3) - routine - formerly stdio_get() & updated to use Nemo DJB Library (nemo-libdjb) routines.
• New djbio_put(3) - routine - formerly stdio_put() & updated to use Nemo DJB Library (nemo-libdjb) routines.
• New djbio_puteol() - put an EOL character into the output stream.
• New djbio_putsa() - put the contents of a stralloc into the output stream.
• New getln_max() - get a line of characters from an inout stream. It has a limit to prevent resource exhaustion. cf getln(3).
• New remoteinfo6() - routine. (Undocumented)
• New socket_tcp6(), socket_udp6() - routines. (Undocumented)
• New remoteinfo4() - routine - formerly remoteinfo() & updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• New socket_tcp4(), socket_udp4() - formerly socket_udp() & updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• New socket_bind4(), socket_bind4_reuse() - formerly socket_bind(), socket_bind_reuse() & updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• New socket_accept4(), socket_connect4(), socket_send4() - formerly socket_accept(), socket_connect(), socket_send() & updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• New socket_local4(), socket_remote4(), socket_recv4() - formerly socket_local4(), socket_remote4(), socket_recv4() & updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• New socket_bind6(), socket_bind6_reuse() - routines. (Undocumented)
• New socket_accept6(), socket_connect6(), socket_send6() - routines. (Undocumented)
• New socket_local6(), socket_remote6(), socket_recv6() - routines. (Undocumented)
• New strerr_warn1(), strerr_warn2(), strerr_warn3(), strerr_warn4(), strerr_warn5(), strerr_warn6() - derived from the original macro definitions - stronger data typing. (Undocumented)
• New strerr_warn1sys(), strerr_warn2sys(), strerr_warn3sys(), strerr_warn4sys(), strerr_warn5sys(), strerr_warn6sys() - derived from the original macro definitions - stronger data typing. (Undocumented)
• New strerr_warn1x(), strerr_warn2x(), strerr_warn3x(), strerr_warn4x(), strerr_warn5x(), strerr_warn6x() - derived from the original macro definitions - stronger data typing. (Undocumented)
• New strerr_die1(), strerr_die2(), strerr_die3(), strerr_die4(), strerr_die5(), strerr_die6() - derived from the original macro definitions - stronger data typing. (Undocumented)
• New strerr_die1sys(), strerr_die2sys(), strerr_die3sys(), strerr_die4sys(), strerr_die5sys(), strerr_die6sys() - derived from the original macro definitions - stronger data typing. (Undocumented)
• New strerr_die1x(), strerr_die2x(), strerr_die3x(), strerr_die4x(), strerr_die5x(), strerr_die6x() - derived from the original macro definitions - stronger data typing. (Undocumented)
• New timeoutconn6() - routine. (Undocumented)
• Changed commands(3) - routines - updated to use Nemo DJB Library (nemo-libdjb) routines.
• Changed getln(3) - updated to use Nemo DJB Library (nemo-libdjb) routines.
• Changed getln2(3) - updated to use Nemo DJB Library (nemo-libdjb) routines.
• Changed sgetopt(3) - updated to use Nemo DJB Library (nemo-libdjb) routines.
• Changed iopause() - routines - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed open_read(), open_trunc(), open_excl(), open_append(), open_write() - routines - general update.
• Changed openreadlineclose() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed openreadlistclose() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed readlineclose() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed readlistclose_append() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed readlistclose() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed socket_listen(), socket_tcp_no_delay(), socket_ip_options_kill() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed socket_try_reserve_in() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed socket_connected() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed strerr_sysinit() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed strerr_warn() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed strerr_die() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed timeoutconn4() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed timeoutread() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)
• Changed timeoutwrite() - updated to use Nemo DJB Library (nemo-libdjb) routines. (Undocumented)

Libraries:

Version Notes
• New libdjbio.a - the main library.