diff options
author | Wayne Davison <wayned@samba.org> | 2004-07-22 19:28:45 +0000 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2004-07-22 19:28:45 +0000 |
commit | 28deecca55ff109d6eff7fc09bac7843559b7d5c (patch) | |
tree | 1c04dc8be1c48cf76ec0f58832d2009b42a1b1ff /io.c | |
parent | 4db88e5b8f73731d52f853d78fe7dffbb14a2ec4 (diff) | |
download | android_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.c | 23 |
1 files changed, 13 insertions, 10 deletions
@@ -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) |