aboutsummaryrefslogtreecommitdiff
path: root/toys/other/stat.c
AgeCommit message (Collapse)Author
2021-02-22Remove ifdefs from stat.Rob Landley
2021-02-22stat: fix macOS build and behavior.Elliott Hughes
My patch to fix df behavior on macOS broke the stat build on macOS. First off, we had %s and %S the wrong way round compared to coreutils, though since Linux always seems to use the same value for both, no-one will ever have noticed. Annoyingly, Linux and macOS disagree about what statfs::f_bsize means, and whether statfs::f_iosize and statfs::f_frsize exist (each has one or the other, depending on what f_bsize *doesn't* mean to them). This mess is presumably why statvfs exists. Unfortunately, statvfs on macOS at least doesn't contain the file system type information. So we either need to do *both* statfs() and statvfs() for macOS, or we need to take into account the different fields. This patch adds an #ifdef outside of portability.h because I wasn't sure we actually wanted to add statfs_best_transfer_size() and statfs_real_block_size() functions to lib for this. But that's an easy cleanup if desired.
2020-02-06Remove old GNU style `' quoting.Elliott Hughes
Even GNU don't pretend they're still on 1970s terminals where ` and ' were a matching pair any more.
2019-12-06stat: fix filesystem type on macOS.Elliott Hughes
(Also show unknown values on Linux in hex rather than just "unknown".)
2019-08-03Fix a bug report from E5ten: stat of a file with suid or sticky bit setRob Landley
output 5 digits of octal stat data instead of 4, due to hardwired leading 0 instead of %04a sprintf prefix.
2019-06-28file, stat: various small improvements.Elliott Hughes
file now shows the target of a symbolic link and calls out broken symbolic links. file now shows the device type for block/character special files. file now shows specific reason when it can't open. stat now includes the device type, plus a little more space between the number of blocks and the human-readable file type. Adjusted tests accordingly, which actually makes more of them pass on the host as a convenient side-effect, but I actually made these changes because I've been finding the desktop file and stat output more convenient in these cases.
2019-06-08macOS: numerous fixes.Elliott Hughes
This patch adds a BSD version of xgetmountlist (for the path == NULL case only), tested on macOS. It also papers over the differences between macOS' and Linux's xattr APIs. For once I think the macOS one is better. The imitation of mknodat I've had to write swings things back in Linux's favor though. BSD calls f_frsize by the name f_iosize instead. (FWIW, it looks like this is meaningless on Linux and actually meaningful on macOS.) I've added one #if to toys/ --- I'm calling pathconf in stat.c to work around the absence of f_namelen, and have left a TODO with an explanation. I'm not sure what the best fix is here, so punting. No-one can agree what f_fsid is, even if they're all basically the same, so work around the `val` versus `__val` issue between macOS and Linux. With this patch, it's now possible to build cp/mv/install and stat for macOS too. (Which completes the set of "toybox commands currently used on Linux as part of the AOSP build" if you ignore stuff that deals with processes, which I doubt we'll ever be able to support for lack of any API.)
2019-06-07Implement stat %C and find %Z.Elliott Hughes
We'd documented find %Z but not implemented it. We'd neither documented nor implemented stat's corresponding %C (they'd already taken %Z for ctime, which is ironic because %c/%C sounds more obvious than %z/%Z for that to me).
2019-04-04Tweak stat.Rob Landley
next_printf() shouldn't return null unless it never found the start of an escape sequence (it'll return a pointer to the null at the end of the string otherwise), and the only time we point it at a % and it doesn't is when it's %%. So handle that before calling. (Also, a single trailing % prints in other implementations, and while I'm there update to use FLAG() macros, add a couple comments, and only xflush() once per pattern.)
2019-04-04stat: avoid null dereference.liwugang
When the specified format string has odd '%' in the end, the next_printf function will return null. Checking the result value before using it. Signed-off-by: liwugang <liwugang@xiaomi.com>
2019-01-12stat: add --format synonym for -c.Elliott Hughes
Used in the AOSP x86 host build.
2018-12-04Clean up some --help formatting.Elliott Hughes
Be consistent about upper versus lower case. (Upper seems to have the majority, so I went with that, though I'm happy to provide the opposite patch as long as we're consistent!) Be consistent about using \t. (Though saving a few bytes seems like it might be better done in the code that generates help.h rather than directly in the source, since tabs make careful ASCII art layout hard enough that we regularly have things misaligned.) Remove trailing periods (most of which seem to have been added by me). Always use the US "human readable" rather than my British "human-readable", and be more consistent about declaring whether we're showing multiples of 1000 or 1024. Just say "verbose" rather than adding a useless "mode" or "output".
2018-11-02Convert more option vars to the new (single letter) coding style.Rob Landley
2018-07-04diff: add timestamps to the ---/+++ lines and --color.Elliott Hughes
(My apologies for mixing these two unrelated changes up.)
2018-06-28stat: `stat -f` uses %T rather than %t.Elliott Hughes
(At least for coreutils 8.28.)
2018-06-28stat: fix %a in default output.Elliott Hughes
`stat -c %a` doesn't output a leading zero, but `stat` does.
2018-06-28stat: remove hideous GNUism.Elliott Hughes
Even GNU coreutils 8.28 doesn't use the lopsided `quoting' any more.
2018-06-28Tweak help text to clarify time fields are access/modification/creation time.Rob Landley
2016-12-30Remove unnecessary casts in stat.c, fix a claimed buffer length.Elliott Hughes
POSIX does have a name for the struct timespec in struct stat.
2016-08-16Add length modifier to date escapes, and length sanity check.Rob Landley
2016-08-15Make "stat -c %37G file" and "stat -c %.5G file" work, and fix %U and %G toRob Landley
not segfault on a lookup failure (they print the number instead of UNKNOWN). The whitespace in the default output may need some adjusting.
2016-08-11Matthias Urhahn pointed out that %b returns hardwired 512 byte unitsRob Landley
(man 2 stat says so) and %B is the units on %b (I.E. always 512), so change output and help text. This matches what other implementations produce.
2016-06-15Add readlink0() and readlinkat0() which null terminate the data.Rob Landley
2016-06-12Finish switching to dev_major/dev_minor.Elliott Hughes
7ca5dc4232b9ac5ee5cd25c8b5b33a58904cd251 didn't switch all callers over to the new functions.
2016-05-16Add stat -tL and -c %m%t%T.Rob Landley
Suggested by Sameer Pradhan, or possibly Bilal Qureshi.
2016-01-05Add error_msg_raw() and friends, replace error_msg("%s", s) uses, enable formatRob Landley
checking, and fix up format checking complaints. Added out(type, value) function to stat to avoid a zillion printf typecasts.
2015-10-20Move d/h units from %d %D output to default format string.Rob Landley
2015-10-10"stat -c %T" support (filesystem type names) based on patch from Hyejin Kim.Rob Landley
2015-05-15stat: fix group nameJosé Bollo
Change-Id: I0ad65a40bf380d789c4396ebdc01be217901a2e3
2015-02-25stat -f didn't work on 32 bit systems because type sizes wrong (fix from ↵0.5.2Rob Landley
Elliott Hughes).
2013-09-04Don't pad stat's %a field.Rob Landley
2013-06-02Move stat from pending to other, default y.Rob Landley