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.
This commit is contained in:
Wayne Davison
2004-07-22 19:28:45 +00:00
parent 4db88e5b8f
commit 28deecca55
3 changed files with 17 additions and 13 deletions

19
io.c
View File

@@ -744,13 +744,14 @@ int64 read_longint(int f)
if ((int32)ret != (int32)0xffffffff) if ((int32)ret != (int32)0xffffffff)
return ret; return ret;
#ifdef NO_INT64 #ifdef INT64_IS_OFF_T
rprintf(FERROR,"Integer overflow - attempted 64 bit offset\n"); if (sizeof (int64) < 8) {
rprintf(FERROR, "Integer overflow: attempted 64-bit offset\n");
exit_cleanup(RERR_UNSUPPORTED); exit_cleanup(RERR_UNSUPPORTED);
#else }
#endif
readfd(f,b,8); readfd(f,b,8);
ret = IVAL(b,0) | (((int64)IVAL(b,4))<<32); ret = IVAL(b,0) | (((int64)IVAL(b,4))<<32);
#endif
return ret; return ret;
} }
@@ -1018,16 +1019,18 @@ void write_longint(int f, int64 x)
return; return;
} }
#ifdef NO_INT64 #ifdef INT64_IS_OFF_T
rprintf(FERROR,"Integer overflow - attempted 64 bit offset\n"); if (sizeof (int64) < 8) {
rprintf(FERROR, "Integer overflow: attempted 64-bit offset\n");
exit_cleanup(RERR_UNSUPPORTED); exit_cleanup(RERR_UNSUPPORTED);
#else }
#endif
write_int(f, (int32)0xFFFFFFFF); write_int(f, (int32)0xFFFFFFFF);
SIVAL(b,0,(x&0xFFFFFFFF)); SIVAL(b,0,(x&0xFFFFFFFF));
SIVAL(b,4,((x>>32)&0xFFFFFFFF)); SIVAL(b,4,((x>>32)&0xFFFFFFFF));
writefd(f,b,8); writefd(f,b,8);
#endif
} }
void write_buf(int f,char *buf,size_t len) void write_buf(int f,char *buf,size_t len)

View File

@@ -197,7 +197,8 @@ static void print_rsync_version(enum logcode f)
get_panic_action()); get_panic_action());
#endif #endif
#ifdef NO_INT64 #ifdef INT64_IS_OFF_T
if (sizeof (int64) < 8)
rprintf(f, "WARNING: no 64-bit integers on this platform!\n"); rprintf(f, "WARNING: no 64-bit integers on this platform!\n");
#endif #endif

View File

@@ -312,7 +312,7 @@ enum msgcode {
#else #else
/* As long as it gets... */ /* As long as it gets... */
#define int64 off_t #define int64 off_t
#define NO_INT64 #define INT64_IS_OFF_T
#endif #endif
#if (SIZEOF_LONG == 8) #if (SIZEOF_LONG == 8)