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
Change version to 2.5.6pre1
[rsync/rsync.git]
/
flist.c
diff --git
a/flist.c
b/flist.c
index
3d0ff53
..
93148e6
100644
(file)
--- a/
flist.c
+++ b/
flist.c
@@
-196,47
+196,52
@@
static void list_file_entry(struct file_struct *f)
* Stat either a symlink or its referent, depending on the settings of
* copy_links, copy_unsafe_links, etc.
*
* Stat either a symlink or its referent, depending on the settings of
* copy_links, copy_unsafe_links, etc.
*
- * @return -1 on error; or 0. If a symlink, then @p Linkbuf (of size
+ * @retval -1 on error
+ *
+ * @retval 0 for success
+ *
+ * @post If @p path is a symlink, then @p linkbuf (of size @c
* MAXPATHLEN) contains the symlink target.
* MAXPATHLEN) contains the symlink target.
+ *
+ * @post @p buffer contains information about the link or the
+ * referrent as appropriate, if they exist.
**/
**/
-int readlink_stat(const char *
Path, STRUCT_STAT * Buffer, char *L
inkbuf)
+int readlink_stat(const char *
path, STRUCT_STAT * buffer, char *l
inkbuf)
{
#if SUPPORT_LINKS
if (copy_links) {
{
#if SUPPORT_LINKS
if (copy_links) {
- return do_stat(
Path, B
uffer);
+ return do_stat(
path, b
uffer);
}
}
- if (do_lstat(
Path, B
uffer) == -1) {
+ if (do_lstat(
path, b
uffer) == -1) {
return -1;
}
return -1;
}
- if (S_ISLNK(
B
uffer->st_mode)) {
+ if (S_ISLNK(
b
uffer->st_mode)) {
int l;
int l;
- if ((l =
- readlink((char *) Path, Linkbuf,
- MAXPATHLEN - 1)) == -1) {
+ l = readlink((char *) path, linkbuf, MAXPATHLEN - 1);
+ if (l == -1)
return -1;
return -1;
- }
- Linkbuf[l] = 0;
+ linkbuf[l] = 0;
if (copy_unsafe_links && (topsrcname[0] != '\0') &&
if (copy_unsafe_links && (topsrcname[0] != '\0') &&
- unsafe_symlink(
L
inkbuf, topsrcname)) {
- return do_stat(
Path, B
uffer);
+ unsafe_symlink(
l
inkbuf, topsrcname)) {
+ return do_stat(
path, b
uffer);
}
}
return 0;
#else
}
}
return 0;
#else
- return do_stat(
Path, B
uffer);
+ return do_stat(
path, b
uffer);
#endif
}
#endif
}
-int link_stat(const char *
Path, STRUCT_STAT * B
uffer)
+int link_stat(const char *
path, STRUCT_STAT * b
uffer)
{
#if SUPPORT_LINKS
if (copy_links) {
{
#if SUPPORT_LINKS
if (copy_links) {
- return do_stat(
Path, B
uffer);
+ return do_stat(
path, b
uffer);
} else {
} else {
- return do_lstat(
Path, B
uffer);
+ return do_lstat(
path, b
uffer);
}
#else
}
#else
- return do_stat(
Path, B
uffer);
+ return do_stat(
path, b
uffer);
#endif
}
#endif
}
@@
-349,6
+354,8
@@
static void send_file_entry(struct file_struct *file, int f,
return;
}
return;
}
+ io_write_phase = "send_file_entry";
+
fname = f_name(file);
flags = base_flags;
fname = f_name(file);
flags = base_flags;
@@
-444,6
+451,8
@@
static void send_file_entry(struct file_struct *file, int f,
strlcpy(lastname, fname, MAXPATHLEN);
lastname[MAXPATHLEN - 1] = 0;
strlcpy(lastname, fname, MAXPATHLEN);
lastname[MAXPATHLEN - 1] = 0;
+
+ io_write_phase = "unknown";
}
}
@@
-529,7
+538,7
@@
static void receive_file_entry(struct file_struct **fptr,
(flags & SAME_GID) ? last_gid : (gid_t) read_int(f);
if (preserve_devices && IS_DEVICE(file->mode))
file->rdev =
(flags & SAME_GID) ? last_gid : (gid_t) read_int(f);
if (preserve_devices && IS_DEVICE(file->mode))
file->rdev =
- (flags & SAME_RDEV) ? last_rdev : (
dev_t
) read_int(f);
+ (flags & SAME_RDEV) ? last_rdev : (
DEV64_T
) read_int(f);
if (preserve_links && S_ISLNK(file->mode)) {
int l = read_int(f);
if (preserve_links && S_ISLNK(file->mode)) {
int l = read_int(f);
@@
-651,8
+660,10
@@
struct file_struct *make_file(int f, char *fname, struct string_area **ap,
if (readlink_stat(fname, &st, linkbuf) != 0) {
int save_errno = errno;
if (readlink_stat(fname, &st, linkbuf) != 0) {
int save_errno = errno;
- if ((errno == ENOENT) && copy_links && !noexcludes) {
- /* symlink pointing nowhere, see if excluded */
+ if ((errno == ENOENT) && !noexcludes) {
+ /* either symlink pointing nowhere or file that
+ * was removed during rsync run; see if excluded
+ * before reporting an error */
memset((char *) &st, 0, sizeof(st));
if (check_exclude_file(f, fname, &st)) {
/* file is excluded anyway, ignore silently */
memset((char *) &st, 0, sizeof(st));
if (check_exclude_file(f, fname, &st)) {
/* file is excluded anyway, ignore silently */
@@
-858,11
+869,11
@@
static void send_directory(int f, struct file_list *flist, char *dir)
}
}
-/*
+/*
*
*
*
- * I
*think* f==-1 means that the list should just be built in memory
- * and not transmitted. But who can tell? -- mbp
- */
+ * I
<b>think</b> f==-1 means that the list should just be built in
+ *
memory
and not transmitted. But who can tell? -- mbp
+ *
*
/
struct file_list *send_file_list(int f, int argc, char *argv[])
{
int i, l;
struct file_list *send_file_list(int f, int argc, char *argv[])
{
int i, l;
@@
-1142,7
+1153,9
@@
int flist_find(struct file_list *flist, struct file_struct *f)
{
int low = 0, high = flist->count - 1;
{
int low = 0, high = flist->count - 1;
- if (flist->count <= 0)
+ while (high >= 0 && !flist->files[high]->basename) high--;
+
+ if (high < 0)
return -1;
while (low != high) {
return -1;
while (low != high) {
@@
-1184,7
+1197,7
@@
void free_file(struct file_struct *file)
/*
* allocate a new file list
*/
/*
* allocate a new file list
*/
-struct file_list *flist_new()
+struct file_list *flist_new(
void
)
{
struct file_list *flist;
{
struct file_list *flist;