summaryrefslogtreecommitdiffstats
path: root/printf.c
Commit message (Collapse)AuthorAgeFilesLines
* Include what I useTavian Barnes2020-11-121-3/+3
| | | | Thanks to https://github.com/include-what-you-use/include-what-you-use
* Enable -Wsign-compare to catch bugs like 726d7801Tavian Barnes2020-11-041-2/+2
|
* printf: Adjust some calling conventionsTavian Barnes2020-10-061-9/+9
|
* diag: New bfs_perror() functionTavian Barnes2020-10-051-13/+13
|
* util: Don't rely on bftwTavian Barnes2020-09-301-1/+1
| | | | And rename format_mode() to xstrmode() while I'm at it.
* Rename struct cmdline to bfs_ctxTavian Barnes2020-09-271-20/+20
| | | | | The API remains similar, with some added accessor functions for lazy initialization of the pwcache and mtab.
* printf: Format the empty string for %l of non-linksTavian Barnes2020-09-201-9/+10
| | | | It makes a difference if the format specifier has a width.
* Don't call stat() just to determine symbolic lengthsTavian Barnes2020-09-181-1/+4
| | | | | | | The new bftw_cached_stat() helper gets us stat info if we already have it, but doesn't call stat() if we don't. In that case we just take a guess for the initial length to readlinkat(). This lets us avoid stat() entirely in many cases for -lname and -printf %l.
* bftw: Rename bftw_typeflag to bftw_type, and make it not a bitmaskTavian Barnes2020-07-291-6/+6
|
* pwcache: Rename from passwd.[ch]Tavian Barnes2020-04-221-1/+1
|
* passwd: Cache the user/group tablesTavian Barnes2020-02-291-7/+20
| | | | | | | | | | | | | | | | | | | | | | This is a significant optimization for conditions that need these tables: Benchmark #1: ./bfs ~/code/linux -nouser >/dev/null Time (mean ± σ): 232.0 ms ± 2.5 ms [User: 44.3 ms, System: 185.0 ms] Range (min … max): 228.7 ms … 238.7 ms 12 runs Benchmark #2: ./bfs-1.6 ~/code/linux -nouser >/dev/null Time (mean ± σ): 1.050 s ± 0.012 s [User: 544.2 ms, System: 500.0 ms] Range (min … max): 1.025 s … 1.063 s 10 runs Benchmark #3: find ~/code/linux -nouser >/dev/null Time (mean ± σ): 1.040 s ± 0.012 s [User: 533.6 ms, System: 500.6 ms] Range (min … max): 1.017 s … 1.054 s 10 runs Summary './bfs ~/code/linux -nouser >/dev/null' ran 4.48 ± 0.07 times faster than 'find ~/code/linux -nouser >/dev/null' 4.52 ± 0.07 times faster than './bfs-1.6 ~/code/linux -nouser >/dev/null'
* time: Split out time-related functions from utilTavian Barnes2020-02-131-0/+1
|
* bftw: Pass a const struct BFTW * to the callbackTavian Barnes2019-05-051-29/+29
|
* bftw: Add a caching stat() API to struct BFTWTavian Barnes2019-05-041-133/+172
|
* stat: Unify the flags argumentsTavian Barnes2019-05-041-1/+1
|
* Release 1.41.4Tavian Barnes2019-04-151-1/+1
|
* bftw: Work around d_type being wrong for bind mounts on LinuxTavian Barnes2019-03-061-5/+2
| | | | | | C.f. https://savannah.gnu.org/bugs/?54913 C.f. https://lkml.org/lkml/2019/2/11/2027 Fixes https://github.com/tavianator/bfs/issues/37
* Turn on -Wstrict-prototypesTavian Barnes2019-02-061-1/+1
|
* diag: Unify diagnostic formattingTavian Barnes2019-01-021-16/+10
| | | | | | 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: Unify bfs_stat_time() implementationsTavian Barnes2018-12-201-26/+2
|
* bftw: Move bftw_typeflag conversion out of utilTavian Barnes2018-12-171-1/+1
| | | | Turns out incomplete enum types are a GNU C extension.
* Update copyright datesTavian Barnes2018-09-241-1/+1
|
* Add some missing fallthrough commentsTavian Barnes2018-08-161-0/+1
|
* printf: Support all standard strftime() directivesTavian Barnes2018-07-241-10/+20
|
* printf: Support %B, GNU find's undocumented birth time specifierTavian Barnes2018-07-241-5/+6
|
* stat: Don't assume blocks are 512 bytesTavian Barnes2018-07-241-3/+11
| | | | | | | | | | | | 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.
* printf: Output ? for errors in %YTavian Barnes2018-07-201-5/+16
|
* printf: Add %w and %Wk for file birth timesTavian Barnes2018-01-201-0/+9
| | | | | %w and %W were chosen to match the format specifiers for file birth times from stat(1)
* stat: New wrapper around the stat() familyTavian Barnes2018-01-081-42/+50
| | | | | This lets bfs transparently support the new statx() system call on Linux, giving it access to file birth times.
* color: Implement %m for cfprintf()Tavian Barnes2017-11-131-1/+1
|
* Add support for file birth/creation times on platforms that have itTavian Barnes2017-11-051-3/+9
| | | | Fixes #19
* opt: Separate optimization from parsingTavian Barnes2017-09-161-1/+2
|
* printf: Save some lines in time specifier parsingTavian Barnes2017-08-271-36/+4
|
* Re-license under the BSD Zero Clause LicenseTavian Barnes2017-07-271-10/+15
|
* Handle ENOTDIR the same as ENOENTTavian Barnes2017-07-091-0/+1
| | | | | | 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.
* printf: Fix embedded nul bytesTavian Barnes2017-06-101-11/+16
| | | | Fixes #26.
* Don't parse the mount table until it's neededTavian Barnes2017-04-291-3/+6
|
* Implement -fstypeTavian Barnes2017-04-231-1/+22
| | | | Fixes #6!
* Move bftw_typeflag converters to util.cTavian Barnes2017-04-081-1/+1
|
* Implement -ls and -flsTavian Barnes2017-03-111-91/+28
|
* Make a printf()-style API for colored messagesTavian Barnes2017-03-111-25/+14
|
* Implement -printf %Ak, %Ck, and %TkTavian Barnes2017-03-111-89/+231
|
* bftw: Make the nameoff of "///" point to "/"Tavian Barnes2017-02-091-0/+4
| | | | This simplifies a few things such as -name handling for ///.
* Add support for -x?type with multiple typesTavian Barnes2017-02-081-64/+16
| | | | This functionality is already part of GNU findutils git.
* Add some missing perror() callsTavian Barnes2017-02-071-0/+5
|
* Fix a memory leak parsing -printfTavian Barnes2017-02-061-0/+1
|
* Implement -printf/-fprintfTavian Barnes2017-02-051-0/+768
Based on a patch by Fangrui Song <i@maskray.me>. Closes #16.