Iniziato a scrivere la roba di stat
[gapil.git] / sources / SockRead.c
1 #include <unistd.h>
2 #include <errno.h>
3
4 ssize_t SockRead(int fd, void *buf, size_t count) 
5 {
6     size_t nleft;
7     ssize_t nread;
8  
9     nleft = count;
10     while (nleft > 0) {             /* repeat until no left */
11         if ( (nread = read(fd, buf, nleft)) < 0) {
12             if (errno == EINTR) {   /* if interrupted by system call */
13                 continue;           /* repeat the loop */
14             } else {
15                 return(nread);      /* otherwise exit */
16             }
17         } else if (nread == 0) {    /* EOF */
18             break;                  /* break loop here */ 
19         }
20         nleft -= nread;             /* set left to read */
21         buf +=nread;                /* set pointer */
22     }
23     return (count - nleft);
24 }
25