X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/1f75bb10660e4708c3b857bab6e220f46bb276b8..28deecca55ff109d6eff7fc09bac7843559b7d5c:/io.c diff --git a/io.c b/io.c index 909bc650..a094561b 100644 --- a/io.c +++ b/io.c @@ -55,6 +55,7 @@ extern struct stats stats; const char phase_unknown[] = "unknown"; int select_timeout = SELECT_TIMEOUT; int batch_fd = -1; +int batch_gen_fd = -1; /** * The connection might be dropped at some point; perhaps because the @@ -743,13 +744,14 @@ int64 read_longint(int f) if ((int32)ret != (int32)0xffffffff) return ret; -#ifdef NO_INT64 - rprintf(FERROR,"Integer overflow - attempted 64 bit offset\n"); - exit_cleanup(RERR_UNSUPPORTED); -#else +#ifdef INT64_IS_OFF_T + if (sizeof (int64) < 8) { + rprintf(FERROR, "Integer overflow: attempted 64-bit offset\n"); + exit_cleanup(RERR_UNSUPPORTED); + } +#endif readfd(f,b,8); ret = IVAL(b,0) | (((int64)IVAL(b,4))<<32); -#endif return ret; } @@ -761,14 +763,14 @@ void read_buf(int f,char *buf,size_t len) void read_sbuf(int f,char *buf,size_t len) { - read_buf(f,buf,len); + readfd(f, buf, len); buf[len] = 0; } unsigned char read_byte(int f) { unsigned char c; - read_buf(f, (char *)&c, 1); + readfd(f, (char *)&c, 1); return c; } @@ -1017,16 +1019,18 @@ void write_longint(int f, int64 x) return; } -#ifdef NO_INT64 - rprintf(FERROR,"Integer overflow - attempted 64 bit offset\n"); - exit_cleanup(RERR_UNSUPPORTED); -#else +#ifdef INT64_IS_OFF_T + if (sizeof (int64) < 8) { + rprintf(FERROR, "Integer overflow: attempted 64-bit offset\n"); + exit_cleanup(RERR_UNSUPPORTED); + } +#endif + write_int(f, (int32)0xFFFFFFFF); SIVAL(b,0,(x&0xFFFFFFFF)); SIVAL(b,4,((x>>32)&0xFFFFFFFF)); writefd(f,b,8); -#endif } void write_buf(int f,char *buf,size_t len) @@ -1035,15 +1039,14 @@ void write_buf(int f,char *buf,size_t len) } /** Write a string to the connection */ -static void write_sbuf(int f,char *buf) +void write_sbuf(int f, char *buf) { - write_buf(f, buf, strlen(buf)); + writefd(f, buf, strlen(buf)); } - void write_byte(int f,unsigned char c) { - write_buf(f,(char *)&c,1); + writefd(f, (char *)&c, 1); }