libbsd

This library provides useful functions commonly found on BSD systems, and lacking on others like GNU systems, thus making it easier to port projects with strong BSD origins, without needing to embed the same code over and over again on each project.

Supported platforms

The following platforms are supported out of the box:

  • GNU/Linux
  • GNU/Hurd
  • GNU/kFreeBSD
  • musl/Linux
  • macOS
  • illumos
  • Solaris
  • AIX

License

The licenses for the code contained in libbsd are quite permissive to make it easier for other projects to use it. Most of the licenses are either ISC, MIT, Beerware, BSD-2-clause, and BSD-3-clause. Please check the COPYING file and the source code for the actual license details.

Download

Latest released tarballs.

The releases are OpenPGP signed with the key of the current maintainer Guillem Jover with fingerprint 4F3E 74F4 3605 0C10 F569 6574 B972 BF3E A4AE 57A3.

Development

The code is developed on the FreeDesktop.Org GitLab libbsd project.

CI Status Coverity Scan Build Status CII Best Practices

Code

The code under development can be browsed from the GitLab project or cloned from git with:

git clone https://gitlab.freedesktop.org/libbsd/libbsd.git

It is currently still also accessible from:

Issues

Bug reports and issues can be filed using the GitLab issues. Historic bugs can be accessed from Bugzilla but filing new bugs there has been disabled.

Security issues

In case of a security issue that needs to be reported privately, please send encrypted mail to Guillem Jover, the current maintainer.

Contributing

Changes can be sent either as merge requests or as patches to the mailing list.

New interfaces can be added, depending on their portability, and on their presence on at least one of the BSDs. The preferred form is by importing the best implementation from one of those BSDs. Alternatively an implementation from scratch might be required. In that case the preferred coding style is KNF and a BSD-3-clause license, but a more permissive license is also welcome. Any new function must also come with a man page. Ideally new interfaces should get new unit tests.

Downstreams

Packaging status