Age | Commit message (Collapse) | Author |
|
|
|
|
|
On empty lines, we'd read one byte before the start of the buffer.
|
|
f2866cf58a07c9d681ecd6695ea969ac70e59a3d fixed the cpio --trailer check
as it claimed to, but doing so changed our behavior (since it used to be
always-on and is now off unless you supply --trailer).
This broke one of the cpio tests.
Since I can't find any other cpio that has a --trailer option (or its
inverse), this patch removes --trailer. This reverts our behavior to
our old behavior (always include the trailer). Judging by the fact that
the cpio tests pass with TEST_HOST=1, this seems to be the expected
behavior.
|
|
|
|
(ls would read from an uninitalized variable and never use the result because
the test is afterwards, but asan freaks about impurity and unclean quantum
state that's never observed or some such. You read uninitialized but
definitely allocated stack memory into a REGISTER, and then performed
an ADDITION on it to produce a result you never use! For SHAME!)
|
|
|
|
The filter() function modifies st_blocks so it's always 1KiB rather than
512B blocks, but the human-readable output was still assuming 512B. This
meant that `ls -sh` was showing figures half the size of `ls -s`, and
that the "total" line with -h was also off by a factor of 2.
No new test, because I don't know how to write one that would work on
all file systems.
Bug: http://b/153383721
|
|
|
|
|
|
POSIX chose I rather than i as the case-insensitive flag for s///,
because apparently more seds support I than i. We're allegedly alone in
only supporting i. (On the Mac, sed supports neither.)
Strictly this isn't *currently* in POSIX, but it's been accepted for
issue 8.
Bug: https://austingroupbugs.net/view.php?id=779#c2050
|
|
|
|
|
|
Used by the Linux kernel build when copying kernel headers to
kernel-headers.tar.gz.
Bug: http://b/152244851
|
|
|
|
In case I'm not yet in the running for the most pedantic change of this
release, I think the "days of the week are written with initial capitals
in English" subset of this patch is a strong contender.
(Found via `toybox help -a | ispell -l | sort | uniq`.)
|
|
add: test for -D
fix: b/c/d/FILE not copying into a/ with -D option
dirname() is not needed when handling FLAG(D) since filename under
src or dest should not be changed.
github.com/landley/toybox/issues/165
|
|
The question "how does this toybox command behave" should have an answer,
not "it depends". (Also, --preserve at the start of a paragraph was confusing
config2help.c into thinking it was an option paragraph.)
|
|
|
|
|
|
My desktop and laptop have a pid_max of 262144 now.
|
|
(It was outputting the patch hunk where it went, which reverted the context.)
|
|
Even GNU don't pretend they're still on 1970s terminals where ` and '
were a matching pair any more.
|
|
This only touches 24 of the 68 toys/posix/ files --- the others were
already canonical.
Potentially contentious, so worth stating explicitly, is that there
were 8 matches for "COMMAND..." amongst all existing help output,
with 7 matches for various inconsistent variants involving something
with "ARG", so I resolved that in favor of using "COMMAND..." (which
is also shorter overall, and avoids nested []s).
|
|
|
|
|
|
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...)
|
|
This isn't in POSIX, but Debian and macOS' cal(1)s both do this, and
it's annoying to have to run date(1) separately.
|
|
This is false on ILP32 targets with 64-bit time_t.
|
|
bionic works around the fact that you can't use an O_PATH fd with
fgetxattr(2), but glibc doesn't.
Fixes https://github.com/landley/toybox/issues/158.
|
|
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.
|
|
Odd (and un-toyboxy) that we advertise the locale-specific output
formats but not the ISO ones :-)
|
|
This doesn't (yet) add shell builtin awareness to time, kill, or pwd,
just lets them run in the shell process.
|
|
|
|
|
|
|
|
|
|
|
|
Clear the last byte of the allocated buffer.
|
|
Add basic smoketest while we're at it.
|
|
|
|
|
|
POSIX only mentions -i/stdin, but GNU patch -- and Larry Wall's patch 1.3,
found via https://en.wikipedia.org/wiki/Patch_(Unix) -- also support
supplying the name of the file to patch and the name of the patch file
as optional arguments.
The AOSP build makes use of this syntax to patch snakeyaml to remove
references to java.beans.* stuff.
|
|
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.
|
|
|
|
One is really "the command is too long for me to ever call it given
other constraints", so leave "argument too long" for the case where it's
actually an argument causing the issue.
|
|
|
|
|
|
but the problem is some vertical sort arrangements are impossible, and that's
what it was testing for. For example, showing 29 entries in 9 columns with
horizontal sort requires 4 rows:
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 27
29 29 x x x x x x x
But with vertical sort that would be:
1 5 9 13 17 21 25 29 x
2 6 10 14 18 22 26 x x
3 7 11 15 19 23 27 x x
4 8 12 16 20 24 28 x x
It still doesn't fit in 3 rows (3x9=27) but with 4 rows the 7 leftover spaces
eats a whole column, so you _can't_ have 9 columns with vertical sort.
|
|
in whitespace accounting, eliminate lastcol, same sort[next] in dt, don't
count trailing whitespace on last entry in row.
|