aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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.
2021-02-22Nope, marshalling install -D to cp caused regressions.Rob Landley
2021-02-21Teach -o to print ranges that produce zero length matches.Rob Landley
And fix one test for NUL that should be a length test for -z support
2021-02-20Fix df on macOS.Elliott Hughes
On Linux, struct statvfs' f_bsize and f_frsize seem to be interchangeable. On macOS, they're wildly different. f_bsize is the "preferred length of I/O requests for files on this file system" (corresponding to statfs::f_iosize), and f_frsize is the "size in bytes of the minimum unit of allocation on this file system" (corresponding to statfs::f_bsize. POSIX appears to say nothing about the interpretation of these fields, but man7.org's statvfs(2) page is quite clear that statvfs::f_blocks, for example, is in units of f_frsize, not f_bsize. This is the only place in the tree where we use statvfs::f_bsize (other than the stat(1) output that's supposed to be f_bsize and that has a corresponding f_frsize dual anyway. I've removed the Apple-specific #define f_frsize in portability.h because that seems to have been from my previous attempt to understand what was going on here. The output of the relevant stat(1) fields on macOS are the same before/after this patch. This makes toybox df's output match the system's df on a MacBook Pro running macOS 11.2.1. Tested on a Raspberry Pi 400 running Linux too, where I see no change in the output before/after this patch.
2021-02-19Ethan Sommer pointed out that install -Dt needs -D marshalled to cp.Rob Landley
2021-02-19Fix cp -t with one argument and make --parents work with -t.Rob Landley
2021-02-17Teach df /dev/node to reliably show rdev even when devtmpfs is mountedRob Landley
more recently than the resulting mount point.
2021-02-16Only error once for each "df nonexistent"Rob Landley
2021-02-16Let df -a show overmounted filesystems.Rob Landley
2021-02-15Fix mount.test command string quotingYo Chiang
Use "" instead of '' to quote command as the command contains expandable variables. Change-Id: Iaa8825e56243b369199588cbf6e47a1aba985804
2021-02-14Redo df plumbing a bit.Rob Landley
2021-02-14cpio: Guard free() with CFG_TOYBOX_FREEYi-Yo Chiang
2021-02-14Add find -executableRob Landley
Requested by aheirman on github: uses access(X_OK) which checks access control lists as well as permissions, and that _we_ can access them (u+x could be owned by a different user)...
2021-02-14Cleanup pass on df.Rob Landley
2021-02-13Minor cleanup.Rob Landley
2021-02-11Add -t to cp and mv.Rob Landley
2021-02-11Switch sha3sum on in defconfig, and document -b (it's same as sha2sum).Rob Landley
2021-02-10Add install -tRob Landley
2021-02-09ulimit: include descriptions and units.Elliott Hughes
Also reorder the --help output to separate the "whats" from the "hows", as with other commands that have lots of options, and add units to the help too.
2021-02-08Yi-Yo Chiang reported that readlink() failures could corrupt archiveRob Landley
by not writing as much payload as the header promised.
2021-02-08Have xclose() perform the fd != -1 test.Rob Landley
2021-02-08Yi-Yo Chiang pointed out install -D was broken when the target file exists.Rob Landley
Add a test, with comment that "make install_test" doesn't currently exist...
2021-02-07Remove unused function.Rob Landley
Ethan Sommer noticed that chown is using chgrp_main() due to OLDTOY, so the wrapper function isn't needed.
2021-02-07Add lots of "static" annotations, make a couple things use FLAG() macros, etc.Rob Landley
2021-02-06netcat.test: reduce flake.Elliott Hughes
Starting two netcats at the same time and expecting them to be able to talk to each is a little optimistic. I don't know whether `sleep .1` will be sufficient, but wanted to try that before going to `sleep 1` since neither the toybox nor the github nor the Android infrastructure is running these tests in parallel, those seconds add up. Right now this has a ~20% flake rate on the Android infrastructure. I was able to reproduce the flake locally with `while true ; do make test_netcat ; done` on my desktop before this patch, but not after. (Though my desktop is way overpowered for just running that, whereas the build servers tend to be pretty busy, which is why I reserve the right to return later with a longer delay.)
2021-02-06netstat: various fixes.Elliott Hughes
Avoid fgets() into toybuf other than to skip header lines, preferring fscanf() or xgetline() instead. Remove the early returns if we fail to skip a header line (fixes #62). Fix `netstat -xl` which was previously broken (because only -a would include listening sockets). Fix a variety of formatting issues, bringing the diff between toybox netstat and net-tools netstat down (which was what I used for testing). Use FLAG() more consistently.
2021-02-06Cleanup pass on netstat.Rob Landley
2021-02-03Cleanup pass on modprobe.Rob Landley
I need to set up a test environment for this...
2021-02-01Minor tweak.Rob Landley
2021-02-01rm: Add testcase for "rm -f <readonly_filesystem>/missing_file"Yi-Yo Chiang
2021-02-01rm: Check file existence with lstat() explicitly if "-f" is specifiedYi-Yo Chiang
Instead of unlink() && check errno, call lstat() explicitly to check file existence if "-f" is specified. There is a regression when if the path to be removed is nonexistence and within a readonly filesystem, then unlink() could set the EROFS errno instead of ENOENT, thus screwing up the output of `rm`.
2021-02-01The new TEST_GLUE config symbol for [ ] can't have TOYBOX prefixRob Landley
or else singlemake enables it for all commands. (I was trying to move it out of the command namespace, but it's not a global config option either...)
2021-01-31Yank TODO note-to-self accidentally checked in, and fix "make test" standalone.Rob Landley
2021-01-31Elliott wants the test->[ symlink back. Enable when either sh or test enabled.Rob Landley
2021-01-30Fix a couple of test regressions from last commit adding function() plumbing.Rob Landley
2021-01-28toysh: start of function call logic.Rob Landley
2021-01-28Shut gcc's "is not actually used uninitialized" false positive warnings up.Rob Landley
2021-01-26A few more getty cleanups.Rob Landley
2021-01-26getty/telnet/tftpd: minor cleanup.Elliott Hughes
Remove STDIN_FILENO and use FLAG(). Use xsetspeed() rather than have a duplicate table. Inline getty's print_prompt(). There's still a lot of cleanup needed here, in particular use of toybuf and removal of the inappropriately-named HOSTNAME_SIZE (and ideally sharing that logic with login(1) which already contains a better implementation of it).
2021-01-26Fix bug pointed out by asm89 and add test.Rob Landley
2021-01-23Fix grep bug where -f /dev/null added "" regex matching everything,Rob Landley
and address TODO where -z was still splitting patterns on \n
2021-01-18Remove redundant blake2 mention and move base32 into the implemented list.Rob Landley
2021-01-15Cleanup base32 slightly.Rob Landley
2021-01-14A few more shell tests.Rob Landley
2021-01-13Fix "date -I" segfault and teach lib/args.c that "I(opt):;" short opt withRob Landley
no argument returns NULL same as --opt without =
2021-01-08chmod.test: fix the tests to work on mksh as well as bash.Elliott Hughes
mksh doesn't support the {a..b} bashism or the ${!name} bashism, causing the tests to fail on Android. This works for me on both mksh and bash (both tested on Debian).
2021-01-07new toy: base32Moritz Röhrich
Add new toy `base32`. Add tests for `base32`. base32 is added by adapting the base64 encode/decode function to also do base32 encoding/decoding. Then their respective main functions set up the global parameter `n` to be the number of bits used in the encoding (5 for base32 and 6 for base64) and `align` to align the result to a certain length via padding. These are deliberately kept as parameters to enable future expansion for other bases easily.
2021-01-06seq: always xwrite.Elliott Hughes
Pointed out by the compiler combined with glibc's use of __attribute__((__warn_unused_result__)) on write().
2021-01-06main.c: construct a combination locale to add UTF-8.Elliott Hughes
We need <xlocale.h> for newlocale(3) on macOS, despite it being in POSIX 2008's <locale.h>. musl apparently doesn't have <xlocale.h>, so that's another trick to teach to portability.h...
2021-01-01Fix comma regression reported by Denys Nykula.Rob Landley