aboutsummaryrefslogtreecommitdiffstats
path: root/man3
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--man3/libsimple_memcasechr.31
-rw-r--r--man3/libsimple_memcasechr_inv.385
-rw-r--r--man3/libsimple_memcasescan.31
-rw-r--r--man3/libsimple_memcasescan_inv.387
-rw-r--r--man3/libsimple_memelem.32
-rw-r--r--man3/libsimple_memelem_inv.386
-rw-r--r--man3/libsimple_memelemscan.31
-rw-r--r--man3/libsimple_memelemscan_inv.388
-rw-r--r--man3/libsimple_memrcasechr.31
-rw-r--r--man3/libsimple_memrcasechr_inv.384
-rw-r--r--man3/libsimple_memrchr.33
-rw-r--r--man3/libsimple_memrchr_inv.384
-rw-r--r--man3/libsimple_memrelem.31
-rw-r--r--man3/libsimple_memrelem_inv.386
-rw-r--r--man3/libsimple_memscan.31
-rw-r--r--man3/libsimple_memscan_inv.387
-rw-r--r--man3/libsimple_rawmemcasechr.31
-rw-r--r--man3/libsimple_rawmemcasechr_inv.385
-rw-r--r--man3/libsimple_rawmemchr.31
-rw-r--r--man3/libsimple_rawmemchr_inv.384
-rw-r--r--man3/libsimple_rawmemrcasechr.31
-rw-r--r--man3/libsimple_rawmemrcasechr_inv.385
-rw-r--r--man3/libsimple_rawmemrchr.31
-rw-r--r--man3/libsimple_rawmemrchr_inv.385
-rw-r--r--man3/libsimple_strcasechrnul.31
-rw-r--r--man3/libsimple_strcasechrnul_inv.380
-rw-r--r--man3/libsimple_strchrnul.31
-rw-r--r--man3/libsimple_strchrnul_inv.380
-rw-r--r--man3/libsimple_strncasechrnul.31
-rw-r--r--man3/libsimple_strncasechrnul_inv.388
-rw-r--r--man3/libsimple_strnchrnul.31
-rw-r--r--man3/libsimple_strnchrnul_inv.388
l---------man3/memcasechr_inv.3libsimple1
l---------man3/memcasescan_inv.3libsimple1
l---------man3/memchr_inv.3libsimple1
l---------man3/memcmove.3libsimple1
l---------man3/memelem_inv.3libsimple1
l---------man3/memelemcpy.3libsimple1
l---------man3/memelemmove.3libsimple1
l---------man3/memelemscan_inv.3libsimple1
l---------man3/memptolower.3libsimple1
l---------man3/memptoupper.3libsimple1
l---------man3/memrcasechr_inv.3libsimple1
l---------man3/memrchr_inv.3libsimple1
l---------man3/memrelem_inv.3libsimple1
l---------man3/memreplace.3libsimple1
l---------man3/memreplaceelem.3libsimple1
l---------man3/memscan_inv.3libsimple1
l---------man3/memtolower.3libsimple1
l---------man3/memtoupper.3libsimple1
l---------man3/rawmemcasechr_inv.3libsimple1
l---------man3/rawmemccpy.3libsimple1
l---------man3/rawmemchr_inv.3libsimple1
l---------man3/rawmemcmove.3libsimple1
l---------man3/rawmemelem.3libsimple1
l---------man3/rawmemelem_inv.3libsimple1
l---------man3/rawmemelemcpy.3libsimple1
l---------man3/rawmemelemmove.3libsimple1
l---------man3/rawmemrcasechr_inv.3libsimple1
l---------man3/rawmemrchr_inv.3libsimple1
l---------man3/rawmemrelem.3libsimple1
l---------man3/rawmemrelem_inv.3libsimple1
l---------man3/stpnset.3libsimple1
l---------man3/stpntolower.3libsimple1
l---------man3/stpntoupper.3libsimple1
l---------man3/stpset.3libsimple1
l---------man3/stptolower.3libsimple1
l---------man3/stptoupper.3libsimple1
l---------man3/strcasechr_inv.3libsimple1
l---------man3/strcasechrnul_inv.3libsimple1
l---------man3/strccpy.3libsimple1
l---------man3/strchr_inv.3libsimple1
l---------man3/strchrnul_inv.3libsimple1
l---------man3/strcmove.3libsimple1
l---------man3/strncasechr_inv.3libsimple1
l---------man3/strncasechrnul_inv.3libsimple1
l---------man3/strnccpy.3libsimple1
l---------man3/strnchr_inv.3libsimple1
l---------man3/strnchrnul_inv.3libsimple1
l---------man3/strncmove.3libsimple1
l---------man3/strnreplace.3libsimple1
l---------man3/strnset.3libsimple1
l---------man3/strntolower.3libsimple1
l---------man3/strntoupper.3libsimple1
l---------man3/strrcasechr_inv.3libsimple1
l---------man3/strrchr_inv.3libsimple1
l---------man3/strreplace.3libsimple1
l---------man3/strrncasechr_inv.3libsimple1
l---------man3/strrnchr_inv.3libsimple1
l---------man3/strset.3libsimple1
l---------man3/strtolower.3libsimple1
l---------man3/strtoupper.3libsimple1
92 files changed, 1440 insertions, 1 deletions
diff --git a/man3/libsimple_memcasechr.3 b/man3/libsimple_memcasechr.3
index 5c6e5d9..d06a6d8 100644
--- a/man3/libsimple_memcasechr.3
+++ b/man3/libsimple_memcasechr.3
@@ -75,6 +75,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_memcasechr_inv (3),
.BR libsimple_memrcasechr (3),
.BR libsimple_rawmemcasechr (3),
.BR libsimple_memcasemem (3),
diff --git a/man3/libsimple_memcasechr_inv.3 b/man3/libsimple_memcasechr_inv.3
new file mode 100644
index 0000000..e14d7d4
--- /dev/null
+++ b/man3/libsimple_memcasechr_inv.3
@@ -0,0 +1,85 @@
+.TH LIBSIMPLE_MEMCASECHR_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_memcasechr_inv \- find different byte in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_memcasechr_inv(const void *\fIs\fP, int \fIc\fP, size_t \fIn\fP);
+
+#ifndef memcasechr_inv
+# define memcasechr_inv libsimple_memcasechr_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memcasechr_inv ()
+function scans the memory segment
+.IR s ,
+with the size
+.IR n ,
+for the first occurence of any byte
+other than
+.I c
+(it is converted to a
+.BR char ).
+.PP
+The comparison is case-insensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_memcasechr_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR tolower(*r)!=tolower(c) ,
+where
+.I r
+is the returned pointer.
+If no such offset exists,
+.B NULL
+is returned.
+.SH ERRORS
+The
+.BR libsimple_memcasechr_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_memcasechr_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memcasechr_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memcasechr_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_memcasechr (3),
+.BR libsimple_memchr_inv (3),
+.BR libsimple_memrcasechr_inv (3),
+.BR libsimple_rawmemcasechr_inv (3),
+.BR libsimple_memcasescan_inv (3),
+.BR libsimple_strncasechr_inv (3),
+.BR libsimple_strcasechr_inv (3)
diff --git a/man3/libsimple_memcasescan.3 b/man3/libsimple_memcasescan.3
index 9c11c2e..7479a05 100644
--- a/man3/libsimple_memcasescan.3
+++ b/man3/libsimple_memcasescan.3
@@ -77,6 +77,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_memcasescan_inv (3),
.BR libsimple_memscan (3),
.BR libsimple_memcasechr (3),
.BR libsimple_memrcasechr (3),
diff --git a/man3/libsimple_memcasescan_inv.3 b/man3/libsimple_memcasescan_inv.3
new file mode 100644
index 0000000..f58c222
--- /dev/null
+++ b/man3/libsimple_memcasescan_inv.3
@@ -0,0 +1,87 @@
+.TH LIBSIMPLE_MEMCASESCAN_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_memcasescan_inv \- skip byte in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_memcasescan_inv(const void *\fIs\fP, int \fIc\fP, size_t \fIn\fP);
+
+#ifndef memcasescan_inv
+# define memcasescan_inv libsimple_memcasescan_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memcasescan_inv ()
+function scans the memory segment
+.IR s ,
+with the size
+.IR n ,
+for the first occurence of any byte
+other than
+.I c
+(it is converted to a
+.BR char ).
+If no such character exist in the memory
+segment, the memory segment's end is returned.
+.PP
+The comparison is case-insensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_memcasescan_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR tolower(*r)!=tolower(c) ,
+where
+.I r
+is the returned pointer.
+If no such offset exists,
+.I &s[n]
+is returned.
+.SH ERRORS
+The
+.BR libsimple_memcasescan_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_memcasescan_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memcasescan_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memcasescan_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_memcasescan (3),
+.BR libsimple_memscan_inv (3),
+.BR libsimple_memcasechr_inv (3),
+.BR libsimple_memrcasechr_inv (3),
+.BR libsimple_rawmemcasechr_inv (3),
+.BR libsimple_strncasechrnul_inv (3),
+.BR libsimple_strcasechrnul_inv (3)
diff --git a/man3/libsimple_memelem.3 b/man3/libsimple_memelem.3
index 6eb3c0b..e1189b3 100644
--- a/man3/libsimple_memelem.3
+++ b/man3/libsimple_memelem.3
@@ -79,7 +79,9 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_memelem_inv (3),
.BR libsimple_memelemscan (3),
.BR libsimple_memrelem (3),
+.BR libsimple_rawmemelem (3),
.BR libsimple_memmem (3),
.BR memchr (3)
diff --git a/man3/libsimple_memelem_inv.3 b/man3/libsimple_memelem_inv.3
new file mode 100644
index 0000000..a36e38c
--- /dev/null
+++ b/man3/libsimple_memelem_inv.3
@@ -0,0 +1,86 @@
+.TH LIBSIMPLE_MEMELEM_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_memelem_inv \- find different aligned byte string in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_memelem_inv(const void *\fIhaystack\fP, size_t \fInhaystack\fP, const void *\fIneedle\fP, size_t \fInneedle\fP);
+
+#ifndef memelem_inv
+# define memelem_inv libsimple_memelem_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memelem_inv ()
+function scans the memory segment
+.IR haystack ,
+with the size
+.IR nhaystack*nneedle ,
+for the first occurence of a byte string
+different from
+.I needle
+with the size
+.IR nneedle ,
+and with an offset equivalent to zero modulo
+.IR nneedle .
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_memelem_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR memcmp(r,needle,nneedle) ,
+where
+.I r
+is the returned pointer, and such that
+the offset is equivalent to zero modulo
+.IR nneedle .
+If no such offset exists,
+.B NULL
+is returned.
+.SH ERRORS
+The
+.BR libsimple_memelem_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_memelem_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memelem_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memelem_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_memelem (3),
+.BR libsimple_memelemscan_inv (3),
+.BR libsimple_memrelem_inv (3),
+.BR libsimple_rawmemelem_inv (3)
diff --git a/man3/libsimple_memelemscan.3 b/man3/libsimple_memelemscan.3
index de70105..727c44a 100644
--- a/man3/libsimple_memelemscan.3
+++ b/man3/libsimple_memelemscan.3
@@ -81,6 +81,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_memelemscan_inv (3),
.BR libsimple_memelem (3),
.BR libsimple_memrelem (3),
.BR libsimple_memmem (3),
diff --git a/man3/libsimple_memelemscan_inv.3 b/man3/libsimple_memelemscan_inv.3
new file mode 100644
index 0000000..77f7119
--- /dev/null
+++ b/man3/libsimple_memelemscan_inv.3
@@ -0,0 +1,88 @@
+.TH LIBSIMPLE_MEMELEMSCAN_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_memelemscan_inv \- skip aligned byte string in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_memelemscan_inv(const void *\fIhaystack\fP, size_t \fInhaystack\fP, const void *\fIneedle\fP, size_t \fInneedle\fP);
+
+#ifndef memelemscan_inv
+# define memelemscan_inv libsimple_memelemscan_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memelemscan_inv ()
+function scans the memory segment
+.IR haystack ,
+with the size
+.IR nhaystack*nneedle ,
+for the first occurence of a byte string
+different from
+.I needle
+with the size
+.IR nneedle ,
+and with an offset equivalent to zero modulo
+.IR nneedle .
+If no such character exist in the memory
+segment, the memory segment's end is returned.
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_memelemscan_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR memcmp(r,needle,nneedle) ,
+where
+.I r
+is the returned pointer, and such that
+the offset is equivalent to zero modulo
+.IR nneedle .
+If no such offset exists,
+.I (void *)&((char *)haystack)[nhaystack*nneedle]
+is returned.
+.SH ERRORS
+The
+.BR libsimple_memelemscan_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_memelemscan_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memelemscan_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memelemscan_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_memelemscan (3),
+.BR libsimple_memelem_inv (3),
+.BR libsimple_memrelem_inv (3),
+.BR libsimple_memchrscan_inv (3)
diff --git a/man3/libsimple_memrcasechr.3 b/man3/libsimple_memrcasechr.3
index 100f938..5bb60b4 100644
--- a/man3/libsimple_memrcasechr.3
+++ b/man3/libsimple_memrcasechr.3
@@ -75,6 +75,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_memrcasechr_inv (3),
.BR libsimple_memcasechr (3),
.BR libsimple_memrchr (3),
.BR libsimple_rawmemrcasechr (3),
diff --git a/man3/libsimple_memrcasechr_inv.3 b/man3/libsimple_memrcasechr_inv.3
new file mode 100644
index 0000000..c5936a7
--- /dev/null
+++ b/man3/libsimple_memrcasechr_inv.3
@@ -0,0 +1,84 @@
+.TH LIBSIMPLE_MEMRCASECHR_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_memrcasechr_inv \- find byte in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_memrcasechr_inv(const void *\fIs\fP, int \fIc\fP, size_t \fIn\fP);
+
+#ifndef memrcasechr_inv
+# define memrcasechr_inv libsimple_memrcasechr_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memrcasechr_inv ()
+function scans the memory segment
+.IR s ,
+with the size
+.IR n ,
+for the last occurence of any byte
+other than
+.I c
+(it is converted to a
+.BR char ).
+.PP
+The comparison is case-insensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_memrcasechr_inv ()
+function returns the pointer
+.I s
+with a maximal offset such that
+.IR tolower(*r)!=tolower(c) ,
+where
+.I r
+is the returned pointer.
+If no such offset exists,
+.B NULL
+is returned.
+.SH ERRORS
+The
+.BR libsimple_memrcasechr_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_memrcasechr_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memrcasechr_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memrcasechr_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_memrcasechr (3),
+.BR libsimple_memcasechr_inv (3),
+.BR libsimple_memrchr_inv (3),
+.BR libsimple_rawmemrcasechr_inv (3),
+.BR libsimple_strrncasechr_inv (3),
+.BR libsimple_strrcasechr_inv (3)
diff --git a/man3/libsimple_memrchr.3 b/man3/libsimple_memrchr.3
index 362c8ba..71d0c0a 100644
--- a/man3/libsimple_memrchr.3
+++ b/man3/libsimple_memrchr.3
@@ -75,9 +75,10 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_memrchr_inv (3),
.BR libsimple_memrcasechr (3),
.BR libsimple_rawmemrchr (3),
.BR libsimple_memrmem (3),
.BR libsimple_strrnchr (3),
-.BR memchr (3)
+.BR memchr (3),
.BR strrchr (3)
diff --git a/man3/libsimple_memrchr_inv.3 b/man3/libsimple_memrchr_inv.3
new file mode 100644
index 0000000..d498245
--- /dev/null
+++ b/man3/libsimple_memrchr_inv.3
@@ -0,0 +1,84 @@
+.TH LIBSIMPLE_MEMRCHR_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_memrchr_inv \- find different byte in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_memrchr_inv(const void *\fIs\fP, int \fIc\fP, size_t \fIn\fP);
+
+#ifndef memrchr_inv
+# define memrchr_inv libsimple_memrchr_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memrchr_inv ()
+function scans the memory segment
+.IR s ,
+with the size
+.IR n ,
+for the last occurence of any byte
+other than
+.I c
+(it is converted to a
+.BR char ).
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_memrchr_inv ()
+function returns the pointer
+.I s
+with a maximal offset such that
+.IR *r!=c ,
+where
+.I r
+is the returned pointer.
+If no such offset exists,
+.B NULL
+is returned.
+.SH ERRORS
+The
+.BR libsimple_memrchr_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_memrchr_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memrchr_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memrchr_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_memrchr (3),
+.BR libsimple_memchr_inv (3),
+.BR libsimple_memrcasechr_inv (3),
+.BR libsimple_rawmemrchr_inv (3),
+.BR libsimple_strrnchr_inv (3),
+.BR libsimple_strrchr_inv (3)
diff --git a/man3/libsimple_memrelem.3 b/man3/libsimple_memrelem.3
index 203ffee..3718b19 100644
--- a/man3/libsimple_memrelem.3
+++ b/man3/libsimple_memrelem.3
@@ -79,6 +79,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_memrelem_inv (3),
.BR libsimple_memelem (3),
.BR libsimple_memrmem (3),
.BR libsimple_memrchr (3)
diff --git a/man3/libsimple_memrelem_inv.3 b/man3/libsimple_memrelem_inv.3
new file mode 100644
index 0000000..71618c2
--- /dev/null
+++ b/man3/libsimple_memrelem_inv.3
@@ -0,0 +1,86 @@
+.TH LIBSIMPLE_MEMRELEM_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_memrelem_inv \- find different aligned byte string in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_memrelem_inv(const void *\fIhaystack\fP, size_t \fInhaystack\fP, const void *\fIneedle\fP, size_t \fInneedle\fP);
+
+#ifndef memrelem_inv
+# define memrelem_inv libsimple_memrelem_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memrelem_inv ()
+function scans the memory segment
+.IR haystack ,
+with the size
+.IR nhaystack*nneedle ,
+for the last occurence of a byte string
+different from
+.I needle
+with the size
+.IR nneedle ,
+and with an offset equivalent to zero modulo
+.IR nneedle .
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_memrelem_inv ()
+function returns the pointer
+.I s
+with a maximal offset such that
+.IR memcmp(r,needle,nneedle) ,
+where
+.I r
+is the returned pointer, and such that
+the offset is equivalent to zero modulo
+.IR nneedle .
+If no such offset exists,
+.B NULL
+is returned.
+.SH ERRORS
+The
+.BR libsimple_memrelem_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_memrelem_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memrelem_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memrelem_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_memrelem (3),
+.BR libsimple_memelem_inv (3),
+.BR libsimple_memrmem_inv (3),
+.BR libsimple_memrchr_inv (3)
diff --git a/man3/libsimple_memscan.3 b/man3/libsimple_memscan.3
index 0c5d14a..1d85c6a 100644
--- a/man3/libsimple_memscan.3
+++ b/man3/libsimple_memscan.3
@@ -77,6 +77,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_memscan_inv (3),
.BR libsimple_memcasescan (3),
.BR libsimple_memrchr (3),
.BR libsimple_rawmemchr (3),
diff --git a/man3/libsimple_memscan_inv.3 b/man3/libsimple_memscan_inv.3
new file mode 100644
index 0000000..39a6071
--- /dev/null
+++ b/man3/libsimple_memscan_inv.3
@@ -0,0 +1,87 @@
+.TH LIBSIMPLE_MEMSCAN_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_memscan_inv \- skip byte in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_memscan_inv(const void *\fIs\fP, int \fIc\fP, size_t \fIn\fP);
+
+#ifndef memscan_inv
+# define memscan_inv libsimple_memscan_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memscan_inv ()
+function scans the memory segment
+.IR s ,
+with the size
+.IR n ,
+for the first occurence of any byte
+other than
+.I c
+(it is converted to a
+.BR char ).
+If no such character exist in the memory
+segment, the memory segment's end is returned.
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_memscan_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR *r!=c ,
+where
+.I r
+is the returned pointer.
+If no such offset exists,
+.I &r[n]
+is returned.
+.SH ERRORS
+The
+.BR libsimple_memscan_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_memscan_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memscan_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memscan_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_memscan (3),
+.BR libsimple_memchr_inv (3),
+.BR libsimple_memcasescan_inv (3),
+.BR libsimple_memrchr_inv (3),
+.BR libsimple_rawmemchr_inv (3),
+.BR libsimple_strnchrnul_inv (3),
+.BR libsimple_strchrnul_inv (3)
diff --git a/man3/libsimple_rawmemcasechr.3 b/man3/libsimple_rawmemcasechr.3
index 308ea91..455a818 100644
--- a/man3/libsimple_rawmemcasechr.3
+++ b/man3/libsimple_rawmemcasechr.3
@@ -76,6 +76,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_rawmemcasechr_inv (3),
.BR libsimple_memcasechr (3),
.BR libsimple_rawmemchr (3),
.BR libsimple_rawmemrcasechr (3),
diff --git a/man3/libsimple_rawmemcasechr_inv.3 b/man3/libsimple_rawmemcasechr_inv.3
new file mode 100644
index 0000000..f5241a2
--- /dev/null
+++ b/man3/libsimple_rawmemcasechr_inv.3
@@ -0,0 +1,85 @@
+.TH LIBSIMPLE_RAWMEMCASECHR_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_rawmemcasechr_inv \- find different byte in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_rawmemcasechr_inv(const void *\fIs\fP, int \fIc\fP);
+
+#ifndef rawmemcasechr_inv
+# define rawmemcasechr_inv libsimple_rawmemcasechr_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_rawmemcasechr_inv ()
+function scans the memory segment
+.I s
+for the first occurence of any byte
+other than
+.I c
+(it is converted to a
+.BR char ).
+.PP
+The
+.BR libsimple_rawmemcasechr_inv ()
+function assumes there is at least one
+occurence, its behaviour is undefined
+if this is not the case.
+.PP
+The comparison is case-insensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_rawmemcasechr_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR tolower(*r)!=tolower(c) ,
+where
+.I r
+is the returned pointer.
+.SH ERRORS
+The
+.BR libsimple_rawmemcasechr_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_rawmemcasechr_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_rawmemcasechr_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_rawmemcasechr_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_rawmemcasechr (3),
+.BR libsimple_memcasechr_inv (3),
+.BR libsimple_rawmemchr_inv (3),
+.BR libsimple_rawmemrcasechr_inv (3),
+.BR libsimple_memcasescan_inv (3),
+.BR libsimple_memcasechr_inv (3)
diff --git a/man3/libsimple_rawmemchr.3 b/man3/libsimple_rawmemchr.3
index 3cf13dd..1df9b02 100644
--- a/man3/libsimple_rawmemchr.3
+++ b/man3/libsimple_rawmemchr.3
@@ -76,6 +76,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_rawmemchr_inv (3),
.BR libsimple_rawmemcasechr (3),
.BR libsimple_rawmemrchr (3),
.BR libsimple_memscan (3),
diff --git a/man3/libsimple_rawmemchr_inv.3 b/man3/libsimple_rawmemchr_inv.3
new file mode 100644
index 0000000..011e957
--- /dev/null
+++ b/man3/libsimple_rawmemchr_inv.3
@@ -0,0 +1,84 @@
+.TH LIBSIMPLE_RAWMEMCHR_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_rawmemchr_inv \- find different byte in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_rawmemchr_inv(const void *\fIs\fP, int \fIc\fP);
+
+#ifndef rawmemchr_inv
+# define rawmemchr_inv libsimple_rawmemchr_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_rawmemchr_inv ()
+function scans the memory segment
+.I s
+for the first occurence of any byte
+other than
+.I c
+(it is converted to a
+.BR char ).
+.PP
+The
+.BR libsimple_rawmemchr_inv ()
+function assumes there is at least one
+occurence, its behaviour is undefined
+if this is not the case.
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_rawmemchr_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR *r!=c ,
+where
+.I r
+is the returned pointer.
+.SH ERRORS
+The
+.BR libsimple_rawmemchr_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_rawmemchr_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_rawmemchr_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_rawmemchr_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_rawmemchr (3),
+.BR libsimple_memchr_inv (3),
+.BR libsimple_rawmemcasechr_inv (3),
+.BR libsimple_rawmemrchr_inv (3),
+.BR libsimple_memscan_inv (3)
diff --git a/man3/libsimple_rawmemrcasechr.3 b/man3/libsimple_rawmemrcasechr.3
index 389b332..2959691 100644
--- a/man3/libsimple_rawmemrcasechr.3
+++ b/man3/libsimple_rawmemrcasechr.3
@@ -78,6 +78,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_rawmemrcasechr_inv (3),
.BR libsimple_rawmemrchr (3),
.BR libsimple_memrcasechr (3),
.BR libsimple_rawmemcasechr (3)
diff --git a/man3/libsimple_rawmemrcasechr_inv.3 b/man3/libsimple_rawmemrcasechr_inv.3
new file mode 100644
index 0000000..060779d
--- /dev/null
+++ b/man3/libsimple_rawmemrcasechr_inv.3
@@ -0,0 +1,85 @@
+.TH LIBSIMPLE_RAWMEMRCASECHR_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_rawmemrcasechr_inv \- find different byte in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_rawmemrcasechr_inv(const void *s, int c, size_t n);
+
+#ifndef rawmemrcasechr_inv
+# define rawmemrcasechr_inv libsimple_rawmemrcasechr_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_rawmemrcasechr_inv ()
+function scans the memory segment
+.IR s ,
+with the size
+.IR n ,
+for the last occurence of any byte
+other than
+.I c
+(it is converted to a
+.BR char ).
+.PP
+The
+.BR libsimple_rawmemrcasechr_inv ()
+function assumes there is at least one
+occurence, its behaviour is undefined
+if this is not the case.
+.PP
+The comparison is case-insensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_rawmemrcasechr_inv ()
+function returns the pointer
+.I s
+with a maximal offset such that
+.IR tolower(*r)!=tolower(c) ,
+where
+.I r
+is the returned pointer.
+.SH ERRORS
+The
+.BR libsimple_rawmemrcasechr_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_rawmemrcasechr_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_rawmemrcasechr_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_rawmemrcasechr_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_rawmemrcasechr (3),
+.BR libsimple_rawmemrchr_inv (3),
+.BR libsimple_memrcasechr_inv (3),
+.BR libsimple_rawmemcasechr_inv (3)
diff --git a/man3/libsimple_rawmemrchr.3 b/man3/libsimple_rawmemrchr.3
index f4ae624..5bf0fd6 100644
--- a/man3/libsimple_rawmemrchr.3
+++ b/man3/libsimple_rawmemrchr.3
@@ -78,6 +78,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_rawmemrchr_inv (3),
.BR libsimple_rawmemrcasechr (3),
.BR libsimple_memrchr (3),
.BR libsimple_rawmemchr (3)
diff --git a/man3/libsimple_rawmemrchr_inv.3 b/man3/libsimple_rawmemrchr_inv.3
new file mode 100644
index 0000000..28bd733
--- /dev/null
+++ b/man3/libsimple_rawmemrchr_inv.3
@@ -0,0 +1,85 @@
+.TH LIBSIMPLE_RAWMEMRCHR_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_rawmemrchr_inv \- find different byte in memory
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_rawmemrchr_inv(const void *s, int c, size_t n);
+
+#ifndef rawmemrchr_inv
+# define rawmemrchr_inv libsimple_rawmemrchr_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_rawmemrchr_inv ()
+function scans the memory segment
+.IR s ,
+with the size
+.IR n ,
+for the last occurence of any byte
+other than
+.I c
+(it is converted to a
+.BR char ).
+.PP
+The
+.BR libsimple_rawmemrchr_inv ()
+function assumes there is at least one
+occurence, its behaviour is undefined
+if this is not the case.
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_rawmemrchr_inv ()
+function returns the pointer
+.I s
+with a maximal offset such that
+.IR *r!=c ,
+where
+.I r
+is the returned pointer.
+.SH ERRORS
+The
+.BR libsimple_rawmemrchr_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_rawmemrchr_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_rawmemrchr_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_rawmemrchr_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_rawmemrchr (3),
+.BR libsimple_rawmemrcasechr_inv (3),
+.BR libsimple_memrchr_inv (3),
+.BR libsimple_rawmemchr_inv (3)
diff --git a/man3/libsimple_strcasechrnul.3 b/man3/libsimple_strcasechrnul.3
index 4f4badc..08dbce4 100644
--- a/man3/libsimple_strcasechrnul.3
+++ b/man3/libsimple_strcasechrnul.3
@@ -72,6 +72,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_strcasechrnul_inv (3),
.BR libsimple_strcasechr (3),
.BR libsimple_strchrnul (3),
.BR libsimple_strncasechrnul (3),
diff --git a/man3/libsimple_strcasechrnul_inv.3 b/man3/libsimple_strcasechrnul_inv.3
new file mode 100644
index 0000000..61c8179
--- /dev/null
+++ b/man3/libsimple_strcasechrnul_inv.3
@@ -0,0 +1,80 @@
+.TH LIBSIMPLE_STRCASECHRNUL_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_strcasechrnul_inv \- skip a character in a string
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+char *libsimple_strcasechrnul_inv(const char *\fIs\fP, int \fIc\fP);
+
+#ifndef strcasechrnul_inv
+# define strcasechrnul_inv libsimple_strcasechrnul_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_strcasechrnul_inv ()
+function scans the string
+.I s
+for the first occurence of any character
+other than
+.I c
+(it is converted to a
+.BR char ).
+If no such character exist in the string,
+the string's end is returned.
+.PP
+The comparison is case-insensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_strcasechrnul_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR tolower(*r)!=tolower(c)||!*r ,
+where
+.I r
+is the returned pointer.
+.SH ERRORS
+The
+.BR libsimple_strcasechrnul_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_strcasechrnul_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_strcasechrnul_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_strcasechrnul_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_strcasechrnul (3),
+.BR libsimple_strcasechr_inv (3),
+.BR libsimple_strchrnul_inv (3),
+.BR libsimple_strncasechrnul_inv (3),
+.BR libsimple_memcasescan_inv (3)
diff --git a/man3/libsimple_strchrnul.3 b/man3/libsimple_strchrnul.3
index 846895b..ed54f0b 100644
--- a/man3/libsimple_strchrnul.3
+++ b/man3/libsimple_strchrnul.3
@@ -72,6 +72,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_charstrnul_inv (3),
.BR libsimple_strcasechrnul (3),
.BR libsimple_strend (3),
.BR libsimple_strnchrnul (3),
diff --git a/man3/libsimple_strchrnul_inv.3 b/man3/libsimple_strchrnul_inv.3
new file mode 100644
index 0000000..4664d1a
--- /dev/null
+++ b/man3/libsimple_strchrnul_inv.3
@@ -0,0 +1,80 @@
+.TH LIBSIMPLE_STRCHRNUL_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_strchrnul_inv \- skip a character in a string
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+char *libsimple_strchrnul_inv(const char *\fIs\fP, int \fIc\fP);
+
+#ifndef strchrnul_inv
+# define strchrnul_inv libsimple_strchrnul_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_strchrnul_inv ()
+function scans the string
+.I s
+for the first occurence of any character
+other than
+.I c
+(it is converted to a
+.BR char ).
+If no such character exist in the string,
+the string's end is returned.
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_strchrnul_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR *r!=c||!*r ,
+where
+.I r
+is the returned pointer.
+.SH ERRORS
+The
+.BR libsimple_strchrnul_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_strchrnul_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_strchrnul_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_strchrnul_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_charstrnul (3),
+.BR libsimple_strchr_inv (3),
+.BR libsimple_strcasechrnul_inv (3),
+.BR libsimple_strnchrnul_inv (3),
+.BR libsimple_memscan_inv (3)
diff --git a/man3/libsimple_strncasechrnul.3 b/man3/libsimple_strncasechrnul.3
index ed0fa03..d73f186 100644
--- a/man3/libsimple_strncasechrnul.3
+++ b/man3/libsimple_strncasechrnul.3
@@ -80,6 +80,7 @@ None.
.SH BUGS
None.
.SH SEE ALSO
+.BR libsimple_strncasechrnul_inv (3),
.BR libsimple_strncasechr (3),
.BR libsimple_strnchrnul (3),
.BR libsimple_strcasechrnul (3),
diff --git a/man3/libsimple_strncasechrnul_inv.3 b/man3/libsimple_strncasechrnul_inv.3
new file mode 100644
index 0000000..48cced8
--- /dev/null
+++ b/man3/libsimple_strncasechrnul_inv.3
@@ -0,0 +1,88 @@
+.TH LIBSIMPLE_STRNCASECHRNUL_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_strncasechrnul_inv \- skip a character in a string
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+char *libsimple_strncasechrnul_inv(const char *\fIs\fP, int \fIc\fP, size_t \fIn\fP);
+
+#ifndef strncasechrnul_inv
+# define strncasechrnul_inv libsimple_strncasechrnul_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_strncasechrnul_inv ()
+function scans the string
+.IR s ,
+truncated to
+.I n
+bytes unless it is shorter,
+for the first occurence of any character
+other than
+.I c
+(it is converted to a
+.BR char ).
+If no such character exist in the string,
+the string's end is returned.
+.PP
+The comparison is case-insensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_strncasechrnul_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR tolower(*r)!=tolower(c)||!*r ,
+where
+.I r
+is the returned pointer. However if no such
+offset less than
+.I n
+exists,
+.B NULL
+is returned.
+.SH ERRORS
+The
+.BR libsimple_strncasechrnul_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_strncasechrnul_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_strncasechrnul_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_strncasechrnul_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None.
+.SH SEE ALSO
+.BR libsimple_strncasechrnul (3),
+.BR libsimple_strncasechr_inv (3),
+.BR libsimple_strnchrnul_inv (3),
+.BR libsimple_strcasechrnul_inv (3),
+.BR libsimple_memcasescan_inv (3)
diff --git a/man3/libsimple_strnchrnul.3 b/man3/libsimple_strnchrnul.3
index 6a26bd2..b0c328e 100644
--- a/man3/libsimple_strnchrnul.3
+++ b/man3/libsimple_strnchrnul.3
@@ -80,6 +80,7 @@ None.
.SH BUGS
None. I promise!
.SH SEE ALSO
+.BR libsimple_strnchrnul_inv (3),
.BR libsimple_strncasechrnul (3),
.BR libsimple_strnchr (3),
.BR libsimple_strnend (3),
diff --git a/man3/libsimple_strnchrnul_inv.3 b/man3/libsimple_strnchrnul_inv.3
new file mode 100644
index 0000000..d11a7df
--- /dev/null
+++ b/man3/libsimple_strnchrnul_inv.3
@@ -0,0 +1,88 @@
+.TH LIBSIMPLE_STRNCHRNUL_INV 3 2018-11-24 libsimple
+.SH NAME
+libsimple_strnchrnul_inv \- skip a character in a string
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+char *libsimple_strnchrnul_inv(const char *\fIs\fP, int \fIc\fP, size_t \fIn\fP);
+
+#ifndef strnchrnul_inv
+# define strnchrnul_inv libsimple_strnchrnul_inv
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_strnchrnul_inv ()
+function scans the string
+.IR s ,
+truncated to
+.I n
+bytes unless it is shorter,
+for the first occurence of any character
+other than
+.I c
+(it is converted to a
+.BR char ).
+If no such character exist in the string,
+the string's end is returned.
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_strnchrnul_inv ()
+function returns the pointer
+.I s
+with a minimal offset such that
+.IR *r!=c||!*r ,
+where
+.I r
+is the returned pointer. However if no such
+offset less than
+.I n
+exists,
+.B NULL
+is returned.
+.SH ERRORS
+The
+.BR libsimple_strnchrnul_inv ()
+function cannot fail.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lb
+l l l.
+Interface Attribute Value
+T{
+.BR libsimple_strnchrnul_inv ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_strnchrnul_inv ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_strnchrnul_inv ()
+T} Async-cancel safety AC-Safe
+.TE
+.SH EXAMPLES
+None.
+.SH APPLICATION USAGE
+None.
+.SH RATIONALE
+None.
+.SH FUTURE DIRECTIONS
+None.
+.SH NOTES
+None.
+.SH BUGS
+None. I promise!
+.SH SEE ALSO
+.BR libsimple_strnchrnul (3),
+.BR libsimple_strncasechrnul_inv (3),
+.BR libsimple_strnchr_inv (3),
+.BR libsimple_strchrnul_inv (3),
+.BR libsimple_memscan_inv (3)
diff --git a/man3/memcasechr_inv.3libsimple b/man3/memcasechr_inv.3libsimple
new file mode 120000
index 0000000..99be9cc
--- /dev/null
+++ b/man3/memcasechr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_memcasechr_inv.3 \ No newline at end of file
diff --git a/man3/memcasescan_inv.3libsimple b/man3/memcasescan_inv.3libsimple
new file mode 120000
index 0000000..d7eb34e
--- /dev/null
+++ b/man3/memcasescan_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_memcasescan_inv.3 \ No newline at end of file
diff --git a/man3/memchr_inv.3libsimple b/man3/memchr_inv.3libsimple
new file mode 120000
index 0000000..3a91a50
--- /dev/null
+++ b/man3/memchr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_memchr_inv.3 \ No newline at end of file
diff --git a/man3/memcmove.3libsimple b/man3/memcmove.3libsimple
new file mode 120000
index 0000000..1b8f6d3
--- /dev/null
+++ b/man3/memcmove.3libsimple
@@ -0,0 +1 @@
+libsimple_memcmove.3 \ No newline at end of file
diff --git a/man3/memelem_inv.3libsimple b/man3/memelem_inv.3libsimple
new file mode 120000
index 0000000..ff54160
--- /dev/null
+++ b/man3/memelem_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_memelem_inv.3 \ No newline at end of file
diff --git a/man3/memelemcpy.3libsimple b/man3/memelemcpy.3libsimple
new file mode 120000
index 0000000..2f870a9
--- /dev/null
+++ b/man3/memelemcpy.3libsimple
@@ -0,0 +1 @@
+libsimple_memelemcpy.3 \ No newline at end of file
diff --git a/man3/memelemmove.3libsimple b/man3/memelemmove.3libsimple
new file mode 120000
index 0000000..39a740f
--- /dev/null
+++ b/man3/memelemmove.3libsimple
@@ -0,0 +1 @@
+libsimple_memelemmove.3 \ No newline at end of file
diff --git a/man3/memelemscan_inv.3libsimple b/man3/memelemscan_inv.3libsimple
new file mode 120000
index 0000000..1683f76
--- /dev/null
+++ b/man3/memelemscan_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_memelemscan_inv.3 \ No newline at end of file
diff --git a/man3/memptolower.3libsimple b/man3/memptolower.3libsimple
new file mode 120000
index 0000000..4ecb8ff
--- /dev/null
+++ b/man3/memptolower.3libsimple
@@ -0,0 +1 @@
+libsimple_memptolower.3 \ No newline at end of file
diff --git a/man3/memptoupper.3libsimple b/man3/memptoupper.3libsimple
new file mode 120000
index 0000000..332241c
--- /dev/null
+++ b/man3/memptoupper.3libsimple
@@ -0,0 +1 @@
+libsimple_memptoupper.3 \ No newline at end of file
diff --git a/man3/memrcasechr_inv.3libsimple b/man3/memrcasechr_inv.3libsimple
new file mode 120000
index 0000000..53e37ba
--- /dev/null
+++ b/man3/memrcasechr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_memrcasechr_inv.3 \ No newline at end of file
diff --git a/man3/memrchr_inv.3libsimple b/man3/memrchr_inv.3libsimple
new file mode 120000
index 0000000..8cbfb6a
--- /dev/null
+++ b/man3/memrchr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_memrchr_inv.3 \ No newline at end of file
diff --git a/man3/memrelem_inv.3libsimple b/man3/memrelem_inv.3libsimple
new file mode 120000
index 0000000..e5cfd06
--- /dev/null
+++ b/man3/memrelem_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_memrelem_inv.3 \ No newline at end of file
diff --git a/man3/memreplace.3libsimple b/man3/memreplace.3libsimple
new file mode 120000
index 0000000..0dd69a9
--- /dev/null
+++ b/man3/memreplace.3libsimple
@@ -0,0 +1 @@
+libsimple_memreplace.3 \ No newline at end of file
diff --git a/man3/memreplaceelem.3libsimple b/man3/memreplaceelem.3libsimple
new file mode 120000
index 0000000..b2a83b2
--- /dev/null
+++ b/man3/memreplaceelem.3libsimple
@@ -0,0 +1 @@
+libsimple_memreplaceelem.3 \ No newline at end of file
diff --git a/man3/memscan_inv.3libsimple b/man3/memscan_inv.3libsimple
new file mode 120000
index 0000000..5731155
--- /dev/null
+++ b/man3/memscan_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_memscan_inv.3 \ No newline at end of file
diff --git a/man3/memtolower.3libsimple b/man3/memtolower.3libsimple
new file mode 120000
index 0000000..15069ef
--- /dev/null
+++ b/man3/memtolower.3libsimple
@@ -0,0 +1 @@
+libsimple_memtolower.3 \ No newline at end of file
diff --git a/man3/memtoupper.3libsimple b/man3/memtoupper.3libsimple
new file mode 120000
index 0000000..61fe5ba
--- /dev/null
+++ b/man3/memtoupper.3libsimple
@@ -0,0 +1 @@
+libsimple_memtoupper.3 \ No newline at end of file
diff --git a/man3/rawmemcasechr_inv.3libsimple b/man3/rawmemcasechr_inv.3libsimple
new file mode 120000
index 0000000..41f170d
--- /dev/null
+++ b/man3/rawmemcasechr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemcasechr_inv.3 \ No newline at end of file
diff --git a/man3/rawmemccpy.3libsimple b/man3/rawmemccpy.3libsimple
new file mode 120000
index 0000000..32229d3
--- /dev/null
+++ b/man3/rawmemccpy.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemccpy.3 \ No newline at end of file
diff --git a/man3/rawmemchr_inv.3libsimple b/man3/rawmemchr_inv.3libsimple
new file mode 120000
index 0000000..2122527
--- /dev/null
+++ b/man3/rawmemchr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemchr_inv.3 \ No newline at end of file
diff --git a/man3/rawmemcmove.3libsimple b/man3/rawmemcmove.3libsimple
new file mode 120000
index 0000000..e54ed0b
--- /dev/null
+++ b/man3/rawmemcmove.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemcmove.3 \ No newline at end of file
diff --git a/man3/rawmemelem.3libsimple b/man3/rawmemelem.3libsimple
new file mode 120000
index 0000000..18370bd
--- /dev/null
+++ b/man3/rawmemelem.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemelem.3 \ No newline at end of file
diff --git a/man3/rawmemelem_inv.3libsimple b/man3/rawmemelem_inv.3libsimple
new file mode 120000
index 0000000..625fff9
--- /dev/null
+++ b/man3/rawmemelem_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemelem_inv.3 \ No newline at end of file
diff --git a/man3/rawmemelemcpy.3libsimple b/man3/rawmemelemcpy.3libsimple
new file mode 120000
index 0000000..f9bf687
--- /dev/null
+++ b/man3/rawmemelemcpy.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemelemcpy.3 \ No newline at end of file
diff --git a/man3/rawmemelemmove.3libsimple b/man3/rawmemelemmove.3libsimple
new file mode 120000
index 0000000..d197b7e
--- /dev/null
+++ b/man3/rawmemelemmove.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemelemmove.3 \ No newline at end of file
diff --git a/man3/rawmemrcasechr_inv.3libsimple b/man3/rawmemrcasechr_inv.3libsimple
new file mode 120000
index 0000000..432415b
--- /dev/null
+++ b/man3/rawmemrcasechr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemrcasechr_inv.3 \ No newline at end of file
diff --git a/man3/rawmemrchr_inv.3libsimple b/man3/rawmemrchr_inv.3libsimple
new file mode 120000
index 0000000..593414d
--- /dev/null
+++ b/man3/rawmemrchr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemrchr_inv.3 \ No newline at end of file
diff --git a/man3/rawmemrelem.3libsimple b/man3/rawmemrelem.3libsimple
new file mode 120000
index 0000000..0347b51
--- /dev/null
+++ b/man3/rawmemrelem.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemrelem.3 \ No newline at end of file
diff --git a/man3/rawmemrelem_inv.3libsimple b/man3/rawmemrelem_inv.3libsimple
new file mode 120000
index 0000000..2978493
--- /dev/null
+++ b/man3/rawmemrelem_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_rawmemrelem_inv.3 \ No newline at end of file
diff --git a/man3/stpnset.3libsimple b/man3/stpnset.3libsimple
new file mode 120000
index 0000000..7b4b4a9
--- /dev/null
+++ b/man3/stpnset.3libsimple
@@ -0,0 +1 @@
+libsimple_stpnset.3 \ No newline at end of file
diff --git a/man3/stpntolower.3libsimple b/man3/stpntolower.3libsimple
new file mode 120000
index 0000000..d984b63
--- /dev/null
+++ b/man3/stpntolower.3libsimple
@@ -0,0 +1 @@
+libsimple_stpntolower.3 \ No newline at end of file
diff --git a/man3/stpntoupper.3libsimple b/man3/stpntoupper.3libsimple
new file mode 120000
index 0000000..90e3de8
--- /dev/null
+++ b/man3/stpntoupper.3libsimple
@@ -0,0 +1 @@
+libsimple_stpntoupper.3 \ No newline at end of file
diff --git a/man3/stpset.3libsimple b/man3/stpset.3libsimple
new file mode 120000
index 0000000..d3fc99c
--- /dev/null
+++ b/man3/stpset.3libsimple
@@ -0,0 +1 @@
+libsimple_stpset.3 \ No newline at end of file
diff --git a/man3/stptolower.3libsimple b/man3/stptolower.3libsimple
new file mode 120000
index 0000000..ec73399
--- /dev/null
+++ b/man3/stptolower.3libsimple
@@ -0,0 +1 @@
+libsimple_stptolower.3 \ No newline at end of file
diff --git a/man3/stptoupper.3libsimple b/man3/stptoupper.3libsimple
new file mode 120000
index 0000000..a07091b
--- /dev/null
+++ b/man3/stptoupper.3libsimple
@@ -0,0 +1 @@
+libsimple_stptoupper.3 \ No newline at end of file
diff --git a/man3/strcasechr_inv.3libsimple b/man3/strcasechr_inv.3libsimple
new file mode 120000
index 0000000..1f39a11
--- /dev/null
+++ b/man3/strcasechr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strcasechr_inv.3 \ No newline at end of file
diff --git a/man3/strcasechrnul_inv.3libsimple b/man3/strcasechrnul_inv.3libsimple
new file mode 120000
index 0000000..c22e4f4
--- /dev/null
+++ b/man3/strcasechrnul_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strcasechrnul_inv.3 \ No newline at end of file
diff --git a/man3/strccpy.3libsimple b/man3/strccpy.3libsimple
new file mode 120000
index 0000000..5cd20b7
--- /dev/null
+++ b/man3/strccpy.3libsimple
@@ -0,0 +1 @@
+libsimple_strccpy.3 \ No newline at end of file
diff --git a/man3/strchr_inv.3libsimple b/man3/strchr_inv.3libsimple
new file mode 120000
index 0000000..cf32462
--- /dev/null
+++ b/man3/strchr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strchr_inv.3 \ No newline at end of file
diff --git a/man3/strchrnul_inv.3libsimple b/man3/strchrnul_inv.3libsimple
new file mode 120000
index 0000000..4715f5b
--- /dev/null
+++ b/man3/strchrnul_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strchrnul_inv.3 \ No newline at end of file
diff --git a/man3/strcmove.3libsimple b/man3/strcmove.3libsimple
new file mode 120000
index 0000000..8c09bec
--- /dev/null
+++ b/man3/strcmove.3libsimple
@@ -0,0 +1 @@
+libsimple_strcmove.3 \ No newline at end of file
diff --git a/man3/strncasechr_inv.3libsimple b/man3/strncasechr_inv.3libsimple
new file mode 120000
index 0000000..7b3e990
--- /dev/null
+++ b/man3/strncasechr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strncasechr_inv.3 \ No newline at end of file
diff --git a/man3/strncasechrnul_inv.3libsimple b/man3/strncasechrnul_inv.3libsimple
new file mode 120000
index 0000000..9bdbd9d
--- /dev/null
+++ b/man3/strncasechrnul_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strncasechrnul_inv.3 \ No newline at end of file
diff --git a/man3/strnccpy.3libsimple b/man3/strnccpy.3libsimple
new file mode 120000
index 0000000..0c1a68c
--- /dev/null
+++ b/man3/strnccpy.3libsimple
@@ -0,0 +1 @@
+libsimple_strnccpy.3 \ No newline at end of file
diff --git a/man3/strnchr_inv.3libsimple b/man3/strnchr_inv.3libsimple
new file mode 120000
index 0000000..3acb8b4
--- /dev/null
+++ b/man3/strnchr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strnchr_inv.3 \ No newline at end of file
diff --git a/man3/strnchrnul_inv.3libsimple b/man3/strnchrnul_inv.3libsimple
new file mode 120000
index 0000000..d815acd
--- /dev/null
+++ b/man3/strnchrnul_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strnchrnul_inv.3 \ No newline at end of file
diff --git a/man3/strncmove.3libsimple b/man3/strncmove.3libsimple
new file mode 120000
index 0000000..e229a29
--- /dev/null
+++ b/man3/strncmove.3libsimple
@@ -0,0 +1 @@
+libsimple_strncmove.3 \ No newline at end of file
diff --git a/man3/strnreplace.3libsimple b/man3/strnreplace.3libsimple
new file mode 120000
index 0000000..1b2659a
--- /dev/null
+++ b/man3/strnreplace.3libsimple
@@ -0,0 +1 @@
+libsimple_strnreplace.3 \ No newline at end of file
diff --git a/man3/strnset.3libsimple b/man3/strnset.3libsimple
new file mode 120000
index 0000000..0e4427d
--- /dev/null
+++ b/man3/strnset.3libsimple
@@ -0,0 +1 @@
+libsimple_strnset.3 \ No newline at end of file
diff --git a/man3/strntolower.3libsimple b/man3/strntolower.3libsimple
new file mode 120000
index 0000000..8ed56d9
--- /dev/null
+++ b/man3/strntolower.3libsimple
@@ -0,0 +1 @@
+libsimple_strntolower.3 \ No newline at end of file
diff --git a/man3/strntoupper.3libsimple b/man3/strntoupper.3libsimple
new file mode 120000
index 0000000..72dc5e6
--- /dev/null
+++ b/man3/strntoupper.3libsimple
@@ -0,0 +1 @@
+libsimple_strntoupper.3 \ No newline at end of file
diff --git a/man3/strrcasechr_inv.3libsimple b/man3/strrcasechr_inv.3libsimple
new file mode 120000
index 0000000..d834dd8
--- /dev/null
+++ b/man3/strrcasechr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strrcasechr_inv.3 \ No newline at end of file
diff --git a/man3/strrchr_inv.3libsimple b/man3/strrchr_inv.3libsimple
new file mode 120000
index 0000000..a524153
--- /dev/null
+++ b/man3/strrchr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strrchr_inv.3 \ No newline at end of file
diff --git a/man3/strreplace.3libsimple b/man3/strreplace.3libsimple
new file mode 120000
index 0000000..549e5df
--- /dev/null
+++ b/man3/strreplace.3libsimple
@@ -0,0 +1 @@
+libsimple_strreplace.3 \ No newline at end of file
diff --git a/man3/strrncasechr_inv.3libsimple b/man3/strrncasechr_inv.3libsimple
new file mode 120000
index 0000000..2159d8f
--- /dev/null
+++ b/man3/strrncasechr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strrncasechr_inv.3 \ No newline at end of file
diff --git a/man3/strrnchr_inv.3libsimple b/man3/strrnchr_inv.3libsimple
new file mode 120000
index 0000000..481ac14
--- /dev/null
+++ b/man3/strrnchr_inv.3libsimple
@@ -0,0 +1 @@
+libsimple_strrnchr_inv.3 \ No newline at end of file
diff --git a/man3/strset.3libsimple b/man3/strset.3libsimple
new file mode 120000
index 0000000..dc775b8
--- /dev/null
+++ b/man3/strset.3libsimple
@@ -0,0 +1 @@
+libsimple_strset.3 \ No newline at end of file
diff --git a/man3/strtolower.3libsimple b/man3/strtolower.3libsimple
new file mode 120000
index 0000000..cc6ac1f
--- /dev/null
+++ b/man3/strtolower.3libsimple
@@ -0,0 +1 @@
+libsimple_strtolower.3 \ No newline at end of file
diff --git a/man3/strtoupper.3libsimple b/man3/strtoupper.3libsimple
new file mode 120000
index 0000000..ec7e542
--- /dev/null
+++ b/man3/strtoupper.3libsimple
@@ -0,0 +1 @@
+libsimple_strtoupper.3 \ No newline at end of file