Hi, I am trying to enable rsync on the z/OS operating system. One problem is that in rsync.h, the 'mode' field of 'struct file_struct' is uint16, but on z/OS, mode_t is 32 bits, not 16, and so information gets lost. A bigger problem is that the bits behind the definition of S_ISREG on z/OS: #define S_ISREG(m) ( ( (m) & S_IFMT)==S_IFREG ) reference S_IFMT. Those bits are not defined in the same way as on Linux. z/OS has: #define S_IFMT 0xFF000000 whereas I believe Linux systems use: #define S_IFMT 0170000 (note Linux is Octal and z/OS is Hexadecimal) The other 'type' macros have similar issues where the top half-word is used on z/OS whereas different bits are used on Linux. I am not sure, but I _think_ that the full mode with type information is expected to be sent from sender to receiver and, I'm expecting that if it is different, the code will not work. Is this correct, or will rsync 'map' OS specific mode bits to a common 'mode' over the network? Any suggestions on the best way to 'fix' this? Do other platforms have this type of issue? Thanks, Mike Fulton -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.samba.org/pipermail/rsync/attachments/20220907/c516b7f3/attachment.htm>