From 9ff77520035a0c9a12cf5af6b83eb7904c32f910 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Sun, 26 Jul 2009 01:45:41 +0000 Subject: [PATCH] - up to 4.4.2 Changed files: findutils-info.patch -> 1.13 findutils-pl.po-update.patch -> 1.20 findutils-selinux.patch -> 1.18 findutils.spec -> 1.99 --- findutils-info.patch | 532 ------------------------------- findutils-pl.po-update.patch | 58 ---- findutils-selinux.patch | 595 ++++++++++++++++++++++------------- findutils.spec | 20 +- 4 files changed, 388 insertions(+), 817 deletions(-) delete mode 100644 findutils-info.patch delete mode 100644 findutils-pl.po-update.patch diff --git a/findutils-info.patch b/findutils-info.patch deleted file mode 100644 index 499e9ec..0000000 --- a/findutils-info.patch +++ /dev/null @@ -1,532 +0,0 @@ ---- findutils-4.4.0/doc/find.texi.orig 2008-03-10 21:31:16.000000000 +0100 -+++ findutils-4.4.0/doc/find.texi 2008-03-16 00:00:13.875930612 +0100 -@@ -7,23 +7,16 @@ - @c %**end of header - - @include version.texi --@include ../locate/dblocation.texi - - @iftex - @finalout - @end iftex - --@dircategory Basics -+@dircategory Shell utilities: - @direntry --* Finding files: (find). Operating on files matching certain criteria. --@end direntry -- --@dircategory Individual utilities --@direntry --* find: (find)Invoking find. Finding and acting on files. --* locate: (find)Invoking locate. Finding files in a database. --* updatedb: (find)Invoking updatedb. Building the locate database. --* xargs: (find)Invoking xargs. Operating on many files. -+* Finding files: (find). Operating on files matching certain criteria -+* find: (find)find. Finding and acting on files -+* xargs: (find)xargs. Operating on many files - @end direntry - - @copying -@@ -225,9 +218,7 @@ - @section Overview - - The principal programs used for making lists of files that match given --criteria and running commands on them are @code{find}, @code{locate}, --and @code{xargs}. An additional command, @code{updatedb}, is used by --system administrators to create databases for @code{locate} to use. -+criteria and running commands on them are @code{find} and @code{xargs}. - - @code{find} searches for files in a directory hierarchy and prints - information about the files it found. It is run like this: -@@ -247,23 +238,6 @@ - Notice that the wildcard must be enclosed in quotes in order to - protect it from expansion by the shell. - --@code{locate} searches special file name databases for file names that --match patterns. The system administrator runs the @code{updatedb} --program to create the databases. @code{locate} is run like this: -- --@example --locate @r{[}@var{option}@dots{}@r{]} @var{pattern}@dots{} --@end example -- --@noindent --This example prints the names of all files in the default file name --database whose name ends with @samp{Makefile} or @samp{makefile}. --Which file names are stored in the database depends on how the system --administrator ran @code{updatedb}. --@example --locate '*[Mm]akefile' --@end example -- - The name @code{xargs}, pronounced EX-args, means ``combine - arguments.'' @code{xargs} builds and executes command lines by - gathering together arguments it reads on the standard input. Most -@@ -371,7 +345,6 @@ - @menu - * Base Name Patterns:: - * Full Name Patterns:: --* Fast Full Name Search:: - * Shell Pattern Matching:: Wildcards used by these programs. - @end menu - -@@ -504,78 +477,6 @@ - - @end deffn - --@node Fast Full Name Search --@subsection Fast Full Name Search -- --To search for files by name without having to actually scan the --directories on the disk (which can be slow), you can use the --@code{locate} program. For each shell pattern you give it, --@code{locate} searches one or more databases of file names and --displays the file names that contain the pattern. @xref{Shell Pattern --Matching}, for details about shell patterns. -- --If a pattern is a plain string---it contains no --metacharacters---@code{locate} displays all file names in the database --that contain that string. If a pattern contains --metacharacters, @code{locate} only displays file names that match the --pattern exactly. As a result, patterns that contain metacharacters --should usually begin with a @samp{*}, and will most often end with one --as well. The exceptions are patterns that are intended to explicitly --match the beginning or end of a file name. -- --If you only want @code{locate} to match against the last component of --the file names (the ``base name'' of the files) you can use the --@samp{--basename} option. The opposite behaviour is the default, but --can be selected explicitly by using the option @samp{--wholename}. -- --The command --@example --locate @var{pattern} --@end example -- --is almost equivalent to --@example --find @var{directories} -name @var{pattern} --@end example -- --where @var{directories} are the directories for which the file name --databases contain information. The differences are that the --@code{locate} information might be out of date, and that @code{locate} --handles wildcards in the pattern slightly differently than @code{find} --(@pxref{Shell Pattern Matching}). -- --The file name databases contain lists of files that were on the system --when the databases were last updated. The system administrator can --choose the file name of the default database, the frequency with which --the databases are updated, and the directories for which they contain --entries. -- --Here is how to select which file name databases @code{locate} --searches. The default is system-dependent. At the time this document --was generated, the default was @file{@value{LOCATE_DB}}. -- --@table @code --@item --database=@var{path} --@itemx -d @var{path} --Instead of searching the default file name database, search the file --name databases in @var{path}, which is a colon-separated list of --database file names. You can also use the environment variable --@code{LOCATE_PATH} to set the list of database files to search. The --option overrides the environment variable if both are used. --@end table -- --GNU @code{locate} can read file name databases generated by the --@code{slocate} package. However, these generally contain a list of --all the files on the system, and so when using this database, --@code{locate} will produce output only for files which are accessible --to you. @xref{Invoking locate}, for a description of the --@samp{--existing} option which is used to do this. -- --The @code{updatedb} program can also generate database in a format --compatible with @code{slocate}. @xref{Invoking updatedb}, for a --description of its @samp{--dbformat} and @samp{--output} options. -- -- - @node Shell Pattern Matching - @subsection Shell Pattern Matching - -@@ -2650,42 +2551,11 @@ - @samp{locate --statistics}. - - @menu --* Database Locations:: - * Database Formats:: - * Newline Handling:: - @end menu - - --@node Database Locations --@section Database Locations -- --There can be multiple file name databases. Users can select which --databases @code{locate} searches using the @code{LOCATE_PATH} --environment variable or a command line option. The system --administrator can choose the file name of the default database, the --frequency with which the databases are updated, and the directories --for which they contain entries. File name databases are updated by --running the @code{updatedb} program, typically nightly. -- --In networked environments, it often makes sense to build a database at --the root of each filesystem, containing the entries for that --filesystem. @code{updatedb} is then run for each filesystem on the --fileserver where that filesystem is on a local disk, to prevent --thrashing the network. -- --@xref{Invoking updatedb}, for the description of the options to --@code{updatedb}. These options can be used to specify which --directories are indexed by each database file. -- --The default location for the locate database depends on how findutils --is built, but the findutils installation accompanying this manual uses --the default location @file{@value{LOCATE_DB}}. -- --If no database exists at @file{@value{LOCATE_DB}} but the user did not --specify where to look (by using @samp{-d} or setting --@code{LOCATE_PATH}), then @code{locate} will also check for a --``secure'' database in @file{/var/lib/slocate/slocate.db}. -- - @node Database Formats - @section Database Formats - -@@ -2904,15 +2774,13 @@ - discussed in this manual. - - @menu --* Invoking find:: --* Invoking locate:: --* Invoking updatedb:: --* Invoking xargs:: -+* find:: -+* xargs:: - * Regular Expressions:: - * Environment Variables:: - @end menu - --@node Invoking find -+@node find - @section Invoking @code{find} - - @example -@@ -3120,268 +2988,7 @@ - actions, and options that the expression can contain. If the - expression is missing, @samp{-print} is assumed. - --@node Invoking locate --@section Invoking @code{locate} -- --@example --locate @r{[}@var{option}@dots{}@r{]} @var{pattern}@dots{} --@end example -- --For each @var{pattern} given @code{locate} searches one or more file --name databases returning each match of @var{pattern}. -- --For each @var{pattern} given @code{locate} searches one or more file --name databases returning each match of @var{pattern}. -- --@table @code --@item --all --@itemx -A --Print only names which match all non-option arguments, not those --matching one or more non-option arguments. -- --@item --basename --@itemx -b --The specified pattern is matched against just the last component of --the name of a file in the @code{locate} database. This last --component is also called the ``base name''. For example, the base --name of @file{/tmp/mystuff/foo.old.c} is @file{foo.old.c}. If the --pattern contains metacharacters, it must match the base name exactly. --If not, it must match part of the base name. -- --@item --count --@itemx -c --Instead of printing the matched file names, just print the total --number of matches found, unless @samp{--print} (@samp{-p}) is also --present. -- -- --@item --database=@var{path} --@itemx -d @var{path} --Instead of searching the default @code{locate} database --@file{@value{LOCATE_DB}}, @code{locate} searches the file --name databases in @var{path}, which is a colon-separated list of --database file names. You can also use the environment variable --@code{LOCATE_PATH} to set the list of database files to search. The --option overrides the environment variable if both are used. Empty --elements in @var{path} (that is, a leading or trailing colon, or two --colons in a row) are taken to stand for the default database. --A database can be supplied on stdin, using @samp{-} as an element --of @samp{path}. If more than one element of @samp{path} is @samp{-}, --later instances are ignored (but a warning message is printed). -- --@item --existing --@itemx -e --Only print out such names which currently exist (instead of such names --which existed when the database was created). Note that this may slow --down the program a lot, if there are many matches in the database. --The way in which broken symbolic links are treated is affected by the --@samp{-L}, @samp{-P} and @samp{-H} options. Please note that it is --possible for the file to be deleted after @code{locate} has checked --that it exists, but before you use it. This option is automatically --turned on when reading an @code{slocate} database in secure mode --(@pxref{slocate Database Format}). -- --@item --non-existing --@itemx -E --Only print out such names which currently do not exist (instead of --such names which existed when the database was created). Note that --this may slow down the program a lot, if there are many matches in the --database. The way in which broken symbolic links are treated is --affected by the @samp{-L}, @samp{-P} and @samp{-H} options. Please --note that @code{locate} checks that the file does not exist, but a --file of the same name might be created after @code{locate}'s check but --before you read @code{locate}'s output. -- --@item --follow --@itemx -L --If testing for the existence of files (with the @samp{-e} or @samp{-E} --options), consider broken symbolic links to be non-existing. This is --the default behaviour. -- --@item --nofollow --@itemx -P --@itemx -H --If testing for the existence of files (with the @samp{-e} or @samp{-E} --options), treat broken symbolic links as if they were existing files. --The @samp{-H} form of this option is provided purely for similarity --with @code{find}; the use of @samp{-P} is recommended over @samp{-H}. -- --@item --ignore-case --@itemx -i --Ignore case distinctions in both the pattern and the file names. -- --@item --limit=N --@itemx -l N --Limit the number of results printed to N. When used with the --@samp{--count} option, the value printed will never be larger than --this limit. --@item --max-database-age=D --Normally, @code{locate} will issue a warning message when it searches --a database which is more than 8 days old. This option changes that --value to something other than 8. The effect of specifying a negative --value is undefined. --@item --mmap --@itemx -m --Accepted but does nothing. The option is supported only to provide --compatibility with BSD's @code{locate}. -- --@item --null --@itemx -0 --Results are separated with the ASCII NUL character rather than the --newline character. To get the full benefit of this option, --use the new @code{locate} database format (that is the default --anyway). -- --@item --print --@itemx -p --Print search results when they normally would not be due to --use of @samp{--statistics} (@samp{-S}) or @samp{--count} --(@samp{-c}). -- --@item --wholename --@itemx -w --The specified pattern is matched against the whole name of the file in --the @code{locate} database. If the pattern contains metacharacters, --it must match exactly. If not, it must match part of the whole file --name. This is the default behaviour. -- --@item --regex --@itemx -r --Instead of using substring or shell glob matching, the pattern --specified on the command line is understood to be a regular --expression. GNU Emacs-style regular expressions are assumed unless --the @samp{--regextype} option is also given. File names from the --@code{locate} database are matched using the specified regular --expression. If the @samp{-i} flag is also given, matching is --case-insensitive. Matches are performed against the whole path name, --and so by default a pathname will be matched if any part of it matches --the specified regular expression. The regular expression may use --@samp{^} or @samp{$} to anchor a match at the beginning or end of a --pathname. -- --@item --regextype --This option changes the regular expression syntax and behaviour used --by the @samp{--regex} option. @ref{Regular Expressions} for more --information on the regular expression dialects understood by GNU --findutils. -- --@item --stdio --@itemx -s --Accepted but does nothing. The option is supported only to provide --compatibility with BSD's @code{locate}. -- --@item --statistics --@itemx -S --Print some summary information for each @code{locate} database. No --search is performed unless non-option arguments are given. --Although the BSD version of locate also has this option, the format of the --output is different. -- --@item --help --Print a summary of the command line usage for @code{locate} and exit. -- --@item --version --Print the version number of @code{locate} and exit. --@end table -- --@node Invoking updatedb --@section Invoking @code{updatedb} -- --@example --updatedb @r{[}@var{option}@dots{}@r{]} --@end example -- --@code{updatedb} creates and updates the database of file names used by --@code{locate}. @code{updatedb} generates a list of files similar to --the output of @code{find} and then uses utilities for optimizing the --database for performance. @code{updatedb} is often run periodically --as a @code{cron} job and configured with environment variables or --command options. Typically, operating systems have a shell script --that ``exports'' configurations for variable definitions and uses --another shell script that ``sources'' the configuration file into the --environment and then executes @code{updatedb} in the environment. -- --@code{updatedb} creates and updates the database of file names used by --@code{locate}. @code{updatedb} generates a list of files similar to --the output of @code{find} and then uses utilities for optimizing the --database for performance. @code{updatedb} is often run periodically --as a @code{cron} job and configured with environment variables or --command options. Typically, operating systems have a shell script --that ``exports'' configurations for variable definitions and uses --another shell script that ``sources'' the configuration file into the --environment and then executes @code{updatedb} in the environment. -- --@table @code --@item --findoptions='@var{OPTION}@dots{}' --Global options to pass on to @code{find}. --The environment variable @code{FINDOPTIONS} also sets this value. --Default is none. -- --@item --localpaths='@var{path}@dots{}' --Non-network directories to put in the database. --Default is @file{/}. -- --@item --netpaths='@var{path}@dots{}' --Network (NFS, AFS, RFS, etc.) directories to put in the database. --The environment variable @code{NETPATHS} also sets this value. --Default is none. -- --@item --prunepaths='@var{path}@dots{}' --Directories to omit from the database, which would otherwise be --included. The environment variable @code{PRUNEPATHS} also sets this --value. Default is @file{/tmp /usr/tmp /var/tmp /afs}. The paths are --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 --slashes. -- --@item --prunefs='@var{path}@dots{}' --Filesystems to omit from the database, which would otherwise be --included. Note that files are pruned when a filesystem is reached; --Any filesystem mounted under an undesired filesystem will be ignored. --The environment variable @code{PRUNEFS} also sets this value. Default --is @file{nfs NFS proc}. -- --@item --output=@var{dbfile} --The database file to build. The default is system-dependent, but --when this document was formatted it was @file{@value{LOCATE_DB}}. -- --@item --localuser=@var{user} --The user to search the non-network directories as, using @code{su}. --Default is to search the non-network directories as the current user. --You can also use the environment variable @code{LOCALUSER} to set this user. -- --@item --netuser=@var{user} --The user to search network directories as, using @code{su}. Default --@code{user} is @code{daemon}. You can also use the environment variable --@code{NETUSER} to set this user. -- --@item --old-format --Generate a @code{locate} database in the old format, for compatibility --with versions of @code{locate} other than GNU @code{locate}. Using --this option means that @code{locate} will not be able to properly --handle non-ASCII characters in file names (that is, file names --containing characters which have the eighth bit set, such as many of --the characters from the ISO-8859-1 character set). @xref{Database --Formats}, for a detailed description of the supported database --formats. -- --@item --dbformat=@var{FORMAT} --Generate the locate database in format @code{FORMAT}. Supported --database formats include @code{LOCATE02} (which is the default), --@code{old} and @code{slocate}. The @code{old} format exists for --compatibility with implementations of @code{locate} on other Unix --systems. The @code{slocate} format exists for compatibility with --@code{slocate}. @xref{Database Formats}, for a detailed description --of each format. -- --@item --help --Print a summary of the command line usage and exit. --@item --version --Print the version number of @code{updatedb} and exit. --@end table -- --@node Invoking xargs -+@node xargs - @section Invoking @code{xargs} - - @example -@@ -5091,8 +4698,6 @@ - @menu - * Error Messages From find:: - * Error Messages From xargs:: --* Error Messages From locate:: --* Error Messages From updatedb:: - @end menu - - @node Error Messages From find -@@ -5223,38 +4828,6 @@ - See the description of the similar message for @code{find}. - @end table - --@node Error Messages From locate --@section Error Messages From @code{locate} -- --@table @samp --@item warning: database @file{@value{LOCATE_DB}} is more than 8 days old --The @code{locate} program relies on a database which is periodically --built by the @code{updatedb} program. That hasn't happened in a long --time. To fix this problem, run @code{updatedb} manually. This can --often happen on systems that are generally not left on, so the --periodic ``cron'' task which normally does this doesn't get a chance --to run. -- --@item locate database @file{@value{LOCATE_DB}} is corrupt or invalid --This should not happen. Re-run @code{updatedb}. If that works, but --@code{locate} still produces this error, run @code{locate --version} --and @code{updatedb --version}. These should produce the same output. --If not, you are using a mixed toolset; check your @samp{$PATH} --environment variable and your shell aliases (if you have any). If --both programs claim to be GNU versions, this is a bug; all versions of --these programs should interoperate without problem. Ask for help on --@email{bug-findutils@@gnu.org}. --@end table -- -- --@node Error Messages From updatedb --@section Error Messages From updatedb -- --The @code{updatedb} program (and the programs it invokes) do issue --error messages, but none seem to be candidates for guidance. If --you are having a problem understanding one of these, ask for help on --@email{bug-findutils@@gnu.org}. -- - @node GNU Free Documentation License - @appendix GNU Free Documentation License - @include fdl.texi diff --git a/findutils-pl.po-update.patch b/findutils-pl.po-update.patch deleted file mode 100644 index 29261ba..0000000 --- a/findutils-pl.po-update.patch +++ /dev/null @@ -1,58 +0,0 @@ ---- findutils-4.4.0/po/pl.po.orig 2008-03-15 12:43:32.000000000 +0100 -+++ findutils-4.4.0/po/pl.po 2008-03-17 20:33:46.545320968 +0100 -@@ -5,10 +5,10 @@ - # - msgid "" - msgstr "" --"Project-Id-Version: findutils 4.3.13\n" -+"Project-Id-Version: findutils 4.4.0\n" - "Report-Msgid-Bugs-To: bug-findutils@gnu.org\n" - "POT-Creation-Date: 2008-03-15 11:43+0000\n" --"PO-Revision-Date: 2008-02-15 00:07+0100\n" -+"PO-Revision-Date: 2008-03-16 00:10+0100\n" - "Last-Translator: Jakub Bogusz \n" - "Language-Team: Polish \n" - "MIME-Version: 1.0\n" -@@ -263,13 +263,13 @@ - "numer urz±dzenia %ld, typ systemu plików to %s) [ref %ld]" - - #: find/find.c:528 --#, fuzzy, c-format -+#, c-format - msgid "" - "%s%s changed during execution of %s (old inode number %, new inode " - "number %, file system type is %s) [ref %ld]" - msgstr "" --"%s%s zmieni³ siê podczas wykonywania %s (stary numer i-wêz³a %ld, nowy numer " --"i-wêz³a %ld, typ systemu plików %s) [ref %ld]" -+"%s%s zmieni³ siê podczas wykonywania %s (stary numer i-wêz³a %, " -+"nowy numer i-wêz³a %, typ systemu plików %s) [ref %ld]" - - #: find/find.c:1012 - #, c-format -@@ -961,7 +961,7 @@ - msgstr "Wszystkie nazwy plików: %s\n" - - #: locate/locate.c:912 --#, fuzzy, c-format -+#, c-format - msgid "" - "File names have a cumulative length of %s bytes.\n" - "Of those file names,\n" -@@ -970,12 +970,12 @@ - "\t%s contain newline characters, \n" - "\tand %s contain characters with the high bit set.\n" - msgstr "" --"Nazwy plików maj± ³±czn± d³ugo¶æ %1$s bajtów.\n" -+"Nazwy plików maj± ³±czn± d³ugo¶æ %s bajtów.\n" - "W¶ród tych nazw:\n" - "\n" --"\t%2$s zawiera spacje,\n" --"\t%3$s zawiera znaki nowej linii,\n" --"\ta %4$s zawiera znaki z ustawionym najstarszym bitem.\n" -+"\t%s zawiera spacje,\n" -+"\t%s zawiera znaki nowej linii,\n" -+"\ta %s zawiera znaki z ustawionym najstarszym bitem.\n" - - #: locate/locate.c:926 - #, c-format diff --git a/findutils-selinux.patch b/findutils-selinux.patch index af954de..cc68c67 100644 --- a/findutils-selinux.patch +++ b/findutils-selinux.patch @@ -1,73 +1,116 @@ ---- findutils-4.4.0/find/Makefile.am.orig 2007-07-22 14:29:31.000000000 +0200 -+++ findutils-4.4.0/find/Makefile.am 2008-03-16 01:19:36.539333465 +0100 -@@ -25,8 +25,9 @@ - endif +diff -up findutils-4.4.2/configure.ac_old findutils-4.4.2/configure.ac +--- findutils-4.4.2/configure.ac_old 2009-07-01 10:24:04.000000000 +0200 ++++ findutils-4.4.2/configure.ac 2009-07-01 10:24:46.000000000 +0200 +@@ -114,6 +114,16 @@ AC_CHECK_LIB([m],[fabs],[FINDLIBS="-lm $ + AC_DEFINE_UNQUOTED(HAVE_FABS_IN_LIBM,1,[fabs is defined in -lm])) + AC_SUBST([FINDLIBS]) - EXTRA_DIST = defs.h $(man_MANS) -+DEFS = @DEFS@ -DWITH_SELINUX - 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@ -lselinux - man_MANS = find.1 - SUBDIRS = . testsuite ++AC_ARG_WITH([selinux], ++ AS_HELP_STRING([--without-selinux], [disable SELinux support]), ++ [:], ++[AC_CHECK_LIB([selinux], [is_selinux_enabled], ++ [with_selinux=yes], [with_selinux=no])]) ++if test x$with_selinux != xno; then ++ AC_DEFINE([WITH_SELINUX], [1], [Define to support SELinux]) ++ AC_SUBST([LIBSELINUX], [-lselinux]) ++fi ++ + dnl Checks for header files. + AC_HEADER_STDC + dnl Assume unistd.h is present - coreutils does too. +diff -up findutils-4.4.2/doc/find.texi_old findutils-4.4.2/doc/find.texi +--- findutils-4.4.2/doc/find.texi_old 2009-07-01 10:25:09.000000000 +0200 ++++ findutils-4.4.2/doc/find.texi 2009-07-01 10:26:37.000000000 +0200 +@@ -7,7 +7,6 @@ + @c %**end of header + + @include version.texi +-@include ../locate/dblocation.texi + + @iftex + @finalout +@@ -1242,6 +1241,14 @@ situation. ---- findutils-4.4.0/find/defs.h.orig 2008-03-10 10:37:21.000000000 +0100 -+++ findutils-4.4.0/find/defs.h 2008-03-16 01:22:53.718566717 +0100 -@@ -49,6 +49,9 @@ - #include /* for uintmax_t */ - #include /* S_ISUID etc. */ + @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 + +@@ -1826,6 +1833,9 @@ value used for BLOCKSIZE is system-depen + bytes. If the file size is zero, the value printed is undefined. On + systems which lack support for st_blocks, a file's sparseness is + assumed to be 1.0. ++@item %Z ++File's SELinux context, or empty string if the file has no SELinux context ++or this version of find does not support SELinux. + @end table + + @node Location Directives +diff -up findutils-4.4.2/find/defs.h_old findutils-4.4.2/find/defs.h +--- findutils-4.4.2/find/defs.h_old 2009-07-01 12:38:32.000000000 +0200 ++++ findutils-4.4.2/find/defs.h 2009-07-01 12:52:47.000000000 +0200 +@@ -91,6 +91,9 @@ int get_statinfo PARAMS((const char *pat + #define MODE_RWX (S_IXUSR | S_IXGRP | S_IXOTH | MODE_RW) + #define MODE_ALL (S_ISUID | S_ISGID | S_ISVTX | MODE_RWX) +#ifdef WITH_SELINUX +#include -+#endif /*WITH_SELINUX*/ - ++#endif - #ifndef CHAR_BIT -@@ -314,6 +317,9 @@ - struct perm_val perm; /* perm */ + struct predicate; + struct options; +@@ -315,6 +318,9 @@ 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 */ +#ifdef WITH_SELINUX + security_context_t scontext; /* scontext */ -+#endif /*WITH_SELINUX*/ - struct format_val printf_vec; /* printf fprintf fprint ls fls print0 fprint0 print */ ++#endif } args; -@@ -589,6 +595,10 @@ - /* Pointer to the function used to stat files. */ - int (*xstat) (const char *name, struct stat *statbuf); - + /* The next predicate in the user input sequence, +@@ -459,6 +465,9 @@ PREDICATEFUNCTION pred_used; + PREDICATEFUNCTION pred_user; + PREDICATEFUNCTION pred_writable; + PREDICATEFUNCTION pred_xtype; +#ifdef WITH_SELINUX -+ int (*x_getfilecon) (); -+#endif /* WITH_SELINUX */ -+ ++PREDICATEFUNCTION pred_context; ++#endif - /* Indicate if we can implement safely_chdir() using the O_NOFOLLOW - * flag to open(2). -@@ -657,4 +667,9 @@ - extern char *program_name; +@@ -601,6 +610,10 @@ struct options + */ + int regex_options; + +#ifdef WITH_SELINUX -+PREDICATEFUNCTION pred_scontext; -+extern int (*x_getfilecon) (); -+#endif /*WITH_SELINUX*/ ++ int (*x_getfilecon) (); ++#endif + - #endif ---- findutils-4.4.0/find/find.1.orig 2007-12-19 20:53:14.000000000 +0100 -+++ findutils-4.4.0/find/find.1 2008-03-16 01:24:14.939206112 +0100 -@@ -935,6 +935,10 @@ + /* Optimisation level. One is the default. + */ + unsigned short optimisation_level; +diff -up findutils-4.4.2/find/find.1_old findutils-4.4.2/find/find.1 +--- findutils-4.4.2/find/find.1_old 2009-07-01 10:30:04.000000000 +0200 ++++ findutils-4.4.2/find/find.1 2009-07-01 10:30:59.000000000 +0200 +@@ -933,6 +933,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. -+.IP "\-context \fIscontext\fR" -+.IP "\-\-context \fIscontext\fR" -+(SELinux only) File has the security context \fIscontext\fR. -+ .SS ACTIONS .IP "\-delete\fR" - Delete files; true if removal succeeded. If the removal failed, an -@@ -1340,6 +1344,8 @@ +@@ -1354,6 +1356,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 @@ -76,208 +119,371 @@ .PP A `%' character followed by any other character is discarded, but the other character is printed (don't rely on this, as further format ---- findutils-4.4.0/find/parser.c.orig 2008-03-10 10:37:21.000000000 +0100 -+++ findutils-4.4.0/find/parser.c 2008-03-17 20:23:52.047453360 +0100 +diff -up findutils-4.4.2/find/find.c_old findutils-4.4.2/find/find.c +--- findutils-4.4.2/find/find.c_old 2009-07-01 10:26:53.000000000 +0200 ++++ findutils-4.4.2/find/find.c 2009-07-01 10:29:52.000000000 +0200 +@@ -120,6 +120,36 @@ int get_current_dirfd(void) + return AT_FDCWD; + } + ++#ifdef WITH_SELINUX ++static int ++fallback_getfilecon(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 lgetfilecon(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; ++ } ++} ++#endif /* WITH_SELINUX */ ++ + + int + main (int argc, char **argv) +@@ -1270,7 +1300,7 @@ process_path (char *pathname, char *name + static void + process_dir (char *pathname, char *name, int pathlen, const struct stat *statp, char *parent) + { +- int subdirs_left; /* Number of unexamined subdirs in PATHNAME. */ ++ int subdirs_left = 0; /* Number of unexamined subdirs in PATHNAME. */ + boolean subdirs_unreliable; /* if true, cannot use dir link count as subdir limif (if false, it may STILL be unreliable) */ + unsigned int idx; /* Which entry are we on? */ + struct stat stat_buf; +diff -up findutils-4.4.2/find/Makefile.am_old findutils-4.4.2/find/Makefile.am +--- findutils-4.4.2/find/Makefile.am_old 2009-07-01 10:35:04.000000000 +0200 ++++ findutils-4.4.2/find/Makefile.am 2009-07-01 10:35:37.000000000 +0200 +@@ -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@ @LIBSELINUX@ + man_MANS = find.1 + SUBDIRS = . testsuite + +diff -up findutils-4.4.2/find/parser.c_old findutils-4.4.2/find/parser.c +--- findutils-4.4.2/find/parser.c_old 2009-07-01 10:35:43.000000000 +0200 ++++ findutils-4.4.2/find/parser.c 2009-07-01 12:38:19.000000000 +0200 @@ -53,6 +53,10 @@ - #include + #include #include +#ifdef WITH_SELINUX +#include -+#endif /*WITH_SELINUX*/ ++#endif + #if ENABLE_NLS # include # define _(Text) gettext (Text) -@@ -156,6 +160,9 @@ +@@ -155,6 +159,9 @@ 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)); +#ifdef WITH_SELINUX -+static boolean parse_scontext PARAMS((const struct parser_table*, char *argv[], int *arg_ptr)); -+#endif /*WITH_SELINUX*/ ++static boolean parse_context PARAMS((const struct parser_table*, char *argv[], int *arg_ptr)); ++#endif boolean parse_print PARAMS((const struct parser_table*, char *argv[], int *arg_ptr)); -@@ -322,6 +329,10 @@ - {ARG_TEST, "writable", parse_accesscheck, pred_writable}, /* GNU, 4.3.0+ */ - PARSE_OPTION ("xdev", xdev), /* POSIX */ - PARSE_TEST ("xtype", xtype), /* GNU */ +@@ -251,6 +258,9 @@ 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 */ +#ifdef WITH_SELINUX -+ PARSE_TEST ("context", scontext), /* SELINUX */ -+ PARSE_TEST ("-context", scontext), /* SELINUX */ -+#endif /*WITH_SELINUX*/ - #ifdef UNIMPLEMENTED_UNIX - /* It's pretty ugly for find to know about archive formats. - Plus what it could do with cpio archives is very limited. -@@ -451,11 +462,17 @@ ++ PARSE_TEST ("context", context), /* GNU */ ++#endif + 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 */ +@@ -347,6 +357,89 @@ static struct parser_table const parse_t + static const char *first_nonoption_arg = NULL; + static const struct parser_table *noop = NULL; + ++#ifdef WITH_SELINUX ++static int ++fallback_getfilecon(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 lgetfilecon(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(const char *name, security_context_t *p) ++{ ++ if (0 == state.curdepth) ++ { ++ /* This file is from the command line; deference the link (if it ++ * is a link). ++ */ ++ int rv = getfilecon(name, p); ++ if (0 == rv) ++ return 0; /* success */ ++ else ++ return fallback_getfilecon(name, p, rv); ++ } ++ else ++ { ++ /* Not a file on the command line; do not derefernce the link. ++ */ ++ return lgetfilecon(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(const char *name, security_context_t *p) ++{ ++ int rv = getfilecon(name, p); ++ if (0 == rv) ++ return 0; /* normal case. */ ++ else ++ return fallback_getfilecon(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(const char *name, security_context_t *p) ++{ ++ return lgetfilecon(name, p); ++} ++#endif /* WITH_SELINUX */ + + void + check_option_combinations(const struct predicate *p) +@@ -450,11 +543,17 @@ set_follow_state(enum SymlinkOption opt) { case SYMLINK_ALWAYS_DEREF: /* -L */ options.xstat = optionl_stat; +#ifdef WITH_SELINUX -+ options.x_getfilecon = getfilecon; -+#endif /* WITH_SELINUX */ ++ options.x_getfilecon = optionl_getfilecon; ++#endif options.no_leaf_check = true; break; - + case SYMLINK_NEVER_DEREF: /* -P (default) */ options.xstat = optionp_stat; +#ifdef WITH_SELINUX -+ options.x_getfilecon = lgetfilecon; -+#endif /* WITH_SELINUX */ - /* Can't turn no_leaf_check off because the user might have specified ++ options.x_getfilecon = optionp_getfilecon; ++#endif + /* Can't turn no_leaf_check off because the user might have specified * -noleaf anyway */ -@@ -463,6 +480,9 @@ - +@@ -462,6 +561,9 @@ set_follow_state(enum SymlinkOption opt) + case SYMLINK_DEREF_ARGSONLY: /* -H */ options.xstat = optionh_stat; +#ifdef WITH_SELINUX -+ options.x_getfilecon = getfilecon; -+#endif /* WITH_SELINUX */ ++ options.x_getfilecon = optionh_getfilecon; ++#endif options.no_leaf_check = true; } } -@@ -1129,6 +1149,10 @@ +@@ -1127,8 +1229,12 @@ 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]\n")); ++ -used N -user NAME -xtype [bcdpfls]")); +#ifdef WITH_SELINUX -+ puts (_("\ -+ -context CONTEXT\n")); -+#endif /*WITH_SELINUX*/ puts (_("\ ++ -context CONTEXT\n")); ++#endif ++ puts (_("\n\ actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print \n\ -fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit\n\ -@@ -2392,6 +2416,30 @@ - } + -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;\n\ +@@ -2518,6 +2624,10 @@ parse_version (const struct parser_table + printf("LEAF_OPTIMISATION "); + ++features; + #endif ++#if defined(WITH_SELINUX) ++ printf("SELINUX "); ++ ++features; ++#endif + + flags = 0; + if (is_fts_enabled(&flags)) +@@ -2552,6 +2662,32 @@ parse_version (const struct parser_table + exit (0); } +#ifdef WITH_SELINUX -+ +static boolean -+parse_scontext (const struct parser_table *entry, char **argv, int *arg_ptr) ++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 ((argv == NULL) || (argv[*arg_ptr] == NULL)) ++ return false; + -+ our_pred = insert_primary_withpred (entry, pred_scontext); -+ our_pred->need_stat = our_pred->need_type = 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->need_stat = false; +#ifdef DEBUG -+ our_pred->p_name = find_pred_name (pred_scontext); ++ our_pred->p_name = find_pred_name (pred_context); +#endif /*DEBUG*/ -+ -+ our_pred->args.scontext = argv[*arg_ptr];; ++ our_pred->args.scontext = argv[*arg_ptr]; + + (*arg_ptr)++; -+ return( true ); ++ return true; +} -+ -+#endif /*WITH_SELINUX*/ ++#endif /* WITH_SELINUX */ + static boolean - parse_used (const struct parser_table* entry, char **argv, int *arg_ptr) + parse_xdev (const struct parser_table* entry, char **argv, int *arg_ptr) { -@@ -2777,7 +2825,11 @@ +@@ -2803,7 +2939,7 @@ insert_fprintf (struct format_val *vec, if (*scan2 == '.') for (scan2++; ISDIGIT (*scan2); scan2++) /* Do nothing. */ ; -+#ifdef WITH_SELINUX +- if (strchr ("abcdDfFgGhHiklmMnpPsStuUyY", *scan2)) + if (strchr ("abcdDfFgGhHiklmMnpPsStuUyYZ", *scan2)) -+#else /* WITH_SELINUX */ - if (strchr ("abcdDfFgGhHiklmMnpPsStuUyY", *scan2)) -+#endif /* WITH_SELINUX */ { segmentp = make_segment (segmentp, format, scan2 - format, KIND_FORMAT, *scan2, 0, ---- findutils-4.2.11/find/pred.c.orig 2005-01-03 01:15:48.000000000 +0100 -+++ findutils-4.2.11/find/pred.c 2005-01-09 18:22:25.204312920 +0100 -@@ -30,6 +30,14 @@ - #include "filemode.h" - #include "wait.h" +@@ -2930,6 +3066,7 @@ make_segment (struct segment **segment, + case 'h': /* leading directories part of path */ + case 'p': /* pathname */ + case 'P': /* pathname with ARGV element stripped */ ++ case 'Z': /* SELinux security context */ + *fmt++ = 's'; + break; + +diff -up findutils-4.4.2/find/pred.c_old findutils-4.4.2/find/pred.c +--- findutils-4.4.2/find/pred.c_old 2009-07-01 10:31:11.000000000 +0200 ++++ findutils-4.4.2/find/pred.c 2009-07-01 10:33:45.000000000 +0200 +@@ -48,6 +48,10 @@ + #include "error.h" + #include "verify.h" +#ifdef WITH_SELINUX +#include +#endif /*WITH_SELINUX*/ -+ -+#ifndef FNM_CASEFOLD -+#define FNM_CASEFOLD (1<<4) -+#endif /*FNM_CASEFOLD*/ + #if ENABLE_NLS # include # define _(Text) gettext (Text) -@@ -73,7 +81,6 @@ - - extern int yesno (); - -- - /* Get or fake the disk device blocksize. - Usually defined by sys/param.h (if at all). */ - #ifndef DEV_BSIZE -@@ -202,6 +209,9 @@ - {pred_used, "used "}, +@@ -230,6 +234,9 @@ struct pred_assoc pred_table[] = {pred_user, "user "}, + {pred_writable, "writable "}, {pred_xtype, "xtype "}, +#ifdef WITH_SELINUX -+ {pred_scontext, "context"}, ++ {pred_context, "context"}, +#endif /*WITH_SELINUX*/ {0, "none "} }; - -@@ -813,6 +823,26 @@ - + #endif +@@ -1054,6 +1061,27 @@ do_fprintf(struct format_val *dest, + mode_to_filetype(stat_buf->st_mode & S_IFMT)); } break; ++ case 'Z': /* SELinux security context */ +#ifdef WITH_SELINUX -+ case 'Z': /* SELinux security context */ -+ { -+ security_context_t scontext; -+ int rv; -+ rv = (*options.x_getfilecon)(state.rel_pathname, &scontext); ++ { ++ security_context_t scontext; ++ int rv; ++ rv = (*options.x_getfilecon) (state.rel_pathname, &scontext); + -+ if ( rv < 0 ) { -+ (void) fprintf(stderr, "getfileconf(%s): %s", -+ pathname, strerror(errno)); -+ (void) fflush(stderr); -+ } -+ else { -+ segment->text[segment->text_len] = 's'; -+ checked_fprintf (dest, segment->text, scontext); -+ freecon(scontext); -+ } -+ } -+ break ; ++ if (rv < 0) ++ { ++ fprintf (stderr, "getfilecon(%s): %s", pathname, ++ strerror(errno)); ++ fflush (stderr); ++ } ++ else ++ { ++ checked_fprintf (dest, segment->text, scontext); ++ freecon (scontext); ++ } ++ } +#endif /* WITH_SELINUX */ ++ break; } - } - return (true); -@@ -1366,6 +1396,31 @@ + /* end of KIND_FORMAT case */ + break; +@@ -1844,6 +1872,32 @@ pred_xtype (const char *pathname, struct */ return (pred_type (pathname, &sbuf, pred_ptr)); } + -+ +#ifdef WITH_SELINUX + +boolean -+pred_scontext (const char *pathname, struct stat *stat_buf, struct predicate *pred_ptr) ++pred_context (const char *pathname, struct stat *stat_buf, ++ struct predicate *pred_ptr) +{ + int rv; + security_context_t scontext; + -+ rv = (*options.x_getfilecon)(state.rel_pathname, &scontext); ++ rv = (*options.x_getfilecon) (state.rel_pathname, &scontext); + -+ if ( rv < 0 ) { -+ (void) fprintf(stderr, "getfilecon(%s): %s\n", pathname, strerror(errno)); -+ (void) fflush(stderr); -+ return ( false ); -+ } ++ if (rv < 0) ++ { ++ fprintf (stderr, "getfilecon(%s): %s\n", pathname, strerror(errno)); ++ fflush (stderr); ++ return false; ++ } + -+ rv= (strcmp(scontext, pred_ptr->args.scontext) == 0); -+ freecon(scontext); ++ rv = (fnmatch (pred_ptr->args.scontext, scontext, 0) == 0); ++ freecon (scontext); + return rv; +} + @@ -286,67 +492,26 @@ /* 1) fork to get a child; parent remembers the child pid 2) child execs the command requested ---- findutils-4.4.0/find/tree.c.orig 2007-12-20 22:40:35.000000000 +0100 -+++ findutils-4.4.0/find/tree.c 2008-03-17 20:21:28.427267235 +0100 -@@ -1194,6 +1194,9 @@ - struct predicate *cur_pred; - const struct parser_table *entry_close, *entry_print, *entry_open; - int i, oldi; -+#ifdef WITH_SELINUX -+ int is_selinux_enabled_flag; -+#endif /* WITH_SELINUX */ - - predicates = NULL; - -@@ -1230,6 +1233,14 @@ - } - - predicate_name = argv[i]; -+#ifdef WITH_SELINUX -+ if (! is_selinux_enabled_flag) { -+ if ((strncmp(predicate_name,"-context",strlen("-context"))==0) || -+ (strncmp(predicate_name,"--context",strlen("--context"))==0)) { -+ error (1, 0,_("Error: invalid predicate %s: the kernel is not SELinux-enabled.\n"),predicate_name); -+ } -+ } -+#endif - parse_entry = find_parser (predicate_name); - if (parse_entry == NULL) - { ---- findutils-4.4.0/find/util.c.orig 2008-03-10 10:37:22.000000000 +0100 -+++ findutils-4.4.0/find/util.c 2008-03-16 01:28:33.177920622 +0100 -@@ -97,6 +97,9 @@ - new_pred->pred_func = pred_func; - new_pred->p_name = entry->parser_name; - new_pred->args.str = NULL; +diff -up findutils-4.4.2/find/tree.c_old findutils-4.4.2/find/tree.c +--- findutils-4.4.2/find/tree.c_old 2009-07-01 10:33:57.000000000 +0200 ++++ findutils-4.4.2/find/tree.c 2009-07-01 10:34:54.000000000 +0200 +@@ -953,7 +953,8 @@ static struct pred_cost_lookup costlooku + { pred_used , NeedsStatInfo }, + { pred_user , NeedsStatInfo }, + { pred_writable , NeedsAccessInfo }, +- { pred_xtype , NeedsType } /* roughly correct unless most files are symlinks */ ++ { pred_xtype , NeedsType }, /* roughly correct unless most files are symlinks */ ++ { pred_context , NeedsNothing } /* remove warning only:) */ + }; + static int pred_table_sorted = 0; + +@@ -1434,6 +1435,9 @@ get_new_pred (const struct parser_table + last_pred->need_stat = true; + last_pred->need_type = true; + last_pred->args.str = NULL; +#ifdef WITH_SELINUX -+ new_pred->args.scontext = NULL; ++ last_pred->args.scontext = NULL; +#endif - new_pred->p_type = PRIMARY_TYPE; - new_pred->p_prec = NO_PREC; - return new_pred; ---- findutils-4.4.0/po/pl.po.orig 2008-03-15 12:43:32.000000000 +0100 -+++ findutils-4.4.0/po/pl.po 2008-03-17 20:28:05.717905863 +0100 -@@ -453,6 +453,10 @@ - " -wholename WZORZEC -size N[bcwkMG] -true -type [bcdpflsD] -uid N\n" - " -used N -user NAZWA -xtype [bcdpfls]\n" - -+#: find/parser.c:1154 -+msgid " -context CONTEXT\n" -+msgstr " -context KONTEKST\n" -+ - #: find/parser.c:1132 - msgid "" - "actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print \n" -@@ -755,6 +759,11 @@ - msgid "unknown predicate `%s'" - msgstr "nieznane wyra¿enie `%s'" - -+#: find/tree.c:1241 -+#, c-format -+msgid "Error: invalid predicate %s: the kernel is not SELinux-enabled.\n" -+msgstr "B³±d: b³êdne wyra¿enie %s: j±dro nie ma w³±czonej obs³ugi SELinuksa.\n" -+ - #: find/tree.c:1257 - #, c-format - msgid "invalid predicate `%s'" + last_pred->pred_next = NULL; + last_pred->pred_left = NULL; + last_pred->pred_right = NULL; diff --git a/findutils.spec b/findutils.spec index 7cc6d1d..1d6c555 100644 --- a/findutils.spec +++ b/findutils.spec @@ -10,21 +10,19 @@ Summary(pl.UTF-8): Narzędzia GNU do odnajdywania plików (find, xargs) Summary(pt_BR.UTF-8): Utilitários de procura da GNU Summary(tr.UTF-8): GNU dosya arama araçları Name: findutils -Version: 4.4.0 -Release: 2 +Version: 4.4.2 +Release: 1 Epoch: 1 License: GPL v3+ Group: Applications/File # development versions at ftp://alpha.gnu.org/gnu/findutils/ Source0: http://ftp.gnu.org/gnu/findutils/%{name}-%{version}.tar.gz -# Source0-md5: 49e769ac4382fae6f104f99d54d0a112 +# Source0-md5: 351cc4adb07d54877fa15f75fb77d39f #Source1: http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-man-pages.tar.bz2 Source1: %{name}-non-english-man-pages.tar.bz2 # Source1-md5: e76388b0c3218eec3557d05ccd6d6515 -Patch0: %{name}-info.patch -Patch1: %{name}-selinux.patch -Patch2: %{name}-man-selinux.patch -Patch3: %{name}-pl.po-update.patch +Patch0: %{name}-selinux.patch +Patch1: %{name}-man-selinux.patch URL: http://www.gnu.org/software/findutils/ BuildRequires: autoconf >= 2.59 BuildRequires: automake @@ -84,10 +82,8 @@ arayabilirsiniz. %prep %setup -q -%patch0 -p1 -%patch3 -p1 -%{?with_selinux:%patch1 -p1} -# patch2 is applied in install stage +%{?with_selinux:%patch0 -p1} +# patch1 is applied in install stage rm -f po/stamp-po @@ -107,7 +103,7 @@ rm -rf $RPM_BUILD_ROOT DESTDIR=$RPM_BUILD_ROOT bzip2 -dc %{SOURCE1} | tar xf - -C $RPM_BUILD_ROOT%{_mandir} -%{?with_selinux:patch -p0 -d $RPM_BUILD_ROOT%{_mandir} < %{PATCH2}} +%{?with_selinux:patch -p0 -d $RPM_BUILD_ROOT%{_mandir} < %{PATCH1}} # xargs is wanted in /bin install -d $RPM_BUILD_ROOT/bin -- 2.44.0