#define wrap_call(dtype, x) \ do { \ dtype result; \ do { \ result = x; \ } while ((result == -1) && (errno == EINTR)); \ return result; \ } while (0) int accept_noeintr(int socket, struct sockaddr *restrict address,socklen_t *restrict address_len) { wrap_call(int, accept(socket, address, address_len)); }