aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-09-19vi: changes to buffer drawingJarno Mäkipää
Replaced: draw_str_until with lib/crunch_str() where possible Removed: Unused char draw functions. Implemented: crunch_nstr() which is crunch_str with additional check for byte length, this can be used to draw substrings or non null terminated strings. (This can be moved to lib/ if its useful for others) Reimplemented: Buffer drawing without line wrapping. Now too long lines are drawn with @ in end. And cursor line scrolls left and right when hitting right margin point. This will simplify buffer handling alot. Linewrapping can be reimplemented later if needed but will add complexity Implemented: set list and set nolist ex commands, set list will show escape codes such as tabs Fix: Bug on splitting 2 lines, split was 1 byte off.
2019-09-19Basename can have suffixes starting with a dash.Rob Landley
2019-09-18Get exit code right when command intercepts signal, make timeout useRob Landley
xwaitpid(), fix off by one in xwaitpid().
2019-09-18Fix tar creation with hole at end.Rob Landley
The "gratuitous extra entry" is only gratuitous when there isn't a hole. (Which we can detect and not include but then we wouldn't match other implementations.)
2019-09-17Allow --tmpdir's argument to be optional.Rob Landley
2019-09-17Implement -s.Rob Landley
2019-09-17tar.test: add a test for a sparse file with a hole at the end.Elliott Hughes
2019-09-16Ahem, -newerXY is in _find_, not in _file_.Rob Landley
2019-09-16bug: tar tvf blah.tar.xz was running xz when it meant xzcat.Rob Landley
2019-09-15Move mktemp.test comments into test descriptions.Rob Landley
2019-09-15Fix failing test.Rob Landley
2019-09-15The ! changes I meant to check in last time were applied ot the wrong dir.Rob Landley
(oops.)
2019-09-15Elliott's test for sparse file size display.Rob Landley
2019-09-15Fix tar files that end sparse (need to call truncate), and display/exportRob Landley
length of sparse files properly.
2019-09-14Add -newerXYRob Landley
2019-09-13timeout: fix exit status for sneaky subprocesses.Elliott Hughes
There's nothing to stop a subprocess from catching our SIGTERM on timeout and exiting, causing us to incorrectly report that it didn't time out. Android's ART has a utility that does exactly this. Explicitly catch this case, and add corresponding tests. Bug: http://b/141007616
2019-09-12Minor cleanup.Rob Landley
2019-09-11Add NOP -f, -g#, and --no-backup-if-mismatch options.Rob Landley
(All ignored, because they disable stuff we don't do.)
2019-09-11Add q123 exit code, add Q, fix "sed ' ! '" bad error message.Rob Landley
2019-09-09ls: fix spacing of -lZ and --full-time.Elliott Hughes
Two more spacing bugs here, one before the security context for -Z, and one after the size with --full-time. Before: $ ./toybox ls -lZ --full-time Config. -rw-r----- 1 enh primarygroup? 56162019-09-07 21:09:32.892215100 -0700 Config.in After: $ ./toybox ls -lZ --full-time Config. -rw-r----- 1 enh primarygroup ? 5616 2019-09-07 21:09:32.892215100 -0700 Config.in
2019-09-09vi: added support for tabsJarno Mäkipää
Add: tabs, follows tabstop variable currently hardcoded to 8. Should be adjustable with :set tabstop N according to man page fix: search, issue with searching substring that is more left than cursor position on following lines.
2019-09-08make "for i in" work.Rob Landley
2019-09-07host: cope with large DNS responses.Elliott Hughes
DNS responses were limited to 512 bytes back when they were UDP only, but if you have a TCP connection you can get up to 64KiB. Also use the existing constant for the size of rrname. Also update the help text. Also consistently use `sizeof(T)` rather than `sizeof T`. Also use consistently use `ARRAY_LEN`. Fixes #56. Test: `toybox host value.testing.express`
2019-09-07vi: small fixes.Elliott Hughes
I really needed to be able to edit a file on the device, and this was the nearest thing handy, and it turns out to be more or less usable for basic editing, so... Support cursor keys. Support :q (since there's currently no record of whether the file's modified or not, :q is the same as :q!). Add 'A' to insert at end of line. Add 'n' to find next after '/'. Fix backspace all the way to get out of ex command mode. Fix escape sequences to not hard-code assumptions about the terminal's default background and foreground colors. Fix 'spesial' typo for 'special', and remove explicit array sizes.
2019-09-07md5sum: don't allow broken sha-3 sums.Elliott Hughes
If you accidentally configure the sha-3 sums on, but don't enable libcrypto, you'll get toys that just output md5 sums instead. This patch doesn't cause a build-time error (my original plan), but does at least ensure that toybox refuses to include incorrect sha-3 sum implementations.
2019-09-07More work on mkroot.sh.Rob Landley
2019-09-07airlock still needs gzip compression side for kernel build.Rob Landley
2019-09-07Don't have cross.sh bother with "output" directory, make root uses differentRob Landley
subdir name now anyway, and making toybox isn't in a subdir.
2019-09-07Fix up clean so we clean up after toybox-$TARGET and can do cross.sh all.Rob Landley
2019-09-06Update paths for scripts/cross.sh being in subdir instead of ./cross.sh.Rob Landley
2019-09-06Update airlock targets.Rob Landley
2019-09-06Add cross.sh to cross compile for one or more targets, and tweak make.sh toRob Landley
produce different output names for different ${TARGET}s.
2019-09-05roadmap: more Android/AOSP updates.Elliott Hughes
Update source links, add a bit more rationale.
2019-09-04Factor out AF_UNIX socket openting, use FLAG() macros, xsocket() alreadyRob Landley
does CLOEXEC (should fix macos build).
2019-09-04find: support -printf \0 octal escapes and \c.Elliott Hughes
I think when I wrote this I tested the named escapes like \n and hex escapes, and when I found \x wasn't supported I didn't even think of octal. And I only learned about \c when I was looking at echo and printf to compare their escape implementations a few weeks back. Add the missing escapes and corresponding tests. Fixes #139.
2019-09-04Add instructions for doing install_flat by hand.Rob Landley
2019-09-04ls: fix -Z, add a test.Elliott Hughes
This broke a netd test (but sadly in postsubmit rather than presubmit). Also add a trivial test that would at least have caught this bug. Bug: http://b/140453237
2019-09-04DIRTREE_STATLESS doesn't have to test 3 stat fields, it sets a flagRob Landley
2019-09-04Convenience script to build gcc+musl cross compiler toolchains for variousRob Landley
targets using https://github.com/richfelker/musl-cross-make
2019-08-30Update roadmap (what android is using out of pending).Rob Landley
2019-08-30blkid.test: allow e2fsprogs' blkid too.Elliott Hughes
This lets me see the _meaningful_ differences between toybox and e2fsprogs, which is probably good for the health of both. I've tried to get the whitespace fixed upstream a few times since 2017, but... (The current differences are that e2fsprogs doesn't support f2fs labels, and outputs reiserfs labels after the uuid rather than before.) On the util-linux front, although my patch earlier this month fixed the tests against util-linux 2.32, I now have 2.33 on my laptop, and that's added a new LABEL_FATBOOT field :-/
2019-08-30ls: fix recent regression.Elliott Hughes
Commit c26870dab3462c6176936384b090df6b9ba46dee broke ls' error reporting for files that don't exist. `ls $F` is used by some as an equivalent of `test -e $F`. This patch also adds a regression test.
2019-08-30find: fix -name corner case.Elliott Hughes
This fixes the case where someone's done something (weird) like: find src/*.c -name foo.c Previously the match would fail because one side of the comparison was already a path.
2019-08-29diff and patch: support special characters in filenames with quoting as well ↵William Haddon
as unusual timestamp formats After further research and testing, I've produced a patch which handles all filenames with special characters by copying the GNU quoting behavior, and also treats anything following a tab as a timestamp. This increases both ability to handle possible filenames and ability to apply patches found in the field. In diff, quote and escape filenames according to the following rules. * Surround the filename with quotes if it contains a byte less than 0x20, a byte greater than or equal to 0x80, space, backslash, or quote. * Replace alert, backspace, form feed, newline, carriage return, tab, vertical tab, backslash, and quote with \a, \b, \f, \n, \r, \t, \v, \\, and \", respectively. * Replace other bytes less than 0x20 or greater than or equal to 0x80 with a backslash followed by the three octal digits representing the value of the byte. * Treat valid UTF-8 characters involving sequences of bytes greater than or equal to 0x80 the same as other sequences of such bytes. In patch, process quoted and escaped filenames according to the following rules. * If the filename does not begin with a quote, do not modify the filename. * Remove quotes surrounding the filename. * In quoted filenames, replace \a, \b, \f, \n, \r, \t, \v, \\, and \" with alert, backspace, form feed, newline, carriage return, tab, vertical tab, backslash, and quote, respectively. * In quoted filenames, replace a backslash followed by octal digits with the byte with that value in octal. Also, in patch, treat anything on a +++ or --- line following a tab character after the beginning of the filename as a timestamp, rather than part of the filename.
2019-08-29Fix sh handling nested if/else/elif statements alaRob Landley
if true; then if false; then echo one; elif echo two; then echo three; else echo four; fi; fi
2019-08-28Fix find(1) after c26870dab346.Elliott Hughes
Unlike ls, find does treat ENOENT specially. Add an extra test (and fix the behavior) for the case of ENOENT for a path provided on the command line --- unlike other ENOENT cases (typically dangling symlinks), ENOENT for a command line argument should report an error. Also remove obsolete `|sed` from the symlink loop test.
2019-08-27Add ASAN=1 to the build, in a slightly different way than Elliott suggested.Rob Landley
I put it in configure, with the other environment variables, instead of in scripts/make.sh. Here's Elliott's original commit comment: ========== Just use `ASAN=1 make test_grep` or whatever. You'll probably want to set $ASAN_SYMBOLIZER_PATH to point to llvm-symbolizer, but Debian makes that annoying by calling the symbolizer /usr/bin/llvm-symbolizer-4.0 or whatever, and ASan refuses to use it: ==43370==ERROR: External symbolizer path is set to '/usr/bin/llvm-symbolizer-4.0' which isn't a known symbolizer. Please set the path to the llvm-symbolizer binary or other known tool. My usual workaround for this is to drop an llvm-symbolizer symlink in the current directory, and I'm happy to automate that in the script to make it require no knowledge of any of this nonsense, but haven't done so in this initial patch. I tested that this is actually working by reverting the grep fix and running `ASAN=1 make test_grep`.
2019-08-26xargs: add --max-args synonym, -o option, and fix -p.Elliott Hughes
The Linux kernel uses the --max-args synonym for -n. Barbarians who use vi need xargs' -o to be able to do something like: find -name xargs.c | xargs vi # Sad vi. find -name xargs.c | xargs -o vi # Happy vi. The -p option needs fixing to read from /dev/tty because stdin is otherwise occupied in xargs. I think xargs is the only place that needs this, so it didn't seem sensible to make all callers to yesno() be specific about which they wanted, hence the new function. Also remove the documentation for the build-time XARGS_PEDANTIC option which isn't actually implemented. Also add a TODO for -P (which is used by at least one script in the Linux kernel).
2019-08-26Try to make ls failure more graceful. Print ? ? ? entries instead of error msg.Rob Landley
Tweak DIRTREE_STATLESS so it returns zero stat for any error (I'm testing that dev, ino, and blksize are all zero), and fill in file type from readdir()
2019-08-23man: fix help, align -k output, and fix double close.Elliott Hughes
The "info" pages are something very different from the "intro" pages :-) do_lines already closes the fd. Also improve the error message for `man`.