Nemo DJB Library (libdjb) - Changes
List of changes to the second generation of core routines.
v3.0 - UNRELEASED
This release contains API changes, new code, code optimisations, changes and fixes. Particular emphasis is on cross platform compatibility.
| Version Notes |
| • API change |
Renamed ip4_address data structure to ip4address. |
| • API change |
Renamed ip4_vector data structure to ip4vector. |
| • API change |
Renamed ip4_vector_*() routines to ip4vector_*(). |
| • API change |
Renamed ip6_address data structure to ip6address. |
| • API change |
Renamed ip6_vector data structure to ip6vector. |
| • API change |
Renamed ip6_vector_*() routines to ip6vector_*(). |
| • API change |
Renamed sa_vector data structure to strvector. |
| • API change |
Renamed sa_vector_*() routines to strvector_*(). |
| • API change |
Renamed sa_stream data structure to strstream. |
| • API change |
Renamed sa_stream_*() routines to strstream_*(). |
| • API change |
Renamed uintvector data structure to uintvector. |
| • API change |
Renamed uintvector_*() routines to uintvector_*(). |
| • API change |
Renamed uint16_vector data structure to uint16vector. |
| • API change |
Renamed uint16_vector_*() routines to uint16vector_*(). |
| • API change |
Renamed uint32_vector data structure to uint32vector. |
| • API change |
Renamed uint32_vector_*() routines to uint32vector_*(). |
| • API change |
Renamed uint64_vector data structure to uint64vector. |
| • API change |
Renamed uint64_vector_*() routines to uint64vector_*(). |
| • API change |
All length parameters byte_*() are now uint64_t. |
| • API change |
byte_fill() - unsigned char parameter changed to type char. |
| • API change |
stralloc_insertb() - const char* parameter changed to type const void*. |
| • API change |
stralloc_overlayb() - const char* parameter changed to type const void*. |
| • API change |
stralloc_remove_all() - const char* parameter changed to type const void*. |
| • API change |
stralloc_trim() - const char* parameter changed to type const void*. |
| • API change |
ip4vector.h split from ip4.h. |
| • API change |
ip6vector.h split from ip6.h. |
| • New |
byte_replace() function. |
| • New |
byte_replace_control() function. |
| • New |
byte_replace_non_printable() function. |
| • New |
byte_replace(3) document byte_replace(), byte_replace_control(), byte_replace_non_printable() functions. |
| • New |
blocking_disable() function - analogous to ndelay_on(). |
| • New |
blocking_enable() function - analogous to ndelay_off(). |
| • New |
stralloc_case_diffb() function. |
| • New |
stralloc_case_equalb() function. |
| • New |
stralloc_overlay() function. |
| • New |
stralloc_overlayb() function. |
| • New |
stralloc_insert() function. |
| • New |
stralloc_replace_control() function. |
| • New |
prot_sid() function (prot.h) - wrapper for setsid(). |
| • New |
ip4vector_purge() function. |
| • New |
ip6vector_purge() function. |
| • New |
ip4vector_unique() function. |
| • New |
ip6vector_unique() function. |
| • New |
passwd_uid() function (passwd.h) - wrapper for getpwnam(). |
| • New |
passwd_uid_gid() function (passwd.h) - wrapper for getpwnam(). |
| • New |
passwd_uid_gid_dir() function (passwd.h) - wrapper for getpwnam(). |
| • New |
passwd_login() function (passwd.h) - wrapper for getpwuid(). |
| • New |
passwd_login_dir() function (passwd.h) - wrapper for getpwuid(). |
| • New |
group_gid() function (group.h) - wrapper for getgrnam(). |
| • New |
byte_copyr(3) split from byte_copy(3). |
| • New |
intvector(3) manual page - dynamically allocated vector of int data items. |
| • New |
intvector_append(3) - manual page. |
| • New |
intvector_erase(3) - manual page. |
| • New |
intvector_ready(3) - manual page. |
| • New |
uintvector(3) manual page - dynamically allocated vector of unsigned int data items. |
| • New |
uintvector_append(3) - manual page. |
| • New |
uintvector_erase(3) - manual page. |
| • New |
uintvector_ready(3) - manual page. |
| • New |
uint64vector_ready(3) - manual page. |
| • New |
uint64vector(3) manual page - dynamically allocated vector of unsigned int data items. |
| • New |
iopause* imported from Nemo DJBIO Library. |
| • New |
socket* imported from Nemo DJBIO Library. |
| • New |
timeoutio* imported from Nemo DJBIO Library. |
| • Changed |
stralloc_replace(3) documented stralloc_replace_control(3). |
| • Changed |
stralloc_*() - improved allocation detection + code optimisation. |
| • Changed |
strvector_*() - improved allocation detection + code optimisation. |
| • Changed |
unix_now() - upgraded to use clock_gettime(CLOCK_REALTIME, struct timespec *). |
| • Changed |
tai_now() - upgraded to use clock_gettime(CLOCK_REALTIME, struct timespec *). |
| • Changed |
taia_now() - upgraded to use clock_gettime(CLOCK_REALTIME, struct timespec *). |
| • Changed |
wait_pid() return pid_t integer type. |
| • Changed |
wait_nohang() return pid_t integer type. |
| • Changed |
stralloc_qp_decode() - upgraded to use strstream data structure. |
| • Changed |
constmap_*() - upgraded to use strstream data structure. |
| • Changed |
wait(3) updated to reflect changes. |
| • Changed |
Various sig_*.c split into single routine source files. |
| • Changed |
error_nametoolong constant added to error.h. |
| • Changed |
setsid(), setgid(), setegid(), setuid(), seteuid() declarations added to unix.h. |
| • Changed |
socket_*() - minor code optimisations. |
| • Fixed |
ip4_mask_scan() - now returns the number of characters parsed, no longer requires a NULL terminated character string as input. |
| • Fixed |
taia_timestamp() - properly account for null void*. |
| • Fixed |
siphash.c updated to compile under gcc v8.3.0. |
| • Fixed |
alloc(3) pointer types. |
v2.13 - April 17, 2019
This release contains new code, code optimisations, changes and fixes.
| Version Notes |
| • New |
byte_fill() function. |
| • New |
open_cwd() function. |
| • New |
sa_vector_insert() function - insert an stralloc entry into a sa_vector data structure. |
| • New |
error_invalidarg - error constant (EINVAL). |
| • New |
sa_vector_copy(3) manual page. |
| • Changed |
unix_randombytes() - output data is now void*. |
| • Changed |
cpu_abi_name() - recognises more CPU ABIs. |
| • Changed |
uint16_pack(), uint16_pack_big() - code optimisation. |
| • Changed |
uint16_unpack(), uint16_unpack_big() - code optimisation. |
| • Changed |
uint32_pack(), uint32_pack_big() - code optimisation. |
| • Changed |
uint32_unpack(), uint32_unpack_big() - code optimisation. |
| • Changed |
uint64_pack(), uint64_pack_big() - code optimisation. |
| • Changed |
uint64_unpack(), uint64_unpack_big() - code optimisation. |
| • Fixed |
unix_cryptorandomnumber() return value is of type uint32_t. |
| • Fixed |
Installation of fmt_long(3) manual page. |
| • Fixed |
Comment in byte.h. |
v2.12 - January 28, 2019
This release contains new code, speed optimisations, changes and fixes.
| Version Notes |
| • New |
sa_vector_reverse() function - reverse the entries in a sa_vector data structure. |
| • New |
sa_vector_appendb() function - append a data block to a sa_vector data structure. |
| • New |
sa_vector_appends() function - append a null-terminated string to a sa_vector data structure. |
| • New |
uint32_vector_erase() function - remove all entries from an uint32_vector data structure. |
| • New |
uint32_vector_lower() function - change to lower an array of Unicode code points (uint32_t). |
| • New |
uint32_vector_utf8_decode() function - decode UTF-8 data into array of Unicode code points (uint32_t). |
| • New |
sa_vector_purge() function - remove all empty entries from vector. |
| • New |
uint32_vector(3) manual page - dynamically allocated vector of uint32_t data items. |
| • New |
uint32_vector_append(3) manual page - append data to uint32_vector data structure. |
| • New |
uint32_vector_erase(3) manual page. |
| • New |
uint32_vector_ready(3) - manual page. |
| • New |
char_b64_chars data structure. |
| • New |
char_b64_table data structure. |
| • Changed |
Renamed conf-home to conf-prefix. |
| • Changed |
Renamed byte_case_start() to byte_case_starts(). |
| • Changed |
byte_case_diff() - speed optimisation. |
| • Changed |
byte_case_equal() - speed optimisation. |
| • Changed |
byte_case_starts() - speed optimisation. |
| • Changed |
byte_equal() - speed optimisation. |
| • Changed |
byte_lower() - speed optimisation. |
| • Changed |
byte_upper() - speed optimisation. |
| • Changed |
stralloc_case_diff() - speed optimisation. |
| • Changed |
stralloc_case_diffs() - speed optimisation. |
| • Changed |
stralloc_case_end() - speed optimisation. |
| • Changed |
stralloc_case_equal() - speed optimisation. |
| • Changed |
stralloc_case_equals() - speed optimisation. |
| • Changed |
stralloc_case_start() - speed optimisation. |
| • Changed |
stralloc_case_starts() - speed optimisation. |
| • Changed |
stralloc_cat() - speed optimisation. |
| • Changed |
stralloc_copy() - speed optimisation. |
| • Changed |
stralloc_diff() - speed optimisation. |
| • Changed |
stralloc_diffb() - speed optimisation. |
| • Changed |
stralloc_diffs() - speed optimisation. |
| • Changed |
stralloc_end() - speed optimisation. |
| • Changed |
stralloc_endb() - speed optimisation. |
| • Changed |
stralloc_ends() - speed optimisation. |
| • Changed |
stralloc_equal() - speed optimisation. |
| • Changed |
stralloc_equalb() - speed optimisation. |
| • Changed |
stralloc_equals() - speed optimisation. |
| • Changed |
stralloc_lower() - speed optimisation. |
| • Changed |
stralloc_start() - speed optimisation. |
| • Changed |
stralloc_startb() - speed optimisation. |
| • Changed |
stralloc_starts() - speed optimisation. |
| • Changed |
stralloc_upper() - speed optimisation. |
| • Changed |
unix_randombytes() - speed optimisation. |
| • Changed |
replaced all comparison instances of '== -1' to '< 0'. |
| • Changed |
sa_vector_ready(3) manual page - new ERROR HANDLING section. |
| • Changed |
Split sa_vector_cat.mdoc into sa_vector_append.mdoc and sa_vector_cat.mdoc. |
| • Changed |
All mdoc files - change text substitution literals (inspired by GNU Autoconf Makefile.in syntax). |
| • Changed |
conf-release-date renamed to DATE. |
| • Changed |
Removed executable bit from all files. |
| • Changed |
Minor changes to build system. |
| • Fixed |
sa_vector*(3) manual pages - fix declarations in SYNOPSIS section. |
| • Fixed |
ip4_mask_scan() - coding error. |
| • Fixed |
ip6_mask_scan() - coding error. |
| • Fixed |
Many mdoc files - miscellaneous fixes. |
v2.11 - March 9, 2018
This release contains new code, changes and fixes.
| Version Notes |
| • New |
uint16_reverse() function. |
| • New |
uint32_reverse() function. |
| • New |
uint64_reverse() function. |
| • New |
char_tolower() function. |
| • New |
char_toupper() function. |
| • New |
test_ip6 - test scanning of IPv6 text representations. |
| • Changed |
error_str() - error_dquot implemented. |
| • Changed |
ip4_scan() - code optimisation. |
| • Changed |
ip4_scanbracket() - code optimisation. |
| • Changed |
ip6_scanbracket() - code optimisation. |
| • Changed |
ip6_mask_scanbracket() - code optimisation. |
| • Fixed |
ip4_mask_scan() - improved error condition detection + code optimisation. |
| • Fixed |
ip6_mask_scan() - improved error condition detection + code optimisation. |
| • Fixed |
ip6_copyin_ip4() - remove initialisation of output to ip6_v4_mapped_prefix. |
| • Fixed |
ip6_scan() - fixed false negative errors - complete rewrite. |
v2.10 - December 28, 2017
This release contains new code, changes and fixes.
| Version Notes |
| • New |
__NORETURN__ definition in macro_noreturn.h - definition to declare a routine that it will not return.
It is installed into the nemo include directory. |
| • Changed |
macro_unsued.h - now installed into the nemo include directory. |
| • Changed |
Added execl() definition to unix.h. |
| • Changed |
Added execlp() definition to unix.h. |
| • Changed |
Minor changes to build system. |
| • Fixed |
pathexec_run(), et al - now removes prefixed path from argv[0] argument passed to execve(). |
v2.9 - December 4, 2017
This release contains new code and fixes.
| Version Notes |
| • New |
ip6_mask_scanbracket(). |
| • New |
ip6_mask_scan(). |
| • New |
uint_vector_sort(). |
| • New |
uint_vector_swap(). |
| • New |
unix_randombytes() - create a block of random bytes. Derived from NaCl randombytes(). |
| • New |
test_stdints - test our range of standard integer sizes (compile time). |
| • New |
cpu_abi_name() - return ABI name of CPU (compile time). |
| • New |
sig_int - new constant in sig.h. |
| • New |
sig_int - new constant in sig.c. |
| • New |
char_ispunct() - test for punctuation character. |
| • New |
stralloc_upper() - convert ASCII lowercase bytes to uppercase in a stralloc structure. |
| • New |
stralloc_upper(3) manual page. |
| • New |
stralloc_remove(3) manual page. |
| • Changed |
Minor changes to build system. |
| • Fixed |
ip4_mask_scan() - improved error condition detection. |
| • Fixed |
ip4_port_scan() - improved error condition detection. |
| • Fixed |
ip6_port_scan() - improved error condition detection. |
| • Fixed |
Various manual pages not being installed. |
| • Fixed |
stralloc_lower(3) - changed reference from case_lower() to byte_lower(). |
| • Fixed |
stralloc_replace(3) - changed parameter type from int to char. |
| • Fixed |
stralloc_replace_non_printable(3) - changed parameter type from int to char. |
v2.8.3 - August 18, 2017
This release contains optimisations and fixes. Particular emphasis is 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 |
| • Fixed |
tai_epoch() - change parenthesis of cast to time_t.
Reported by Philip Hempel. |
| • Fixed |
print-unixtype-h.c - now uses local stdint.h header file.
Reported by Philip Hempel. |
| • Fixed |
print-unixtype-h.c - generate "guard" defines for compatability with other development environments. |
| • Fixed |
byte_case_start() - comparison test for upper case. |
| • Fixed |
str_case_start() - comparison test for upper case. |
| • Fixed |
str_*.c - changed source formatting - resolve -Werror=misleading-indentation compile warnings in gcc 6.3.x.
Reported by Philip Hempel. |
| • Fixed |
byte_*.c - changed source formatting - resolve -Werror=misleading-indentation compile warnings in gcc 6.3.x. |
| • Fixed |
ip4_*.c - changed source formatting - resolve -Werror=misleading-indentation compile warnings in gcc 6.3.x. |
| • Fixed |
ip6_*.c - changed source formatting - resolve -Werror=misleading-indentation compile warnings in gcc 6.3.x. |
| • Fixed |
tai_*.c - changed source formatting - resolve -Werror=misleading-indentation compile warnings in gcc 6.3.x. |
| • Fixed |
taia_*.c - changed source formatting - resolve -Werror=misleading-indentation compile warnings in gcc 6.3.x. |
| • Changed |
unix.h - added recv() and send() declarations. |
| • Changed |
conf-cc - updated examples for later versions of glibc.
Reported by Philip Hempel. |
v2.8.2 - August 3, 2017
This release contains build fixes.
| Version Notes |
| • Fixed |
Minor change to build system - renamed the local command define to clr-define - possible name conflict.
Reported by Philip Hempel. |
v2.8.1 - June 26, 2017
This release contains new code, fixes and optimisations.
| Version Notes |
| • New |
char_isgraph(). |
| • New |
char_isspace(). |
| • Changed |
char_isalpha() - internal structure. |
| • Changed |
char_isdigit() - internal structure. |
| • Changed |
ip6_copyin_ip4() - initialised with ip6_v4_mapped_prefix data structure. |
| • Fixed |
ip6_fmt() - last separator before IPv4 address is now ':' character. |
| • Fixed |
ip6_is_v4_mapped() - prefix comparison test. |
v2.8 - May 18, 2017
This release contains a change in API, new code, optimisations.
| Version Notes |
| • New |
stralloc_case_starts(). |
| • New |
char_isalpha(). |
| • New |
char_isdigit(). |
| • New |
sa_vector_sort(). |
| • New |
sa_vector_swap(). |
| • New |
sa_vector_unique(). |
| • New |
ip4_pack_uint32(). |
| • New |
byte_count(). |
| • New |
stralloc_count(). |
| • API change |
char_isprint() - now static inline declaration. |
| • API change |
sa_stream_getc() - now returns unsigned int. |
| • API change |
sa_vector_case_find() - requires input data to be sorted. |
| • API change |
sa_vector_find() - requires input data to be sorted. |
| • Changed |
ip4_vector_find() - code optimisation. |
| • Changed |
ip6_vector_find() - code optimisation. |
| • Changed |
sa_vector_remove() - code optimisation. |
| • Fixed |
stralloc_qp_decode() - allow tabs ('\t') in the input. |
| • Fixed |
char_isprint() - handling of sign extension of character array index. |
| • Fixed |
stralloc_qp_decode() - handling of sign extension of character array index. |
| • Fixed |
scan_8long() - handling of sign extension of character array index. |
| • Fixed |
scan_ulong() - handling of sign extension of character array index. |
| • Fixed |
scan_xlong() - handling of sign extension of character array index. |
v2.7 - February 12, 2017
This release contains a change in API, new code, optimisations and fixes.
| Version Notes |
| • New |
uint_vector_erase() |
| • New |
uint64_pack() |
| • New |
uint64_pack_big() |
| • New |
uint64_unpack() |
| • New |
uint64_unpack_big() |
| • New |
str_find() - find position of substring in another string. |
| • New |
str_findb() - find position of block data in string. |
| • New |
byte_upper() - convert ASCII lowercase bytes to uppercase. |
| • New |
base64url_decode() - decode a Base64URL (RFC2045) encoded character. |
| • New |
base64url_encode() - encode plain text character into a Base64URL (RFC2045) encoded character. |
| • New |
stralloc_base64url_decode() - decode stralloc containing a series of Base64URL (RFC2045) encoded characters. |
| • New |
stralloc_base64url_encode() - encode stralloc into a series of Base64URL (RFC2045) encoded characters. |
| • New |
stralloc_qp_decode() - decode stralloc containing a series of Quoted-Printable (RFC2045) encoded characters. |
| • New |
stralloc_qp_encode() - encode stralloc into Quoted-Printable (RFC2045) encoded characters. |
| • New |
surf() - Simple Unpredictable Random Function. |
| • New |
surfpcs() - SURF protected counter sums. |
| • New |
constmap.h - CONSTMAP define for initialisation. |
| • New |
choose.sh - shell script for make. |
| • New |
define.sh - shell script for make. |
| • API change |
siphash24() - now accepts const void* instead of const byte_t* for input data. |
| • API change |
tai_epoch() - return value of type time_t. |
| • API change |
taia_epoch() - return value of type time_t. |
| • API change |
stralloc_base32_decode() - return value of type unsigned int. |
| • API change |
stralloc_base32hex_decode() - return value of type unsigned int. |
| • API change |
stralloc_base64_decode() - return value of type unsigned int. |
| • Changed |
siphash24() - now uses uint64_unpack() instead of reference macro. |
| • Changed |
prot.c - split into prot_uid.c prot_gid.c. |
| • Changed |
stralloc_base32_decode(), stralloc_base32_encode() - no longer modify output if error occurs. |
| • Changed |
stralloc_base32hex_decode(), stralloc_base32hex_encode() - no longer modify output if error occurs. |
| • Changed |
stralloc_base64_decode(), stralloc_base64_encode() no longer modify output if error occurs. |
| • Changed |
unix.h - inclusion of fchmod(). |
| • Changed |
unix.h - inclusion of fchown(). |
| • Changed |
unix.h - inclusion of kill(). |
| • Changed |
c-auto-str.c - change 0 to '\0' for char array initialisation. |
| • Changed |
taia_timestamp() - now returns formatted text length and can handle a null parameter value. |
| • Changed |
subgetopt(3) - changed formatting. |
| • Changed |
env_get() - optimised code, inspired by similar routine in ezmlm package. |
| • Changed |
open_append(), open_read(), open_trunc(), open_trunc() - changed O_NDELAY to O_NONBLOCK. |
| • Changed |
lock_*.c - code format changes. |
| • Changed |
Makefile - removed shar target. |
| • Fixed |
stralloc_start(3) - manual page correlates to API. |
| • Fixed |
stralloc_end(3) - manual page correlates to API. |
| • Fixed |
sa_vector(3) - formatting. |
| • Fixed |
tai_unix() - handling of signedness of internal calculation. |
| • Fixed |
Minor changes to build system. |
| • Removed |
warn-auto.h |
| • Removed |
FILES - unused and high maintenance. |
v2.6 - July 18, 2016
| Version Notes |
| • API change |
ip6_address - new data member sid (scope id). |
| • API change |
IP6_FMT - expanded to handle scope id. |
| • Changed |
ip4_port_scan() - improve error checking. |
| • Changed |
ip4_scan() - improve error checking. |
| • Changed |
ip6_equal_mask() - rewrite to existing routines. |
| • Changed |
ip6_fmt() - append scope id, if not zero. |
| • Changed |
ip6_scan() - scan for scope id and improve error checking. |
| • 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. |
| • Removed |
ip6_fmt_flat(). |
| • Removed |
ip6_scan_flat() - use bracket convention instead. |
v2.5.2 - June 20, 2016
| Version Notes |
| • New |
sa_stream(3) - simple streaming routines using stralloc as the underlying buffer. |
| • Changed |
hier.c - removed unnecessary cast. |
| • Changed |
install.c, install_support.c - changed some #include declarations. |
| • Changed |
Changes to build system. |
| • Changed |
conf-cc - add comment about building on gcc+glibc platform. |
| • Fixed |
prot.c - compile error (gcc+glibc) - changed some #include declarations. |
| • Fixed |
unixtypes.h - now built during make - according to machine architecture and/or BSD versus glibc definitions. |
| • Fixed |
install_support.c - compile error (gcc+glibc) - changed some #include declarations. |
| • Fixed |
unix_cryptorandomnumber.c - compile error (gcc+glibc) - change cast from unsigned long to unsigned int. |
| • Fixed |
test_stralloc_base32.c, test_stralloc_base32hex.c, test_stralloc_base64.c - compile error (gcc+glibc) - now test for return value of write() function. |
v2.5.1 - March 30, 2016
| Version Notes |
| • New |
conf-manuser - owner (user) of the installed manual pages and directories. |
| • New |
unsigned int install_manuid - libdjbinstall, libinstcheck - owner (user) of the installed manual pages and directories (cf conf-manuser). |
| • Changed |
hier.c - updated to use unsigned int install_manuid (libdjbinstall, libinstcheck). |
| • Fixed |
Minor changes to build system. |
v2.5 - December 2, 2015
| Version Notes |
| • New |
int_vector_len() - return length of int_vector, safely - declared as static inline. |
| • New |
ip4_vector_len() - return length of ip4_vector, safely - declared as static inline. |
| • New |
ip6_vector_len() - return length of ip6_vector, safely - declared as static inline. |
| • New |
uint_vector_len() - return length of int_vector, safely - declared as static inline. |
| • New |
uint32_vector_len() - return length of int_vector, safely - declared as static inline. |
| • API change |
constmap() - now returns const char *; first parameter now const struct constmap *. |
| • API change |
int_vector_init(), int_vector_ready(), int_vector_readyplus() - now declared as static inline. |
| • API change |
ip4_vector_init(), ip4_vector_ready(), ip4_vector_readyplus() - now declared as static inline. |
| • API change |
ip6_vector_init(), ip6_vector_ready(), ip6_vector_readyplus() - now declared as static inline. |
| • API change |
stralloc_init(), stralloc_ready(), stralloc_readyplus(), stralloc_len() - now declared as static inline. |
| • API change |
uint_vector_init(), uint_vector_ready(), uint_vector_readyplus() - now declared as static inline. |
| • API change |
uint32_vector_init(), uint32_vector_ready(), uint32_vector_readyplus() - now declared as static inline. |
| • Fixed |
unix.h - gethostname() - second parameter now declared as size_t - formerly unsigned int. |
v2.4.1 - October 14, 2015
| Version Notes |
| • New |
ip6_mask_0() - set to zero all bits outside of a specified mask for an IPv6 address. |
| • New |
ip6_shift_left() - shift left all bits in IPv6 address. |
| • New |
ip6_shift_right() - shift right all bits in IPv6 address. |
| • Changed |
ip6_reverse() - reversal based on nibble (4bit) alignment. |
| • Fixed |
ip4_equal_mask(), ip6_equal_mask() - byte aligned mask fix. |
| • Fixed |
Base32 routines and data structure conform to RFC4648. |
v2.4 - September 18, 2015
| Version Notes |
| • API change |
siphash24() - now returns the hash as uint64_t instead of low endian data via function call parameter. |
v2.3.1 - October 14, 2015
| Version Notes |
| • Changed |
constmap() and constmap_init() now use siphash24() for hash generation. |
| • Changed |
constmap_hash now declared as uint64_t. |
v2.3 - September 7, 2015
| Version Notes |
| • New |
siphash24() - new pseudo-random function designed by Jean-Philippe Aumasson and Daniel J Bernstein, optimised for short inputs. |
| • New |
siphash(3) - manual page. |
| • API change |
str_*() - replaced char * function parameters with void *. |
| • API change |
ip4_vector_find() - now returns unsigned int - returns length for not found condition. |
| • API change |
ip6_vector_find() - now returns unsigned int - returns length for not found condition. |
| • Changed |
Minor changes to build system. |
| • Fixed |
trydrent.c - fixed compile errors for gcc v5.1. |
v2.2.5 - August 7, 2015
| Version Notes |
| • New |
ip6_fmt_uncompressed() - IPv6 format without removing consecutive zeroes. |
| • Changed |
ip6_fmt() - code optimisation. |
| • Changed |
c-auto-define - extended to accommodate "guard" definition command line option. |
| • Fixed |
ip6_address.mdoc - document dependance on <ip4.h> header. |
v2.2.4 - July 31, 2015
| Version Notes |
| • New |
unixtypes.h - data types previously declared in <stdint.h>. |
| • Changed |
stdint.h - unix types removed, now in <unixtypes.h> header. |
| • Changed |
stdint.h - improve platform portability. |
| • Changed |
tai_now() - uses unix_now() for time source. |
| • Changed |
unix_cryptorandomnumber.c - improve platform portability. |
| • Changed |
seek_*.c - added <unixtypes.h> header & improve platform portability. |
| • Changed |
tai_*.c - added <unixtypes.h> header. |
| • Changed |
taia_*.c - added <unixtypes.h> header. |
| • Changed |
Minor changes to build system. |
| • Changed |
Manual pages - incorporate first line of file 'VERSION' into footer. |
| • Changed |
tai*.mdoc - document new dependance on <unixtypes.h> header. |
| • Changed |
taia*.mdoc - document new dependance on <unixtypes.h> header. |
v2.2.3 - July 15, 2015
| Version Notes |
| • New |
taia_epoch() - return seconds since unix epoch - taia(3). |
| • New |
taia_seconds() - return seconds - taia(3). |
| • New |
taia_unix() - set time, using unix time - taia(3). |
| • Changed |
tai(3) - added documentation of tai_unix(), tai_epoch() and tai_seconds(). |
| • Changed |
taia(3) - added documentation of taia_unix(), taia_epoch() and taia_seconds(). |
| • Changed |
Minor changes to build system. |
| • Fixed |
taia(3) - function name in synopsis. |
v2.2.2 - July 9, 2015
| Version Notes |
| • Changed |
sa_vector_parse_config() - defensive initialisation of local variable. |
| • Changed |
unix.h - inclusion of many more common unix routines. |
| • Changed |
unix.h - change prototype of chown(). |
| • Changed |
seek_*() - simplify as a result of <unix.h> header file changes. |
| • Changed |
alloc.c1, alloc.c2 - simplify as a result of <unix.h> header file changes. |
| • Changed |
Minor changes to build system. |
| • Fixed |
byte_case_diff(), byte_lower(), str_case_diff(), str_lower() - fix upper case range check. |
v2.2.1 - July 6, 2015
| Version Notes |
| • Changed |
Minor cosmetic manual page changes. |
| • Changed |
Minor changes to build system. |
| • Fixed |
byte_rchr() - revert to original source code. |
v2.2 - July 1, 2015
| Version Notes |
| • API change |
scan_*() all functions now refer to const void * instead of const char *. |
| • Changed |
Minor cosmetic manual page changes. |
| • Changed |
Minor changes to build system. |
| • Changed |
byte_case_diff(), byte_lower(), str_case_diff(), str_lower() - algorithm change - less computation. |
v2.1 - June 29, 2015
| Version Notes |
| • New |
tai_seconds() - routine. |
| • New |
ip4_vector_find() - formerly ip4_vector_search(). |
| • New |
ip4_equal_mask() - routine. |
| • New |
ip6_equal_mask() - routine. |
| • New |
byte_case_diff(3) - manual page. |
| • New |
byte_case_start(3) - manual page. |
| • New |
byte_lower(3) - manual page. |
| • New |
str_case_diff(3) - manual page. |
| • New |
str_case_start(3) - manual page. |
| • New |
str_lower(3) - manual page. |
| • New |
byte_case_start.c - routine - from DJB's publicfile package; formerly case_startb(). |
| • New |
byte_lower() - formerly case_lowerb(). |
| • New |
byte_case_diff() - formerly case_diffb(). |
| • New |
byte_case_equal() - formerly case_equalb(). |
| • New |
str_case_start() - formerly case_starts(). |
| • New |
str_lower() - formerly case_lowers(). |
| • New |
str_case_diff() - formerly case_diffs(). |
| • New |
str_case_equal() - formerly case_equals(). |
| • New |
ip6_vector_find() - formerly ip6_vector_search(). |
| • API change |
stralloc_append() - API change - now refers to const void * instead of const char *. |
| • API change |
tai_pack() - API change - now refers to void * instead of char *. |
| • API change |
tai_unpack() - API change - now refers to const void * instead of const char *. |
| • API change |
taia_fmtfrac() - API change - now refers to void * instead of char *. |
| • API change |
taia_pack() - API change - now refers to void * instead of char *. |
| • API change |
taia_unpack() - API change - now refers to const void * instead of const char *. |
| • API change |
taia_fmtfrac() - API change - now refers to void * instead of char *. |
| • API change |
taia_timestamp() - API change - now refers to void * instead of char *. |
| • API change |
byte_*() - API change - all functions now refer to void * instead of char *. |
| • API change |
fmt_*() - API change - all functions now refer to void * instead of char *. |
| • API change |
uint16_*() - API change - uint16_t is now the first parameter. |
| • API change |
uint32_*() - API change - uint32_t is now the first parameter. |
| • API change |
ip4_vector_search() - ip4_vector * parameter is now passed as const ip4_vector *. |
| • API change |
ip4_fmt() - API change - now refers to void * instead of char *. |
| • API change |
ip4_fmtiaa() - API change - now refers to void * instead of char *. |
| • API change |
ip6_fmt() - API change - now refers to void * instead of char *. |
| • API change |
ip6_vector_search() - the ip6_vector is now passed as a const. |
| • API change |
error_str() - now returns const char *; formerly char * |
| • API change |
str_start() - returns unsigned int; formerly int |
| • Changed |
Stricter compiler error reporting. |
| • Changed |
Code optimisation or many source files. |
| • Changed |
Minor cosmetic manual page changes. |
| • Changed |
install_log.c - remove static open_*() routines; use local library version of open_*() routines. |
| • Changed |
more has*.h header files install into public includes location. |
| • Changed |
Added symlink() declaration into <unix.h> header file. |
| • Fixed |
ip4_vector_sort() - bug fix. |
| • Fixed |
ip6_vector_sort() - bug fix. |
| • Fixed |
ip6_fmt() - fix IPv4 mask format if in middle of zero reduction. |
| • Removed |
trycpp.c. |
| • Removed |
case.h - functionality now handled by byte_*() and str_*() routines. |
v2.0.3 - February 12, 2015
| Version Notes |
| • New |
ip4_reverse() - routine - reverse the order of the octets. |
| • New |
ip6_reverse() - routine - reverse the order of the octets. |
| • New |
stralloc_endb() - routine - compare the end of a stralloc buffer with a data block. |
| • New |
stralloc_ends() - routine - compare the end of a stralloc buffer with a string. |
| • New |
sa_vector_lower() - routine. |
| • API change |
sa_vector_find() - the sa_vector * is now passed as const sa_vector *. |
| • API change |
sa_vector_case_find() - the sa_vector * is now passed as const sa_vector *. |
| • Changed |
stralloc_start.c - code optimisation. |
| • Changed |
stralloc_starts.c - code optimisation. |
| • Changed |
stralloc_end.c - code optimisation. |
| • Changed |
stralloc_copys.c - code optimisation. |
| • Changed |
stralloc_base64_encode.c - code optimisation. |
| • Changed |
stralloc_base64_decode.c - code optimisation. |
| • Changed |
ip6_scan() - disable processing of standalone IPv4 address. |
| • Changed |
Minor cosmetic manual page changes. |
v2.0.2 - January 23, 2015
| Version Notes |
| • New |
Implemented configuration option: conf-devtcp - flag for TCP devices. |
| • New |
Imported open_*() routines from nemo-libdjbio. |
| • Fixed |
Makefile - implemented c-auto-define to create __UNUSED__ macro. |
| • Fixed |
Makefile - implemented c-auto-define to create other build time macros. |
| • Fixed |
Minor changes to build process. |
| • Removed |
"systype" processing. |
v2.0.1 - January 19, 2015
| Version Notes |
| • New |
Program: c-auto-define. (Undocumented) |
| • New |
c-auto-octal - formerly c-auto-int8. |
| • New |
fmt_8long() - formerly fmt_octal(), to complement scan_8long() |
| • New |
fmt_8long.mdoc - formerly fmt_octal.mdoc, to complement scan_8long |
| • Changed |
c-auto-gid, c-auto-octal, c-auto-str, c-auto-uid, c-auto-uint - minor optimisation. |
| • Fixed |
c-auto-bool - bug fix & minor optimisation. |
v2.0 - January 17, 2015 - Major Changes from Original Distribution
General:
| Version Notes |
| • New |
Manual pages created for existing routines. |
| • New |
Makefile target: "clean". |
| • New |
To avoid name clashes with header files, header files are installed in a subdirectory "nemo" (in the includes directory). |
| • New |
Implemented configuration option, conf-stdint - take advantage the system <stdint.h> header file. |
| • New |
Implemented configuration option, conf-home - installation hierarchy prefix. |
| • New |
Implemented configuration option, conf-malloc-aligned - to use the system malloc(3) if it returns pointers to aligned memory. |
| • New |
Programs: c-auto-bool, c-auto-gid, c-auto-int8, c-auto-str, c-auto-uid, c-auto-uint. (Undocumented) |
| • New |
Implemented some of the standard integer types in the POSIX standard. |
| • API change |
Changed many signed integers into unsigned integers. |
| • API change |
Changed many signed return values into unsigned return values. |
| • Changed |
Function prototypes for all subroutines. |
| • Changed |
Converted K&R prototypes to ANSI. |
| • Changed |
All manual pages have been converted to mdoc(7) format. |
| • Changed |
Additional annotations/comments - some source code files. |
| • 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). |
Routines and data structures:
| Version Notes |
| • New |
base32c(3) - routines - encode/decode base 32 characters. |
| • New |
base64c(3) - routines - encode/decode base 64 characters. |
| • New |
byte_chr(3) - manual page - locate character in sequence of bytes. |
| • New |
byte_copy(3) - manual page - copy sequence of bytes. |
| • New |
byte_diff(3) - manual page - compare two sequences of bytes. |
| • New |
byte_zero(3) - routine - zero the contents of a region of memory. |
| • New |
error(3) - additional error constants. |
| • New |
error_str(3) - additional error strings. |
| • New |
fmt(3) - manual page - overview of formatting routines. |
| • New |
fmt_hexb(3) - manual page - format binary data into hexadecimal text. |
| • New |
fmt_long(3) - manual page - format long integer into text. |
| • New |
fmt_minus(3) - manual page - emit a '-' character if argument is negative. |
| • New |
fmt_octal(3) - manual page - format unsigned integer into octal text. |
| • New |
fmt_plusminus(3) - routine - emit a '+' or '-' character dependant on the numerical sign of the argument. |
| • New |
fmt_str(3) - manual page - format null terminated string into text. |
| • New |
fmt_uint(3) - manual page - format unsigned integer into text. |
| • New |
fmt_ulong(3) - manual page - format unsigned long integer into text. |
| • New |
fmt_xlong(3) - manual page - format unsigned long integer into hexadecimal text. |
| • New |
int_vector(3) - data structure - dynamically allocated int vector interface. (Undocumented) |
| • New |
ip4_address(3) - data structure + routines - IP version 4 address data. |
| • New |
ip4_vector(3) - IPv4 data structure vector and support routines. (Undocumented) |
| • New |
ip6_address(3) - data structure + routines - IP version 6 address data. |
| • New |
ip6_vector(3) - IPv6 data structure vector and support routines. (Undocumented) |
| • New |
sa_vector(3) - data structure + routines - sa_vector() is a dynamic vector of stralloc(3) data structures. |
| • New |
stralloc_base64_decode(3) - routine - decode a series of Base64 encoded characters from one stralloc structure into another. |
| • New |
stralloc_base64_encode(3) - routine - Base64 encode a series of characters in one stralloc structure into another. |
| • New |
stralloc_chr(3) - routines - locate character in a stralloc(3) data structure. |
| • New |
stralloc_lower(3) - routine - convert ASCII uppercase bytes to lowercase in a stralloc structure. |
| • New |
stralloc_replace(3) - routines - replace characters in a stralloc data structure with a specific character. |
| • New |
stralloc_trim(3) - routine - removes trailing chars from a stralloc buffer. |
| • New |
stralloc_zero(3) - routine - zero the contents of the stralloc buffer. |
| • New |
tai(3) - imported routines - from the original DJB libtai library. |
| • New |
tai(3) - imported manual pages - from DJB website. |
| • New |
taia(3) - imported routines - from the original libtai library. |
| • New |
taia(3) - imported manual pages - from DJB website. |
| • New |
uint_vector(3) - data structure - dynamically allocated unsigned int vector interface. (Undocumented) |
| • New |
uint32_vector(3) - data structure - dynamically allocated unsigned 32bit int vector interface. (Undocumented) |
| • New |
uint64_vector(3) - data structure - dynamically allocated unsigned 64bit int vector interface. (Undocumented) |
| • New |
unix_cryptorandomnumber(3) - routine - attempt to create a portable random number generator. |
| • New |
unix_now(3) - routine - get current time, in seconds. |
| • Changed |
stralloc(3) - now uses a discrete subroutine to handle buffer allocation adjustments, previously it was implemented as a macro. |
Libraries:
| Version Notes |
| • New |
libdjb.a - the main library. |
| • New |
libdjbinstall.a - assist in installing files to specific locations. It logs all transactions. (Undocumented) |
| • New |
libdjbinstcheck.a - companion library to the libdjbinstall.a library. (Undocumented) |
|