Fwd: rsync on z/OS

Mike Fulton mikefultonpersonal at gmail.com
Thu Sep 8 04:07:45 UTC 2022


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>


More information about the rsync mailing list