Commit | Line | Data |
---|---|---|
27622b93 WD |
1 | --- orig/Makefile.in 2004-08-13 07:18:58 |
2 | +++ Makefile.in 2004-09-23 06:22:00 | |
3 | @@ -41,7 +41,7 @@ popt_OBJS=popt/findme.o popt/popt.o po | |
4 | popt/popthelp.o popt/poptparse.o | |
5 | OBJS=$(OBJS1) $(OBJS2) $(OBJS3) $(DAEMON_OBJ) $(LIBOBJ) $(ZLIBOBJ) @BUILD_POPT@ | |
6 | ||
7 | -TLS_OBJ = tls.o syscall.o lib/permstring.o | |
8 | +TLS_OBJ = tls.o syscall.o lib/compat.o lib/permstring.o | |
9 | ||
10 | # Programs we must have to run the test cases | |
11 | CHECK_PROGS = rsync$(EXEEXT) tls$(EXEEXT) getgroups$(EXEEXT) getfsdev$(EXEEXT) \ | |
12 | @@ -83,7 +83,7 @@ getgroups$(EXEEXT): getgroups.o | |
13 | getfsdev$(EXEEXT): getfsdev.o | |
14 | $(CC) $(CFLAGS) $(LDFLAGS) -o $@ getfsdev.o $(LIBS) | |
15 | ||
16 | -TRIMSLASH_OBJ = trimslash.o syscall.o | |
17 | +TRIMSLASH_OBJ = trimslash.o syscall.o lib/compat.o | |
18 | trimslash$(EXEEXT): $(TRIMSLASH_OBJ) | |
19 | $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(TRIMSLASH_OBJ) $(LIBS) | |
20 | ||
9cfe8375 WD |
21 | --- orig/syscall.c 2004-08-02 21:56:59 |
22 | +++ syscall.c 2004-09-23 05:46:46 | |
23 | @@ -26,6 +26,10 @@ | |
24 | ||
25 | #include "rsync.h" | |
5d24532c | 26 | |
9cfe8375 | 27 | +#if HAVE_SYS_UN_H |
5d24532c WD |
28 | +#include <sys/un.h> |
29 | +#endif | |
30 | + | |
9cfe8375 WD |
31 | extern int dry_run; |
32 | extern int read_only; | |
33 | extern int list_only; | |
34 | @@ -76,6 +80,29 @@ int do_mknod(char *pathname, mode_t mode | |
5d24532c WD |
35 | { |
36 | if (dry_run) return 0; | |
37 | RETURN_ERROR_IF_RO_OR_LO; | |
38 | +# if HAVE_MKFIFO | |
39 | + if (S_ISFIFO(mode)) | |
40 | + return mkfifo(pathname, mode); | |
41 | +# endif | |
42 | +# if HAVE_SYS_UN_H | |
43 | + if (S_ISSOCK(mode)) { | |
44 | + int sock; | |
45 | + struct sockaddr_un saddr; | |
9cfe8375 | 46 | + unsigned int len; |
5d24532c WD |
47 | + |
48 | + saddr.sun_family = AF_UNIX; | |
9cfe8375 WD |
49 | + len = strlcpy(saddr.sun_path, pathname, sizeof saddr.sun_path); |
50 | + saddr.sun_len = len >= sizeof saddr.sun_path | |
51 | + ? sizeof saddr.sun_path : len + 1; | |
5d24532c | 52 | + |
f5a01b19 WD |
53 | + if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0 |
54 | + || (unlink(pathname) < 0 && errno != ENOENT) | |
55 | + || (bind(sock, (struct sockaddr*)&saddr, sizeof saddr)) < 0) | |
5d24532c WD |
56 | + return -1; |
57 | + close(sock); | |
58 | + return do_chmod(pathname, mode); | |
59 | + } | |
60 | +# endif | |
61 | return mknod(pathname, mode, dev); | |
62 | } | |
63 | #endif |