10 Commits
Author SHA1 Message Date
Faraz Vahedi 296c05f721 libutil++: Include <cerrno> in stringf.cc
stringf.cc uses errno and related macros without including <cerrno>.

Their availability is guaranteed only when the corresponding header
is included; transitive exposure is implementation-defined.

Modern libc++ has been progressively reducing incidental transitive
includes as part of its header removal policy (see LLVM libc++ Header
Removal Policy and D132284), making such dependencies brittle.

This change includes <cerrno> explicitly to make the dependency
well-defined. No functional or behavioural change intended.

Approved by:	fuz
Signed-off-by:	Faraz Vahedi <[email protected]>
Pull-Request:	https://github.com/freebsd/freebsd-src/pull/2188
2026-08-02 13:17:45 +02:00
John Baldwin 1595031258 libutil++: Rename manpage source files to avoid colons
To permit checking the sources out on systems such as Windows with
more restrictive file name requirements, rename the manpage source
files to replace colons with underscrores.  Use MANSRC.foo to point
<bsd.man.mk> at the new source file names.

Reviewed by:	ivy
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D51794
2025-08-26 16:44:38 -04:00
Mark Johnston b1afa460f8 libutil++: Move to the utilities package
We should keep the clibs package as small as possible.  Currently it
contains some "extra" libraries, but this isn't a good argument for
adding more stuff.  Move it to the utilities package (the default for
bsd.lib.mk consumers), since libutil++ is an INTERNALLIB and thus only
installs man pages, so therefore doesn't need to be in FreeBSD-runtime.

Requested by:	kib
Reviewed by:	ivy, des
Fixes:		f4fd2aa07c ("libutil++: Move to clibs")
Differential Revision:	https://reviews.freebsd.org/D51898
2025-08-14 16:15:43 +00:00
Lexi Winter f4fd2aa07c libutil++: Move to clibs
This library only installs manual pages, so putting it in its own
package means we build a FreeBSD-libutil++-man package but not a
base FreeBSD-libutil++ package.  Without a base package, the man
package can't be installed due to the missing dependency.

We don't really need a separate package for a few manpages, so move
it to clibs.

Reviewed by:		des
Differential Revision:	https://reviews.freebsd.org/D51756
2025-08-08 16:14:07 +01:00
John Baldwin ca0d182dfe libutil++: Appease GCC -Wshadow warnings in constructors
Fixes:		937e92b5f7 ("libutil++: Add freebsd::fd_up class to manage file descriptors")
Fixes:		7be913e00d ("libutil++: Add freebsd::pidfile wrapper class around struct pidfh")
Sponsored by:	Chelsio Communications
2025-08-07 14:26:46 -04:00
John Baldwin 7be913e00d libutil++: Add freebsd::pidfile wrapper class around struct pidfh
This class wraps the pidfile_* API from libutil.  The destructor calls
pidfile_remove() when an object is destroyed.  This class is similar
to std::unique_ptr<> in that it retains exclusive ownership of the
pidfh object.

In addition to release and reset methods, write, close, and fileno
methods are provided as wrappers for pidfile_*.

Sponsored by:	Chelsio Communications
Pull Request:	https://github.com/freebsd/freebsd-src/pull/1794
2025-08-04 15:38:07 -04:00
John Baldwin 63ffcf6971 libutil++: Add freebsd::nvlist_up wrapper class for std::unique_ptr<>
This class uses a custom deleter that calls nvlist_destroy().

Sponsored by:	Chelsio Communications
Pull Request:	https://github.com/freebsd/freebsd-src/pull/1794
2025-08-04 15:38:07 -04:00
John Baldwin 937e92b5f7 libutil++: Add freebsd::fd_up class to manage file descriptors
This class aims to provide a std::unique_ptr<>-like interface in that
it assumes exclusive ownership of a file descriptor.  The descriptor
is closed when the object is destroyed.

Sponsored by:	Chelsio Communications
Pull Request:	https://github.com/freebsd/freebsd-src/pull/1794
2025-08-04 15:38:07 -04:00
John Baldwin 22ce7be762 libutil++: Add freebsd::addrinfo_up wrapper class for std::unique_ptr<>
This class uses a custom deleter that calls freeaddrinfo().

Sponsored by:	Chelsio Communications
Pull Request:	https://github.com/freebsd/freebsd-src/pull/1794
2025-08-04 15:38:07 -04:00
John Baldwin b3127a2dc2 libutil++: New library containing C++ utility classes for use in base
- freebsd::FILE_up is a wrapper class for std::unique_ptr<> for FILE
  objects which uses a custom deleter that calls fclose().

- freebsd::malloc_up<T> is a wrapper class for std::unique_ptr<> which
  uses a custom deleter that calls free().  It is useful for pointers
  allocated by malloc() such as strdup().

- The freebsd::stringf() functions return a std::string constructed
  using a printf format string.

  The current implementation of freebsd::stringf() uses fwopen() where
  the write function appends to a std::string.

Sponsored by:	Chelsio Communications
Pull Request:	https://github.com/freebsd/freebsd-src/pull/1794
2025-08-04 15:38:06 -04:00