aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2004-07-22 19:28:45 +0000
committerWayne Davison <wayned@samba.org>2004-07-22 19:28:45 +0000
commit28deecca55ff109d6eff7fc09bac7843559b7d5c (patch)
tree1c04dc8be1c48cf76ec0f58832d2009b42a1b1ff /io.c
parent4db88e5b8f73731d52f853d78fe7dffbb14a2ec4 (diff)
downloadandroid_external_rsync-28deecca55ff109d6eff7fc09bac7843559b7d5c.tar.gz
android_external_rsync-28deecca55ff109d6eff7fc09bac7843559b7d5c.tar.bz2
android_external_rsync-28deecca55ff109d6eff7fc09bac7843559b7d5c.zip
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.
Diffstat (limited to 'io.c')
-rw-r--r--io.c23
1 files changed, 13 insertions, 10 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)