=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/remote.c,v retrieving revision 1.16 retrieving revision 1.17 diff -c -r1.16 -r1.17 *** src/usr.bin/cvs/remote.c 2007/09/02 11:11:12 1.16 --- src/usr.bin/cvs/remote.c 2007/09/17 10:07:21 1.17 *************** *** 1,4 **** ! /* $OpenBSD: remote.c,v 1.16 2007/09/02 11:11:12 tobias Exp $ */ /* * Copyright (c) 2006 Joris Vink * --- 1,4 ---- ! /* $OpenBSD: remote.c,v 1.17 2007/09/17 10:07:21 tobias Exp $ */ /* * Copyright (c) 2006 Joris Vink * *************** *** 23,28 **** --- 23,29 ---- #include #include + #include "atomicio.h" #include "cvs.h" #include "remote.h" *************** *** 56,61 **** --- 57,63 ---- cvs_remote_output(const char *data) { FILE *out; + size_t len; char nl = '\n'; if (cvs_server_active) *************** *** 67,74 **** fputs("\n", out); if (cvs_server_active == 0 && cvs_client_inlog_fd != -1) { ! (void)write(cvs_client_inlog_fd, data, strlen(data)); ! (void)write(cvs_client_inlog_fd, &nl, 1); } } --- 69,78 ---- fputs("\n", out); if (cvs_server_active == 0 && cvs_client_inlog_fd != -1) { ! len = strlen(data); ! if (atomicio(vwrite, cvs_client_inlog_fd, data, len) != len || ! atomicio(vwrite, cvs_client_inlog_fd, &nl, 1) != 1) ! fatal("failed to write to log file"); } } *************** *** 108,115 **** } if (cvs_server_active == 0 && cvs_client_outlog_fd != -1) { ! (void)write(cvs_client_outlog_fd, data, strlen(data)); ! (void)write(cvs_client_outlog_fd, &nl, 1); } return (ldata); --- 112,121 ---- } if (cvs_server_active == 0 && cvs_client_outlog_fd != -1) { ! len = strlen(data); ! if (atomicio(vwrite, cvs_client_outlog_fd, data, len) != len || ! atomicio(vwrite, cvs_client_outlog_fd, &nl, 1) != 1) ! fatal("failed to write to log file"); } return (ldata); *************** *** 120,126 **** { FILE *in; char data[MAXBSIZE]; ! size_t nread, nwrite, nleft, toread; if (cvs_server_active) in = stdin; --- 126,132 ---- { FILE *in; char data[MAXBSIZE]; ! size_t nread, nleft, toread; if (cvs_server_active) in = stdin; *************** *** 136,148 **** if (nread == 0) fatal("error receiving file"); ! nwrite = write(fd, data, nread); ! if (nwrite != nread) fatal("failed to write %zu bytes", nread); ! if (cvs_server_active == 0 && ! cvs_client_outlog_fd != -1) ! (void)write(cvs_client_outlog_fd, data, nread); nleft -= nread; } --- 142,154 ---- if (nread == 0) fatal("error receiving file"); ! if (atomicio(vwrite, fd, data, nread) != nread) fatal("failed to write %zu bytes", nread); ! if (cvs_server_active == 0 && cvs_client_outlog_fd != -1 && ! atomicio(vwrite, cvs_client_outlog_fd, data, nread) ! != nread) ! fatal("failed to write to log file"); nleft -= nread; } *************** *** 184,191 **** if (rw != ret) fatal("failed to write %zu bytes", ret); ! if (cvs_server_active == 0 && cvs_client_inlog_fd != -1) ! (void)write(cvs_client_inlog_fd, data, ret); total += ret; } --- 190,198 ---- if (rw != ret) fatal("failed to write %zu bytes", ret); ! if (cvs_server_active == 0 && cvs_client_inlog_fd != -1 && ! atomicio(vwrite, cvs_client_inlog_fd, data, ret) != ret) ! fatal("failed to write to log file"); total += ret; }