summaryrefslogtreecommitdiffstats
path: root/source/a/findutils/patches/findutils-4.4.2-xautofs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/a/findutils/patches/findutils-4.4.2-xautofs.patch')
-rw-r--r--source/a/findutils/patches/findutils-4.4.2-xautofs.patch132
1 files changed, 132 insertions, 0 deletions
diff --git a/source/a/findutils/patches/findutils-4.4.2-xautofs.patch b/source/a/findutils/patches/findutils-4.4.2-xautofs.patch
new file mode 100644
index 000000000..c1ea81e42
--- /dev/null
+++ b/source/a/findutils/patches/findutils-4.4.2-xautofs.patch
@@ -0,0 +1,132 @@
+From 17e470dc1acca4824b70328d733d5f99c12d0d65 Mon Sep 17 00:00:00 2001
+From: Kamil Dudka <kdudka@redhat.com>
+Date: Wed, 11 May 2011 16:46:45 +0200
+Subject: [PATCH 3/4] findutils-4.4.2-xautofs.patch
+
+---
+ doc/find.texi | 4 ++++
+ find/defs.h | 3 +++
+ find/find.1 | 3 +++
+ find/ftsfind.c | 6 ++++++
+ find/parser.c | 11 ++++++++++-
+ find/util.c | 1 +
+ 6 files changed, 27 insertions(+), 1 deletions(-)
+
+diff --git a/doc/find.texi b/doc/find.texi
+index c584298..9731b71 100644
+--- a/doc/find.texi
++++ b/doc/find.texi
+@@ -1446,6 +1446,10 @@ them.
+ There are two ways to avoid searching certain filesystems. One way is
+ to tell @code{find} to only search one filesystem:
+
++@deffn Option -xautofs
++Don't descend directories on autofs filesystems.
++@end deffn
++
+ @deffn Option -xdev
+ @deffnx Option -mount
+ Don't descend directories on other filesystems. These options are
+diff --git a/find/defs.h b/find/defs.h
+index 11d1d00..f95ce72 100644
+--- a/find/defs.h
++++ b/find/defs.h
+@@ -557,6 +557,9 @@ struct options
+ /* If true, don't cross filesystem boundaries. */
+ bool stay_on_filesystem;
+
++ /* If true, don't descend directories on autofs filesystems. */
++ bool bypass_autofs;
++
+ /* If true, we ignore the problem where we find that a directory entry
+ * no longer exists by the time we get around to processing it.
+ */
+diff --git a/find/find.1 b/find/find.1
+index e851f82..a4799ff 100644
+--- a/find/find.1
++++ b/find/find.1
+@@ -520,6 +520,9 @@ to stat them; this gives a significant increase in search speed.
+ .IP "\-version, \-\-version"
+ Print the \fBfind\fR version number and exit.
+
++.IP \-xautofs
++Don't descend directories on autofs filesystems.
++
+ .IP \-xdev
+ Don't descend directories on other filesystems.
+
+diff --git a/find/ftsfind.c b/find/ftsfind.c
+index 9fdb8ef..bd7cc37 100644
+--- a/find/ftsfind.c
++++ b/find/ftsfind.c
+@@ -485,6 +485,12 @@ consider_visiting (FTS *p, FTSENT *ent)
+ }
+ }
+
++ if (options.bypass_autofs &&
++ 0 == strcmp ("autofs", filesystem_type (&statbuf, ent->fts_name)))
++ {
++ fts_set(p, ent, FTS_SKIP); /* descend no further */
++ }
++
+ if ( (ent->fts_info == FTS_D) && !options.do_dir_first )
+ {
+ /* this is the preorder visit, but user said -depth */
+diff --git a/find/parser.c b/find/parser.c
+index 52a1ef6..995aec3 100644
+--- a/find/parser.c
++++ b/find/parser.c
+@@ -146,6 +146,7 @@ static bool parse_user (const struct parser_table*, char *argv[], int *
+ static bool parse_version (const struct parser_table*, char *argv[], int *arg_ptr);
+ static bool parse_wholename (const struct parser_table*, char *argv[], int *arg_ptr);
+ static bool parse_xdev (const struct parser_table*, char *argv[], int *arg_ptr);
++static bool parse_xautofs (const struct parser_table*, char *argv[], int *arg_ptr);
+ static bool parse_ignore_race (const struct parser_table*, char *argv[], int *arg_ptr);
+ static bool parse_noignore_race (const struct parser_table*, char *argv[], int *arg_ptr);
+ static bool parse_warn (const struct parser_table*, char *argv[], int *arg_ptr);
+@@ -306,6 +307,7 @@ static struct parser_table const parse_table[] =
+ PARSE_TEST_NP ("wholename", wholename), /* GNU, replaced -path, but anyway -path will soon be in POSIX */
+ {ARG_TEST, "writable", parse_accesscheck, pred_writable}, /* GNU, 4.3.0+ */
+ PARSE_OPTION ("xdev", xdev), /* POSIX */
++ PARSE_OPTION ("xautofs", xautofs),
+ PARSE_TEST ("xtype", xtype), /* GNU */
+ #ifdef UNIMPLEMENTED_UNIX
+ /* It's pretty ugly for find to know about archive formats.
+@@ -1239,7 +1241,7 @@ operators (decreasing precedence; -and is implicit where no others are given):\n
+ positional options (always true): -daystart -follow -regextype\n\n\
+ normal options (always true, specified before other expressions):\n\
+ -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf\n\
+- --version -xdev -ignore_readdir_race -noignore_readdir_race\n"));
++ --version -xautofs -xdev -ignore_readdir_race -noignore_readdir_race\n"));
+ puts (_("\
+ tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N\n\
+ -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME\n\
+@@ -2683,6 +2685,13 @@ parse_xdev (const struct parser_table* entry, char **argv, int *arg_ptr)
+ }
+
+ static bool
++parse_xautofs (const struct parser_table* entry, char **argv, int *arg_ptr)
++{
++ options.bypass_autofs = true;
++ return parse_noop (entry, argv, arg_ptr);
++}
++
++static bool
+ parse_ignore_race (const struct parser_table* entry, char **argv, int *arg_ptr)
+ {
+ options.ignore_readdir_race = true;
+diff --git a/find/util.c b/find/util.c
+index 8577396..4d45f84 100644
+--- a/find/util.c
++++ b/find/util.c
+@@ -1017,6 +1017,7 @@ set_option_defaults (struct options *p)
+
+ p->full_days = false;
+ p->stay_on_filesystem = false;
++ p->bypass_autofs = false;
+ p->ignore_readdir_race = false;
+
+ if (p->posixly_correct)
+--
+1.7.4.4
+