summaryrefslogtreecommitdiffstats
path: root/usr.bin/find/function.c
Commit message (Collapse)AuthorAgeFilesLines
* MFC r272762: Correct scale factor for T terabyte suffixemaste2014-10-111-1/+1
| | | | PR: 194250
* MFC: r264418brueffer2014-04-221-1/+0
| | | | | | | Avoid double free in f_acl(). CID: 1018508 Found with: Coverity Prevent(tm)
* MFC r263244: find: When performing -quit, finish pending -exec ... + commandjilles2014-04-051-0/+1
| | | | | | | | | lines. This avoids unexpected partial processing when a find command uses both -quit and -exec ... +. GNU find does the same.
* MFC r260336,r260355: find: Fix -lname and -ilname:jilles2014-01-121-2/+15
| | | | | | | | | | | | | | | | | | * Take into account that readlink() does not add a terminating '\0'. * Do not match symlinks that are followed because of -H or -L. This is explicitly documented in GNU find's info file and is like -type l. * Fix matching symlinks in subdirectories when fts changes directories. As before, symlinks of length PATH_MAX or more are not handled correctly. (These can only be created on other operating systems.) Also, avoid some readlink() calls on files that are obviously not symlinks (because of fts(3) restrictions, not all of them). PR: bin/185393 Submitted by: Ben Reser (parts, original version)
* find: Allow -delete to delete files given as arguments.jilles2013-08-021-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Formerly, a command like find dir1/dir2 -delete would delete everything under dir1/dir2 but not dir1/dir2 itself. When -L is not specified and "." can be opened, the fts(3) code underlying find(1) is careful to avoid following symlinks or being dropped in different locations by moving the directory fts is currently traversing. If a problematic concurrent modification is detected, fts will not enter the directory or abort. Files found in the search are returned via the current working directory and a pathname not containing a slash. For paranoia, find(1) verifies this when -delete is used. However, it is too paranoid about the root of the traversal. It is already assumed that the initial pathname does not refer to directories or symlinks that might be replaced by untrusted users; otherwise, the whole traversal would be unsafe. Therefore, it is not necessary to do the check for fts_level == FTS_ROOTLEVEL. Deleting the pathnames given as arguments can be prevented without error messages using -mindepth 1 or by changing directory and passing "." as argument to find. This works in the old as well as the new version of find. Tested by: Kurt Lidl Reviewed by: jhb
* find: Include nanoseconds when comparing timestamps of files.jilles2013-03-171-19/+28
| | | | | | | | | | | | | | | When comparing to the timestamp of a given file using -newer, -Xnewer and -newerXY (where X and Y are one of m, c, a, B), include nanoseconds in the comparison. The primaries that compare a timestamp of a file to a given value (-Xmin, -Xtime, -newerXt) continue to compare times in whole seconds. Note that the default value 0 of vfs.timestamp_precision almost always causes the nanoseconds part to be 0. However, touch -d can set a timestamp to the microsecond regardless of that sysctl. MFC after: 1 week
* Add an option for finding sparse files.dwmalone2013-03-031-0/+23
| | | | | Reviewed by: iedowse MFC after: 3 weeks
* find: Run when cwd cannot be opened, except with -execdir or -delete.jilles2013-02-101-1/+15
| | | | | | | | | | | fts(3) can run (albeit more slowly and imposing the {PATH_MAX} limit) when the current directory cannot be opened. Therefore, do not make a failure to open the current directory (for returning to it later in -exec) fatal. If -execdir or -delete are used, the expectation is that fts(3) will use chdir to avoid race conditions (except for -execdir with -L). Do not break this expectation any more than it already is by still failing if the current directory cannot be opened.
* find: In -execdir ... {} +, only pass one file per invocation.jilles2013-02-101-1/+7
| | | | | | | This is inefficient but ensures that -execdir ... {} + does not mix files from different directories in one invocation; the command could not access some files. Files from the same directory should really be handled in one invocation but this is somewhat more complicated.
* find: Implement real -ignore_readdir_race.jilles2012-07-251-0/+19
| | | | | | | | | | If -ignore_readdir_race is present, [ENOENT] errors caused by deleting a file after find has read its name from a directory are ignored. Formerly, -ignore_readdir_race did nothing. PR: bin/169723 Submitted by: Valery Khromov and Andrey Ignatov
* Using statfs.f_fstypename rather than statfs.f_type whilst performing fstypeavatar2011-06-131-20/+6
| | | | | | | | comparsion as nullfs will copy f_type from underlayer FS. PR: bin/156258 Submitted by: Marcin Wisnicki <mwisnicki+freebsd@gmail.com> MFC after: 1 month
* Remove the advertising clause from UCB copyrighted files in usr.bin. Thisjoel2010-12-111-4/+0
| | | | | | | | | is in accordance with the information provided at ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change Also add $FreeBSD$ to a few files to keep svn happy. Discussed with: imp, rwatson
* Don't error out while searching for empty directories.kevlo2010-12-021-1/+1
| | | | Submitted by: Bakul Shah <bakul at bitblocks dot com>
* Revert r207677 which is considered a violation of style(9).delphij2010-05-061-2/+6
| | | | | Pointed out by: bde Pointy hat to: delphij
* Move SCCS tags to comments as they were already #if 0'ed.delphij2010-05-051-6/+2
|
* The -newerXB option was being interpreted the same as the -newerXm optiongavin2010-02-141-0/+2
| | | | | | | | as a check for F_TIME2_B was missing. Fix this. PR: bin/138245 Submitted by: "David E. Cross" <crossd cs.rpi.edu> MFC after: 1 month
* Don't let find(1) depend on struct timeb.ed2010-02-091-2/+1
| | | | | | This structure is deprecated and only used by ftime(2), which is part of libcompat. The second argument of get_date() is unused, which means we can just remove it entirely.
* ANSIfy almost all applications that use WARNS=6.ed2009-12-291-1/+1
| | | | | | | I was considering committing all these patches one by one, but as discussed with brooks@, there is no need to do this. If we ever need/want to merge these changes back, it is still possible to do this per application.
* Add NFSv4 ACL support to find(1).trasz2009-09-041-25/+35
| | | | Reviewed by: rwatson
* rm, find -delete: fix removing symlinks with uchg/uappnd set.jilles2009-05-301-1/+1
| | | | | | | | | | | | Formerly, this tried to clear the flags on the symlink's target instead of the symlink itself. As before, this only happens for root or for the unlink(1) variant of rm. PR: bin/111226 (part of) Submitted by: Martin Kammerhofer Approved by: ed (mentor) MFC after: 3 weeks
* find: do not silently disable -L when -delete is usedavg2009-05-191-5/+5
| | | | | | | | | | | | | | | | | | First of all, current behavior is not documented and confusing, and it can be very dangerous in the following sequence: find -L . -type l find -L . -type l -delete (the second line is even suggested by find(1)). Instead simply refuse to proceed when -L and -delete are both used. A descriptive error message is provided. The following command can be safely used to remove broken links: find -L . -type l -print0 | xargs rm -0 To do: update find(1) PR: bin/90687 Obtained from: Anatoli Klassen <anatoli@aksoft.net> Approved by: jhb (mentor)
* The matching in -lname and -ilname are on the contents of the linkimp2008-02-241-5/+10
| | | | | | | | itself, not on the type of the file. As such, do a readlink to get the symbolic link's contents and fail to match if the path isn't a symbolic link. Pointed out by: des@
* Implement a number of primaries present in GNU find, but not presentimp2008-02-231-3/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in our find. The following are nops because they aren't relevant to our find: -ignore_readdir_race -noignore_readdir_race -noleaf The following aliaes were created: -gid -> -group [2] -uid -> -user [2] -wholename -> -path -iwholename -> ipath -mount -> -xdev -d -> -depth [1] The following new primaries were created: -lname like -name, but matches symbolic links only) -ilname like -lname but case insensitive -quit exit(0) -samefile returns true for hard links to the specified file -true Always true I changed one primary to match GNU find since I think our use of it violates POLA -false Always false (was an alias for -not!) Also, document the '+' modifier for -execdir, as well as all of the above. This was previously implemented. Document the remaining 7 primaries that are in GNU find, but aren't yet implemented in find(1) [1] This was done in GNU find for compatibility with FreeBSD, yet they mixed up command line args and primary args. [2] -uid/-gid in GNU find ONLY takes a numeric arg, but that arg does the normal range thing that. GNU find -user and -uid also take a numberic arg, but don't do the range processing. find(1) does both for -user and -group, so making -uid and -gid aliases is compatible for all non-error cases used in GNU find. While not perfect emulation, this seems a reasonable thing for us.
* Add the capability for a trailing scale indicator to cause thekrion2006-05-271-3/+35
| | | | | | | | | specified size to be read in the more familiar units of kilobytes, megabytes, gigabytes, terabytes and petabytes. PR: bin/50988 Submitted by: Matthew Seaman <m.seaman@infracaninophile.co.uk> MFC after: 7 days
* Enable numeric arguments and +/- prefixes with -user (-group)krion2006-05-251-4/+12
| | | | | | | | options. PR: bin/71513 Submitted by: Andre Albsmeier <Andre.Albsmeier@siemens.com> MFC after: 7 days
* The last execution of -exec {} + is not done if the -exec primary iskrion2006-05-141-0/+17
| | | | | | | | | | | not on the top-level -and sequence, e.g. inside of ! or -or. Create a separate linked list of all active -exec {} + primaries and do the last execution for all at termination. PR: bin/79263 Submitted by: Jilles Tjoelker <jilles@stack.nl> MFC after: 7 days
* Add -Btime, -Bnewer, -Bmin, -newerB[Bacmt], -newer[acmt]B options toceri2006-04-031-4/+13
| | | | | | | | | work with the st_birthtime field of struct stat. 'B' has been chosen to match the format specifier from stat(1). Approved by: jhb MFC after: 2 weeks
* Fixes for gcc4.x.roberto2005-08-251-1/+1
| | | | | Submitted by: Divacky Roman <xdivac02@stud.fit.vutbr.cz> PR: bin/84991
* - Make find(1) WARNS?= 6 cleanssouhlal2005-01-251-2/+2
| | | | | | - Bump to WARNS?= 6 Approved by: stefanf, grehan (mentor)
* Change the 'no terminating ";"' error message to 'no terminating ";" or "+"'tjr2004-07-291-1/+1
| | | | since + is also a valid way to terminate -exec.
* Remove partial support for building this on NetBSD.tjr2004-07-291-2/+0
|
* - introduce a new primary `-depth n', which tests whethereik2004-05-281-7/+47
| | | | | | | | | | | | | | | | | | | | | the depth of the current file relative to the starting point of the traversal is n. The usual +/- modifiers to the argument apply. - while I'm here, fix -maxdepth in the case of a depth-first traversal Print the top ten maintainers of python module ports (works with p5-* too): find /usr/ports -depth 2 \! -name 'py-*' -prune -o \ -depth 3 -name Makefile -execdir make -VMAINTAINER \; \ | sort | uniq -c | sort -nr | head PR: 66667 Reviewed by: ru, joerg Approved by: joerg MFC after: 2 weeks
* Give find(1) the option -acl to locate files with extendedbmilekic2004-04-031-0/+51
| | | | | | | | | | | ACLs. This is similar to what ls(1) can do. It is handy to have it so that it can be used in conjunction with "-exec setfacl {} \;" (to find(1)), among others. This is the submitter's patch, but slightly modified. PR: bin/65016 Submitted by: Christian S.J. Peron <maneo@bsdpro.com>
* Fix all WARNS. Checked with "make WARNS=9". Remove unused file.markm2003-06-141-190/+62
|
* - Introduce a new struct xvfsconf, the userland version of struct vfsconf.mux2002-08-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | - Make getvfsbyname() take a struct xvfsconf *. - Convert several consumers of getvfsbyname() to use struct xvfsconf. - Correct the getvfsbyname.3 manpage. - Create a new vfs.conflist sysctl to dump all the struct xvfsconf in the kernel, and rewrite getvfsbyname() to use this instead of the weird existing API. - Convert some {set,get,end}vfsent() consumers to use the new vfs.conflist sysctl. - Convert a vfsload() call in nfsiod.c to kldload() and remove the useless vfsisloadable() and endvfsent() calls. - Add a warning printf() in vfs_sysctl() to tell people they are using an old userland. After these changes, it's possible to modify struct vfsconf without breaking the binary compatibility. Please note that these changes don't break this compatibility either. When bp will have updated mount_smbfs(8) with the patch I sent him, there will be no more consumers of the {set,get,end}vfsent(), vfsisloadable() and vfsload() API, and I will promptly delete it.
* Account for space used by environment variables in a similar way totjr2002-07-131-8/+12
| | | | xargs(1) when handling -exec ... {} + constructions.
* Support the SysV-style -exec utility args.. {} + function, required bytjr2002-06-021-8/+69
| | | | SUSv3. This is similar to find foo -print0 | xargs -0 utility args.
* Clean up malloc(3)'s argument. Remove casts which do nothing when we'rejmallett2002-05-171-9/+9
| | | | | | | using sizeof() anyway. Use slightly more consistent (per-file) error reporting for malloc(3) returning NULL. If "malloc failed" was being printed, don't use err(3). If a NULL format is being used, use err(3). In one case errx(3) was being used with strerror(3), so just use err(3).
* More consistancy. file system > filesystemtrhodes2002-05-161-1/+1
|
* There is breakage in parsedate, so revert to get_date until this can bemarkm2002-04-021-1/+1
| | | | | | resolved. Reported by: paul
* Fix find -exec with no command specified (i.e.: find . -exec ';')jmallett2002-04-021-0/+3
| | | | | | | PR: bin/36521 Submitted by: Simon 'corecode' Schubert <corecode@corecode.ath.cx> Reviewed by: mike MFC after: 3 days
* Fix SCM IDs.obrien2002-04-011-3/+2
|
* spellingcharnier2002-03-261-3/+3
|
* Restructure for own parsedate (replacement for get_date from CVS).markm2002-03-211-2/+1
| | | | | | Fix up parsedate.y for WARNS=4. Reviewd by: bde (except for parsedate.y diffs)
* Remove __P().markm2002-03-201-5/+5
|
* 1) Remove -Wall from Makefile.dwmalone2002-02-271-40/+46
| | | | | | 2) WARNs fixes (rename option to lookup_option to avoid shadowing, rename argv to argv1 to avoid shadowing, const stuff, prototypes, __unused). 3) Remove "register"s.
* Simplify f_Xtime().ru2001-09-141-24/+11
|
* Bloat find(1) even more, and introduce the conceptru2001-09-141-12/+104
| | | | | | | | of time units to be used with -[acm]time primaries. Based on patch from Nils M Holm <nmh@t3x.org>. PR: bin/29165, bin/30309
* The implementation of -flags was broken and did not match the (poorly)ru2001-09-041-9/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | documented behavior. Only a certain set of file flags were recognized, and "no" flags did not match files that have corresponding flags bits turned off. Fix and extend the -flags functionality as follows: : -flags [-|+]<flags>,<notflags> : The flags are specified using symbolic names (see chflags(1)). : Those with the "no" prefix (except "nodump") are said to be : <notflags>. Flags in <flags> are checked to be set, and flags in : <notflags> are checked to be not set. Note that this is different : from -perm, which only allows the user to specify mode bits that : are set. : : If flags are preceded by a dash (``-''), this primary evaluates : to true if at least all of the bits in <flags> and none of the bits : in <notflags> are set in the file's flags bits. If flags are pre- : ceded by a plus (``+''), this primary evaluates to true if any of : the bits in <flags> is set in the file's flags bits, or any of the : bits in <notflags> is not set in the file's flags bits. Otherwise, : this primary evaluates to true if the bits in <flags> exactly match : the file's flags bits, and none of the <flags> bits match those of : <notflags>. MFC after: 2 weeks
* Restore the `-perm +mode' feature.ru2001-08-301-2/+2
| | | | | Broken in the "close a PR" race, in revision 1.30. Note that the patch in the PR did not have this bug!
OpenPOWER on IntegriCloud