From 28deecca55ff109d6eff7fc09bac7843559b7d5c Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Thu, 22 Jul 2004 19:28:45 +0000 Subject: [PATCH] Changed NO_INT64 to INT64_IS_OFF_T because off_t might actually be 64 bits. The code now only complains if int64 is really too short. --- io.c | 23 +++++++++++++---------- options.c | 5 +++-- rsync.h | 2 +- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/io.c b/io.c index 4cf33028..a094561b 100644 --- a/io.c +++ b/io.c @@ -744,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; } @@ -1018,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) diff --git a/options.c b/options.c index 5aae00d9..2c3515fb 100644 --- a/options.c +++ b/options.c @@ -197,8 +197,9 @@ static void print_rsync_version(enum logcode f) get_panic_action()); #endif -#ifdef NO_INT64 - rprintf(f, "WARNING: no 64-bit integers on this platform!\n"); +#ifdef INT64_IS_OFF_T + if (sizeof (int64) < 8) + rprintf(f, "WARNING: no 64-bit integers on this platform!\n"); #endif rprintf(f, diff --git a/rsync.h b/rsync.h index b5308423..d5485079 100644 --- a/rsync.h +++ b/rsync.h @@ -312,7 +312,7 @@ enum msgcode { #else /* As long as it gets... */ #define int64 off_t -#define NO_INT64 +#define INT64_IS_OFF_T #endif #if (SIZEOF_LONG == 8) -- 2.34.1