aboutsummaryrefslogtreecommitdiffstats
path: root/man3
diff options
context:
space:
mode:
Diffstat (limited to 'man3')
l---------man3/libsimple_memptolower.31
l---------man3/libsimple_memptoupper.31
-rw-r--r--man3/libsimple_memreplace.376
-rw-r--r--man3/libsimple_memreplaceelem.382
-rw-r--r--man3/libsimple_memtolower.392
-rw-r--r--man3/libsimple_memtoupper.392
l---------man3/libsimple_stpntolower.31
l---------man3/libsimple_stpntoupper.31
l---------man3/libsimple_stptolower.31
l---------man3/libsimple_stptoupper.31
-rw-r--r--man3/libsimple_strmove.32
-rw-r--r--man3/libsimple_strnreplace.381
-rw-r--r--man3/libsimple_strntolower.397
-rw-r--r--man3/libsimple_strntoupper.397
-rw-r--r--man3/libsimple_strreplace.376
-rw-r--r--man3/libsimple_strtolower.395
-rw-r--r--man3/libsimple_strtoupper.395
17 files changed, 890 insertions, 1 deletions
diff --git a/man3/libsimple_memptolower.3 b/man3/libsimple_memptolower.3
new file mode 120000
index 0000000..15069ef
--- /dev/null
+++ b/man3/libsimple_memptolower.3
@@ -0,0 +1 @@
+libsimple_memtolower.3 \ No newline at end of file
diff --git a/man3/libsimple_memptoupper.3 b/man3/libsimple_memptoupper.3
new file mode 120000
index 0000000..61fe5ba
--- /dev/null
+++ b/man3/libsimple_memptoupper.3
@@ -0,0 +1 @@
+libsimple_memtoupper.3 \ No newline at end of file
diff --git a/man3/libsimple_memreplace.3 b/man3/libsimple_memreplace.3
new file mode 100644
index 0000000..25fd6d1
--- /dev/null
+++ b/man3/libsimple_memreplace.3
@@ -0,0 +1,76 @@
+.TH LIBSIMPLE_MEMREPLACE 3 2018-11-25 libsimple
+.SH NAME
+libsimple_memreplace \- replace bytes in an array of bytes
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+static inline void *libsimple_memreplace(void *\fIs\fP, int \fIold\fP, int \fInew\fP, size_t \fIn\fP);
+
+#ifndef memreplace
+# define memreplace libsimple_memreplace
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memreplace ()
+function replaces all instances of the byte
+.I old
+(it is converted to a
+.BR char )
+in the byte array
+.IR s ,
+with the size
+.IR n ,
+with the byte
+.IR new .
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_memreplace ()
+function returns
+.IR &s[n] .
+.SH ERRORS
+The
+.BR libsimple_memreplace ()
+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_memreplace ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memreplace ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memreplace ()
+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_memtolower (3),
+.BR libsimple_memtoupper (3),
+.BR libsimple_strreplace (3),
+.BR libsimple_strnreplace (3),
+.BR libsimple_memreplaceelem (3)
diff --git a/man3/libsimple_memreplaceelem.3 b/man3/libsimple_memreplaceelem.3
new file mode 100644
index 0000000..02e0f06
--- /dev/null
+++ b/man3/libsimple_memreplaceelem.3
@@ -0,0 +1,82 @@
+.TH LIBSIMPLE_MEMREPLACEELEM 3 2018-11-25 libsimple
+.SH NAME
+libsimple_memreplaceelem \- replace elements in an array
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+void *libsimple_memreplaceelem(void *\fIs\fP, int \fIold\fP, int \fInew\fP, size_t \fIn\fP, size_t \fIwidth\fP);
+
+#ifndef memreplaceelem
+# define memreplaceelem libsimple_memreplaceelem
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memreplaceelem ()
+function replaces all instances of the element
+.IR old ,
+with size
+.IR width ,
+in the array
+.IR s ,
+with the size of
+.I n
+elements of size
+.IR width ,
+with the element
+.IR new ,
+also with the size
+.IR width .
+The replace elements in
+.I s
+are aligned by
+.I width
+bytes in
+.IR s .
+.SH RETURN VALUE
+The
+.BR libsimple_memreplaceelem ()
+function returns
+.IR &s[n*width] .
+.SH ERRORS
+The
+.BR libsimple_memreplaceelem ()
+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_memreplaceelem ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memreplaceelem ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memreplaceelem ()
+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_memreplace (3),
+.BR libsimple_strreplace (3),
+.BR libsimple_strnreplace (3)
diff --git a/man3/libsimple_memtolower.3 b/man3/libsimple_memtolower.3
new file mode 100644
index 0000000..be09689
--- /dev/null
+++ b/man3/libsimple_memtolower.3
@@ -0,0 +1,92 @@
+.TH LIBSIMPLE_MEMTOLOWER 3 2018-11-25 libsimple
+.SH NAME
+libsimple_memtolower, libsimple_memptolower \- convert a character array to lower case
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+static inline void *libsimple_memtolower(void *\fIdest\fP, const void *\fIsrc\fP, size_t \fIn\fP);
+void *libsimple_memptolower(void *\fIdest\fP, const void *\fIsrc\fP, size_t \fIn\fP);
+
+#ifndef memtolower
+# define memtolower libsimple_memtolower
+#endif
+#ifndef memptolower
+# define memptolower libsimple_memptolower
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memtolower ()
+and
+.BR libsimple_memptolower ()
+functions copies the first
+.I n
+characters from the array
+.I src
+into the
+.I array.
+All upper case ASCII characters will be converted
+to lower case. The arrays may overlap, and there
+is an optimisation for the case where
+.IR dest==src .
+.SH RETURN VALUE
+The
+.BR libsimple_memtolower ()
+function returns the pointer
+.IR dest .
+.PP
+The
+.BR libsimple_memptolower ()
+function returns
+.IR &dest[n] .
+.SH ERRORS
+The
+.BR libsimple_memtolower ()
+and
+.BR libsimple_memptolower ()
+functions 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_memtolower (),
+.br
+.BR libsimple_memptolower ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memtolower (),
+.br
+.BR libsimple_memptolower ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memtolower (),
+.br
+.BR libsimple_memptolower ()
+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_memtoupper (3),
+.BR libsimple_memreplace (3),
+.BR libsimple_strtolower (3),
+.BR libsimple_strntolower (3)
diff --git a/man3/libsimple_memtoupper.3 b/man3/libsimple_memtoupper.3
new file mode 100644
index 0000000..6f45d54
--- /dev/null
+++ b/man3/libsimple_memtoupper.3
@@ -0,0 +1,92 @@
+.TH LIBSIMPLE_MEMTOUPPER 3 2018-11-25 libsimple
+.SH NAME
+libsimple_memtoupper, libsimple_memptoupper \- convert a character array to upper case
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+static inline void *libsimple_memtoupper(void *\fIdest\fP, const void *\fIsrc\fP, size_t \fIn\fP);
+void *libsimple_memptoupper(void *\fIdest\fP, const void *\fIsrc\fP, size_t \fIn\fP);
+
+#ifndef memtoupper
+# define memtoupper libsimple_memtoupper
+#endif
+#ifndef memptoupper
+# define memptoupper libsimple_memptoupper
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_memtoupper ()
+and
+.BR libsimple_memptoupper ()
+functions copies the first
+.I n
+characters from the array
+.I src
+into the
+.I array.
+All lower case ASCII characters will be converted
+to upper case. The arrays may overlap, and there
+is an optimisation for the case where
+.IR dest==src .
+.SH RETURN VALUE
+The
+.BR libsimple_memtoupper ()
+function returns the pointer
+.IR dest .
+.PP
+The
+.BR libsimple_memptoupper ()
+function returns
+.IR &dest[n] .
+.SH ERRORS
+The
+.BR libsimple_memtoupper ()
+and
+.BR libsimple_memptoupper ()
+functions 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_memtoupper (),
+.br
+.BR libsimple_memptoupper ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_memtoupper (),
+.br
+.BR libsimple_memptoupper ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_memtoupper (),
+.br
+.BR libsimple_memptoupper ()
+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_memtolower (3),
+.BR libsimple_memreplace (3),
+.BR libsimple_strtoupper (3),
+.BR libsimple_strntoupper (3)
diff --git a/man3/libsimple_stpntolower.3 b/man3/libsimple_stpntolower.3
new file mode 120000
index 0000000..8ed56d9
--- /dev/null
+++ b/man3/libsimple_stpntolower.3
@@ -0,0 +1 @@
+libsimple_strntolower.3 \ No newline at end of file
diff --git a/man3/libsimple_stpntoupper.3 b/man3/libsimple_stpntoupper.3
new file mode 120000
index 0000000..72dc5e6
--- /dev/null
+++ b/man3/libsimple_stpntoupper.3
@@ -0,0 +1 @@
+libsimple_strntoupper.3 \ No newline at end of file
diff --git a/man3/libsimple_stptolower.3 b/man3/libsimple_stptolower.3
new file mode 120000
index 0000000..cc6ac1f
--- /dev/null
+++ b/man3/libsimple_stptolower.3
@@ -0,0 +1 @@
+libsimple_strtolower.3 \ No newline at end of file
diff --git a/man3/libsimple_stptoupper.3 b/man3/libsimple_stptoupper.3
new file mode 120000
index 0000000..ec7e542
--- /dev/null
+++ b/man3/libsimple_stptoupper.3
@@ -0,0 +1 @@
+libsimple_strtoupper.3 \ No newline at end of file
diff --git a/man3/libsimple_strmove.3 b/man3/libsimple_strmove.3
index 39c4572..a145c62 100644
--- a/man3/libsimple_strmove.3
+++ b/man3/libsimple_strmove.3
@@ -5,7 +5,7 @@ libsimple_strmove \- move a string within an array of bytes
.nf
#include <libsimple.h>
-static inline void *libsimple_strmove(void *\fIdest\fP, const void *\fIsrc\fP);
+static inline char *libsimple_strmove(char *\fIdest\fP, const char *\fIsrc\fP);
#ifndef strmove
# define strmove libsimple_strmove
diff --git a/man3/libsimple_strnreplace.3 b/man3/libsimple_strnreplace.3
new file mode 100644
index 0000000..ef2a4fe
--- /dev/null
+++ b/man3/libsimple_strnreplace.3
@@ -0,0 +1,81 @@
+.TH LIBSIMPLE_STRNREPLACE 3 2018-11-25 libsimple
+.SH NAME
+libsimple_strnreplace \- replace characters in a string
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+static inline char *libsimple_strnreplace(char *\fIs\fP, int \fIold\fP, int \fInew\fP, size_t \fIn\fP);
+
+#ifndef strnreplace
+# define strnreplace libsimple_strnreplace
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_strnreplace ()
+function replaces all instances of the character
+.I old
+(it is converted to a
+.BR char )
+in the string
+.I s
+with the character
+.IR new ,
+up to the
+.I n th
+character (up the last character
+.I s
+is shorter).
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_strnreplace ()
+function returns the end of
+.IR s ,
+that is
+.I &s[strnlen(s,n)]
+(as evaluated before the function call).
+.SH ERRORS
+The
+.BR libsimple_strnreplace ()
+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_strnreplace ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_strnreplace ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_strnreplace ()
+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_strntolower (3),
+.BR libsimple_strntoupper (3),
+.BR libsimple_strreplace (3),
+.BR libsimple_memreplace (3)
diff --git a/man3/libsimple_strntolower.3 b/man3/libsimple_strntolower.3
new file mode 100644
index 0000000..805adf4
--- /dev/null
+++ b/man3/libsimple_strntolower.3
@@ -0,0 +1,97 @@
+.TH LIBSIMPLE_STRNTOLOWER 3 2018-11-25 libsimple
+.SH NAME
+libsimple_strntolower, libsimple_stpntolower \- convert a string to lower case
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+static inline char *libsimple_strntolower(char *\fIdest\fP, const char *\fIsrc\fP, size_t \fIn\fP);
+char *libsimple_stpntolower(char *\fIdest\fP, const char *\fIsrc\fP, size_t \fIn\fP);
+
+#ifndef strntolower
+# define strntolower libsimple_strntolower
+#endif
+#ifndef stpntolower
+# define stpntolower libsimple_stpntolower
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_strntolower ()
+and
+.BR libsimple_stpntolower ()
+functions copies and covert a string, including the
+NUL byte that terminates it, to lower case.
+The string
+.I src
+is copied into
+.IR dest ,
+with all upper case ASCII characters converted to
+lower case; however no more than
+.I n
+bytes will be copied or coverted. The arrays may overlap,
+and there is an optimisation for the case where
+.IR dest==src .
+.SH RETURN VALUE
+The
+.BR libsimple_strntolower ()
+function returns the pointer
+.IR dest .
+.PP
+The
+.BR libsimple_stpntolower ()
+function returns the pointer
+end of the string copied into
+.IR dest ,
+that is
+.IR &dest[strnlen(src,n)] .
+.SH ERRORS
+The
+.BR libsimple_strntolower ()
+and
+.BR libsimple_stpntolower ()
+functions 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_strntolower (),
+.br
+.BR libsimple_stpntolower ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_strntolower (),
+.br
+.BR libsimple_stpntolower ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_strntolower (),
+.br
+.BR libsimple_stpntolower ()
+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_strntoupper (3),
+.BR libsimple_strnreplace (3),
+.BR libsimple_strnntolower (3),
+.BR libsimple_memntolower (3)
diff --git a/man3/libsimple_strntoupper.3 b/man3/libsimple_strntoupper.3
new file mode 100644
index 0000000..f045291
--- /dev/null
+++ b/man3/libsimple_strntoupper.3
@@ -0,0 +1,97 @@
+.TH LIBSIMPLE_STRNTOUPPER 3 2018-11-25 libsimple
+.SH NAME
+libsimple_strntoupper, libsimple_stpntoupper \- convert a string to upper case
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+static inline char *libsimple_strntoupper(char *\fIdest\fP, const char *\fIsrc\fP, size_t \fIn\fP);
+char *libsimple_stpntoupper(char *\fIdest\fP, const char *\fIsrc\fP, size_t \fIn\fP);
+
+#ifndef strntoupper
+# define strntoupper libsimple_strntoupper
+#endif
+#ifndef stpntoupper
+# define stpntoupper libsimple_stpntoupper
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_strntoupper ()
+and
+.BR libsimple_stpntoupper ()
+functions copies and covert a string, including the
+NUL byte that terminates it, to upper case.
+The string
+.I src
+is copied into
+.IR dest ,
+with all lower case ASCII characters converted to
+upper case; however no more than
+.I n
+bytes will be copied or coverted. The arrays may overlap,
+and there is an optimisation for the case where
+.IR dest==src .
+.SH RETURN VALUE
+The
+.BR libsimple_strntoupper ()
+function returns the pointer
+.IR dest .
+.PP
+The
+.BR libsimple_stpntoupper ()
+function returns the pointer
+end of the string copied into
+.IR dest ,
+that is
+.IR &dest[strnlen(src,n)] .
+.SH ERRORS
+The
+.BR libsimple_strntoupper ()
+and
+.BR libsimple_stpntoupper ()
+functions 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_strntoupper (),
+.br
+.BR libsimple_stpntoupper ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_strntoupper (),
+.br
+.BR libsimple_stpntoupper ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_strntoupper (),
+.br
+.BR libsimple_stpntoupper ()
+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_strntolower (3),
+.BR libsimple_strnreplace (3),
+.BR libsimple_strnntoupper (3),
+.BR libsimple_memntoupper (3)
diff --git a/man3/libsimple_strreplace.3 b/man3/libsimple_strreplace.3
new file mode 100644
index 0000000..96d20e0
--- /dev/null
+++ b/man3/libsimple_strreplace.3
@@ -0,0 +1,76 @@
+.TH LIBSIMPLE_STRREPLACE 3 2018-11-25 libsimple
+.SH NAME
+libsimple_strreplace \- replace characters in a string
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+static inline char *libsimple_strreplace(char *\fIs\fP, int \fIold\fP, int \fInew\fP);
+
+#ifndef strreplace
+# define strreplace libsimple_strreplace
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_strreplace ()
+function replaces all instances of the character
+.I old
+(it is converted to a
+.BR char )
+in the string
+.I s
+with the character
+.IR new .
+.PP
+The comparison is case-sensitive.
+.SH RETURN VALUE
+The
+.BR libsimple_strreplace ()
+function returns the end of
+.IR s ,
+that is
+.I &s[strlen(s)]
+(as evaluated before the function call).
+.SH ERRORS
+The
+.BR libsimple_strreplace ()
+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_strreplace ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_strreplace ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_strreplace ()
+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_strtolower (3),
+.BR libsimple_strtoupper (3),
+.BR libsimple_strnreplace (3),
+.BR libsimple_memreplace (3)
diff --git a/man3/libsimple_strtolower.3 b/man3/libsimple_strtolower.3
new file mode 100644
index 0000000..385de39
--- /dev/null
+++ b/man3/libsimple_strtolower.3
@@ -0,0 +1,95 @@
+.TH LIBSIMPLE_STRTOLOWER 3 2018-11-25 libsimple
+.SH NAME
+libsimple_strtolower, libsimple_stptolower \- convert a string to lower case
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+static inline char *libsimple_strtolower(char *\fIdest\fP, const char *\fIsrc\fP);
+char *libsimple_stptolower(char *\fIdest\fP, const char *\fIsrc\fP);
+
+#ifndef strtolower
+# define strtolower libsimple_strtolower
+#endif
+#ifndef stptolower
+# define stptolower libsimple_stptolower
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_strtolower ()
+and
+.BR libsimple_stptolower ()
+functions copies and covert a string, including the
+NUL byte that terminates it, to lower case.
+The string
+.I src
+is copied into
+.IR dest ,
+with all upper case ASCII characters converted to
+lower case. The arrays may overlap, and there is
+an optimisation for the case where
+.IR dest==src .
+.SH RETURN VALUE
+The
+.BR libsimple_strtolower ()
+function returns the pointer
+.IR dest .
+.PP
+The
+.BR libsimple_stptolower ()
+function returns the pointer
+end of the string copied into
+.IR dest ,
+that is
+.IR &dest[strlen(src)] .
+.SH ERRORS
+The
+.BR libsimple_strtolower ()
+and
+.BR libsimple_stptolower ()
+functions 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_strtolower (),
+.br
+.BR libsimple_stptolower ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_strtolower (),
+.br
+.BR libsimple_stptolower ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_strtolower (),
+.br
+.BR libsimple_stptolower ()
+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_strtoupper (3),
+.BR libsimple_strreplace (3),
+.BR libsimple_strntolower (3),
+.BR libsimple_memtolower (3)
diff --git a/man3/libsimple_strtoupper.3 b/man3/libsimple_strtoupper.3
new file mode 100644
index 0000000..cc1de4f
--- /dev/null
+++ b/man3/libsimple_strtoupper.3
@@ -0,0 +1,95 @@
+.TH LIBSIMPLE_STRTOUPPER 3 2018-11-25 libsimple
+.SH NAME
+libsimple_strtoupper, libsimple_stptoupper \- convert a string to upper case
+.SH SYNOPSIS
+.nf
+#include <libsimple.h>
+
+static inline char *libsimple_strtoupper(char *\fIdest\fP, const char *\fIsrc\fP);
+char *libsimple_stptoupper(char *\fIdest\fP, const char *\fIsrc\fP);
+
+#ifndef strtoupper
+# define strtoupper libsimple_strtoupper
+#endif
+#ifndef stptoupper
+# define stptoupper libsimple_stptoupper
+#endif
+.fi
+.PP
+Link with
+.IR \-lsimple .
+.SH DESCRIPTION
+The
+.BR libsimple_strtoupper ()
+and
+.BR libsimple_stptoupper ()
+functions copies and covert a string, including the
+NUL byte that terminates it, to upper case.
+The string
+.I src
+is copied into
+.IR dest ,
+with all lower case ASCII characters converted to
+upper case. The arrays may overlap, and there is
+an optimisation for the case where
+.IR dest==src .
+.SH RETURN VALUE
+The
+.BR libsimple_strtoupper ()
+function returns the pointer
+.IR dest .
+.PP
+The
+.BR libsimple_stptoupper ()
+function returns the pointer
+end of the string copied into
+.IR dest ,
+that is
+.IR &dest[strlen(src)] .
+.SH ERRORS
+The
+.BR libsimple_strtoupper ()
+and
+.BR libsimple_stptoupper ()
+functions 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_strtoupper (),
+.br
+.BR libsimple_stptoupper ()
+T} Thread safety MT-Safe
+T{
+.BR libsimple_strtoupper (),
+.br
+.BR libsimple_stptoupper ()
+T} Async-signal safety AS-Safe
+T{
+.BR libsimple_strtoupper (),
+.br
+.BR libsimple_stptoupper ()
+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_strtolower (3),
+.BR libsimple_strreplace (3),
+.BR libsimple_strntoupper (3),
+.BR libsimple_memtoupper (3)