diff options
-rw-r--r-- | libsimple/mem.h | 28 | ||||
-rw-r--r-- | man/libsimple_memeq.3 | 70 | ||||
-rw-r--r-- | man/libsimple_mempcpy.3 | 70 | ||||
-rw-r--r-- | man/libsimple_mempset.3 | 72 |
4 files changed, 238 insertions, 2 deletions
diff --git a/libsimple/mem.h b/libsimple/mem.h index ba5d0fb..1458700 100644 --- a/libsimple/mem.h +++ b/libsimple/mem.h @@ -165,14 +165,30 @@ int libsimple_memends(const void *, size_t, const void *, size_t); #endif +/** + * Checks two arrays of bytes for equality + * + * @param a One of the arrays of bytes + * @param b The other arrays of bytes + * @param n The lengths of the arrays + * @return 1 if the arrays are equal, 0 otherwise + */ _LIBSIMPLE_GCC_ONLY(__attribute__((__pure__, __warn_unused_result__))) -static inline int libsimple_memeq(const void *__s1, const void *__s2, size_t __n) -{ return !memcmp(__s1, __s2, __n); } +static inline int libsimple_memeq(const void *__a, const void *__b, size_t __n) +{ return !memcmp(__a, __b, __n); } #ifndef memeq # define memeq libsimple_memeq #endif +/** + * Copies an array of bytes into another + * + * @param d The array the bytes should be copied into + * @param s The array of bytes that should be copied + * @param n The number of bytes to copy + * @return `&s[n]` + */ _LIBSIMPLE_GCC_ONLY(__attribute__((__warn_unused_result__))) static inline void *libsimple_mempcpy(void *__d, const void *__s, size_t __n) { return &((char *)memcpy(__d, __s, __n))[__n]; } @@ -181,6 +197,14 @@ static inline void *libsimple_mempcpy(void *__d, const void *__s, size_t __n) #endif +/** + * Fill an array of bytes with a specified byte + * + * @param s The array of bytes to fill + * @param c The byte to fill the array with + * @param n The number of bytes to write to `s` + * @return `&s[n]` + */ _LIBSIMPLE_GCC_ONLY(__attribute__((__warn_unused_result__))) static inline void *libsimple_mempset(void *__s, int __c, size_t __n) { return &((char *)memset(__s, __c, __n))[__n]; } diff --git a/man/libsimple_memeq.3 b/man/libsimple_memeq.3 new file mode 100644 index 0000000..fa1ac20 --- /dev/null +++ b/man/libsimple_memeq.3 @@ -0,0 +1,70 @@ +.TH LIBSIMPLE_MEMEQ 3 2018-10-20 libsimple +.SH NAME +libsimple_memeq \- check two memory segments for equality +.SH SYNOPSIS +.nf +#include <libsimple.h> + +void *libsimple_memeq(const void *\fIa\fP, const void *\fIb\fP, size_t \fIn\fP); + +#ifndef memeq +# define memeq libsimple_memeq +#endif +.fi + +Link with +.IR \-lsimple . +.SH DESCRIPTION +The +.BR libsimple_memeq () +function checks whether the first +.I n +bytes of +.I a +and +.I b +are equal. +.SH RETURN VALUE +The +.BR libsimple_memeq () +function returns 1 one if +.I a +and +.I b +are equal, otherwise it returns 0. +.SH ERRORS +The +.BR libsimple_memeq () +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_memeq () +T} Thread safety MT-Safe +T{ +.BR libsimple_memeq () +T} Async-signal safety AS-Safe +T{ +.BR libsimple_memeq () +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 memcmp (3) diff --git a/man/libsimple_mempcpy.3 b/man/libsimple_mempcpy.3 new file mode 100644 index 0000000..40b1e63 --- /dev/null +++ b/man/libsimple_mempcpy.3 @@ -0,0 +1,70 @@ +.TH LIBSIMPLE_MEMPCPY 3 2018-10-20 libsimple +.SH NAME +libsimple_mempcpy \- check two memory segments for equality +.SH SYNOPSIS +.nf +#include <libsimple.h> + +void *libsimple_mempcpy(void *\fIdest\fP, const void *\fIsrc\fP, size_t \fIn\fP); + +#ifndef mempcpy +# define mempcpy libsimple_mempcpy +#endif +.fi + +Link with +.IR \-lsimple . +.SH DESCRIPTION +The +.BR libsimple_mempcpy () +function copies the first +.I n +bytes of +.I src +into +.IR dest . +.SH RETURN VALUE +The +.BR libsimple_mempcpy () +function returns the pointer +.I dest +with the offset +.I n +(the byte where the copy stopped). +.SH ERRORS +The +.BR libsimple_mempcpy () +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_mempcpy () +T} Thread safety MT-Safe +T{ +.BR libsimple_mempcpy () +T} Async-signal safety AS-Safe +T{ +.BR libsimple_mempcpy () +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_mempset (3) +.BR memcpy (3) diff --git a/man/libsimple_mempset.3 b/man/libsimple_mempset.3 new file mode 100644 index 0000000..e4d7fda --- /dev/null +++ b/man/libsimple_mempset.3 @@ -0,0 +1,72 @@ +.TH LIBSIMPLE_MEMPSET 3 2018-10-20 libsimple +.SH NAME +libsimple_mempset \- check two memory segments for equality +.SH SYNOPSIS +.nf +#include <libsimple.h> + +void *libsimple_mempset(void *\fIs\fP, int \fIc\fP, size_t \fIn\fP); + +#ifndef mempset +# define mempset libsimple_mempset +#endif +.fi + +Link with +.IR \-lsimple . +.SH DESCRIPTION +The +.BR libsimple_mempset () +function fills the first +.I n +bytes of +.I s +with the value +.I c +coverted to a +.BR char . +.SH RETURN VALUE +The +.BR libsimple_mempset () +function returns the pointer +.I s +with the offset +.I n +(the byte where the copy stopped). +.SH ERRORS +The +.BR libsimple_mempset () +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_mempset () +T} Thread safety MT-Safe +T{ +.BR libsimple_mempset () +T} Async-signal safety AS-Safe +T{ +.BR libsimple_mempset () +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_mempcpy (3) +.BR memset (3) |