summaryrefslogtreecommitdiffstats
path: root/eval.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Implement -uniqueTavian Barnes2019-03-011-0/+43
| | | | Closes #48
* Add some documentation commentsTavian Barnes2019-02-091-0/+4
|
* Fix -nouser/-nogroup error handlingTavian Barnes2019-02-061-2/+20
| | | | | | | | | | The proper way to check for nonexistent users/groups is to set errno to 0 before the get{grg,pwu}id() call, and check it afterwards. On doing this, it becomes obvious that the call can fail if bftw() is using all the available FDs, so give them some ephemeral FDs. It would be ideal to read the user/group table only once, but this fixes the bug for now.
* eval: Fix wrong colors in error messagesTavian Barnes2019-02-011-45/+72
| | | | | When reporting an error, we should try to stat the file first so the message can have the right colors.
* parse: Allow multiple comma-separated debug flagsTavian Barnes2019-01-111-8/+10
|
* posix1e: Split out ACL and capability handling from utilTavian Barnes2019-01-021-0/+1
|
* color: Check format strings + args for cfprintf()Tavian Barnes2019-01-021-4/+5
| | | | | | %{cc} is now ${cc} to avoid warnings about an unrecognized format specifier, and %P and %L are now %pP and %pL to make them look more like standard format strings.
* diag: Unify diagnostic formattingTavian Barnes2019-01-021-23/+40
| | | | | | This adds a bfs: prefix to error/warning messages for consistency with other command line tools, and leaves only the "error:"/"warning:" part colored like GCC. It also uniformly adds full stops after messages.
* stat: Provide a helper for getting human-readable field namesTavian Barnes2018-12-251-23/+2
| | | | And fix -newerXY if the Y time doesn't exist.
* stat: Unify bfs_stat_time() implementationsTavian Barnes2018-12-201-18/+8
|
* stat: Handle statx() not returning some timesTavian Barnes2018-12-191-12/+41
| | | | | | /sys/fs/cgroup, for example, doesn't return access times from statx(). That shouldn't matter unless we actually need them, so make it not an error.
* Implement -acl testTavian Barnes2018-12-171-0/+7
|
* Add new -capable testTavian Barnes2018-12-171-0/+7
|
* bftw: Move bftw_typeflag conversion out of utilTavian Barnes2018-12-171-1/+1
| | | | Turns out incomplete enum types are a GNU C extension.
* Print device major/minor numbers for -lsTavian Barnes2018-11-011-3/+11
|
* Update copyright datesTavian Barnes2018-09-241-1/+1
|
* stat: Don't assume blocks are 512 bytesTavian Barnes2018-07-241-2/+2
| | | | | | | | | | | | POSIX says > The unit for the st_blocks member of the stat structure is not defined > within POSIX.1‐2008. and recommends using DEV_BSIZE from <sys/param.h> if available. Also, for -printf '%S', print 1 instead of NaN for empty files with no blocks.
* eval: Debug all stat() callsTavian Barnes2018-07-151-47/+56
|
* eval: Share the statbuf across multiple -xtype'sTavian Barnes2018-07-121-18/+31
|
* eval: Get rid of duplicate statbuf fieldTavian Barnes2018-07-121-24/+22
| | | | | Also shorten eval_bfs_stat() to eval_stat(). Looks like this was leftover from an incomplete conversion a while ago.
* eval: Fix -delete when following symlinks.Tavian Barnes2018-07-121-2/+15
| | | | | Same bug as https://savannah.gnu.org/bugs/?46305. Please don't ever do this though.
* eval: Don't use %m to report a non-errno errorTavian Barnes2018-06-191-1/+1
| | | | Fixes: 2a45ad01e211d0b36056c21d5211be46195b273d
* eval: Don't unnecessarily zero fields in struct eval_stateTavian Barnes2018-02-011-7/+6
| | | | | | The designated initializer causes everything not mentioned to be zeroed, a waste of time that shows up on profiles. It also has the potential to hide uninitialized-use bugs.
* stat: New wrapper around the stat() familyTavian Barnes2018-01-081-94/+82
| | | | | This lets bfs transparently support the new statx() system call on Linux, giving it access to file birth times.
* Keep track of required FDs per-exprTavian Barnes2017-12-151-1/+3
|
* color: Implement %m for cfprintf()Tavian Barnes2017-11-131-4/+4
|
* exec: Fix error reportingTavian Barnes2017-11-121-5/+9
|
* cmdline: Account for files opened during/between evaluations more carefullyTavian Barnes2017-11-121-2/+1
|
* Add support for file birth/creation times on platforms that have itTavian Barnes2017-11-051-19/+37
| | | | Fixes #19
* Use "error:" prefix consistentlyTavian Barnes2017-10-221-4/+4
|
* util: Wrap faccessat() to fix some portability issuesTavian Barnes2017-09-201-1/+1
|
* opt: Move some aggressive optimizations back to -O4Tavian Barnes2017-09-171-8/+1
|
* opt: Separate optimization from parsingTavian Barnes2017-09-161-1/+4
|
* eval: Make sure nopenfd >= 2 for bftw()Tavian Barnes2017-09-091-6/+5
|
* Try /proc/self/fd before /dev/fdTavian Barnes2017-09-091-3/+6
| | | | On Solaris, /proc/self/fd is dynamic while /dev/fd is static.
* util: Factor out checks for nonexistent paths/broken linksTavian Barnes2017-09-061-2/+2
|
* Implement -D searchTavian Barnes2017-09-021-0/+100
|
* Implement cost-based optimizationTavian Barnes2017-08-271-13/+10
|
* Avoid multiple extra stat()s of broken symlinks for -xtypeTavian Barnes2017-08-221-4/+9
|
* Unify broken symlink handlingTavian Barnes2017-08-121-16/+6
| | | | | | | | | Rather than open-code the fallback logic for broken symlinks everywhere it's needed, introduce a new xfstatat() utility function that performs the fallback automatically. Using xfstatat() consistently fixes a few bugs, including cases where broken symlinks are given as arguments to predicates like -samefile.
* util: Define O_DIRECTORY to 0 if it's not already definedTavian Barnes2017-07-291-5/+1
|
* Re-license under the BSD Zero Clause LicenseTavian Barnes2017-07-271-10/+15
|
* Represent never returning as always_true && always_falseTavian Barnes2017-07-211-3/+6
| | | | | | | | | | Expressions that never return are vacuously always both true and false. Using this representation lets us take advantage of existing truth-based optimizations, which gets us optimizations of command lines like bfs -name foo -quit -print for free.
* Implement -printxTavian Barnes2017-07-211-0/+38
| | | | Also from NetBSD.
* eval: Add some sanity checksTavian Barnes2017-07-201-0/+6
|
* Implement -exit [STATUS]Tavian Barnes2017-07-201-9/+19
| | | | From NetBSD again.
* Handle ENOTDIR the same as ENOENTTavian Barnes2017-07-091-2/+2
| | | | | | For a/b/c, ENOTDIR is returned instead of ENOENT if a or b are not directories. Handle this uniformly when detecting broken symlinks, readdir races, etc.
* Pass AT_EACCESS to faccessat()Tavian Barnes2017-04-301-1/+1
| | | | | That's the form that actually answers the expected question ("can I open() this"), and the only form Hurd supports.
* Don't forget an access mode to openat() in -emptyTavian Barnes2017-04-301-1/+1
|
* Release 1.01.0Tavian Barnes2017-04-241-1/+1
|