This is an adapted version of the original by Zoong Pham.
---- rsync.h 16 May 2004 07:28:24 -0000 1.204
-+++ rsync.h 18 Jun 2004 17:38:35 -0000
-@@ -159,6 +159,11 @@ enum msgcode {
- #include <sys/socket.h>
- #endif
-
-+#ifdef HAVE_SYS_UN_H
-+#define _SOCKADDR_LEN
-+#include <sys/un.h>
-+#endif
-+
- #ifdef HAVE_STRING_H
- #include <string.h>
- #endif
---- syscall.c 18 Feb 2004 22:33:21 -0000 1.30
-+++ syscall.c 18 Jun 2004 17:38:35 -0000
-@@ -76,6 +76,29 @@ int do_mknod(char *pathname, mode_t mode
- {
- if (dry_run) return 0;
- RETURN_ERROR_IF_RO_OR_LO;
-+# if HAVE_MKFIFO
-+ if (S_ISFIFO(mode))
-+ return mkfifo(pathname, mode);
-+# endif
-+# if HAVE_SYS_UN_H
-+ if (S_ISSOCK(mode)) {
-+ int sock;
-+ struct sockaddr_un saddr;
-+ int len = strlen(pathname) + 1; /* include null */
-+
-+ saddr.sun_family = AF_UNIX;
-+ strncpy(saddr.sun_path, pathname, sizeof saddr.sun_path);
-+ saddr.sun_len = len > sizeof saddr.sun_path ? sizeof saddr.sun_path: len;
-+
-+ if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0)
-+ return -1;
-+ unlink(pathname);
-+ if ((bind(sock, (struct sockaddr*)&saddr, sizeof saddr)) < 0)
-+ return -1;
-+ close(sock);
-+ return do_chmod(pathname, mode);
-+ }
-+# endif
- return mknod(pathname, mode, dev);
- }
- #endif
---- lib/getaddrinfo.c 16 Mar 2004 01:26:36 -0000 1.20
-+++ lib/getaddrinfo.c 18 Jun 2004 17:38:35 -0000
+--- orig/lib/getaddrinfo.c 2005-02-14 00:53:44
++++ lib/getaddrinfo.c 2004-06-18 17:38:35
@@ -41,6 +41,20 @@
#include <rsync.h>
#if defined(__KAME__) && defined(INET6)
# define FAITH
#endif
+--- orig/syscall.c 2005-04-07 17:04:26
++++ syscall.c 2005-02-14 02:54:45
+@@ -27,6 +27,7 @@
+ #include "rsync.h"
+
+ #if !defined MKNOD_CREATES_SOCKETS && defined HAVE_SYS_UN_H
++#define _SOCKADDR_LEN
+ #include <sys/un.h>
+ #endif
+