version 1.33, 2019/06/28 13:35:00 |
version 1.34, 2021/11/28 19:28:42 |
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
*/ |
*/ |
|
|
#include <sys/param.h> /* MAXBSIZE */ |
#include <sys/types.h> |
#include <sys/stat.h> |
#include <sys/stat.h> |
|
|
#include <errno.h> |
#include <errno.h> |
|
|
#include "remote.h" |
#include "remote.h" |
|
|
#define MINIMUM(a, b) (((a) < (b)) ? (a) : (b)) |
#define MINIMUM(a, b) (((a) < (b)) ? (a) : (b)) |
|
#define _MAXBSIZE (64 * 1024) |
|
|
struct cvs_resp * |
struct cvs_resp * |
cvs_remote_get_response_info(const char *response) |
cvs_remote_get_response_info(const char *response) |
|
|
cvs_remote_receive_file(int fd, size_t len) |
cvs_remote_receive_file(int fd, size_t len) |
{ |
{ |
FILE *in; |
FILE *in; |
char data[MAXBSIZE]; |
char data[_MAXBSIZE]; |
size_t nread, nleft, toread; |
size_t nread, nleft, toread; |
|
|
if (cvs_server_active) |
if (cvs_server_active) |
|
|
nleft = len; |
nleft = len; |
|
|
while (nleft > 0) { |
while (nleft > 0) { |
toread = MINIMUM(nleft, MAXBSIZE); |
toread = MINIMUM(nleft, sizeof data); |
|
|
nread = fread(data, sizeof(char), toread, in); |
nread = fread(data, sizeof(char), toread, in); |
if (nread == 0) |
if (nread == 0) |
|
|
size_t ret, rw; |
size_t ret, rw; |
off_t total; |
off_t total; |
struct stat st; |
struct stat st; |
char buf[18], data[MAXBSIZE]; |
char buf[18], 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; |
while ((ret = fread(data, sizeof(char), MAXBSIZE, in)) != 0) { |
while ((ret = fread(data, sizeof(char), sizeof data, in)) != 0) { |
rw = fwrite(data, sizeof(char), ret, out); |
rw = fwrite(data, sizeof(char), ret, out); |
if (rw != ret) |
if (rw != ret) |
fatal("failed to write %zu bytes", ret); |
fatal("failed to write %zu bytes", ret); |