libsimple.h includes most POSIX header files so you do need to include lots of headers in your code, and defines macros and functions that are useful for most programs and libraries to simplify the code. It also provides *_MIN and *_MAX values for integer data types. All functions are namespaced with `libsimple_` and aliased with macro definitions to unnamespaced names unless there already is a macro with that name. However, some functions are seen as libsimple specific and are not namespaced. Programs using this library should define `char *argv0` and set it to the 0:th command line argument. libsimple include a number of functions complementing those in and , the naming scheme of these functions is: = str for NUL-terminated byte strings = strn for byte strings that may not be NUL-terminated = mem for byte arrays = wcs for NUL-terminated wide-character strings = wcsn for wide-character strings that may not be NUL-terminated = wmem for wide-character arrays = str if is str, wcs, strn, or wcsn = mem if is mem or wmem = chrnul if is str, wcs, strn, or wcsn = scan if is mem or wmem [case] = if case-sensitive = case if case-insensitive, the name may also end with _l if there is a locale parameter [_inv] = for normal search = _inv for search of anything else (skipping) [r] = for left-to-right search/comparison = r for right-to-left search/comparison [p] = return beginning of destination = p return end of destination [raw] = sought data may not exist = raw sought data does exist (only = mem, wmem) [r] = strrn if is strn = wcsrn if is wcsn = r otherwise [p] = stp if is str = stpn if is strn = wcp if is wcs = wcpn if is wcsn = p otherwise [raw][r][case]chr[_inv] find character [case][_inv] find character or end [r][case] find substring [case]cmp alphabetically compare, without NULL support [case]cmpnul alphabetically compare, with NULL support [case]ends verify end [case]starts verify beginning [case]eq ![case]cmp [case]eqnul ![case]cmpnul [r][case]eqlen check length of commonality end find end of string (not = mem, wmem) [p]cpy copy data (to external array) [p]move move data (within array or to external array) [p]set fill data [p]toupper like [p]move but convert text to upper case [p]tolower like [p]move but convert text to lower case [raw]ccpy like pcpy, but stop after a character is found [raw]cmove like pmove, but stop after a character is found replace replace all instance of a character, end is returned mem[p]setelem fill data with elements of custom length [raw]mem[r]elem[_inv] find element with custom length memelemscan[_inv] find element with custom length or end memreplaceelem replace all instance of an element of custom length, end is returned