X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=listati%2FFullWrite.c;fp=listati%2FFullWrite.c;h=505a1b88353d03f78149c82b3cb4e1a0cf0fdbd4;hp=0000000000000000000000000000000000000000;hb=06661f47754a536098afe2b30cb04469918f2fa3;hpb=bdf6e88eeb9b3aef06d57930ec8b89083639e56d diff --git a/listati/FullWrite.c b/listati/FullWrite.c new file mode 100644 index 0000000..505a1b8 --- /dev/null +++ b/listati/FullWrite.c @@ -0,0 +1,21 @@ +#include + +ssize_t FullWrite(int fd, const void *buf, size_t count) +{ + size_t nleft; + ssize_t nwritten; + + nleft = count; + while (nleft > 0) { /* repeat until no left */ + if ( (nwritten = write(fd, buf, nleft)) < 0) { + if (errno == EINTR) { /* if interrupted by system call */ + continue; /* repeat the loop */ + } else { + return(nwritten); /* otherwise exit with error */ + } + } + nleft -= nwritten; /* set left to write */ + buf +=nwritten; /* set pointer */ + } + return (count); +}