--- libev/ev.c 2010/03/09 08:46:17 1.330 +++ libev/ev.c 2010/03/09 08:55:03 1.331 @@ -186,6 +186,7 @@ # 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 @@ /*****************************************************************************/ +#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 @@ 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 @@ 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