aboutsummaryrefslogtreecommitdiffstats
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README192
1 files changed, 125 insertions, 67 deletions
diff --git a/README b/README
index 264cdbe..003313d 100644
--- a/README
+++ b/README
@@ -80,8 +80,12 @@ The following macros are defined, unless already defined:
The following functions are defined (some as inline functions):
+ int libsimple_close(int *)
+ Ensures that errno is not modified when closing an
+ already closed file descriptor.
+
void *libsimple_rawmemchr(const void *, int)
- Memchr without boundary check.
+ memchr without boundary check.
void *libsimple_memrchr(const void *, int, size_t)
Like memchr, except finds the last occurrence.
@@ -108,6 +112,21 @@ The following functions are defined (some as inline functions):
Like memcpy, except returns the byte after the
last written byte.
+ char *libsimple_strdupa(const char *)
+ Like `strdup`, except the returned pointer is stack-allocated.
+ This function is implemented as a macro and is only available
+ when compiling with GCC or clang.
+
+ char *libsimple_strndupa(const char *, size_t)
+ Like `strndup`, except the returned pointer is stack-allocated.
+ This function is implemented as a macro and is only available
+ when compiling with GCC or clang.
+
+ void *libsimple_memdupa(const void *, size_t)
+ Like `memdup`, except the returned pointer is stack-allocated.
+ This function is implemented as a macro and is only available
+ when compiling with GCC or clang.
+
int libsimple_isutf8(const char *s, int allow_modified_nul)
Returns 1 if `s` is valid UTF-8 (Unicode codepoints are not
validated) and 0 otherwise. If `allow_modified_nul` is non-zero,
@@ -119,6 +138,18 @@ The following functions are defined (some as inline functions):
int libsimple_vasprintf(char **, const char *, va_list);
Like vsprintf accept allocated the buffer.
+ char *libsimple_asprintfa(const char *, ...)
+ Like `asprintf` accept the the buffer is stack-allocated and
+ returned instead of stored in a pointer. This function is
+ implemented as a macro and is only available when compiling
+ with GCC or clang.
+
+ char *libsimple_vasprintfa(const char *, va_list)
+ Like `vasprintf` accept the the buffer is stack-allocated and
+ returned instead of stored in a pointer. This function is
+ implemented as a macro and is only available when compiling
+ with GCC or clang.
+
void *libsimple_memmem(const void *s, size_t sn, const void *t, size_t tn)
Finds the first occurrence of `t` in `s`.
Length of `s` is `sn`. Length of `t` is `tn`.
@@ -192,24 +223,58 @@ The following functions are defined (some as inline functions):
int libsimple_strneq(const char *a, const char *b, size_t n)
!strncmp(a, b, n)
- int libsimple_strcaseeq(const char *a, const char *b)
- !strcasecmp(a, b)
-
- int libsimple_strncaseeq(const char *a, const char *b, size_t n)
- !strncasecmp(a, b, n)
-
int libsimple_streqnul(const char *a, const char *b)
!strcmpnul(a, b)
int libsimple_strneqnul(const char *a, const char *b, size_t n)
!strncmpnul(a, b, n)
+ int libsimple_strcaseeq(const char *a, const char *b)
+ !strcasecmp(a, b)
+
+ int libsimple_strncaseeq(const char *a, const char *b, size_t n)
+ !strncasecmp(a, b, n)
+
int libsimple_strcaseeqnul(const char *a, const char *b)
!strcasecmpnul(a, b)
int libsimple_strncaseeqnul(const char *a, const char *b, size_t n)
!strncasecmpnul(a, b, n)
+ void *libsimple_vmalloczn(int, size_t, va_list)
+ Like malloczn accept uses va_list instead of variadic arguments.
+
+ void *libsimple_vmallocn(size_t, va_list)
+ Like mallocn accept uses va_list instead of variadic arguments.
+
+ void *libsimple_vcallocn(size_t, va_list)
+ Like callocn accept uses va_list instead of variadic arguments.
+
+ void *libsimple_vreallocn(void *, size_t, va_list)
+ Like reallocn accept uses va_list instead of variadic arguments.
+
+ void *libsimple_mallocz(int, size_t)
+ Identical to malloc if first argument is zero,
+ Identical to calloc, with 1 as the first argument, if first
+ argument is non-zero.
+
+ void *libsimple_malloczn(int, size_t, ... /*, (size_t)0 */)
+ Identical to mallocn if first argument is zero,
+ Identical to callocn if first argument is non-zero.
+
+ void *libsimple_mallocn(size_t, ... /*, (size_t)0 */)
+ Like malloc, accept uses the product of all argument, until
+ the first 0-argument, the first argument must not be 0.
+
+ void *libsimple_callocn(size_t, ... /*, (size_t)0 */)
+ Like calloc, accept uses the product of all argument, until
+ the first 0-argument, the first argument must not be 0.
+
+ void *libsimple_reallocn(void *, size_t, ... /*, (size_t)0 */)
+ Like realloc, accept uses the product of all argument,
+ not counting the first argument, until the first 0-argument,
+ the second argument must not be 0.
+
char *libsimple_getenv_ne(const char *)
Like getenv, except returns NULL if the value
of the environment variable is the empty string.
@@ -218,12 +283,42 @@ The following functions are defined (some as inline functions):
Like getenv, except returns the empty string if the
value of the environment variable is undefined.
- int libsimple_putenvf(const char *, ...)
+ int libsimple_vputenvf(const char *, va_list)
Format a string and call putenv.
- int libsimple_vputenvf(const char *, va_list)
+ int libsimple_putenvf(const char *, ...)
Format a string and call putenv.
+ void libsimple_vweprintf(const char *, va_list)
+ Identical to libsimple_weprintf, except using va_list.
+
+ void libsimple_weprintf(const char *fmt, ...)
+ Similar to printf, except prints to stderr and:
+ * unless `fmt` starts with "usage: " the `argv` follow by
+ ": " is prepended to the printed string,
+ * if `fmt` ends with ":", " " followed by `strerror(errno)`
+ and "\n" and appended to the printed string, and
+ * if `fmt` does not end with ":" or "\n", "\n" and appended to
+ the printed string.
+
+ libsimple.h defines `extern int libsimple_default_failure_exit`.
+
+ void libsimple_venprintf(int status, const char *, va_list)
+ Like libsimple_vweprintf, but calls exit(stats) afterwards.
+
+ void libsimple_enprintf(int status, const char *, ...)
+ Like libsimple_weprintf, but calls exit(stats) afterwards.
+
+ void libsimple_veprintf(const char *fmt, va_list)
+ Like libsimple_veprintf, but calls exit(libsimple_default_failure_exit)
+ afterwards.
+
+ void libsimple_eprintf(const char *fmt, ...)
+ Like libsimple_weprintf, but calls exit(libsimple_default_failure_exit)
+ afterwards.
+
+ libsimple.h defines `extern int libsimple_default_failure_exit`.
+
int libsimple_sendfd(int sock, int fd)
Send a file descriptor over a socket.
@@ -321,82 +416,45 @@ The following functions are defined (some as inline functions):
such macro already exists) is idential to libsimple_unlist
except `width` is automatically.
- char *libsimple_strdupa(const char *)
- Like `strdup`, except the returned pointer is stack-allocated.
- This function is implemented as a macro and is only available
- when compiling with GCC or clang.
-
- char *libsimple_strndupa(const char *, size_t)
- Like `strndup`, except the returned pointer is stack-allocated.
- This function is implemented as a macro and is only available
- when compiling with GCC or clang.
-
- void *libsimple_memdupa(const void *, size_t)
- Like `memdup`, except the returned pointer is stack-allocated.
- This function is implemented as a macro and is only available
- when compiling with GCC or clang.
-
- char *libsimple_asprintfa(const char *, ...)
- Like `asprintf` accept the the buffer is stack-allocated and
- returned instead of stored in a pointer. This function is
- implemented as a macro and is only available when compiling
- with GCC or clang.
-
- char *libsimple_vasprintfa(const char *, va_list)
- Like `vasprintf` accept the the buffer is stack-allocated and
- returned instead of stored in a pointer. This function is
- implemented as a macro and is only available when compiling
- with GCC or clang.
-
- void libsimple_weprintf(const char *fmt, ...)
- Similar to printf, except prints to stderr and:
- * unless `fmt` starts with "usage: " the `argv` follow by
- ": " is prepended to the printed string,
- * if `fmt` ends with ":", " " followed by `strerror(errno)`
- and "\n" and appended to the printed string, and
- * if `fmt` does not end with ":" or "\n", "\n" and appended to
- the printed string.
-
- void libsimple_vweprintf(const char *, va_list)
- Identical to libsimple_weprintf, except using va_list.
-
- void libsimple_eprintf(const char *fmt, ...)
- Like libsimple_weprintf, but calls exit(libsimple_default_failure_exit)
- afterwards.
-
- libsimple.h defines `extern int libsimple_default_failure_exit`.
-
- void libsimple_veprintf(const char *fmt, va_list)
- Like libsimple_veprintf, but calls exit(libsimple_default_failure_exit)
- afterwards.
-
- libsimple.h defines `extern int libsimple_default_failure_exit`.
-
- void libsimple_enprintf(int status, const char *, ...)
- Like libsimple_weprintf, but calls exit(stats) afterwards.
-
- void libsimple_venprintf(int status, const char *, va_list)
- Like libsimple_vweprintf, but calls exit(stats) afterwards.
The following functions, which call `eprintf` on failure, are also defined:
- void libsimple_eputenvf(const char *, ...)
void libsimple_evputenvf(const char *, va_list)
+ void libsimple_eputenvf(const char *, ...)
+ void *libsimple_emallocz(int, size_t)
void *libsimple_emalloc(size_t)
void *libsimple_ecalloc(size_t, size_t)
void *libsimple_erealloc(void *, size_t)
char *libsimple_estrdup(const char *)
char *libsimple_estrndup(const char *, size_t)
void *libsimple_ememdup(const void *, size_t)
+ void *libsimple_evmallocn(size_t, va_list)
+ void *libsimple_evcallocn(size_t, va_list)
+ void *libsimple_evreallocn(void *, size_t, va_list)
+ void *libsimple_evmalloczn(int, size_t, va_list)
+ void *libsimple_emalloczn(int, size_t, ...)
+ void *libsimple_emallocn(size_t, ...)
+ void *libsimple_ecallocn(size_t, ...)
+ void *libsimple_ereallocn(void *, size_t, ...)
+
The following functions, which call `enprintf` on failure, are also defined,
the first argument is used as the first argument for `enprintf`:
- void libsimple_enputenvf(int, const char *, ...)
void libsimple_envputenvf(int, const char *, va_list)
+ void libsimple_enputenvf(int, const char *, ...)
+ void *libsimple_enmallocz(int, size_t)
void *libsimple_enmalloc(int, size_t)
void *libsimple_encalloc(int, size_t, size_t)
void *libsimple_enrealloc(int, void *, size_t)
char *libsimple_enstrdup(int, const char *)
char *libsimple_enstrndup(int, const char *, size_t)
void *libsimple_enmemdup(int, const void *, size_t)
+ void *libsimple_envmallocn(int, size_t, va_list)
+ void *libsimple_envcallocn(int, size_t, va_list)
+ void *libsimple_envreallocn(int, void *, size_t, va_list)
+ void *libsimple_envmalloczn(int, int, size_t, va_list)
+ void *libsimple_enmalloczn(int, int, size_t, ...)
+ void *libsimple_enmallocn(int, size_t, ...)
+ void *libsimple_encallocn(int, size_t, ...)
+ void *libsimple_enreallocn(int, void *, size_t, ...)