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
Changed the optimized include mode (which kicks in when there are a series
[rsync/rsync.git]
/
exclude.c
diff --git
a/exclude.c
b/exclude.c
index
109ee8d
..
15fa4f6
100644
(file)
--- a/
exclude.c
+++ b/
exclude.c
@@
-60,7
+60,10
@@
int send_included_file_names(int f,struct file_list *flist)
/* skip the allowed beginning slashes */
p++;
}
/* skip the allowed beginning slashes */
p++;
}
- send_file_name(f,flist,p,0,0);
+ /* silently skip files that don't exist to
+ be more like non-optimized case */
+ if (access(p,0) == 0)
+ send_file_name(f,flist,p,0,0);
}
exclude_list = ex_list;
}
exclude_list = ex_list;
@@
-160,6
+163,10
@@
int check_exclude(char *name,struct exclude_struct **local_exclude_list,
{
int n;
{
int n;
+ if (name && (name[0] == '.') && !name[1])
+ /* never exclude '.', even if somebody does --exclude '*' */
+ return 0;
+
if (exclude_list) {
for (n=0; exclude_list[n]; n++)
if (check_one_exclude(name,exclude_list[n],st))
if (exclude_list) {
for (n=0; exclude_list[n]; n++)
if (check_one_exclude(name,exclude_list[n],st))
@@
-230,7
+237,12
@@
struct exclude_struct **make_exclude_list(char *fname,
int l = strlen(line);
if (l && line[l-1] == '\n') l--;
line[l] = 0;
int l = strlen(line);
if (l && line[l-1] == '\n') l--;
line[l] = 0;
- if (line[0]) add_exclude_list(line,&list,include);
+ if (line[0] && (line[0] != ';') && (line[0] != '#')) {
+ /* Skip lines starting with semicolon or pound.
+ It probably wouldn't cause any harm to not skip
+ them but there's no need to save them. */
+ add_exclude_list(line,&list,include);
+ }
}
fclose(f);
return list;
}
fclose(f);
return list;