isc_file_fseek(), isc_file_fread(), isc_file_fwrite(),
isc_file_fflush(), isc_file_ffsync(), isc_file_remove()
to encapsulate nonportable usage of errno and fflush().
Cleanup of redundant/useless header file inclusion.
ISC style lint, primarily for function declarations and standalone
comments -- ie, those that appear on a line without any code, which
should be written as follows:
/*
* This is a comment.
*/
make v6 sockets, but we do not have struct in6_pktinfo.
Add a check in configure.in for struct in6_pktinfo.
Use the result of that check to define (if needed) in6_pktinfo in net.h.
This change makes us build on platforms that have SOME ipv6 structures
(like in6_addr, etc) but not enough to be useful to us.
Note: Before making an ipv6 socket the code should verify that ipv6
sockets can be made using isc_net_probeipv6(). It should also
check for v4 sockets using isc_net_probeipv4() to be consistant.
Added:
isc_buffer_base(b) (pointer)
isc_buffer_current(b) (pointer)
isc_buffer_active(b) (pointer)
isc_buffer_used(b) (pointer)
isc_buffer_length(b) (int)
isc_buffer_usedlength(b) (int)
isc_buffer_consumedlength(b) (int)
isc_buffer_remaininglength(b) (int)
isc_buffer_activelength(b) (int)
isc_buffer_availablelength(b) (int)
Removed:
ISC_BUFFER_USEDCOUNT(b)
ISC_BUFFER_AVAILABLECOUNT(b)
isc_buffer_type(b)
Changed names:
isc_buffer_used(b, r) ->
isc_buffer_usedregion(b, r)
isc_buffer_available(b, r) ->
isc_buffer_available_region(b, r)
isc_buffer_consumed(b, r) ->
isc_buffer_consumedregion(b, r)
isc_buffer_active(b, r) ->
isc_buffer_activeregion(b, r)
isc_buffer_remaining(b, r) ->
isc_buffer_remainingregion(b, r)
Buffer types were removed, so the ISC_BUFFERTYPE_*
macros are no more, and the type argument to
isc_buffer_init and isc_buffer_allocate were removed.
isc_buffer_putstr is now void (instead of isc_result_t)
and requires that the caller ensure that there
is enough available buffer space for the string.
isc_file_getmodtime, isc_mktemplate renamed to
isc_file_mktemplate and isc_ufile renamed to
isc_file_openunique. By no means an exhaustive API,
it is just what's needed for now.
Previously, both ends were set to non-blocking I/O. Now, only the
reader is set non-blocking. This means the writer will block for a while
if the pipe fills, but since the watcher is in a different thread from
the reader, the pipe will eventually drain, and the writer can continue.
This is really nothing more than a lock, just not a mutex-type lock.