Fix alignment issue on 64-bit. Solution from Steve Ortiz.
[rsync-patches.git] / crtimes.diff
index 70570f3..5766c91 100644 (file)
@@ -360,7 +360,7 @@ diff --git a/rsync.h b/rsync.h
  #define ITEM_REPORT_CHANGE (1<<1)
  #define ITEM_REPORT_SIZE (1<<2)     /* regular files only */
  #define ITEM_REPORT_TIMEFAIL (1<<2) /* symlinks only */
-@@ -689,6 +691,7 @@ extern int file_extra_cnt;
+@@ -693,6 +695,7 @@ extern int file_extra_cnt;
  extern int inc_recurse;
  extern int uid_ndx;
  extern int gid_ndx;
@@ -368,7 +368,7 @@ diff --git a/rsync.h b/rsync.h
  extern int fileflags_ndx;
  extern int acls_ndx;
  extern int xattrs_ndx;
-@@ -696,6 +699,7 @@ extern int xattrs_ndx;
+@@ -700,6 +703,7 @@ extern int xattrs_ndx;
  #define FILE_STRUCT_LEN (offsetof(struct file_struct, basename))
  #define EXTRA_LEN (sizeof (union file_extras))
  #define PTR_EXTRA_CNT ((sizeof (char *) + EXTRA_LEN - 1) / EXTRA_LEN)
@@ -376,7 +376,7 @@ diff --git a/rsync.h b/rsync.h
  #define DEV_EXTRA_CNT 2
  #define DIRNODE_EXTRA_CNT 3
  #define SUM_EXTRA_CNT ((MAX_DIGEST_LEN + EXTRA_LEN - 1) / EXTRA_LEN)
-@@ -975,6 +979,7 @@ typedef struct {
+@@ -979,6 +983,7 @@ typedef struct {
  
  typedef struct {
      STRUCT_STAT st;
@@ -395,7 +395,7 @@ diff --git a/rsync.yo b/rsync.yo
       --super                 receiver attempts super-user activities
       --fake-super            store/recover privileged attrs using xattrs
   -S, --sparse                handle sparse files efficiently
-@@ -1106,6 +1107,9 @@ it is preserving modification times (see bf(--times)).  If NFS is sharing
+@@ -1110,6 +1111,9 @@ it is preserving modification times (see bf(--times)).  If NFS is sharing
  the directories on the receiving side, it is a good idea to use bf(-O).
  This option is inferred if you use bf(--backup) without bf(--backup-dir).
  
@@ -405,7 +405,7 @@ diff --git a/rsync.yo b/rsync.yo
  dit(bf(--super)) This tells the receiving side to attempt super-user
  activities even if the receiving rsync wasn't run by the super-user.  These
  activities include: preserving users via the bf(--owner) option, preserving
-@@ -1918,7 +1922,7 @@ with older versions of rsync, but that also turns on the output of other
+@@ -1922,7 +1926,7 @@ with older versions of rsync, but that also turns on the output of other
  verbose messages).
  
  The "%i" escape has a cryptic output that is 11 letters long.  The general
@@ -414,7 +414,7 @@ diff --git a/rsync.yo b/rsync.yo
  type of update being done, bf(X) is replaced by the file-type, and the
  other letters represent attributes that may be output if they are being
  modified.
-@@ -1977,6 +1981,8 @@ quote(itemization(
+@@ -1981,6 +1985,8 @@ quote(itemization(
    it() The bf(f) means that the fileflags information changed.
    it() The bf(a) means that the ACL information changed.
    it() The bf(x) means that the extended attribute information changed.
@@ -426,19 +426,22 @@ diff --git a/rsync.yo b/rsync.yo
 diff --git a/syscall.c b/syscall.c
 --- a/syscall.c
 +++ b/syscall.c
-@@ -38,6 +38,11 @@ extern int force_change;
+@@ -38,6 +38,14 @@ extern int force_change;
  extern int preserve_perms;
  extern int preserve_executability;
  
++#pragma pack(push)
++#pragma pack(4)
 +struct create_time {
 +      uint32 length;
 +      struct timespec crtime;
 +};
++#pragma pack(pop)
 +
  #define RETURN_ERROR_IF(x,e) \
        do { \
                if (x) { \
-@@ -437,3 +442,33 @@ OFF_T do_lseek(int fd, OFF_T offset, int whence)
+@@ -439,3 +447,33 @@ OFF_T do_lseek(int fd, OFF_T offset, int whence)
        return lseek(fd, offset, whence);
  #endif
  }