diff options
Diffstat (limited to 'ev.c')
-rw-r--r-- | ev.c | 23 |
1 files changed, 16 insertions, 7 deletions
@@ -186,6 +186,7 @@ extern "C" { # ifndef EV_SELECT_IS_WINSOCKET # define EV_SELECT_IS_WINSOCKET 1 # endif +# undef EV_AVOID_STDIO #endif /* this block tries to deduce configuration from header-defined symbols and defaults */ @@ -526,6 +527,14 @@ static EV_ATOMIC_T have_monotonic; /* did clock_gettime (CLOCK_MONOTONIC) work? /*****************************************************************************/ +#if EV_AVOID_STDIO +static void noinline +ev_printerr (const char *msg) +{ + write (STDERR_FILENO, msg, strlen (msg)); +} +#endif + static void (*syserr_cb)(const char *msg); void @@ -545,11 +554,12 @@ ev_syserr (const char *msg) else { #if EV_AVOID_STDIO - write (STDERR_FILENO, msg, strlen (msg)); - write (STDERR_FILENO, ": ", 2); - msg = strerror (errno); - write (STDERR_FILENO, msg, strlen (msg)); - write (STDERR_FILENO, "\n", 1); + const char *err = strerror (errno); + + ev_printerr (msg); + ev_printerr (": "); + ev_printerr (err); + ev_printerr ("\n"); #else perror (msg); #endif @@ -588,8 +598,7 @@ ev_realloc (void *ptr, long size) if (!ptr && size) { #if EV_AVOID_STDIO - write (STDERR_FILENO, "libev: memory allocation failed, aborting.", - sizeof ("libev: memory allocation failed, aborting.") - 1); + ev_printerr ("libev: memory allocation failed, aborting.\n"); #else fprintf (stderr, "libev: cannot allocate %ld bytes, aborting.", size); #endif |