[BACK]Return to buf.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / cvs

Diff for /src/usr.bin/cvs/buf.c between version 1.64 and 1.65

version 1.64, 2007/08/29 21:15:06 version 1.65, 2007/09/17 10:07:21
Line 31 
Line 31 
 #include <string.h>  #include <string.h>
 #include <unistd.h>  #include <unistd.h>
   
   #include "atomicio.h"
 #include "cvs.h"  #include "cvs.h"
 #include "buf.h"  #include "buf.h"
   
Line 93 
Line 94 
 BUF *  BUF *
 cvs_buf_load_fd(int fd, u_int flags)  cvs_buf_load_fd(int fd, u_int flags)
 {  {
         ssize_t ret;  
         size_t len;  
         u_char *bp;  
         struct stat st;          struct stat st;
         BUF *buf;          BUF *buf;
   
Line 106 
Line 104 
                 fatal("cvs_buf_load_fd: lseek: %s", strerror(errno));                  fatal("cvs_buf_load_fd: lseek: %s", strerror(errno));
   
         buf = cvs_buf_alloc(st.st_size, flags);          buf = cvs_buf_alloc(st.st_size, flags);
         for (bp = buf->cb_buf; ; bp += (size_t)ret) {          if (atomicio(read, fd, buf->cb_buf, buf->cb_size) != buf->cb_size)
                 len = SIZE_LEFT(buf);                  fatal("cvs_buf_load_fd: read: %s", strerror(errno));
                 ret = read(fd, bp, len);          buf->cb_len = buf->cb_size;
                 if (ret == -1)  
                         fatal("cvs_buf_load_fd: read: %s", strerror(errno));  
                 else if (ret == 0)  
                         break;  
   
                 buf->cb_len += (size_t)ret;  
         }  
   
         return (buf);          return (buf);
 }  }
   
Line 275 
Line 266 
 int  int
 cvs_buf_write_fd(BUF *b, int fd)  cvs_buf_write_fd(BUF *b, int fd)
 {  {
         u_char *bp;          if (atomicio(vwrite, fd, b->cb_buf, b->cb_len) != b->cb_len)
         size_t len;                  return (-1);
         ssize_t ret;  
   
         len = b->cb_len;  
         bp = b->cb_buf;  
   
         do {  
                 ret = write(fd, bp, len);  
                 if (ret == -1) {  
                         if (errno == EINTR || errno == EAGAIN)  
                                 continue;  
                         return (-1);  
                 }  
   
                 len -= (size_t)ret;  
                 bp += (size_t)ret;  
         } while (len > 0);  
   
         return (0);          return (0);
 }  }
   

Legend:
Removed from v.1.64  
changed lines
  Added in v.1.65