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.
|
|
(A git build takes it from "git describe".)
|
|
|
|
|
|
|
|
makes those two remaining tests pass.
|
|
|
|
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.
|
|
Add support for setting projid in chattr, and dumping it in lsattr.
Also fix the lsattr output formatting, and undo my well-intentioned
sorting of the flags because that broke the ordering in the lsattr terse
output.
|
|
Also update help to include flags that were already added. Remove
useless duplicative comments. Swich to FLAG macros.
|
|
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.
|
|
HERE document into an echo ala group. (It wasn't easily coerced into 80 columns
and having it be multiple echoes was about as ugly as the HERE document, so
I undid it again and missed a bit.)
|
|
|
|
fix: first line delete
fix: delete with e move
fix: statusline 1 row lower, remove eol
cleanup: use dlist_pop on delete
cleanup: move globals into GLOBALS
|
|
^D is the opposite of ^U in vi (the ^D/^U pair is the half-screen
version of ^F/^B). ^C is unbound in vi. It's pretty surprising for these
to cause toybox vi to exit, and it's annoying as long as toybox vi
unconditionally exits rather than checks whether there are unsaved
modifications!
(I'm tempted to implement ^D/^U and ^F/^B, but I don't want to make
Jarno's rebase of his in-progress changes any harder.)
|
|
|
|
used uninitalized" warning, move flow control character detection to the
right place, change scratch zeroing to the same way main() does it.
|
|
|
|
This is false on ILP32 targets with 64-bit time_t.
|
|
-w was added recently. The change in behavior so we now always fork
means that it's needed in more cases too: other implementations of
setsid(1) only fork if getpgrp() != getpid(). This broke a script, which
is what made me notice the missing help.
This seems to have been an accidental change, and is contrary to what
the util-linux setsid(1) man page says: "The command calls fork(2) if
already a process group leader. Otherwise, it executes a program
in the current process", but whether we change our behavior or not, we
should document the new option.
|
|
All of this was fine on LP64 where `long` and `long long` are the same
length, but breaks the LP32 build with -Wformat.
|
|
The epoch was being defined as UL, which is fine for LP64, but too small
on LP32 for what we're trying to do.
toys/net/sntp.c:60:32: warning: left shift count >= width of type
return ((tv.tv_sec+SEVENTIES)<<32)+(((long long)tv.tv_nsec)<<32)/1000000000;
^~
(Android doesn't use this, I'm just fixing this too while I fix the
LP64isms I introduced in readelf...)
|
|
The "historical" variant is still the only one in use on Android right
now. We still need to switch to the numbers we agreed on with the other
System V ABI users.
See https://groups.google.com/g/generic-abi/c/bX460iggiKg for the
original discussion on RELR.
|
|
|
|
|
|
mbtowc(0, 0, 4) is weird, and ignoring the result is weird. Avoid all
this by just reusing the toybox lib utf8 functions.
Also fix the row/column display on the status line to count from 1 and
correctly distinguish bytes and characters in non-ASCII, and change the
mode output to only explicitly say when we're in insert mode, in the
same way that vim does. (Every time I saw the old blue-on-black text for
COMMAND I thought toybox vi had crashed!)
|
|
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 :-)
|
|
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).
|
|
|
|
|
|
|
|
|
|
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.
|