Extend imsg and ibuf API with useful getter methods
authorclaudio <claudio@openbsd.org>
Tue, 12 Dec 2023 15:47:40 +0000 (15:47 +0000)
committerclaudio <claudio@openbsd.org>
Tue, 12 Dec 2023 15:47:40 +0000 (15:47 +0000)
commit4658a150149effd473292dfdbfd8b1bd80e363ac
tree4d32194ba74e0140fb2ba26b46245ab845007c38
parent876ab33d5561c46eca0c22f9b5e53b79431b81c6
Extend imsg and ibuf API with useful getter methods

For ibufs:
- various getters for ibufs (ibuf_get* and ibuf_skip)
- additional ibuf set/add functions that don't alter byte order
- ibuf_truncate and ibuf_rewind
- ibuf_from_buffer and ibuf_from_ibuf to populate a reader ibuf
- a getter for the msgbuf queuelen

For imsg:
- various getters for imsg (especially imsg_get_data() which can be used
  in most cases as a simple one call api with all error checks).
  All the imsg.hdr fields can also be accessed by getters.
- The imsg data is now actually an ibuf but the old imsg.data pointer is
  kept for now to not break every imsg application.
- Introduce imsg_forward to simply forward a message from one channel to
  an other (used in the control socket code).

Since this requires a major bump take the oportunity to also cleanup some
function signatures to use size_t for length fields. Also internal data
structures are removed from the public header.

With and OK tb@
lib/libutil/Symbols.map
lib/libutil/imsg-buffer.c
lib/libutil/imsg.c
lib/libutil/imsg.h
lib/libutil/shlib_version