Age | Commit message (Collapse) | Author |
|
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 :-)
|
|
|
|
set $HOME $PWD and $OLDPWD, fix prompt \w, shuffle some functions around
to avoid prototypes, implement tilde expansion, add FORCE_COPY.
|
|
|
|
builtin, and add -u.
|
|
|
|
This doesn't (yet) add shell builtin awareness to time, kill, or pwd,
just lets them run in the shell process.
|
|
|
|
a full block.
|
|
|
|
output #definable.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clear the last byte of the allocated buffer.
|
|
Switch -t to -c (like man page says), add -w (wait) and -d (detach from tty)
|
|
|
|
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.
|
|
|
|
|
|
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.
|
|
|
|
When we "losetup" success need mount loop device.
Found this issue on AndroidQ
|
|
|
|
(Also show unknown values on Linux in hex rather than just "unknown".)
|
|
Move longopts after their corresponding shortopts instead of before
|
|
|
|
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.
|
|
|
|
Includes new tests.
|
|
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.
|
|
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).
|