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
The finish_transfer() function now takes a "partialptr" arg that, if
[rsync/rsync.git]
/
syscall.c
diff --git
a/syscall.c
b/syscall.c
index
5cdf052
..
5cee232
100644
(file)
--- a/
syscall.c
+++ b/
syscall.c
@@
-45,14
+45,14
@@
extern int preserve_perms;
#define RETURN_ERROR_IF_RO_OR_LO RETURN_ERROR_IF(read_only || list_only, EROFS)
#define RETURN_ERROR_IF_RO_OR_LO RETURN_ERROR_IF(read_only || list_only, EROFS)
-int do_unlink(char *fname)
+int do_unlink(c
onst c
har *fname)
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
return unlink(fname);
}
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
return unlink(fname);
}
-int do_symlink(c
har *fname1,
char *fname2)
+int do_symlink(c
onst char *fname1, const
char *fname2)
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
@@
-60,7
+60,7
@@
int do_symlink(char *fname1, char *fname2)
}
#ifdef HAVE_LINK
}
#ifdef HAVE_LINK
-int do_link(c
har *fname1,
char *fname2)
+int do_link(c
onst char *fname1, const
char *fname2)
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
@@
-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
@@
-114,14
+118,14
@@
int do_mknod(char *pathname, mode_t mode, dev_t dev)
#endif
}
#endif
}
-int do_rmdir(char *pathname)
+int do_rmdir(c
onst c
har *pathname)
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
return rmdir(pathname);
}
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
return rmdir(pathname);
}
-int do_open(char *pathname, int flags, mode_t mode)
+int do_open(c
onst c
har *pathname, int flags, mode_t mode)
{
if (flags != O_RDONLY) {
RETURN_ERROR_IF(dry_run, 0);
{
if (flags != O_RDONLY) {
RETURN_ERROR_IF(dry_run, 0);
@@
-137,21
+141,27
@@
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;
}
#endif
if (code != 0 && preserve_perms)
return code;
return 0;
}
#endif
-int do_rename(c
har *fname1,
char *fname2)
+int do_rename(c
onst char *fname1, const
char *fname2)
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
return rename(fname1, fname2);
}
{
if (dry_run) return 0;
RETURN_ERROR_IF_RO_OR_LO;
return rename(fname1, fname2);
}
-
void trim_trailing_slashes(char *name)
{
int l;
void trim_trailing_slashes(char *name)
{
int l;
@@
-170,7
+180,6
@@
void trim_trailing_slashes(char *name)
}
}
}
}
-
int do_mkdir(char *fname, mode_t mode)
{
if (dry_run) return 0;
int do_mkdir(char *fname, mode_t mode)
{
if (dry_run) return 0;
@@
-179,7
+188,6
@@
int do_mkdir(char *fname, mode_t mode)
return mkdir(fname, mode);
}
return mkdir(fname, mode);
}
-
/* like mkstemp but forces permissions */
int do_mkstemp(char *template, mode_t perms)
{
/* like mkstemp but forces permissions */
int do_mkstemp(char *template, mode_t perms)
{
@@
-243,8
+251,12
@@
int do_fstat(int fd, STRUCT_STAT *st)
OFF_T do_lseek(int fd, OFF_T offset, int whence)
{
OFF_T do_lseek(int fd, OFF_T offset, int whence)
{
-#if SIZEOF_OFF64_T
+#ifdef HAVE_LSEEK64
+#if !SIZEOF_OFF64_T
+ OFF_T lseek64();
+#else
off64_t lseek64();
off64_t lseek64();
+#endif
return lseek64(fd, offset, whence);
#else
return lseek(fd, offset, whence);
return lseek64(fd, offset, whence);
#else
return lseek(fd, offset, whence);