X-Git-Url: https://git.datadissipation.net/libcext/blobdiff_plain/5677abe79fa7c55501bc1fb545caf30cf5fda34c..refs/heads/master:/README.md?ds=sidebyside diff --git a/README.md b/README.md index a5126fd..e9373ec 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -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. @@ -7,26 +7,26 @@ All functions are implemented as macros expanding to an internal function refere Include the header in every file needed as usual: ``` -#include ".h" +#include "${function}.h" ``` In the file chosen for the function implementation: ``` -#define _IMPLEMENTATION -#include "" +#define LCE_${FUNCTION}_IMPLEMENTATION +#include "${function}.h>" ``` By default, the header won't have any stdlib includes, change that with: ``` -#define _INCLUDE_LIBC +#define LCE_${FUNCTION}_INCLUDE_LIBC ``` Or disable function, type and variable override with: ``` -#define HAVE_ +#define HAVE_${FUNCTION} ``` ### Specifics @@ -39,6 +39,12 @@ includes `vasprintf()` and `asprintf()` --- +### fgetln + +includes `fgetln()` + +--- + ### getopt\_long includes `getopt()`, `getsubopt()`, `getopt_long()` and `getopt_long_only()` @@ -47,15 +53,28 @@ includes `getopt()`, `getsubopt()`, `getopt_long()` and `getopt_long_only()` 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 +#define LCE_GETOPT_PERMUTE_ARGS +#define LCE_GETOPT_LONG_PERMUTE_ARGS +#define LCE_GETOPT_LONG_ONLY_PERMUTE_ARGS ``` --- +### strdup + +includes `strdup()` and `strndup()` + +`strndup()` follows the latest standard, meaning that it copies at most _n_ chars, not _n_ + 1. +Also, no standard specifies that `strndup()` should return less than _n_ if `strlen(s) + 1` < _n_, but this implementation does so. + +--- + ### strlcat includes `strlcat()` and `strlcpy()` --- + +### strtonum + +includes `strtonum()`