#include #include #include #include #define SAFE_IO(op,F,B,L) safe_io((int (*)())(op), F,B,L) /*EXTRACT_UNMOD*/ // #define SAFE_IO(op,F,B,L) op(F,B,L) /*EXTRACT_UNMOD*/ ssize_t safe_io(int (*op)(), int fd, void *x, size_t len) /*EXTRACT_INCL*/{ int k = len; while (k > 0) { int ret = op(fd, x, k); if (ret <= 0) { if (ret && errno == EINTR) continue; break; } x += ret; k -= ret; } return len - k; }