EFUN(3)

EFUN(3) | Library Functions Manual | EFUN(3)

# NAME

`esetfunc`, `easprintf`, `efopen`, `emalloc`, `ecalloc`, `erealloc`, `ereallocarr`, `estrdup`, `estrndup`, `estrlcat`, `estrlcpy`, `estrtoi`, `estrtou`, `evasprintf` —
error-checked utility functions

# LIBRARY

System Utilities Library (libutil, -lutil)

# SYNOPSIS

`#include <util.h>`

void (*)(int, const char *, ...)
`esetfunc`(void (*)(int, const char *, ...));

int
`easprintf`(char ** restrict str, const char * restrict fmt, ...);

FILE *
`efopen`(const char *p, const char *m);

void *
`ecalloc`(size_t n, size_t s);

void *
`emalloc`(size_t n);

void *
`erealloc`(void *p, size_t n);

void
`ereallocarr`(void *p, size_t n, size_t s);

char *
`estrdup`(const char *s);

char *
`estrndup`(const char *s, size_t len);

size_t
`estrlcat`(char *dst, const char *src, size_t len);

size_t
`estrlcpy`(char *dst, const char *src, size_t len);

intmax_t
`estrtoi`(const char * nptr, int base, intmax_t lo, intmax_t hi);

uintmax_t
`estrtou`(const char * nptr, int base, uintmax_t lo, uintmax_t hi);

int
`evasprintf`(char ** restrict str, const char * restrict fmt, ...);

# DESCRIPTION

The `easprintf`(), `efopen`(), `ecalloc`(), `emalloc`(), `erealloc`(), `ereallocarr`(), `estrdup`(), `estrndup`(), `estrlcat`(), `estrlcpy`(), `estrtoi`(), `estrtou`(), and `evasprintf`() functions operate exactly as the corresponding functions that do not start with an ‘e’ except that in case of an error, they call the installed error handler that can be configured with `esetfunc`().

For the string handling functions, it is an error when the destination buffer is not large enough to hold the complete string. For functions that allocate memory or open a file, it is an error when they would return a null pointer. The default error handler is err(3). The function `esetfunc`() returns the previous error handler function. A `NULL` error handler will just call exit(3).

# SEE ALSO

asprintf(3), calloc(3), err(3), exit(3), fopen(3), malloc(3), realloc(3), reallocarr(3), strdup(3), strlcat(3), strlcpy(3), strndup(3), strtoi(3), strtou(3), vasprintf(3)

# HISTORY

The `estrtoi`(), `estrtou`() and `ereallocarr`() functions were added in NetBSD 8.

July 26, 2015 | NetBSD 9.3