Age | Commit message (Collapse) | Author |
|
(I added the "only run if root" stanza at the beginning.)
|
|
Probe the default buffer size, replace the constants with FLAG_x macros, add -r,
replace the byte at a time output with a single xwrite(), more comments.
|
|
tweaking the spacing.
I didn't apply the POSIXLY_CORRECT gnuism because it's a can of worms (as would
be LSB_CORRECT), and you can presumably alias df="df -P" if you want that.
Possibly in future I should factor out the "readahead and align columns based
on measuring the largest value in each" code from ls and apply it here.
|
|
most notably:
* Android switched to mksh several releases ago.
* system/core/reboot is Android's reboot(1) (and sdcard is how
emulated sdcards work in production, not a testing thing).
* I removed all the "apparently unused" tools from the tree, since
they were all actually unused with the exception of lsusb which people
would build as/when they needed it. (which may need resurrecting when
they come back and find there's no "lsusb -v" in toolbox.)
|
|
We zero the buffer and if the link read fails that's left alone, so
it's ok for the symlink not to be there. Unfortunately, typecasting the
return value to (void) doesn't shut up gcc, and having an if(); with the
semicolon on the same line doesn't shut up llvm. (The semicolon on a new
line would, but C does not have significant whitespace and I'm not going
to humor llvm if it plans to start.)
So far, empty curly brackets consistently get the warning to shut up.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The CFG_* symbols are always defined so if() can use them as compile-time
constants, so don't if defined() them.
Doing USE_BLAH() around variable definitions opens up the same potential for
config-dependent build breaks as #ifdefs do, just make the whole command
depend on the symbol for now, factor out the utmpx infrastructure later.
The PTY probe was always failing because it used NULL without #including
the header that defines it. Substitute 0 instead.
|
|
Android is missing all of these; we need to probe for some so we have
a config symbol to depend on.
sethostname() is easily replaced.
We got termios.h via pty.h; now it's not included in configure-step tools,
so we need termios.h to generate globals.
|
|
Once we've read through the initial TT.bytes backlog we discard the extra data,
meaning we adjust the remaining amount each time so the overflow is zero bytes.
We were doing the adjustment right, but not zeroing out the overflow counter
after we did so.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to fail on non-toybox implementations.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
implement them yet.
|
|
*tr.c*: It translate, squezze and delete characters.
Supported classes are alpha, alnum, digit, lower, upper
space, blank, puct, cntrl and xdigit.
*crontab.c*: Companion of crond. It maintains crontab files.
|
|
symlink following.
|
|
without -H or -L (just like ls -l).
|
|
Only good for TEST_HOST=1 at the moment because the test infrastructure itself
depends on sed, so if an unfinished sed is in the $PATH it goes boing. But
hey, corner cases!
I have... more.
|
|
anything interesting yet.
|
|
|
|
|
|
attempts to read from stdout instead of stdin for "-" or no arguments.
|
|
|
|
|
|
|
|
Suggested by Ashwini Sharma, I wound up implementing it by creating the new
link at a temporary name and renaming it over the old one instead of renaming
the old file out of the way and putting it back if it failed.
(Because "mkdir -p one/one/blah && ln -sf /bin/one one" would otherwise
rename one/one out of the way and only notice it can't delete it way at the
end when recovery's darn awkward, vs create new thing and if rename fails
(including EISDIR) that's the main error path. And yes the temporary name
is in the same directory as the destination so we never rename between mounts.)
link over the old one instead of renaming the old file and renaming it back.
|
|
|
|
|
|
|
|
This implements all of the namespace parts of nsenter, but UID and GID
switching are missing, as are -r and -w (both because they're not strictly
necessary and because the nsenter manpage has an insufficient
description of how they work).
|