Fix crash when --backup-dir is excessively long.
[rsync/rsync.git] / rsync.h
diff --git a/rsync.h b/rsync.h
index 731f4fe..3404da7 100644 (file)
--- a/rsync.h
+++ b/rsync.h
@@ -465,6 +465,8 @@ typedef unsigned int mode_t;
 #endif
 #ifndef HAVE_OFF_T
 typedef long off_t;
+#undef SIZEOF_OFF_T
+#define SIZEOF_OFF_T SIZEOF_LONG
 #endif
 #ifndef HAVE_SIZE_T
 typedef unsigned int size_t;
@@ -692,10 +694,10 @@ extern int xattrs_ndx;
 #define F_LENGTH(f) ((int64)(f)->len32)
 #else
 #define F_LENGTH(f) ((int64)(f)->len32 + ((f)->flags & FLAG_LENGTH64 \
-                  ? (int64)OPT_EXTRA(f, 0)->unum << 32 : 0))
+                  ? (int64)OPT_EXTRA(f, NSEC_BUMP(f))->unum << 32 : 0))
 #endif
 
-#define F_MOD_NSEC(f) ((f)->flags & FLAG_MOD_NSEC ? OPT_EXTRA(f, LEN64_BUMP(f))->unum : 0)
+#define F_MOD_NSEC(f) ((f)->flags & FLAG_MOD_NSEC ? OPT_EXTRA(f, 0)->unum : 0)
 
 /* If there is a symlink string, it is always right after the basename */
 #define F_SYMLINK(f) ((f)->basename + strlen((f)->basename) + 1)
@@ -1117,6 +1119,10 @@ extern int errno;
 #define IS_SPECIAL(mode) (S_ISSOCK(mode) || S_ISFIFO(mode))
 #define IS_DEVICE(mode) (S_ISCHR(mode) || S_ISBLK(mode))
 
+#define PRESERVE_FILE_TIMES    (1<<0)
+#define PRESERVE_DIR_TIMES     (1<<1)
+#define PRESERVE_LINK_TIMES    (1<<2)
+
 /* Initial mask on permissions given to temporary files.  Mask off setuid
      bits and group access because of potential race-condition security
      holes, and mask other access because mode 707 is bizarre */