Patch supposed to fix Tru64.
[rsync/rsync-patches.git] / tru64.diff
CommitLineData
fbc35144
MP
1Hi Eckert,
2
3On Thu, Mar 21, 2002 at 03:15:39PM -0500, Eckert, Robert D wrote:
4> Greetings, here is the output of the 'configure' step and
5> the compile step (using the Compaq cc compiler that comes
6> with Tru64 V5.1A. The configure reported success and most of
7> the compile steps cam through error/warning free except for
8> the one that stumbled. Can someone help me out here? I am willing
9> to provide a binary for Tru64 V5.1A if we can swat this bug.
10
11I had the same problem. I managed to have rsync compiled OK on my
12Tru64 5.1 box with helps from couple of people from this list.
13Try with the patch I attach here.
14I am not a C programmer so you'd better check to make sure it is
15correct.
16
17> We depend greatly on Rsync to keep a fresh backup of our
18> 70gb storage system that is the backend of http://www.indiana.edu/,
19> Indiana University's main web site to the Internet.
20
21I plan to do the same here instead of Tru64 vdump and vrestore
22once I am sure backups by rsync is as reliable as vdump/vrestore.
23Do you use rsync for root, usr partitions and and database files?
24Have you had any problem with rsync so far?
25
26Cheers,
27--
28Zoong Pham zpham@mercy.com.au
29UNIX Systems Administrator Mercy Health and Aged Care Inc.
30
31To get my PGP public key, email me with the subject:
32Request for Zoong Pham's PGP public key
33
34
35
36
37diff -u -r rsync-2.5.4/batch.c rsync-2.5.4.new/batch.c
38--- rsync-2.5.4/batch.c Thu Feb 7 08:20:48 2002
39+++ rsync-2.5.4.new/batch.c Fri Mar 22 09:24:01 2002
40@@ -405,7 +405,15 @@
41
42 /* FIXME: This will break if s->count is ever not exactly an int. */
43 write_batch_csums_file(flist_entry, sizeof(int));
44+ if (s) {
45+ write_batch_csums_file(&s->count, sizeof(int));
46+ }
47+ else if (!s) {
48+ write_batch_csums_file(&int_zero, sizeof(int));
49+ }
50+ /*
51 write_batch_csums_file(s ? &s->count : &int_zero, sizeof(int));
52+ */
53
54 if (s) {
55 for (i = 0; i < s->count; i++) {
56diff -u -r rsync-2.5.4/config.h.in rsync-2.5.4.new/config.h.in
57--- rsync-2.5.4/config.h.in Thu Feb 28 10:15:55 2002
58+++ rsync-2.5.4.new/config.h.in Fri Mar 22 09:24:01 2002
59@@ -140,6 +140,9 @@
60 /* Define if you have the `mknod' function. */
61 #undef HAVE_MKNOD
62
63+/* Define if you have the `mkfifo' function. */
64+#undef HAVE_MKFIFO
65+
66 /* Define if you have the `mtrace' function. */
67 #undef HAVE_MTRACE
68
69@@ -244,6 +247,9 @@
70
71 /* Define if you have the <sys/socket.h> header file. */
72 #undef HAVE_SYS_SOCKET_H
73+
74+/* Define if you have the <sys/un.h> header file. */
75+#undef HAVE_SYS_UN_H
76
77 /* Define if you have the <sys/stat.h> header file. */
78 #undef HAVE_SYS_STAT_H
79diff -u -r rsync-2.5.4/configure rsync-2.5.4.new/configure
80--- rsync-2.5.4/configure Wed Mar 13 11:03:50 2002
81+++ rsync-2.5.4.new/configure Fri Mar 22 09:24:01 2002
82@@ -3414,7 +3414,7 @@
83 fi
84 done
85
86-for ac_header in sys/filio.h string.h stdlib.h sys/socket.h sys/mode.h
87+for ac_header in sys/filio.h string.h stdlib.h sys/socket.h sys/mode.h sys/un.h
88 do
89 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
90 echo "$as_me:3420: checking for $ac_header" >&5
91@@ -6165,7 +6165,7 @@
92 fi
93 rm -f conftest.data
94
95-for ac_func in waitpid wait4 getcwd strdup strerror chown chmod mknod
96+for ac_func in waitpid wait4 getcwd strdup strerror chown chmod mknod mkfifo
97 do
98 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
99 echo "$as_me:6171: checking for $ac_func" >&5
100diff -u -r rsync-2.5.4/configure.in rsync-2.5.4.new/configure.in
101--- rsync-2.5.4/configure.in Wed Mar 13 11:03:34 2002
102+++ rsync-2.5.4.new/configure.in Fri Mar 22 09:24:01 2002
103@@ -242,7 +242,7 @@
104 AC_HEADER_SYS_WAIT
105 AC_CHECK_HEADERS(sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h unistd.h utime.h grp.h)
106 AC_CHECK_HEADERS(compat.h sys/param.h ctype.h sys/wait.h sys/ioctl.h)
107-AC_CHECK_HEADERS(sys/filio.h string.h stdlib.h sys/socket.h sys/mode.h)
108+AC_CHECK_HEADERS(sys/filio.h string.h stdlib.h sys/socket.h sys/mode.h sys/un.h)
109 AC_CHECK_HEADERS(glob.h alloca.h mcheck.h sys/sysctl.h arpa/inet.h arpa/nameser.h)
110 AC_CHECK_HEADERS(netdb.h)
111 AC_CHECK_HEADERS(malloc.h)
112@@ -315,7 +315,19 @@
113 AC_CHECK_FUNCS(inet_ntop, , AC_LIBOBJ(lib/inet_ntop))
114 AC_CHECK_FUNCS(inet_pton, , AC_LIBOBJ(lib/inet_pton))
115
116-AC_CHECK_FUNCS(getaddrinfo, , AC_LIBOBJ(lib/getaddrinfo))
117+# Tru64 UNIX has getaddrinfo() but has it renamed in libc as
118+# something else so we must include <netdb.h> to get the
119+# redefinition.
120+AC_MSG_CHECKING([for getaddrinfo])
121+AC_TRY_LINK([#include <sys/types.h>
122+#include <sys/socket.h>
123+#include <netdb.h>],[getaddrinfo(NULL, NULL, NULL, NULL);],
124+ [AC_MSG_RESULT([yes])
125+ AC_DEFINE(HAVE_GETADDRINFO, 1,
126+ [Define if you have the `getaddrinfo' function.])],
127+ [AC_MSG_RESULT([no])
128+ AC_LIBOBJ(lib/getaddrinfo)])
129+
130 AC_CHECK_FUNCS(getnameinfo, , AC_LIBOBJ(lib/getnameinfo))
131
132 AC_CHECK_MEMBER([struct sockaddr.sa_len],
133@@ -348,7 +360,7 @@
134 dnl AC_FUNC_MEMCMP
135
136 AC_FUNC_UTIME_NULL
137-AC_CHECK_FUNCS(waitpid wait4 getcwd strdup strerror chown chmod mknod)
138+AC_CHECK_FUNCS(waitpid wait4 getcwd strdup strerror chown chmod mknod mkfifo)
139 AC_CHECK_FUNCS(fchmod fstat strchr readlink link utime utimes strftime)
140 AC_CHECK_FUNCS(memmove lchown vsnprintf snprintf asprintf setsid glob strpbrk)
141 AC_CHECK_FUNCS(strlcat strlcpy mtrace mallinfo setgroups)
142diff -u -r rsync-2.5.4/lib/getaddrinfo.c rsync-2.5.4.new/lib/getaddrinfo.c
143--- rsync-2.5.4/lib/getaddrinfo.c Fri Dec 14 16:33:12 2001
144+++ rsync-2.5.4.new/lib/getaddrinfo.c Fri Mar 22 09:24:10 2002
145@@ -41,6 +41,20 @@
146
147 #include <rsync.h>
148
149+/****** Start Zoong added here */
150+
151+#define EAI_BADHINTS 12
152+#define EAI_PROTOCOL 13
153+#define EAI_MAX 14
154+
155+#define AI_PASSIVE 0x00000001 /* get address to use bind() */
156+#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
157+#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */
158+#define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
159+
160+/****** End Zoong added here */
161+
162+
163 #if defined(__KAME__) && defined(INET6)
164 # define FAITH
165 #endif
166diff -u -r rsync-2.5.4/rsync.h rsync-2.5.4.new/rsync.h
167--- rsync-2.5.4/rsync.h Sat Feb 23 11:17:50 2002
168+++ rsync-2.5.4.new/rsync.h Fri Mar 22 09:24:01 2002
169@@ -109,6 +109,11 @@
170 #include <sys/socket.h>
171 #endif
172
173+#ifdef HAVE_SYS_UN_H
174+#define _SOCKADDR_LEN
175+#include <sys/un.h>
176+#endif
177+
178 #ifdef HAVE_STRING_H
179 #include <string.h>
180 #endif
181diff -u -r rsync-2.5.4/syscall.c rsync-2.5.4.new/syscall.c
182--- rsync-2.5.4/syscall.c Tue Feb 19 09:44:23 2002
183+++ rsync-2.5.4.new/syscall.c Fri Mar 22 09:24:01 2002
184@@ -67,6 +67,36 @@
185 {
186 if (dry_run) return 0;
187 CHECK_RO
188+
189+#if HAVE_MKFIFO
190+ if (S_ISFIFO(mode)) {
191+ return mkfifo(pathname, mode);
192+ }
193+#endif
194+
195+#if HAVE_SYS_UN_H
196+ if (S_ISSOCK(mode)) {
197+ int sock;
198+ struct sockaddr_un saddr;
199+ int len = strlen(pathname) + 1; /* include null */
200+
201+ saddr.sun_family = AF_UNIX;
202+ strncpy(saddr.sun_path, pathname, sizeof(saddr.sun_path));
203+ saddr.sun_len = len > sizeof(saddr.sun_path) ? sizeof(saddr.sun_path): len;
204+
205+ if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) {
206+ return -1;
207+ }
208+ unlink(pathname);
209+ if ((bind(sock, (struct sockaddr*)&saddr, sizeof(saddr))) < 0) {
210+ return -1;
211+ }
212+ close(sock);
213+ return do_chmod(pathname, mode);
214+ }
215+#endif
216+
217+
218 return mknod(pathname, mode, dev);
219 }
220 #endif