X-Git-Url: https://git.datadissipation.net/libcext/blobdiff_plain/5512033073932aaa28f2b7c2cdcf6d7190e7d5d0..0cad277d2ed33b008dea56a24a3acb49259c7131:/README.md diff --git a/README.md b/README.md index 59cf6d6..a10245f 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,67 @@ -A (WIP) collection of portable, strict C99, single-header implementations of common libc extensions. +A collection of portable, strict C99, single-header implementations of common libc extensions. + +All functions are implemented as macros expanding to an internal function reference, this allows to use the headers with no meta build system - it compiles even if the extensions are already present, see _How to_ on disabling this behaviour. ### How to Include the header in every file needed as usual: ``` -#include "" +#include ".h" ``` In the file chosen for the function implementation: ``` -#define _IMPLEMENTATION_ +#define _IMPLEMENTATION #include "" ``` -By default, the header won't have any includes, change that with: +By default, the header won't have any stdlib includes, change that with: ``` -#define _INCLUDE_LIBC_ +#define _INCLUDE_LIBC ``` -Or disable function override with: +Or disable function, type and variable override with: ``` #define HAVE_ ``` + +### Specifics + +--- + +### asprintf + +includes `vasprintf()` and `asprintf()` + +--- + +### getopt\_long + +includes `getopt()`, `getsubopt()`, `getopt_long()` and `getopt_long_only()` + +`getopt_long.h` has additional macros related to argument +permuting, defining those enables it per function (GNU behaviour, can still be disabled at runtime by setting `$POSIXLY_CORRECT`): + +``` +#define GETOPT_PERMUTE_ARGS +#define GETOPT_LONG_PERMUTE_ARGS +#define GETOPT_LONG_ONLY_PERMUTE_ARGS +``` + +--- + +### strlcat + +includes `strlcat()` and `strlcpy()` + +--- + +### strdup + +includes `strdup()` and `strndup()` + +`strndup()` follows the latest standard, meaning that it copies at most _n_ chars, not _n_ + 1.