X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=sources%2FSockWrite.c;fp=sources%2FSockWrite.c;h=ddeb4c761f3710f07ed7c32c4b663fb6be052206;hb=59ee032c64ce1caa37bfc311f63219a52efe21d4;hp=0000000000000000000000000000000000000000;hpb=5854d47465c992d90b2dd0ebc18417f9a9bef377;p=gapil.git diff --git a/sources/SockWrite.c b/sources/SockWrite.c new file mode 100644 index 0000000..ddeb4c7 --- /dev/null +++ b/sources/SockWrite.c @@ -0,0 +1,22 @@ +#include + +ssize_t SockWrite(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); +} +