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) |
|