diff options
Diffstat (limited to 'riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/const_io.c')
| -rw-r--r-- | riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/const_io.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/const_io.c b/riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/const_io.c new file mode 100644 index 0000000..6e456f7 --- /dev/null +++ b/riemann.fmi.uni-sofia.bg/ngetty/ngetty-1.1/const_io.c @@ -0,0 +1,16 @@ +#include <unistd.h> +#include <errno.h> + +int const_io(int (*op)(), int fd, void *buf, int len) /*EXTRACT_INCL*/{ + char *x = buf; + while (len > 0) { + int ret = op(fd, x, len); + if (ret <= 0) { + if (ret && errno == EINTR) continue; + break; + } + x += ret; + len -= ret; + } + return len; +} |
