3
0
forked from pool/findutils

Accepting request 100464 from home:tabraham1:branches:Base:System

update to 4.5.10

OBS-URL: https://build.opensuse.org/request/show/100464
OBS-URL: https://build.opensuse.org/package/show/Base:System/findutils?expand=0&rev=25
This commit is contained in:
Cristian Rodríguez 2012-01-18 05:03:10 +00:00 committed by Git OBS Bridge
parent 05c9d5f433
commit e8d8ebfa75
13 changed files with 285 additions and 1750 deletions

View File

@ -1,27 +0,0 @@
This patch is already applied on gnulib upstream git.
Index: findutils-4.4.2/gnulib/lib/fts.c
===================================================================
--- findutils-4.4.2.orig/gnulib/lib/fts.c
+++ findutils-4.4.2/gnulib/lib/fts.c
@@ -974,6 +974,20 @@ fts_build (register FTS *sp, int type)
opening it. */
if (cur->fts_info == FTS_NSOK)
cur->fts_info = fts_stat(sp, cur, false);
+ else if (sp->fts_options & FTS_TIGHT_CYCLE_CHECK) {
+ /* Now read the stat info again after opening a directory to
+ * reveal eventual changes caused by a submount triggered by
+ * the traverse. But do it only for utilities which use
+ * FTS_TIGHT_CYCLE_CHECK. Therefore only find and du can
+ * benefit from this feature for now.
+ */
+ LEAVE_DIR (sp, cur, "4");
+ fts_stat (sp, cur, false);
+ if (! enter_dir (sp, cur)) {
+ __set_errno (ENOMEM);
+ return NULL;
+ }
+ }
/*
* Nlinks is the number of possible entries of type directory in the

File diff suppressed because it is too large Load Diff

View File

@ -1,445 +0,0 @@
Index: findutils-4.4.2/NEWS
===================================================================
--- findutils-4.4.2.orig/NEWS
+++ findutils-4.4.2/NEWS
@@ -1,5 +1,11 @@
GNU findutils NEWS - User visible changes. -*- outline -*- (allout)
+* Major changes in release 4.4.2, 2009-11-26
+
+** Functional Enhancements to find
+
+patch #4848: Patch - Support for SELinux
+
* Major changes in release 4.4.2, 2009-05-16
** Bug Fixes
Index: findutils-4.4.2/doc/find.texi
===================================================================
--- findutils-4.4.2.orig/doc/find.texi
+++ findutils-4.4.2/doc/find.texi
@@ -1242,6 +1242,14 @@ situation.
@end deffn
+@deffn Test -context pattern
+True if file's SELinux context matches the pattern @var{pattern}.
+The pattern uses shell glob matching.
+
+This predicate is supported only on @code{find} versions compiled with
+SELinux support and only when SELinux is enabled.
+@end deffn
+
@node Contents
@section Contents
@@ -1737,6 +1745,7 @@ from the novel you are reading.
* Size Directives::
* Location Directives::
* Time Directives::
+* Other Directives::
* Formatting Flags::
@end menu
@@ -1894,6 +1903,14 @@ File's last modification time in the for
(@pxref{Time Formats}).
@end table
+@node Other Directives
+@subsubsection Other Directives
+
+@table @code
+@item %Z
+File's SELinux context, or empty string if the file has no SELinux context.
+@end table
+
@node Time Formats
@subsection Time Formats
Index: findutils-4.4.2/find/Makefile.am
===================================================================
--- findutils-4.4.2.orig/find/Makefile.am
+++ findutils-4.4.2/find/Makefile.am
@@ -26,7 +26,7 @@ endif
EXTRA_DIST = defs.h $(man_MANS)
INCLUDES = -I../gnulib/lib -I$(top_srcdir)/lib -I$(top_srcdir)/gnulib/lib -I../intl -DLOCALEDIR=\"$(localedir)\"
-LDADD = ./libfindtools.a ../lib/libfind.a ../gnulib/lib/libgnulib.a @INTLLIBS@ @LIB_CLOCK_GETTIME@ @FINDLIBS@
+LDADD = ./libfindtools.a ../lib/libfind.a ../gnulib/lib/libgnulib.a @INTLLIBS@ @LIB_CLOCK_GETTIME@ @FINDLIBS@ @LIB_SELINUX@
man_MANS = find.1
SUBDIRS = . testsuite
Index: findutils-4.4.2/find/defs.h
===================================================================
--- findutils-4.4.2.orig/find/defs.h
+++ findutils-4.4.2/find/defs.h
@@ -48,6 +48,7 @@ Please stop compiling the program now
#include <stdbool.h> /* for bool/boolean */
#include <stdint.h> /* for uintmax_t */
#include <sys/stat.h> /* S_ISUID etc. */
+#include <selinux/selinux.h>
@@ -315,6 +316,7 @@ struct predicate
struct samefile_file_id samefileid; /* samefile */
mode_t type; /* type */
struct format_val printf_vec; /* printf fprintf fprint ls fls print0 fprint0 print */
+ security_context_t scontext; /* security context */
} args;
/* The next predicate in the user input sequence,
@@ -459,6 +461,7 @@ PREDICATEFUNCTION pred_used;
PREDICATEFUNCTION pred_user;
PREDICATEFUNCTION pred_writable;
PREDICATEFUNCTION pred_xtype;
+PREDICATEFUNCTION pred_context;
@@ -604,6 +607,9 @@ struct options
*/
int regex_options;
+ /* function used to get file context */
+ int (*x_getfilecon) (int, const char *, security_context_t *);
+
/* Optimisation level. One is the default.
*/
unsigned short optimisation_level;
Index: findutils-4.4.2/find/find.1
===================================================================
--- findutils-4.4.2.orig/find/find.1
+++ findutils-4.4.2/find/find.1
@@ -936,6 +936,8 @@ if \fIc\fR is `l'. In other words, for
checks the type of the file that
.B \-type
does not check.
+.IP "\-context \fIpattern\fR"
+(SELinux only) Security context of the file matches glob \fIpattern\fR.
.SS ACTIONS
.IP "\-delete\fR"
@@ -1357,6 +1359,8 @@ File's type (like in
U=unknown type (shouldn't happen)
.IP %Y
File's type (like %y), plus follow symlinks: L=loop, N=nonexistent
+.IP %Z
+(SELinux only) file's security context.
.PP
A `%' character followed by any other character is discarded, but the
other character is printed (don't rely on this, as further format
Index: findutils-4.4.2/find/parser.c
===================================================================
--- findutils-4.4.2.orig/find/parser.c
+++ findutils-4.4.2/find/parser.c
@@ -53,6 +53,8 @@
#include <unistd.h>
#include <sys/stat.h>
+#include "selinux-at.h"
+
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
@@ -156,6 +158,7 @@ static boolean parse_noignore_race PARAM
static boolean parse_warn PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
static boolean parse_xtype PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
static boolean parse_quit PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
+static boolean parse_context PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
boolean parse_print PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
@@ -252,6 +255,7 @@ static struct parser_table const parse_t
PARSE_TEST ("cmin", cmin), /* GNU */
PARSE_TEST ("cnewer", cnewer), /* GNU */
{ARG_TEST, "ctime", parse_time, pred_ctime}, /* POSIX */
+ PARSE_TEST ("context", context), /* GNU */
PARSE_POSOPT ("daystart", daystart), /* GNU */
PARSE_ACTION ("delete", delete), /* GNU, Mac OS, FreeBSD */
PARSE_OPTION ("d", d), /* Mac OS X, FreeBSD, NetBSD, OpenBSD, but deprecated in favour of -depth */
@@ -349,6 +353,86 @@ static struct parser_table const parse_t
static const char *first_nonoption_arg = NULL;
static const struct parser_table *noop = NULL;
+static int
+fallback_getfilecon (int fd, const char *name, security_context_t *p,
+ int prev_rv)
+{
+ /* Our original getfilecon () call failed. Perhaps we can't follow a
+ * symbolic link. If that might be the problem, lgetfilecon () the link.
+ * Otherwise, admit defeat. */
+ switch (errno)
+ {
+ case ENOENT:
+ case ENOTDIR:
+#ifdef DEBUG_STAT
+ fprintf (stderr, "fallback_getfilecon(): getfilecon(%s) failed; falling "
+ "back on lgetfilecon()\n", name);
+#endif
+ return lgetfileconat (fd, name, p);
+
+ case EACCES:
+ case EIO:
+ case ELOOP:
+ case ENAMETOOLONG:
+#ifdef EOVERFLOW
+ case EOVERFLOW: /* EOVERFLOW is not #defined on UNICOS. */
+#endif
+ default:
+ return prev_rv;
+ }
+}
+
+/* optionh_getfilecon () implements the getfilecon operation when the
+ * -H option is in effect.
+ *
+ * If the item to be examined is a command-line argument, we follow
+ * symbolic links. If the getfilecon () call fails on the command-line
+ * item, we fall back on the properties of the symbolic link.
+ *
+ * If the item to be examined is not a command-line argument, we
+ * examine the link itself. */
+int
+optionh_getfilecon (int fd, const char *name, security_context_t *p)
+{
+ int rv;
+ if (0 == state.curdepth)
+ {
+ /* This file is from the command line; dereference the link (if it is
+ a link). */
+ rv = getfileconat (fd, name, p);
+ if (0 == rv)
+ return 0; /* success */
+ else
+ return fallback_getfilecon (fd, name, p, rv);
+ }
+ else
+ {
+ /* Not a file on the command line; do not dereference the link. */
+ return lgetfileconat (fd, name, p);
+ }
+}
+
+/* optionl_getfilecon () implements the getfilecon operation when the
+ * -L option is in effect. That option makes us examine the thing the
+ * symbolic link points to, not the symbolic link itself. */
+int
+optionl_getfilecon (int fd, const char *name, security_context_t *p)
+{
+ int rv = getfileconat (fd, name, p);
+ if (0 == rv)
+ return 0; /* normal case. */
+ else
+ return fallback_getfilecon (fd, name, p, rv);
+}
+
+/* optionp_getfilecon () implements the stat operation when the -P
+ * option is in effect (this is also the default). That option makes
+ * us examine the symbolic link itself, not the thing it points to. */
+int
+optionp_getfilecon (int fd, const char *name, security_context_t *p)
+{
+ return lgetfileconat (fd, name, p);
+}
void
check_option_combinations(const struct predicate *p)
@@ -452,11 +536,13 @@ set_follow_state(enum SymlinkOption opt)
{
case SYMLINK_ALWAYS_DEREF: /* -L */
options.xstat = optionl_stat;
+ options.x_getfilecon = optionl_getfilecon;
options.no_leaf_check = true;
break;
case SYMLINK_NEVER_DEREF: /* -P (default) */
options.xstat = optionp_stat;
+ options.x_getfilecon = optionp_getfilecon;
/* Can't turn no_leaf_check off because the user might have specified
* -noleaf anyway
*/
@@ -464,6 +550,7 @@ set_follow_state(enum SymlinkOption opt)
case SYMLINK_DEREF_ARGSONLY: /* -H */
options.xstat = optionh_stat;
+ options.x_getfilecon = optionh_getfilecon;
options.no_leaf_check = true;
}
}
@@ -1129,8 +1216,10 @@ tests (N can be +N or -N or N): -amin N
-nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN\n\
-readable -writable -executable\n\
-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N\n\
- -used N -user NAME -xtype [bcdpfls]\n"));
+ -used N -user NAME -xtype [bcdpfls]"));
puts (_("\
+ -context CONTEXT\n"));
+ puts (_("\n\
actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print \n\
-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit\n\
-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;\n\
@@ -2520,6 +2609,11 @@ parse_version (const struct parser_table
printf("LEAF_OPTIMISATION ");
++features;
#endif
+ if (0 < is_selinux_enabled ())
+ {
+ printf ("SELINUX ");
+ ++features;
+ }
flags = 0;
if (is_fts_enabled(&flags))
@@ -2555,6 +2649,31 @@ parse_version (const struct parser_table
}
static boolean
+parse_context (const struct parser_table* entry, char **argv, int *arg_ptr)
+{
+ struct predicate *our_pred;
+
+ if ((argv == NULL) || (argv[*arg_ptr] == NULL))
+ return false;
+
+ if (is_selinux_enabled () <= 0)
+ {
+ error (1, 0, _("invalid predicate -context: SELinux is not enabled."));
+ return false;
+ }
+ our_pred = insert_primary (entry);
+ our_pred->est_success_rate = 0.01f;
+ our_pred->need_stat = false;
+#ifdef DEBUG
+ our_pred->p_name = find_pred_name (pred_context);
+#endif /*DEBUG*/
+ our_pred->args.scontext = argv[*arg_ptr];
+
+ (*arg_ptr)++;
+ return true;
+}
+
+static boolean
parse_xdev (const struct parser_table* entry, char **argv, int *arg_ptr)
{
options.stay_on_filesystem = true;
@@ -2815,7 +2934,7 @@ insert_fprintf (struct format_val *vec,
if (*scan2 == '.')
for (scan2++; ISDIGIT (*scan2); scan2++)
/* Do nothing. */ ;
- if (strchr ("abcdDfFgGhHiklmMnpPsStuUyY", *scan2))
+ if (strchr ("abcdDfFgGhHiklmMnpPsStuUyYZ", *scan2))
{
segmentp = make_segment (segmentp, format, scan2 - format,
KIND_FORMAT, *scan2, 0,
@@ -2945,6 +3064,11 @@ make_segment (struct segment **segment,
*fmt++ = 's';
break;
+ case 'Z': /* SELinux security context */
+ mycost = NeedsAccessInfo;
+ *fmt++ = 's';
+ break;
+
case 'H': /* ARGV element file was found under */
*fmt++ = 's';
break;
Index: findutils-4.4.2/find/pred.c
===================================================================
--- findutils-4.4.2.orig/find/pred.c
+++ findutils-4.4.2/find/pred.c
@@ -48,6 +48,8 @@
#include "error.h"
#include "verify.h"
+#include <selinux/selinux.h>
+
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
@@ -230,6 +232,7 @@ struct pred_assoc pred_table[] =
{pred_user, "user "},
{pred_writable, "writable "},
{pred_xtype, "xtype "},
+ {pred_context, "context"},
{0, "none "}
};
#endif
@@ -1054,6 +1057,30 @@ do_fprintf(struct format_val *dest,
mode_to_filetype(stat_buf->st_mode & S_IFMT));
}
break;
+
+ case 'Z': /* SELinux security context */
+ {
+ security_context_t scontext;
+ int rv = (*options.x_getfilecon) (state.cwd_dir_fd, state.rel_pathname,
+ &scontext);
+ if (rv < 0)
+ {
+ /* If getfilecon fails, there will in the general case
+ still be some text to print. We just make %Z expand
+ to an empty string. */
+ checked_fprintf (dest, segment->text, "");
+
+ error (0, errno, "getfilecon: %s",
+ safely_quote_err_filename (0, pathname));
+ state.exit_status = 1;
+ }
+ else
+ {
+ checked_fprintf (dest, segment->text, scontext);
+ freecon (scontext);
+ }
+ }
+ break;
}
/* end of KIND_FORMAT case */
break;
@@ -1844,6 +1871,26 @@ pred_xtype (const char *pathname, struct
*/
return (pred_type (pathname, &sbuf, pred_ptr));
}
+
+
+boolean
+pred_context (const char *pathname, struct stat *stat_buf,
+ struct predicate *pred_ptr)
+{
+ security_context_t scontext;
+ int rv = (*options.x_getfilecon) (state.cwd_dir_fd, state.rel_pathname,
+ &scontext);
+ if (rv < 0)
+ {
+ error (0, errno, "getfilecon: %s", safely_quote_err_filename (0, pathname));
+ return false;
+ }
+
+ rv = (fnmatch (pred_ptr->args.scontext, scontext, 0) == 0);
+ freecon (scontext);
+ return rv;
+}
+
/* 1) fork to get a child; parent remembers the child pid
2) child execs the command requested
Index: findutils-4.4.2/find/tree.c
===================================================================
--- findutils-4.4.2.orig/find/tree.c
+++ findutils-4.4.2/find/tree.c
@@ -904,6 +904,7 @@ static struct pred_cost_lookup costlooku
{ pred_cmin , NeedsStatInfo, },
{ pred_cnewer , NeedsStatInfo, },
{ pred_comma , NeedsNothing, },
+ { pred_context , NeedsAccessInfo },
{ pred_ctime , NeedsStatInfo, },
{ pred_delete , NeedsSyncDiskHit },
{ pred_empty , NeedsStatInfo },
@@ -1434,6 +1435,7 @@ get_new_pred (const struct parser_table
last_pred->need_stat = true;
last_pred->need_type = true;
last_pred->args.str = NULL;
+ last_pred->args.scontext = NULL;
last_pred->pred_next = NULL;
last_pred->pred_left = NULL;
last_pred->pred_right = NULL;

View File

@ -1,8 +1,7 @@
Index: doc/find.texi
===================================================================
--- doc/find.texi.orig
+++ doc/find.texi
@@ -3364,7 +3364,7 @@ Default is none.
diff -aur findutils-4.5.10.orig/doc/find.texi findutils-4.5.10/doc/find.texi
--- findutils-4.5.10.orig/doc/find.texi 2012-01-16 15:29:59.649039029 -0500
+++ findutils-4.5.10/doc/find.texi 2012-01-16 15:45:10.098656840 -0500
@@ -3482,7 +3482,7 @@
@item --prunepaths='@var{path}@dots{}'
Directories to omit from the database, which would otherwise be
included. The environment variable @code{PRUNEPATHS} also sets this
@ -11,21 +10,20 @@ Index: doc/find.texi
used as regular expressions (with @code{find ... -regex}, so you need
to specify these paths in the same way that @code{find} will encounter
them. This means for example that the paths must not include trailing
Index: locate/updatedb.1
===================================================================
--- locate/updatedb.1.orig
+++ locate/updatedb.1
@@ -75,8 +75,7 @@ Default is \fInfs NFS proc\fP.
diff -aur findutils-4.5.10.orig/locate/updatedb.1 findutils-4.5.10/locate/updatedb.1
--- findutils-4.5.10.orig/locate/updatedb.1 2012-01-16 15:31:03.240244029 -0500
+++ findutils-4.5.10/locate/updatedb.1 2012-01-16 15:45:37.745311211 -0500
@@ -75,8 +75,7 @@
.TP
.B \-\-output=\fIdbfile\fP
The database file to build.
-Default is system-dependent. In Debian GNU/Linux, the default
-is /var/cache/locate/locatedb.
+Default is /var/lib/locatedb.
+Default is /var/lib/locatedb.
.TP
.B \-\-localuser=\fIuser\fP
The user to search non-network directories as, using \fBsu\fP(1).
@@ -85,7 +84,7 @@ You can also use the environment variabl
@@ -85,7 +84,7 @@
.TP
.B \-\-netuser=\fIuser\fP
The user to search network directories as, using \fBsu\fP(1).
@ -34,20 +32,19 @@ Index: locate/updatedb.1
You can also use the environment variable \fBNETUSER\fP to set this user.
.TP
.B \-\-old\-format
Index: locate/updatedb.sh
===================================================================
--- locate/updatedb.sh.orig
+++ locate/updatedb.sh
@@ -158,7 +158,7 @@ select_shell() {
diff -aur findutils-4.5.10.orig/locate/updatedb.sh findutils-4.5.10/locate/updatedb.sh
--- findutils-4.5.10.orig/locate/updatedb.sh 2012-01-16 15:32:52.071883446 -0500
+++ findutils-4.5.10/locate/updatedb.sh 2012-01-16 15:45:56.037082532 -0500
@@ -158,7 +158,7 @@
: ${NETPATHS=}
# Directories to not put in the database, which would otherwise be.
-: ${PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /sfs /proc"}
+: ${PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /sfs /proc /var/spool"}
# Trailing slashes result in regex items that are never matched, which
# is not what the user will expect. Therefore we now reject such
@@ -188,7 +188,7 @@ fi
# Trailing slashes result in regex items that are never matched, which
# is not what the user will expect. Therefore we now reject such
@@ -188,7 +188,7 @@
export TMPDIR
# The user to search network directories as.
@ -56,7 +53,7 @@ Index: locate/updatedb.sh
# The directory containing the subprograms.
if test -n "$LIBEXECDIR" ; then
@@ -228,11 +228,10 @@ done
@@ -228,10 +228,10 @@
PATH=/bin:/usr/bin:${BINDIR}; export PATH
@ -65,40 +62,37 @@ Index: locate/updatedb.sh
if test -n "$PRUNEFS"; then
-prunefs_exp=`echo $PRUNEFS |sed -e 's/\([^ ][^ ]*\)/-o -fstype \1/g' \
- -e 's/-o //' -e 's/$/ -o/'`
+prunefs_exp=`echo $PRUNEFS |sed -e 's/\([^ ][^ ]*\)/-fstype \1 -o/g'`
+prunefs_exp=`echo $PRUNEFS |sed -e 's/\([^ ][^ ]*\)/-fstype \1 -o/g' \
-e 's/-o //' -e 's/$/ -o/'`
else
prunefs_exp=''
fi
@@ -252,13 +251,12 @@ if test -n "$SEARCHPATHS"; then
# : A1
@@ -253,12 +253,13 @@
su $LOCALUSER `select_shell $LOCALUSER` -c \
"$find $SEARCHPATHS $FINDOPTIONS \
- \\( $prunefs_exp \
\\( $prunefs_exp \
- -type d -regex '$PRUNEREGEX' \\) -prune -o $print_option"
+ -type d \\( $prunefs_exp -regex '$PRUNEREGEX' \\) -prune \
+ -o $print_option"
else
# : A2
$find $SEARCHPATHS $FINDOPTIONS \
- \( $prunefs_exp \
\( $prunefs_exp \
- -type d -regex "$PRUNEREGEX" \) -prune -o $print_option
+ -type d \( $prunefs_exp -regex "$PRUNEREGEX" \) -prune -o $print_option
fi
fi
@@ -321,13 +319,13 @@ if test -n "$SEARCHPATHS"; then
# : A5
@@ -322,12 +323,14 @@
su $LOCALUSER `select_shell $LOCALUSER` -c \
"$find $SEARCHPATHS $FINDOPTIONS \
- \( $prunefs_exp \
\( $prunefs_exp \
- -type d -regex '$PRUNEREGEX' \) -prune -o $print_option" || exit $?
+ -type d \( $prunefs_exp -regex '$PRUNEREGEX' \) -prune \
+ -o $print_option" || exit $?
else
# : A6
$find $SEARCHPATHS $FINDOPTIONS \
- \( $prunefs_exp \
\( $prunefs_exp \
- -type d -regex "$PRUNEREGEX" \) -prune -o $print_option || exit $?
+ -type d \( $prunefs_exp -regex "$PRUNEREGEX" \) -prune \
+ -o $print_option || exit $?

View File

@ -1,8 +1,7 @@
Index: findutils-4.4.2/doc/find.texi
===================================================================
--- findutils-4.4.2.orig/doc/find.texi
+++ findutils-4.4.2/doc/find.texi
@@ -1413,6 +1413,10 @@ them.
diff -aur findutils-4.5.10.orig/doc/find.texi findutils-4.5.10/doc/find.texi
--- findutils-4.5.10.orig/doc/find.texi 2012-01-16 15:29:59.649039029 -0500
+++ findutils-4.5.10/doc/find.texi 2012-01-16 15:54:30.683648566 -0500
@@ -1440,6 +1440,10 @@
There are two ways to avoid searching certain filesystems. One way is
to tell @code{find} to only search one filesystem:
@ -13,25 +12,23 @@ Index: findutils-4.4.2/doc/find.texi
@deffn Option -xdev
@deffnx Option -mount
Don't descend directories on other filesystems. These options are
Index: findutils-4.4.2/find/defs.h
===================================================================
--- findutils-4.4.2.orig/find/defs.h
+++ findutils-4.4.2/find/defs.h
@@ -550,6 +550,9 @@ struct options
diff -aur findutils-4.5.10.orig/find/defs.h findutils-4.5.10/find/defs.h
--- findutils-4.5.10.orig/find/defs.h 2011-04-03 18:53:11.000000000 -0400
+++ findutils-4.5.10/find/defs.h 2012-01-16 15:56:13.473363517 -0500
@@ -561,6 +561,9 @@
/* If true, don't cross filesystem boundaries. */
boolean stay_on_filesystem;
+ /* If true, don't descend directories on autofs filesystems. */
+ boolean bypass_autofs;
bool stay_on_filesystem;
+ /* If true, don't descend directores on autofs filesystems */
+ bool bypass_autofs;
+
/* If true, we ignore the problem where we find that a directory entry
/* 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.
*/
Index: findutils-4.4.2/find/find.1
===================================================================
--- findutils-4.4.2.orig/find/find.1
+++ findutils-4.4.2/find/find.1
@@ -451,6 +451,9 @@ if standard input is a tty, and to
diff -aur findutils-4.5.10.orig/find/find.1 findutils-4.5.10/find/find.1
--- findutils-4.5.10.orig/find/find.1 2011-04-03 18:53:11.000000000 -0400
+++ findutils-4.5.10/find/find.1 2012-01-16 15:57:07.003694295 -0500
@@ -460,6 +460,9 @@
.B \-nowarn
otherwise.
@ -41,11 +38,10 @@ Index: findutils-4.4.2/find/find.1
.IP \-xdev
Don't descend directories on other filesystems.
Index: findutils-4.4.2/find/ftsfind.c
===================================================================
--- findutils-4.4.2.orig/find/ftsfind.c
+++ findutils-4.4.2/find/ftsfind.c
@@ -525,6 +525,12 @@ consider_visiting(FTS *p, FTSENT *ent)
diff -aur findutils-4.5.10.orig/find/ftsfind.c findutils-4.5.10/find/ftsfind.c
--- findutils-4.5.10.orig/find/ftsfind.c 2011-04-03 18:53:11.000000000 -0400
+++ findutils-4.5.10/find/ftsfind.c 2012-01-16 16:00:05.103467741 -0500
@@ -485,6 +485,12 @@
}
}
@ -57,20 +53,19 @@ Index: findutils-4.4.2/find/ftsfind.c
+
if ( (ent->fts_info == FTS_D) && !options.do_dir_first )
{
/* this is the preorder visit, but user said -depth */
Index: findutils-4.4.2/find/parser.c
===================================================================
--- findutils-4.4.2.orig/find/parser.c
+++ findutils-4.4.2/find/parser.c
@@ -150,6 +150,7 @@ static boolean parse_user PARAM
static boolean parse_version PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
static boolean parse_wholename PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
static boolean parse_xdev PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
+static boolean parse_xautofs PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
static boolean parse_ignore_race PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
static boolean parse_noignore_race PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
static boolean parse_warn PARAMS((const struct parser_table*, char *argv[], int *arg_ptr));
@@ -320,6 +321,7 @@ static struct parser_table const parse_t
/* this is the preorder visit, but user said -depth */
diff -aur findutils-4.5.10.orig/find/parser.c findutils-4.5.10/find/parser.c
--- findutils-4.5.10.orig/find/parser.c 2011-04-03 18:53:11.000000000 -0400
+++ findutils-4.5.10/find/parser.c 2012-01-16 16:05:32.208378367 -0500
@@ -151,6 +151,7 @@
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);
@@ -325,6 +326,7 @@
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 */
@ -78,11 +73,11 @@ Index: findutils-4.4.2/find/parser.c
PARSE_TEST ("xtype", xtype), /* GNU */
#ifdef UNIMPLEMENTED_UNIX
/* It's pretty ugly for find to know about archive formats.
@@ -2560,6 +2562,16 @@ parse_xdev (const struct parser_table* e
@@ -2800,6 +2802,16 @@
}
static boolean
+parse_xautofs (const struct parser_table* entry, char **argv, int *arg_ptr)
static bool
+parse_xautofs(const struct parser_table* entry, char **argv, int *arg_ptr)
+{
+ (void) argv;
+ (void) arg_ptr;
@ -91,15 +86,14 @@ Index: findutils-4.4.2/find/parser.c
+ return true;
+}
+
+static boolean
+static bool
parse_ignore_race (const struct parser_table* entry, char **argv, int *arg_ptr)
{
options.ignore_readdir_race = true;
Index: findutils-4.4.2/find/util.c
===================================================================
--- findutils-4.4.2.orig/find/util.c
+++ findutils-4.4.2/find/util.c
@@ -933,6 +933,7 @@ set_option_defaults(struct options *p)
diff -aur findutils-4.5.10.orig/find/util.c findutils-4.5.10/find/util.c
--- findutils-4.5.10.orig/find/util.c 2011-04-03 18:53:11.000000000 -0400
+++ findutils-4.5.10/find/util.c 2012-01-16 16:06:17.309814520 -0500
@@ -1006,6 +1006,7 @@
p->full_days = false;
p->stay_on_filesystem = false;

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:62ff724e2de32788fa527df69c631ad34c6dfbbd5430b6b6dc410662a6d206d6
size 1506634

View File

@ -1,8 +1,6 @@
Index: locate/updatedb.sh
===================================================================
--- locate/updatedb.sh.orig 2010-04-01 12:46:24.000000000 +0200
+++ locate/updatedb.sh 2010-04-01 12:47:09.919511262 +0200
@@ -228,7 +228,7 @@ done
--- locate/updatedb.sh.orig 2012-01-16 19:04:21.074917128 -0500
+++ locate/updatedb.sh 2012-01-16 19:05:02.438400012 -0500
@@ -228,7 +228,7 @@
PATH=/bin:/usr/bin:${BINDIR}; export PATH
@ -10,4 +8,4 @@ Index: locate/updatedb.sh
+: ${PRUNEFS="nfs NFS proc afs smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs sysfs shfs cifs 9P unknown"}
if test -n "$PRUNEFS"; then
prunefs_exp=`echo $PRUNEFS |sed -e 's/\([^ ][^ ]*\)/-fstype \1 -o/g'`
prunefs_exp=`echo $PRUNEFS |sed -e 's/\([^ ][^ ]*\)/-fstype \1 -o/g' \

View File

@ -1,8 +1,6 @@
Index: locate/updatedb.sh
===================================================================
--- locate/updatedb.sh.orig 2010-08-23 12:27:24.000000000 +0200
+++ locate/updatedb.sh 2010-08-23 12:29:20.495699371 +0200
@@ -228,7 +228,7 @@ done
--- locate/updatedb.sh.orig 2012-01-16 19:06:44.632122416 -0500
+++ locate/updatedb.sh 2012-01-16 19:07:19.338688523 -0500
@@ -228,7 +228,7 @@
PATH=/bin:/usr/bin:${BINDIR}; export PATH
@ -10,4 +8,4 @@ Index: locate/updatedb.sh
+: ${PRUNEFS="nfs nfs4 NFS proc afs smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs sysfs shfs cifs 9P unknown"}
if test -n "$PRUNEFS"; then
prunefs_exp=`echo $PRUNEFS |sed -e 's/\([^ ][^ ]*\)/-fstype \1 -o/g'`
prunefs_exp=`echo $PRUNEFS |sed -e 's/\([^ ][^ ]*\)/-fstype \1 -o/g' \

View File

@ -0,0 +1,14 @@
--- gnulib/lib/mountlist.c.orig 2012-01-16 15:24:39.982035415 -0500
+++ gnulib/lib/mountlist.c 2012-01-16 15:26:14.587852681 -0500
@@ -71,6 +71,11 @@
# endif
#endif
+#if defined __linux__
+# undef MOUNTED
+# define MOUNTED "/proc/mounts"
+#endif
+
#ifdef MOUNTED_GETMNTINFO /* 4.4BSD. */
# include <sys/mount.h>
#endif

3
findutils-4.5.10.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1032d93042aee8eed7e8cd33b4043b7eede3c308985730ea8f704b63e6f73c37
size 1917284

View File

@ -1,25 +0,0 @@
Index: gnulib/lib/mountlist.c
===================================================================
--- gnulib/lib/mountlist.c.orig 2007-12-02 12:57:51.000000000 +0100
+++ gnulib/lib/mountlist.c 2010-11-17 13:08:32.133380836 +0100
@@ -60,7 +60,7 @@
# include <mntent.h>
# if !defined MOUNTED
# if defined _PATH_MOUNTED /* GNU libc */
-# define MOUNTED _PATH_MOUNTED
+# define MOUNTED _PATH_MOUNTED
# endif
# if defined MNT_MNTTAB /* HP-UX. */
# define MOUNTED MNT_MNTTAB
@@ -71,6 +71,11 @@
# endif
#endif
+#if defined __linux__
+# undef MOUNTED
+# define MOUNTED "/proc/mounts"
+#endif
+
#ifdef MOUNTED_GETMNTINFO /* 4.4BSD. */
# include <sys/mount.h>
#endif

View File

@ -1,3 +1,184 @@
-------------------------------------------------------------------
Tue Jan 17 02:40:55 UTC 2012 - tabraham@novell.com
- removed patches deprecated by this release
- findutils-4.4.2-selinux.patch
- findutils-4.4.2-selinux-gnulib.patch
- findutils-4.4.2-fts-remount.patch
- refreshed other patches as required
- Update to 4.5.10
+ doc: The manual now includes a small number of references to
further reading on security.
+ fixed bug #30608: Automagic dependency on selinux. The configure
script now provides a --without-selinux option.
+ fixed bug #29949: find -execdir does not change working directory
+ fixed bug #31359: test-strstr unit test fails on alpha.
+ fixed bug #30777: find -exec echo TURNIP{} \+ is accepted but
TURNIP is eaten
+ fixed bug #30180: error message from incorrect -size option is off
+ fixed bug #29828: test suite deadlock on FreeBSD
+ updated translations - Finnish, Italian, Danish, Slovenian,
German, Estonian, French, Japanese and Danish
- Update to 4.5.9
+ fixed bug #29593: Make import-gnulib.sh work under a POSIX shell.
+ fixed bug #29511: fails to build on kfreebsd-*
+ fixed bug #27563: -L breaks -execdir
+ fixed bug #19593: -execdir .... {} + has suboptimal performance
(see below)
+ updated translation - Chinese (simplified)
+ The find program will once again build argument lists longer
than 1 with "-execdir ...+". The upper limit of 1 argument for
execdir was introduced as a workaround in findutils-4.3.4. The
limit is now removed, but find still does not issue the maximum
possible number of arguments, since an exec will occur each time
find encounters a subdirectory (if at least one argument is
pending).
+ You can now increase the parallelism of xargs in mid-run by
sending it SIGUSR1, and decrease the parallelism with SIGUSR2.
- Update to 4.5.8
+ fixed bug #29460: -printf %Y fails in $CWD-dependent way
+ fixed bug #27974: Use gnulib's xreadlinkat support
+ fixed bug #29435: fd_is_cloexec does not work on Fedora buildhosts
+ fixed bug #27221: symlink_loop check broken by FTS_CWDFD
+ fixed bug #27213: avoid failed assertions for non-executable
directories.
+ updated translations - Vietnamese, Czech, Dutch, Polish, Russian
- Update to 4.5.7
+ If you use the -fstype FOO predicate and specify a filsystem
type FOO which is not known (e.g. present in /etc/mtab) at the
time find starts, that predicate is now equivalent to -false.
This substitution currently occurs at optimisation level 2 and
above.
- Update to 4.5.6
+ patch #4848 - support for SELinux
+ fixed bug #29089 - SELinux --context and %Z options
+ fixed bug #28872: Mistake in "#safer" example in "Problems with
-exec and filenames" section of the Texinfo manual.
+ fixed bug #28824: Corrected error message for "-ctime x".
Likewise for -gid, -inum, -links, -mmin, -cmin, -amin,
-uid, -used, -atime, -mtime, -ctime.
+ fixed bug #27975: Infinite loop for -exec [..] {} +.
+ fixed bug #27846: Assertion failure in xargs.c on AIX.
+ fixed bug #27375: Open file descriptors leak into child processes.
+ fixed bug #27017: find -D opt / -fstype ext3 -print , -quit coredumps
+ fixed bug #27328: segfault if the initial exec for "find -exec" fails.
+ fixed bug #26868: compilation error in pred.c on Solaris x86_64
+ fixed bug #24873: Duplicate fprint option corrupts output
+ fixed bug #23920: warn about un-matchable -path arguments ending in /.
+ fixed bug #19120: Patch to fix single quotes in man page find(1)
+ fixed bug #26327: xargs man page is vague about the number of times
command is executed.
- Update to 4.5.5
+ xargs now handles the case where the system's actual exec limits
are smaller than the value of ARG_MAX at compile time. Very few
platforms normally have this property, but it is possible to
configure sume Unix systems this way.
+ fixed bug #25359 - files/testsuite/find.gnu/posix-h.exp test fail
+ fixed bug #26587 - fix a typo in -execdir documentation (it says
-exec by mistake in the text)
+ fixed bug #26537 - find -prune now makes sure it has valid stat()
information
+ fixed bug #22708 - exit status 126 and 127 from the utility invoked
from xargs now makes xargs return 123, meaning that exit status
values 126 and 127 not unambiguously mean that the utility could
not be run or could not be found, respectively.
+ doc: the -wholename option to find is no longer preferred over
-ipath
- Update to 4.5.4
+ The ftsfind executable (which is built by default as "find") now
calls fts() in such a way that it avoids calling stat() on directory
entries, if it doesn't need the information. This can produce a
significant speedup on filesystems which don't populate the d_type
element of struct dirent, for example reiserfs. Anecdotal evidence
suggests this can speed updatedb up from about 30 minutes to 3-4
minutes.
+ The ftsfind executable also now avoids calling stat() functions to
discover the inode number of a file, if we already read this
information from the directory. This does provide a speed-up, but
only for a restricted set of commands such as "find . -inum 4001".
This fix is listed below as bug #24342
+ fixed bug #25764 - remove duplicate entry for 'proc' in updatedb's
$PRUNEFS
+ fixed bug #25359 - find -H wrongly behaves like -L sometimes; this
bug affects only filesystems which populate d_type and affects
-type and -printf %y. This does not affect the default behavior of
find or find -P
+ fixed bug #25144 - misleading error message when argument to
find -user is an unknown user or is missing
+ fixed bug #25154 - allow compilation with C compilers that don't
allow declarations to follow statements
+ fixed bug #24342 - -inum predicate should use dirent.d_ino instead
of stat.st_ino (this is a performance bug)
+ updated translations - Bulgarian, German, Irish, Hungarian,
Lithuanian, Dutch, Polish, Slovenian, Swedish, Turkish, Ukranian,
Vietnamese
- Update to 4.5.3
+ fixed bug #24283 - find -printf %TY causes NULL pointer dereference
+ changes to gnulib's fts code should provide performance improvements
in find when processing very large directories (for example
directories containing significantly more than 10000 filenames).
Performance improvements may only exist for some find command
lines (performance testing was done for the fts implementation
itself but we haven't done the analogous performance tests in find).
+ file type information is also passed back from fts to find,
saving calls to the stat system call for find command lines
which don't need the stat information. This provides a performance
improvement for common cases like find "find . -type d".
- Update to 4.5.2
+ fixed bug #24169 - find would segfault if the -newerXY test was
not followed by any argument
+ fixed bug #23996 - integer overflow on some platforms when
parsing "-used 3"
+ New translation - Czech
+ Updated translations - French, Indonesian
+ doc: bug #23070 - corrected manpage description of find -perm /000
(the change was already made by the manpage indicated the change
would happen "soon")
- Update to 4.5.1
+ New translation - Lithuanian
+ Updated translation - Chinese (simplified)
+ doc: added a working example describing how to find the
shallowest instances of a given directoty name (or names) in a
directory hierarchy
+ fixed bug #22662 - find -printf %AX appends nanoseconds in the
right place now
+ fixed bug #23663 - crash in some locales for -print %AX (this
problem seems to have affected only the CVS code, and not any
public releases)
- Update to 4.5.0
+ If POSIXLY_CORRECT environment variable is set, the system's
definition of "yes" and "no" responses are used to interpret
the response to questions from -ok and -okdir. The default is
still to use information from the findutils message translations.
+ If xargs find that exec fails because the argument size limit it
calculated is larger than the system's actual maximum, it now
adapts by passing fewer arguments (as opposed to failing)
+ The default optimization level for find is now -O2 instead of
-O0 meaning that a number of additional optimizations are
performed by default. Current optimizations at each level are:
0: Perform -name, -path, -iname, -ipath before other checks
1: Expressions containing only cost-free tests are evaluated
before expressions which contain more costly tests
2: Bring forward all tests that need to know the type of a file
but don't need to stat it
3: All tests are ordered by their estimated cost
Cost here is simply an estimate of how time consuming the I/O
operations needed to make a test are
+ Various bug fixes (See NEWS)
-------------------------------------------------------------------
Thu Dec 1 15:47:34 UTC 2011 - coolo@suse.com

View File

@ -1,7 +1,7 @@
#
# spec file for package findutils
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -15,33 +15,27 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: findutils
Url: http://www.gnu.org/software/findutils/
License: GPL-3.0+
Group: Productivity/File utilities
Version: 4.4.2
Version: 4.5.10
Release: 0
Summary: The GNU versions of find utilities (find and xargs)
# retreived from http://ftp.gnu.org/pub/gnu/findutils/findutils-4.4.2.tar.gz
# retrieved from http://alpha.gnu.org/pub/gnu/findutils/findutils-4.5.10.tar.gz
Source: findutils-%{version}.tar.bz2
Source1: sysconfig.locate
Source2: cron.daily.updatedb
# Use /proc/mounts instead of /etc/mtab as autofs entries are only
# listed in the kernels >= 2.6.32
Patch0: findutils-use_proc_mounts.patch
Patch0: findutils-4.5.10-use_proc_mounts.patch
# adds a new option -xautofs to find to not descend into directories on autofs file systems
Patch1: findutils-4.4.2-xautofs.patch
# patch accepted by gnulib upstream - rhbz#538536
Patch2: findutils-4.4.2-fts-remount.patch
# gnulib based SELinux patch adding a new search predicate -context and
# a new -printf conversion %Z
Patch3: findutils-4.4.2-selinux.patch
# once the selinux-at module appears on the list within import-gnulib.config
# the following patch will be no longer needed
Patch4: findutils-4.4.2-selinux-gnulib.patch
Patch5: findutils-4.4.2-updatedb.patch
Patch6: findutils-prune_unknown.patch
Patch7: findutils-updatedb_ignore_nfsv4.patch
Patch2: findutils-4.4.2-updatedb.patch
Patch3: findutils-4.5.10-prune_unknown.patch
Patch4: findutils-4.5.10-updatedb_ignore_nfsv4.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: automake
%if 0%{?suse_version} > 1100
@ -85,11 +79,8 @@ switching on the computer.
%patch0
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5
%patch6
%patch7
%patch3
%patch4
%build
autoreconf