X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;ds=sidebyside;f=fd.c;h=902e8f1898d29c7ace5a481c4f731ce7134f4433;hb=4884395952589ec5310ad6220928d4bd25ab10cb;hp=9fe88679d2d88855a27a3486d4646bd1632c965f;hpb=cd5cfb4c2dbbf5615c78d1e439f0cbfb08437b43;p=adu.git diff --git a/fd.c b/fd.c index 9fe8867..902e8f1 100644 --- a/fd.c +++ b/fd.c @@ -24,19 +24,20 @@ * \param size The length of \a buf in bytes. * * This function writes out the given buffer and retries if an interrupt - * occurred during the write. + * occurred during the write. The file descriptor is assumed to be in blocking + * mode (i.e., EAGAIN is treated as an error). * * \return Standard. * * \sa write(2). */ -ssize_t __write(int fd, const void *buf, size_t size) +static ssize_t __write(int fd, const void *buf, size_t size) { ssize_t ret; for (;;) { ret = write(fd, buf, size); - if ((ret < 0) && (errno == EAGAIN || errno == EINTR)) + if (ret < 0 && errno == EINTR) continue; return ret >= 0? ret : -ERRNO_TO_ERROR(errno); }