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
When SUPPORT_LINKS is not defined, we now go ahead and provide
[rsync/rsync.git]
/
flist.c
diff --git
a/flist.c
b/flist.c
index
0bd653f
..
25f5cf3
100644
(file)
--- a/
flist.c
+++ b/
flist.c
@@
-43,8
+43,8
@@
extern int numeric_ids;
extern int cvs_exclude;
extern int recurse;
extern int cvs_exclude;
extern int recurse;
+extern int keep_dirs;
extern char curr_dir[MAXPATHLEN];
extern char curr_dir[MAXPATHLEN];
-extern char *files_from;
extern int filesfrom_fd;
extern int one_file_system;
extern int filesfrom_fd;
extern int one_file_system;
@@
-89,7
+89,7
@@
void init_flist(void)
static int show_filelist_p(void)
{
static int show_filelist_p(void)
{
- return verbose &&
(recurse || files_from)
&& !am_server;
+ return verbose &&
keep_dirs
&& !am_server;
}
static void start_filelist_progress(char *kind)
}
static void start_filelist_progress(char *kind)
@@
-804,7
+804,7
@@
struct file_struct *make_file(char *fname, struct file_list *flist,
if (exclude_level == NO_EXCLUDES)
goto skip_excludes;
if (exclude_level == NO_EXCLUDES)
goto skip_excludes;
- if (S_ISDIR(st.st_mode) && !
recurse && !files_from
) {
+ if (S_ISDIR(st.st_mode) && !
keep_dirs
) {
rprintf(FINFO, "skipping directory %s\n", thisname);
return NULL;
}
rprintf(FINFO, "skipping directory %s\n", thisname);
return NULL;
}
@@
-819,8
+819,13
@@
struct file_struct *make_file(char *fname, struct file_list *flist,
if (check_exclude_file(thisname, S_ISDIR(st.st_mode) != 0, exclude_level))
return NULL;
if (check_exclude_file(thisname, S_ISDIR(st.st_mode) != 0, exclude_level))
return NULL;
- if (lp_ignore_nonreadable(module_id) && access(thisname, R_OK) != 0)
- return NULL;
+ if (lp_ignore_nonreadable(module_id)) {
+#if SUPPORT_LINKS
+ if (!S_ISLNK(st.st_mode))
+#endif
+ if (access(thisname, R_OK) != 0)
+ return NULL;
+ }
skip_excludes:
skip_excludes:
@@
-1038,9
+1043,9
@@
static void send_directory(int f, struct file_list *flist, char *dir)
if (dname[0] == '.' && (dname[1] == '\0'
|| (dname[1] == '.' && dname[2] == '\0')))
continue;
if (dname[0] == '.' && (dname[1] == '\0'
|| (dname[1] == '.' && dname[2] == '\0')))
continue;
- if (strlcpy(p, dname, MAXPATHLEN - offset) < MAXPATHLEN - offset)
+ if (strlcpy(p, dname, MAXPATHLEN - offset) < MAXPATHLEN - offset)
{
send_file_name(f, flist, fname, recurse, 0);
send_file_name(f, flist, fname, recurse, 0);
- else {
+
}
else {
io_error |= IOERR_GENERAL;
rprintf(FINFO,
"cannot send long-named file %s\n",
io_error |= IOERR_GENERAL;
rprintf(FINFO,
"cannot send long-named file %s\n",
@@
-1130,7
+1135,7
@@
struct file_list *send_file_list(int f, int argc, char *argv[])
continue;
}
continue;
}
- if (S_ISDIR(st.st_mode) && !
recurse && !files_from
) {
+ if (S_ISDIR(st.st_mode) && !
keep_dirs
) {
rprintf(FINFO, "skipping directory %s\n", fname);
continue;
}
rprintf(FINFO, "skipping directory %s\n", fname);
continue;
}
@@
-1162,21
+1167,17
@@
struct file_list *send_file_list(int f, int argc, char *argv[])
}
*p = '/';
if (fn != p || (*lp && *lp != '/')) {
}
*p = '/';
if (fn != p || (*lp && *lp != '/')) {
- int
copy_links_saved
= copy_links;
- int
recurse_saved = recurse
;
+ int
save_copy_links
= copy_links;
+ int
save_keep_dirs = keep_dirs
;
copy_links = copy_unsafe_links;
copy_links = copy_unsafe_links;
- /* set recurse to 1 to prevent make_file
- * from ignoring directory, but still
- * turn off the recursive parameter to
- * send_file_name */
- recurse = 1;
+ keep_dirs = 1;
while ((slash = strchr(slash+1, '/')) != 0) {
*slash = 0;
send_file_name(f, flist, fname, 0, 0);
*slash = '/';
}
while ((slash = strchr(slash+1, '/')) != 0) {
*slash = 0;
send_file_name(f, flist, fname, 0, 0);
*slash = '/';
}
- copy_links =
copy_links_saved
;
-
recurse = recurse_saved
;
+ copy_links =
save_copy_links
;
+
keep_dirs = save_keep_dirs
;
*p = 0;
strlcpy(lastpath, fname, sizeof lastpath);
*p = '/';
*p = 0;
strlcpy(lastpath, fname, sizeof lastpath);
*p = '/';