.\" -*-nroff-*-
-.TH mLib 3 "7 July 1999" "Straylight/Edgeware" "mLib utilities library"
+.\"
+.\" mLib overview
+.\"
+.\" (c) 1999--2001, 2003, 2005, 2007, 2009, 2024 Straylight/Edgeware
+.\"
+.
+.\"----- Licensing notice ---------------------------------------------------
+.\"
+.\" This file is part of the mLib utilities library.
+.\"
+.\" mLib is free software: you can redistribute it and/or modify it under
+.\" the terms of the GNU Library General Public License as published by
+.\" the Free Software Foundation; either version 2 of the License, or (at
+.\" your option) any later version.
+.\"
+.\" mLib is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
+.\" License for more details.
+.\"
+.\" You should have received a copy of the GNU Library General Public
+.\" License along with mLib. If not, write to the Free Software
+.\" Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+.\" USA.
+.
+.\"--------------------------------------------------------------------------
+.so ../defs.man \" @@@PRE@@@
+.
+.\"--------------------------------------------------------------------------
+.TH mLib 3mLib "7 July 1999" "Straylight/Edgeware" "mLib utilities library"
+.\" @mLib
+.
+.\"--------------------------------------------------------------------------
.SH NAME
mLib \- library of miscellaneous utilities
-.\" @mLib
+.
+.\"--------------------------------------------------------------------------
.SH DESCRIPTION
+.
The
.B mLib
library is a mixed bag of things which the author finds useful in large
Even so, it's not too bad a model really.
.PP
The rest of this section describes the various chunks and layers.
+.
.SS "Exception handling"
Right at the bottom, there's a fairly primitive exception handling
system. It's provided by the
.BR exc (3)
module, and stands alone. It's used mainly by the memory allocation
modules to raise exceptions when there's no more memory to be had.
+.
.SS "Memory allocation"
The
.BR arena (3)
module maintains resource pools which can manage memory and other
resources, all of the resources held in a pool being destroyed along
with the pool itself.
+.
.SS "String handling"
The
.BR str (3)
module implements a `pool' of dynamic strings which saves lots of
allocation and deallocation when a piece of code has high string
turnover.
+.
.SS "Program identification and error reporting"
The
.BR quis (3)
module provides an interface for emitting tracing information with
configurable verbosity levels. It needs improving to be able to cope
with outputting to the system log.
+.
.SS "Other data types"
The
.BR hash (3)
.BR darray (3)
module implements dynamically resizing arrays which support Perl-like
stack operations efficiently.
+.
.SS "Miscellaneous utilities"
The
.BR crc32 (3)
module provides a generic structure for reading test vectors from files
and running them through functions. I mainly use it for testing
cryptographic transformations of various kinds.
+.
.SS "Encoding and decoding"
The
.BR base64 (3)
module does urlencoding and decoding, as defined in RFC1866.
Urlencoding encodes arbitrary (but mostly text-like) name/value pairs as
a text string containing no whitespace.
+.
.SS "Multiplexed I/O"
The
.BR sel (3)
module provides a nonblocking ident (RFC931) client. The
.BR bres (3)
module does background hostname and address resolution.
+.
+.\"--------------------------------------------------------------------------
.SH "SEE ALSO"
+.
.BR alloc (3),
.BR assoc (3),
.BR atom (3),
.BR trace (3),
.BR tv (3),
.BR url (3).
+.
+.\"--------------------------------------------------------------------------
.SH AUTHOR
+.
Mark Wooding, <mdw@distorted.org.uk>
+.
+.\"----- That's all, folks --------------------------------------------------