Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | tests: Add directories with different permissions to perms/ | Tavian Barnes | 2024-06-04 | 20 | -80/+103 |
| | |||||
* | tests/common: Add tests for -[am]{min,time} | Tavian Barnes | 2024-06-04 | 8 | -0/+84 |
| | |||||
* | xtime: Add support for @epochseconds timestamps | Tavian Barnes | 2024-06-04 | 2 | -25/+12 |
| | |||||
* | Merge branch 'revert-eloop' | Tavian Barnes | 2024-06-03 | 4 | -2/+4 |
|\ | |||||
| * | Make ELOOP an error again, except for -xtype.3.3.1 | Tavian Barnes | 2024-06-03 | 4 | -2/+4 |
| | | | | | | | | | | | | | | | | | | | | POSIX requires an error if (for example) -L encounters a symlink loop. The GNU find change was restricted to -xtype, so add a manual ELOOP test to eval_xtype() for compatibility. This reverts commit 470589cbd9ca3e73d8c01ac3a96cbc065179dcc5. Link: https://savannah.gnu.org/bugs/?19605 | ||||
* | | parse: Allow -Darg/-Sarg as well as -D arg / -S arg | Tavian Barnes | 2024-06-03 | 6 | -0/+59 |
| | | |||||
* | | parse: Handle multiple flags at once like -LEXO2 | Tavian Barnes | 2024-06-03 | 11 | -0/+43 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The POSIX Utility Syntax Guidelines specify that flag groups like -HL should be handled like -H -L. GNU find doesn't support grouping flags in this way, but BSD find does. To avoid conflicts with non-flag primaries, for now we require at least one flag in a group to be a capital letter. That is, we support things like -Lds but not -ds. We also do not support -fPATH (without a space) as it would conflict with -follow, -fprint, etc. It is impossible to be compatible with both GNU and BSD find here: user@gnu$ find -follow link link/file ... user@bsd$ find -follow find: ollow: No such file or directory Link: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html | ||||
* | | list: New SLIST_SPLICE() macro | Tavian Barnes | 2024-05-31 | 3 | -0/+101 |
| | | |||||
* | | bit: Update to match C23 | Tavian Barnes | 2024-05-29 | 1 | -18/+18 |
|/ | | | | | | | | | | Based on the latest C23 draft (N3220): - Argument types to generic bit functions should be unsigned - Bit functions return unsigned int - Byte-swapping functions (stdc_memreverse8*()) weren't added - stdc_rotate_{left,right}() weren't added - first_leading_*() counts from the *left* | ||||
* | Implement the remaining regex types | Tavian Barnes | 2024-05-28 | 12 | -0/+27 |
| | | | | Closes: https://github.com/tavianator/bfs/issues/21 | ||||
* | tests: Add some more weird names | Tavian Barnes | 2024-05-28 | 9 | -0/+67 |
| | |||||
* | xregex: Support non-capturing groups with -regextype emacs | Tavian Barnes | 2024-05-27 | 1 | -1/+1 |
| | | | | | Link: https://savannah.gnu.org/bugs/index.php?65770 Link: https://github.com/kkos/oniguruma/issues/296 | ||||
* | bfstd: Treat ELOOP like ENOENT | Tavian Barnes | 2024-05-27 | 4 | -1/+23 |
| | | | | | | | GNU findutils just made the same change, so looping symlinks will be considered broken rather than a hard error. Link: https://savannah.gnu.org/bugs/?51926 | ||||
* | tests/posix: Add a test for -prune with EACCESS | Tavian Barnes | 2024-05-27 | 2 | -0/+9 |
| | | | | Link: https://savannah.gnu.org/bugs/?60207 | ||||
* | tests: Make diff listen to $NO_COLOR | Tavian Barnes | 2024-05-24 | 1 | -2/+2 |
| | |||||
* | tests: Make hide_bar actually hide the bar | Tavian Barnes | 2024-05-22 | 2 | -1/+15 |
| | |||||
* | tests: Print progress outside the scroll region | Tavian Barnes | 2024-05-22 | 3 | -44/+132 |
| | |||||
* | tests: Restart wait when interrupted by a signal | Tavian Barnes | 2024-05-22 | 1 | -6/+15 |
| | |||||
* | Stop using %m | Tavian Barnes | 2024-05-20 | 1 | -1/+2 |
| | |||||
* | printf: The ' ' (space) flag must be numeric | Tavian Barnes | 2024-05-19 | 2 | -1/+2 |
| | |||||
* | Cast AT_FDCWD to int for comparisons | Tavian Barnes | 2024-05-17 | 1 | -1/+1 |
| | | | | | Some platforms define AT_FDCWD to a constant like 0xFFFAFDCD that gets typed as an unsigned int. | ||||
* | diag: New helpers to include xstrerror(errno) automatically | Tavian Barnes | 2024-05-17 | 7 | -50/+42 |
| | |||||
* | sighook: New utilities for hooking signals | Tavian Barnes | 2024-05-16 | 3 | -0/+101 |
| | | | | This allows multiple hooks to be installed for a single signal. | ||||
* | xtime: Use the libc's timegm() if present | Tavian Barnes | 2024-05-06 | 1 | -4/+8 |
| | |||||
* | build: Replace `make config` with a `./configure` script | Tavian Barnes | 2024-04-29 | 2 | -18/+6 |
| | | | | | | | | | | This lets us do more traditional out-of-tree builds like $ ../path/to/bfs/configure $ make The .mk files are moved from ./config to ./build, mostly so that ./configure will auto-complete easily. | ||||
* | eval: Plug memory leak if bfs_opendir() fails | Tavian Barnes | 2024-04-24 | 6 | -0/+10 |
| | |||||
* | config: Check for struct stat::st_{a,c,m,birth}{tim,timespec} | Tavian Barnes | 2024-04-19 | 1 | -2/+2 |
| | |||||
* | Rename config.h to prelude.h | Tavian Barnes | 2024-04-19 | 10 | -10/+10 |
| | |||||
* | tests: Add ../src to the include path | Tavian Barnes | 2024-04-19 | 11 | -36/+36 |
| | |||||
* | tests: Quiet diff | Tavian Barnes | 2024-04-16 | 1 | -2/+2 |
| | | | | | | On Solaris/Illumos, `diff` prints "No differences encountered" if the files are the same. Guard it with `cmp -s` so we get no output for passing tests. | ||||
* | tests: Move newer_link out of posix/ | Tavian Barnes | 2024-04-09 | 4 | -0/+5 |
| | | | | | | | | POSIX has clarified that it's unspecified whether -newer uses times from stat() or lstat(), because implementations vary. It does specify that it must fall back to lstat() for broken links, so test that. Link: https://austingroupbugs.net/view.php?id=1776 | ||||
* | build: Add a separate configuration step | Tavian Barnes | 2024-04-09 | 2 | -3/+9 |
| | |||||
* | tests/bsd: Add a -sparse test | Tavian Barnes | 2024-03-28 | 2 | -0/+13 |
| | |||||
* | tests/gnu: Add a -used test | Tavian Barnes | 2024-03-28 | 2 | -0/+44 |
| | |||||
* | tests/common: Add a -delete error handling test | Tavian Barnes | 2024-03-28 | 2 | -0/+17 |
| | |||||
* | xspawn: Fix bfs_resolve_late() error reporting | Tavian Barnes | 2024-03-27 | 1 | -0/+23 |
| | |||||
* | tests/xspawn: Test path resolution failure | Tavian Barnes | 2024-03-27 | 1 | -3/+30 |
| | |||||
* | tests/xspawn: Also test dup2() | Tavian Barnes | 2024-03-27 | 1 | -1/+3 |
| | |||||
* | tests/xspawn: New unit test | Tavian Barnes | 2024-03-27 | 4 | -0/+175 |
| | |||||
* | tests: New bfs_pcheck() macro to report xstrerror(errno) | Tavian Barnes | 2024-03-27 | 3 | -3/+25 |
| | |||||
* | bfstd: Escape ASCII tildes | Tavian Barnes | 2024-03-26 | 1 | -0/+2 |
| | | | | | | | | The POSIX spec [1] lists some characters that may need to be escaped. Unfortunately, the document uses ˜ (U+02DC SMALL TILDE) instead of ~ (U+007E TILDE), and I copy-pasted from it. [1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02 | ||||
* | xtime: Don't update tm if xtimegm() overflows | Tavian Barnes | 2024-03-26 | 1 | -12/+22 |
| | |||||
* | bfstd: New asciilen() function | Tavian Barnes | 2024-03-21 | 1 | -0/+15 |
| | |||||
* | bit: Check __BYTE_ORDER__ for the native endian | Tavian Barnes | 2024-03-21 | 1 | -0/+13 |
| | | | | __ORDER_NATIVE_ENDIAN__ is not a thing. | ||||
* | bfstd: Check that wcwidth() is positive | Tavian Barnes | 2024-03-20 | 1 | -0/+3 |
| | | | | | wcwidth() returns -1 for non-printable characters, but terminals typically don't print anything for them, so treat them as 0. | ||||
* | Implement -limit N | Tavian Barnes | 2024-03-20 | 6 | -0/+9 |
| | | | | Closes: https://github.com/tavianator/bfs/issues/133 | ||||
* | Re-run include-what-you-use | Tavian Barnes | 2024-03-11 | 7 | -9/+7 |
| | |||||
* | tests/xtime: Add tests for integer overflow | Tavian Barnes | 2024-03-10 | 1 | -0/+28 |
| | |||||
* | xtime: Call tzset() from main() instead of lazily | Tavian Barnes | 2024-03-07 | 4 | -13/+18 |
| | | | | | | | | | | | | | POSIX specifies[1] that If a thread accesses tzname, daylight, or timezone directly while another thread is in a call to tzset(), or to any function that is required or allowed to set timezone information as if by calling tzset(), the behavior is undefined. So calling it lazily from arbitrary threads is risky. [1]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tzset.html | ||||
* | tests: Change the timezone for -daystart tests | Tavian Barnes | 2024-03-07 | 2 | -2/+2 |
| | | | | | | | Otherwise, if the test files are created just before midnight, and the test runs just after midnight, -daystart will consider them one day old. Fixes #132 |