Awesome
FreeBSD's name/value pairs library
The libnv library is a general purpose name/value pairs mechanism used in FreeBSD, which was inspired by the nvpairs used in Solaris/illumos. It is a lightweight serialization (marshalling) library. The implementation is written in C99 and distributed under the 2-clause BSD license.
The libnv library was implemented by Pawel Jakub Dawidek under sponsorship from the FreeBSD Foundation and Mariusz Zaborski.
Upstream: https://github.com/fudosecurity/nvlist/
Documentation and API
See the FreeBSD's nv(9) manual page.
Introduction to nvlist part 1 on oshogbo blog.
Introduction to nvlist part 2 - dnvlist on oshogbo blog.
Introduction to nvlist part 3 - simple traversing on oshogbo blog.
Introduction to nvlist part 4 - cnvlist on oshogbo blog.
Packages
Just build the package, install it and link the library using the -lnv
flag.
- RPM (tested on RHEL/CentOS 7):
cd pkg && make rpm
- DEB (tested on Debian 9/Ubuntu):
cd pkg && make deb