aboutsummaryrefslogtreecommitdiff
path: root/toys
AgeCommit message (Collapse)Author
2019-10-26losetup: Fix memory leaks in loopback_setup()Alessio Balsini
The function loopback_setup() uses xabspath() to get the loopback path. This function allocates dynamic memory which should be freed by the function caller. But there are early return cases where the dynamic memory is not freed. Besides the special cases of perror_exit(), for which the "early" free operation is simply used to silence memory analysis tools, the if (racy && errno == EBUSY) return 1; branch may be a real cause of memory leak. Fix by adding a new free() in the racy+EBUSY branch and anticipating the existing free(). Signed-off-by: Alessio Balsini <balsini@android.com>
2019-10-26Add ln -r and relative_path() to lib, plus test.Rob Landley
And a few small cleanups while I was there.
2019-10-24Fix the xargs argument too long problem by putting the proper accountingRob Landley
back when they haven't specified -s, add tests.
2019-10-23Use adjtimex instead of adjtime (bionic hasn't got adjtime).Rob Landley
And check in more multicast support that's been sitting in the tree, I don't have a test enviornment for it anymore but somebody wanted this...
2019-10-22JakeSFR on github pointed out that broken symlink relative detection was beingRob Landley
checked relative to the current directory, not from where the symlink lives.
2019-10-21Use FLAG() macros more.Rob Landley
2019-10-21Remove getdirname(), it's _not_ a drop-in replacement for dirnameRob Landley
(it returns a malloc), and doesn't match the object lifetime of getbasename() (which always returns some or all of its argument string). The dirname() in libc modifies its argument string, but that's what posix says to do: https://pubs.opengroup.org/onlinepubs/9699919799.2008edition/functions/dirname.html so I guess we can live with it.
2019-10-21More xargs cleanup.Rob Landley
2019-10-21xargs: fix type of a local to avoid a cast.Elliott Hughes
2019-10-21vi: unalloc used memory, cleanups, fixesJarno Mäkipää
add: linelist unload fix: proper utf8 handling on insert mode backspace fix: free allocated data at exit cleanup: rename some variables to be describive but short cleanup: reorganize some variables in main
2019-10-19wget: Added support for HTTP 301 and 302 redirectsJarno Mäkipää
Added: parsing of redirectation responses, will now follow redirectation path until maximum of 10 jumps. This will probably lead to server advertising user the https url.
2019-10-17ls: Ensure file names are separated by 2 spacesAndrew Ilijic
We need two spaces between filenames because that is the convention followed by other implementations. More importantly, if we do not have two spaces, certain Unicode file names cause filenames to run together. In Unicode, combining characters come before the character they modify. If a filename ends in a combining character, the combining character attaches to the space that follows it, causing the space not to be visible. Having a two-space gap stops the above issue from happening. For context and a bit more information, see mailing list link below. https://www.mail-archive.com/toybox@lists.landley.net/msg05986.html
2019-10-15In-passing cleanup and add a NOP -P.Rob Landley
2019-10-14Make cmp work with 1 argument (implicit - as second argument).Rob Landley
2019-10-14losetup: Fix null-termination of src string instead of dest after copyAlessio Balsini
The function loopback_setup(), after copying the loopback device name with xstrncpy(), ensures the null-termination of the string by forcing its last byte to 0. Unfortunately, this operation: - was probably intended to null-terminate dest instead; - does not affect the program execution because src is free()d right after; - if the size of src is smaller than the offset of the written zero, it modifies an unknown byte in the heap. Drop the null-termination line to fix the issue: xstrcpy() automatically null-terminates dest, or fails if the size of src is bigger than the the requested number of bytes to copy. Signed-off-by: Alessio Balsini <balsini@android.com>
2019-10-12Don't need the second variable, and put the comment back.Rob Landley
2019-10-12Fix argless find segfault.Denys Nykula
Inline array becomes garbage outside the if.
2019-10-12hostname: fix error reporting.Elliott Hughes
The <netdb.h> functions have their own errno :-(
2019-10-09xargs: various fixes.Elliott Hughes
Don't run the command with no arguments if we run out of input but have already run the command at least once. The implementation of "run the command at least once (unless -r was supplied)" wasn't taking into account whether or not this was our first time round the loop. Fix the exit value, and the -- already documented but not implemented -- behavior if a child exits with status 255. Also extend the tests to cover these cases, plus cases I broke while coming up with the fix. Add more tests to convince myself that we've correctly interpreted how -s is supposed to behave, and fix the corner cases at the bottom end of the range. This fixes some issues we were seeing trying to build the Android SDK for (and more importantly, on) macOS.
2019-10-09ls: fix seqfault on broken localeJarno Mäkipää
When user builds toybox CFG_TOYBOX_I18N disabled and tries to list folder contents with multibyte characters other than UTF-8 ls might seqfault since wcrtomb returns -1 while locale set to fi_FI-UTF-8 disable CFG_TOYBOX_I18N touch őőőőaaőő ls
2019-10-09vi: fixesJarno Mäkipää
fix: force redraw after :set (no)list fix: force redraw after insert fix: split on zero cursor position fix: yank and push with utf-8 content
2019-10-08Add dnsdomainname, fix "hostname -d" segfault on machine with no domain name,Rob Landley
and cleanup hostname to only call gethostname() once. It passes the one test in test_hostname, if that helps.
2019-10-08Add arch command.Rob Landley
2019-10-04vi: Scroll unmodified lines using escape codesJarno Mäkipää
Scroll visual buffer up and down using standard escapes when content has not changed, instead of redrawing every keypress. Sidescroll now moves all the lines instead of only cursor one. Side scrolling long lines unfortunately causes redraw to whole screen. -Jarno
2019-10-04ln.c: add -t to synopsis.Elliott Hughes
We're inconsistent about whether the option help below should be just `-t` or `-t DIR`, but the majority of commands _don't_ repeat their argument, so I've left that as-is for now.
2019-10-04readlink: add missing line, plus a test.Elliott Hughes
I must have lost this line somehow when I moved the patch from my AOSP tree to a toybox tree. (But the ln tests passed on the host because I was using coreutils ln there :-( )
2019-10-04file.c: add -s to synopsis and fix case consistency.Elliott Hughes
2019-10-04Fix extracting old tarballs, not just -tv of them.Rob Landley
2019-10-03Improve support for extracting older tarball formats.Rob Landley
2019-10-02readlink: support multiple arguments.Elliott Hughes
Required by the new `ln -t` test if it's to pass on an all-toybox system :-)
2019-10-01Add rmdir --ignore-fail-on-non-emptyEthan Sommer
2019-09-30Add ln -tEthan Sommer
2019-09-26Max 2 arguments with -TRob Landley
2019-09-26hexedit: fix scrolling on legacy terminalsJarno Mäkipää
Thanks for James McMechan for pointing this out. Using esc[1L and esc[1M escapes with cursor jump to 1, 1 to make scrolling effect instead of S and T fixes scrolling inside Linux terminal and tmux -Jarno
2019-09-25Add ln -TRob Landley
2019-09-25Use FLAG macrosRob Landley
2019-09-23noop gzip -n.Denys Nykula
Add mock gzip -n to satisfy pkgsrc.
2019-09-23Call ftpget from wgetDenys Nykula
Branch wget to xexec ftpget given an ftp url. Rename the output flag -O like in other wgets. Add mock wget --no-check-certificate to satisfy pkgsrc. Ifdef the version output in wget because the nonexistent constant fails single builds and mkroot.
2019-09-23Fix ftpget downloadDenys Nykula
Investigate why downloads always freeze when I call ftpget. Trace it to a refactor leaving two REST and zero RETR.
2019-09-22vi: Added yankJarno Mäkipää
Added: yank and push Rewrote: delete operations Minor cleanups: Rewrote delete operations to use one delete function instead of having separate behavior here and there. Now delete and yank both always move cursor and then clip the whole cursor area into yank register. For example x is just ld or jd depeding are we right edge or not, and dd is jd with some special flags etc. Now only default yank register is implemented, but implemeting yank register list should be trivial since cmd execution already passes register char.
2019-09-20rm.c: use FLAG().Elliott Hughes
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-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-15Fix failing test.Rob Landley