aboutsummaryrefslogtreecommitdiffstats
path: root/exclude.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2005-02-04 22:32:17 +0000
committerWayne Davison <wayned@samba.org>2005-02-04 22:32:17 +0000
commit46db185081719a3afeef6af258a37d719e3d1619 (patch)
tree1f1ab220c797ace0cc36301a4828f478b1e041d6 /exclude.c
parent1412da7c3272dad46c5f9434c3b8645e16189f80 (diff)
downloadandroid_external_rsync-46db185081719a3afeef6af258a37d719e3d1619.tar.gz
android_external_rsync-46db185081719a3afeef6af258a37d719e3d1619.tar.bz2
android_external_rsync-46db185081719a3afeef6af258a37d719e3d1619.zip
- Moved get_cvs_excludes() up above its only use and made it static.
- Changed get_cvs_excludes() to make an mflags arg.
Diffstat (limited to 'exclude.c')
-rw-r--r--exclude.c65
1 files changed, 32 insertions, 33 deletions
diff --git a/exclude.c b/exclude.c
index a6d5b5c3..6ea9767c 100644
--- a/exclude.c
+++ b/exclude.c
@@ -756,6 +756,35 @@ static const char *parse_rule_tok(const char *p, uint32 mflags, int xflags,
}
+static char default_cvsignore[] =
+ /* These default ignored items come from the CVS manual. */
+ "RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS"
+ " .make.state .nse_depinfo *~ #* .#* ,* _$* *$"
+ " *.old *.bak *.BAK *.orig *.rej .del-*"
+ " *.a *.olb *.o *.obj *.so *.exe"
+ " *.Z *.elc *.ln core"
+ /* The rest we added to suit ourself. */
+ " .svn/";
+
+static void get_cvs_excludes(uint32 mflags)
+{
+ char *p, fname[MAXPATHLEN];
+ static int initialized = 0;
+
+ if (initialized)
+ return;
+ initialized = 1;
+
+ parse_rule(&cvs_filter_list, default_cvsignore, mflags, 0);
+
+ p = module_id >= 0 && lp_use_chroot(module_id) ? "/" : getenv("HOME");
+ if (p && pathjoin(fname, MAXPATHLEN, p, ".cvsignore") < MAXPATHLEN)
+ parse_filter_file(&cvs_filter_list, fname, mflags, 0);
+
+ parse_rule(&cvs_filter_list, getenv("CVSIGNORE"), mflags, 0);
+}
+
+
void parse_rule(struct filter_list_struct *listp, const char *pattern,
uint32 mflags, int xflags)
{
@@ -827,7 +856,7 @@ void parse_rule(struct filter_list_struct *listp, const char *pattern,
if (new_mflags & MATCHFLG_CVS_IGNORE
&& !(new_mflags & MATCHFLG_MERGE_FILE))
- get_cvs_excludes();
+ get_cvs_excludes(new_mflags);
}
}
@@ -928,8 +957,6 @@ char *get_rule_prefix(int match_flags, const char *pat, int sending,
else
legal_len = 0;
- if (match_flags & MATCHFLG_EXCLUDE_SELF)
- *op++ = 'e';
if (match_flags & MATCHFLG_CVS_IGNORE)
*op++ = 'C';
else {
@@ -944,6 +971,8 @@ char *get_rule_prefix(int match_flags, const char *pat, int sending,
*op++ = '-';
}
}
+ if (match_flags & MATCHFLG_EXCLUDE_SELF)
+ *op++ = 'e';
if (op - buf > legal_len)
return NULL;
if (legal_len)
@@ -1042,33 +1071,3 @@ void recv_filter_list(int f_in)
parse_rule(&filter_list, "-C", 0, 0);
}
}
-
-
-static char default_cvsignore[] =
- /* These default ignored items come from the CVS manual. */
- "RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS"
- " .make.state .nse_depinfo *~ #* .#* ,* _$* *$"
- " *.old *.bak *.BAK *.orig *.rej .del-*"
- " *.a *.olb *.o *.obj *.so *.exe"
- " *.Z *.elc *.ln core"
- /* The rest we added to suit ourself. */
- " .svn/";
-
-void get_cvs_excludes(void)
-{
- static unsigned cvs_mflags = MATCHFLG_WORD_SPLIT|MATCHFLG_NO_PREFIXES;
- char *p, fname[MAXPATHLEN];
- static int initialized = 0;
-
- if (initialized)
- return;
- initialized = 1;
-
- parse_rule(&cvs_filter_list, default_cvsignore, cvs_mflags, 0);
-
- p = module_id >= 0 && lp_use_chroot(module_id) ? "/" : getenv("HOME");
- if (p && pathjoin(fname, MAXPATHLEN, p, ".cvsignore") < MAXPATHLEN)
- parse_filter_file(&cvs_filter_list, fname, cvs_mflags, 0);
-
- parse_rule(&cvs_filter_list, getenv("CVSIGNORE"), cvs_mflags, 0);
-}