Age | Commit message (Collapse) | Author |
|
My previous attempt to fix this worked for ext-with-extents on the
desktop, but not for f2fs-with-encryption on cloud Android devices.
This feels quite a bit cleaner, and has the benefit of actually working
everywhere I've tried it.
I've also added perfunctory testing of -p too, which was missing before.
|
|
|
|
|
|
I'm trying to switch Android over to toybox chattr/lsattr from
e2fsprogs. Remove those tests that relied on being able to use
chattr(1), remove the duplication that tested both a bare name and a
full path, take into account all the flags that lsattr can now output,
and cope with the fact that the exact flags you'll see depend on your
file system. (Unfortunately this means trusting lsattr in the lsattr
tests, which isn't ideal, but without a known environment I don't think
we can do any better.)
|
|
Test file integrity after load, move, delete and save+exit. Drawing
of buffer is not tested yet.
Added -s script option, accept file that is run as startup script of
commands. File is parsed byte at time and handled as you had typed it.
If EOF has been reached without editor close command, editing is
continued normally using keyboard. This functionality is in vim and
neovim, but not in POSIX vi standard. nvi (vi used in some macs) has
-s with different meaning...
Some simple tests added, dw last line test fails, so test is disabled.
|
|
The kernel script scripts/kconfig/merge_config.sh uses cp -T.
(Also sort the options into alphabetical order while adding -T, so that
eyeball binary search actually works when trying to find an option! Oddly,
they all show in reverse order because there's a bug in the help text
generator, but that's a problem for another day...)
|
|
A 5.4 kernel returns EINVAL rather than ENOBUFS when you try to
configure an IPv6 address with the MTU set too small to support IPv6.
Rather than check for both errors, just check for generic failure for
now.
|
|
Basic readelf(1) implementation, with output close enough to the binutils
version to be usable with scripts that expect the binutils version. This
started as an implementation of nm(1) until I realized that I almost always
want readelf instead, and that you actually have to do much of the work
needed for readelf just to implement nm. Arguably nm (being part of POSIX)
belongs in toybox while readelf doesn't. An argument could also be made that
neither really belongs in toybox, belonging in a separate set of development
tools (such as binutils or the LLVM binutils).
Doesn't support most of the architecture-specific stuff, most notably
relocations, but is aware of things like ARM exidx sections and the common
register state notes in core dumps for the "big four" architectures: arm,
arm64, x86, and x86-64.
Doesn't support symbol versions (but probably should).
Doesn't support section groups or the -t "section details" (which is a long
form of -S "section headers" that I've never seen used in practice and which
isn't part of -a). Doesn't support dumping unwind info or the hash table
bucket histograms.
Reuses the table of ELF architectures from file(1).
Not fuzzed, but successfully parses all the ELF files in my Ubuntu 18.04
system's lib directories. Attempts to exit with an error when presented with
an invalid ELF file rather than struggle on as binutils seems to.
|
|
|
|
|
|
One of these tests fails in the gap between the locale it's run in
changing the year and Europe/Berlin's changeover (caught by our
automated testing, which tends to celebrate every new year by finding
mistakes in tests like this).
Another test has been failing consistently since 2020 because the
default date output format includes the day of the week. Rather than
implement Zeller's Congruence in the shell, explicitly use a format that
doesn't include the day of the week for that test (and reuse the
now-fixed calculation of the current year used by the other
year-sensitive test).
|
|
|
|
|
|
|
|
|
|
It turns out that zlib defaults to just copying data verbatim if the
input isn't in gzip format, rather than rejecting it. Explicitly add a
check that zlib isn't doing that. (The toybox inflation path already
errors out.)
Also add the missing test.
|
|
Add basic smoketest while we're at it.
|
|
|
|
|
|
None of the current tests are relevant on the Mac because small
symlinks are inlined into inodes, as are empty directories, so
everything's using zero blocks.
|
|
|
|
::2 can legitimately be part of an IPv6 address, causing the test to
fail because the grep matches an unrelated part of the output. Be more
explicit about what we're actually searching for (as the previous test
already was) to avoid flakiness.
|
|
|
|
The Mac iconv_open(3) doesn't follow Unicode TR#22 rules for charset
alias matching that bionic and glibc do (and, strictly, POSIX doesn't
say you have to even though it's obviously a good idea), so we have
to say exactly "UTF-8" rather than "utf8".
Additionally, the 2006-era bash 3.2 on current versions of macOS
(because it was the last GPLv2 bash) seems to have bugs that cause
it to mangle UTF-8 input, so we can't reliably echo a UTF-8 sequence
into a file. Use \x in the tests to work around this.
|
|
BSDs call the root group "wheel" instead.
Also remove the duplicated "id id" from the progress output.
|
|
|
|
/proc/self/exe doesn't exist, but $C already gives us the path to
the binary. /dev/full doesn't have any equivalent afaik, so skip
that test if /dev/full is missing.
|
|
Check that the filename we fed in is output to stderr.
|
|
Includes new tests.
|
|
This was failing on macOS because it was calling the system env(1).
|
|
|
|
Bug #69 was fixed recently by commit
0b2cfcb8fdea9673f3c2e0940f1b16d5825e16ea. Add the two tests from the
bug so we can close it out.
Fixes #69.
|
|
glibc doesn't set errno when getpw* fails, so the perror_exit() looked
fine. bionic sets ENOENT and the trailing "No such file or directory"
looks silly, so switch to error_exit().
Additionally, the default format tests fail on Android because of
SELinux (but for a different reason than usual!). There's no id
--no-context flag, so use sed to just throw away any SELinux context.
|
|
The previous patch broke -nG, so move the -G code back to showone()
which handles -n.
Add the missing tests for the various uses of -n.
Also refactor the code to avoid the need to test optflags directly.
|
|
variable declarations go at the start of blocks, and remove specific
people's names from todo items (anybody can do any todo).
|
|
Handle unknown groups (fixes #117).
Fix -G to show *all* groups, not just all supplementary groups.
Fix -Z output to not include "context=".
|
|
Fall back to converting the "name" to an integer and calling getpwuid().
We need to update `username` for the later call to getgrouplist().
Also fix the separator printing logic to avoid a trailing ',' on `id 0`.
Switch to FLAG() and move some declarations down to where they can be
initialized, both for clarity.
Also add simple tests. Sadly, there's no always-present user that is in
multiple groups.
|
|
These tests ensure we follow the behavior of other `ls` commands, in
the basic case.
|
|
|
|
|
|
|
|
Reason: unicolumns() does not print combining characters correctly
Combining characters follow the character which they modify.
https://www.cl.cam.ac.uk/~mgk25/unicode.html#comb
xterm renders cut test1.txt -C -1 now correctly
|
|
And a few small cleanups while I was there.
|
|
back when they haven't specified -s, add tests.
|
|
89a8d00e470f1999a62ceea81269af2f39c655ba broke -E by switching to a prefix
match. 4e0d246ec98f2576d52eb5fd70cd6e86d542e2e4 fixed it again. Add the
missing regression test.
|
|
|
|
|
|
Inline array becomes garbage outside the if.
|
|
and silence "killed" messages from the shell by forking in a subshell.
|
|
Don't run the command with no arguments if we run out of input but
have already run the command at least once. The implementation of "run
the command at least once (unless -r was supplied)" wasn't taking into
account whether or not this was our first time round the loop.
Fix the exit value, and the -- already documented but not implemented --
behavior if a child exits with status 255.
Also extend the tests to cover these cases, plus cases I broke while
coming up with the fix. Add more tests to convince myself that we've
correctly interpreted how -s is supposed to behave, and fix the corner
cases at the bottom end of the range.
This fixes some issues we were seeing trying to build the Android SDK
for (and more importantly, on) macOS.
|