version 1.9, 2007/01/25 06:44:11 |
version 1.10, 2007/01/25 18:56:33 |
|
|
cvs_remote_receive_file(int fd, size_t len) |
cvs_remote_receive_file(int fd, size_t len) |
{ |
{ |
FILE *in; |
FILE *in; |
char *data; |
char data[MAXBSIZE]; |
size_t nread, nwrite, nleft, toread; |
size_t nread, nwrite, nleft, toread; |
|
|
if (cvs_server_active) |
if (cvs_server_active) |
|
|
else |
else |
in = current_cvsroot->cr_srvout; |
in = current_cvsroot->cr_srvout; |
|
|
data = xmalloc(MAXBSIZE); |
|
nleft = len; |
nleft = len; |
|
|
while (nleft > 0) { |
while (nleft > 0) { |
|
|
|
|
nleft -= nread; |
nleft -= nread; |
} |
} |
|
|
xfree(data); |
|
} |
} |
|
|
void |
void |
|
|
size_t ret, rw; |
size_t ret, rw; |
off_t total; |
off_t total; |
struct stat st; |
struct stat st; |
char buf[16], *data; |
char buf[16], data[MAXBSIZE]; |
|
|
if (cvs_server_active) |
if (cvs_server_active) |
out = stdout; |
out = stdout; |
|
|
fatal("cvs_remote_send_file: fdopen %s", strerror(errno)); |
fatal("cvs_remote_send_file: fdopen %s", strerror(errno)); |
|
|
total = 0; |
total = 0; |
data = xmalloc(MAXBSIZE); |
|
while ((ret = fread(data, sizeof(char), MAXBSIZE, in)) != 0) { |
while ((ret = fread(data, sizeof(char), MAXBSIZE, in)) != 0) { |
rw = fwrite(data, sizeof(char), ret, out); |
rw = fwrite(data, sizeof(char), ret, out); |
if (rw != ret) |
if (rw != ret) |
|
|
|
|
total += ret; |
total += ret; |
} |
} |
|
|
xfree(data); |
|
|
|
if (total != st.st_size) |
if (total != st.st_size) |
fatal("length mismatch, %lld vs %lld", total, st.st_size); |
fatal("length mismatch, %lld vs %lld", total, st.st_size); |