Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Support new --append option.
[rsync/rsync.git]
/
syscall.c
diff --git
a/syscall.c
b/syscall.c
index
2f73ba3
..
48c7e90
100644
(file)
--- a/
syscall.c
+++ b/
syscall.c
@@
-104,7
+104,11
@@
int do_mknod(char *pathname, mode_t mode, dev_t dev)
|| (bind(sock, (struct sockaddr*)&saddr, sizeof saddr)) < 0)
return -1;
close(sock);
|| (bind(sock, (struct sockaddr*)&saddr, sizeof saddr)) < 0)
return -1;
close(sock);
+#ifdef HAVE_CHMOD
return do_chmod(pathname, mode);
return do_chmod(pathname, mode);
+#else
+ return 0;
+#endif
}
#endif
#ifdef HAVE_MKNOD
}
#endif
#ifdef HAVE_MKNOD
@@
-137,7
+141,14
@@
int do_chmod(const char *path, mode_t mode)
int code;
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
int code;
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
- code = chmod(path, mode);
+ if (S_ISLNK(mode)) {
+#ifdef HAVE_LCHMOD
+ code = lchmod(path, mode & CHMOD_BITS);
+#else
+ code = 1;
+#endif
+ } else
+ code = chmod(path, mode & CHMOD_BITS);
if (code != 0 && preserve_perms)
return code;
return 0;
if (code != 0 && preserve_perms)
return code;
return 0;