Changed NO_INT64 to INT64_IS_OFF_T because off_t might actually be
authorWayne Davison <wayned@samba.org>
Thu, 22 Jul 2004 19:28:45 +0000 (19:28 +0000)
committerWayne Davison <wayned@samba.org>
Thu, 22 Jul 2004 19:28:45 +0000 (19:28 +0000)
64 bits.  The code now only complains if int64 is really too short.

io.c
options.c
rsync.h

diff --git a/io.c b/io.c
index 4cf33028d1ba78cf21b0abf66250a43c884d2aaa..a094561b66fd99f465c6d01675d8e2b072976d7d 100644 (file)
--- 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)
index 5aae00d9f880925e3480091084e890a5d1f099ab..2c3515fbee517ac2fdb66aec30e58af7c9cd5027 100644 (file)
--- 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 b53084234e206765b2ea65af5ff47495d39d8aca..d5485079f2e1c7b79cde35264d224d86c91ba3d5 100644 (file)
--- 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)