Commit Graph

212 Commits

Author SHA1 Message Date
Peter Wemm
242ab807c6 For the -delete option, emulate the behavior of "rm -f" when dealing with
user-immutable files.

Requested by: ache
1996-10-05 18:21:05 +00:00
Peter Wemm
abacbbbf01 Implement a -delete option to find. The code is extremely paranoid and
goes to a fair degree of trouble to enable something like this to
be safe:  cd /tmp && find . -mtime +7 -delete

It removes both files and directories.  It does not attempt to remove
immutable files (an earlier version I showed to a few people did a chflags
and tried to blow away even immutable files.  Too risky..)

It is thought to be safe because it forces the fts(3) driven descent to
only do "minimal risk" stuff.  specifically, -follow is disabled, it does
checking to see that it chdir'ed to the directory it thought it was
going to, it will *not* pass a pathname with a '/' character in it to
unlink(), so it should be totally immune to symlink tree races.  If it runs
into something "fishy", it bails out rather than blunder ahead.. It's better
to do that if somebody is trying to compromise security rather than risk
giving them an opportunity.  Since the unlink()/rmdir() is being called
from within the current working directory during the tree descent, there
are no fork/exec overheads or races.

As a side effect of this paranoia, you cannot do a
"find /somewhere/dir -delete", as the last argument to rmdir() is
"/somewhere/dir", and the checking won't allow it.  Besides, one would use
rm -rf for that case anyway. :-)

Reviewed by: pst (some time ago, but I've removed the immutable file
deletion code that he complained about since he last saw it)
1996-10-04 12:54:07 +00:00
Wolfram Schneider
b8923d4cc0 [HISTORY] command appeared in Version 1 AT&T UNIX
Obtained from: A Quarter Century of UNIX, Peter H. Salus, page 41
1996-08-29 18:06:19 +00:00
Andrey A. Chernov
bf4fce1a35 Localize it 1996-08-12 11:39:24 +00:00
Bruce Evans
9192bbf46f Use strtoq() instead of strtol() so that large inums, and sizes can be
specified.

Not fixed: specification of large uids and gids; silent truncation of
unrepresentable values.
1996-04-07 12:58:13 +00:00
Garrett Wollman
81e236a01c Don't use printf() for simple strings because it is slow. Closes PR 783.
Submitted by:	Wolfram Schneider <wosch@freebsd.first.gmd.de>
1995-10-16 18:32:35 +00:00
Nate Williams
e9f1a293f1 Simpler fix to the find bug reported by Terry Lambert <terry@lambert.org>
[ Find to a file vs. to stdout ] produces different output because find
does not flush stdout when doing a -print.

Submitted by:	Jeffrey Hsu <hsu@freefall.freebsd.org>
1995-09-12 23:15:33 +00:00
Garrett Wollman
656dcd4316 Delete bogus referneces to timezone code internal header file `tzfile.h',
which is no longer bogusly installed in /usr/include.
1995-08-07 19:17:46 +00:00
Rodney W. Grimes
7799f52a32 Remove trailing whitespace. 1995-05-30 06:41:30 +00:00
Garrett Wollman
7cd23434fe Add GNU-style `-print0' primary. This exists so that one can safely
do `find some-nasty-expression -print0 | perl -n0e unlink' and have all
the files actuallly get deleted.  (Using `xargs' and `rm' is not safe.)
1995-05-09 19:02:06 +00:00
Guido van Rooij
dcb8def0e7 Fix completely broken find behaviour:
a find -foo -o -bar would behave like find -bar. The same for -a
This broke (among others) ./etc/security.

Obtained from: NetBSD
1995-02-27 20:52:36 +00:00
Rodney W. Grimes
9b50d90275 BSD 4.4 Lite Usr.bin Sources 1994-05-27 12:33:43 +00:00