aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-10-02Workaround for musl's faccessat bug (the rm -r "error: is a directory" thing).0.5.0Rob Landley
The Linux man page says I can use AT_SYMLINK_NOFOLLOW. It works in glibc, uclibc, and klibc, but musl returns -EINVAL any time you pass in that flag and the maintainer says that's not a bug and insists the man page and those other libraries all change to match musl's behavior. Toybox uses it to avoid scheduling unnecessary metadata writes for things we're about to delete (have to chmod unreadable directories so we can descend into them to delete their contents, the chmod happens before we descend so the disk I/O has plenty of time to be scheduled) because the extra writes wear out SSD faster. It's just an optimization and I don't really care if it works _well_ (the fchmodat call _also_ takes AT_SYMLINK_NOFOLLOW so that's covered), but musl's behavior uniquely makes the check always error and thus breaks normal "rm -r". Yes this workaround is checking #ifdef __MUSL__ which the library does not supply (because its code is perfect and will thus never need to be worked around). You can CFLAGS=-D__MUSL__ if you don't echo "#define __MUSL__" >> include/features.h when installing the library.
2014-10-01Bugfix from Ashwini Sharma: Z timezone required by posix for touch but not ↵Rob Landley
for libc, so we have to implement it here.
2014-09-28Updated version, having complete support for ip _link_, _addr_, _rule_, ↵Ashwini Sharma
_route_ and _tunnel_ options.
2014-09-28Fix two mount bugs: 1) Don't skip a filesystem type when setting up loopback ↵Rob Landley
mount, 2) Don't stop checking filesystem types due to EBUSY, it may mean already mounted by another filesystem type you haven't tried yet.
2014-09-28mount: terminate list so unknown user mount attempts don't endlessly loop, ↵Rob Landley
add better error reporting.
2014-09-28Brown paper bag time: comma_scan() didn't work for anything but the last entry.Rob Landley
2014-09-27Multi-build single.sh should exit with an error when build breaks.Rob Landley
2014-09-27Cleanup pass on groupdel.Rob Landley
2014-09-27Allow single.sh to build more than one command per invocation.Rob Landley
2014-09-27Untangle id/groups/logname so single.sh can build each one standalone.Rob Landley
2014-09-27Have OLDTOY emit (redundant) function prototype so single.sh can build ↵Rob Landley
OLDTOY standalone (if it has its own config symbol).
2014-09-27Don't segfault for --help of single.sh build of OLDTOY commands that use ↵Rob Landley
another command's help.
2014-09-26The only illegal characters in a username are ":" (field separator), "\n" ↵Rob Landley
(line separator), and "/" (filename separator). Restricting usernames to the legacy posix character allowed set (for filenames, so the $HOME directory is creatable on VFAT and similar) means you can't have UTF-8 usernames. Linux allows any character but / and NUL in filenames. Since root is creating these entries, we assume root knows what it's doing.
2014-09-26Separate more commands so single.sh can build them standalone.Rob Landley
2014-09-22When killall was invoked without arguments, there appeared segmentation fault?ukasz Szpakowski
2014-09-22Fix du test: du symlink -> "0\tsymlink"Felix Janda
2014-09-22Respond to two static analysis issues in dirtree_path() reported by Ashwini ↵Rob Landley
Sharma. dirtree->name is an array, not a pointer, so can't be zero. Remove the test. We dereference plen without checking it for null but calling dirtree_path(0, 0) is pilot error: only the _first_ call can have plen = 0. Add a comment.
2014-09-21Start on ping.c.Rob Landley
2014-09-20Tweak portability.h for uClibc version in buildroot defconfig.Rob Landley
I've been locally patching uClibc to not violate posix-2008 (you don't need to define a GNU macro to get a posix function), but uClibc is obsolete and moribund (development peaked in 2006, last bugfix release was over 2 years ago), and the largest remaining user (buildroot) doesn't bother to apply such a patch. Since even buildroot is slowly migrating to musl-libc, just do the portability tweak for what the last release of the old thing actually did.
2014-09-20Always call setlocale if I18N is enabled, so nested toy_exec() can switch it ↵Rob Landley
back off if necessary.
2014-09-20Delete generated/README.txt (the contents are in code.html now) so clean can ↵Rob Landley
just remove the "generated" directory entirely.
2014-09-20Capitalize "toybox" more consistently on the about page.Rob Landley
2014-09-20Fluff out the documentation some more.Rob Landley
2014-09-20Remove debug echo checked in by mistake.Rob Landley
2014-09-20Forgot to check in the updated makefile when I moved the testsuite.Rob Landley
(Did you know you can test individual commands with scripts/test.sh command? Now you do...)
2014-09-20Typo from the dawn of time: toybox is not capitalized the way BusyBox was.Rob Landley
It's just a word. Capitalize at the start of the sentence, otherwise don't. Yeah, it could be always capitalized as a proper name but since the command "toybox" is all lower case, that would be weird.
2014-09-20The ancient GPL (copied from the 2.6.12 kernel) build infrastructure is ↵Rob Landley
actually in the "kconfig" directory, not under scripts. Remind me to write a new one from scratch... (Someone actually submitted a basic kconfig rewrite in awk once, but until I bite the bullet and write my own awk.c, I just don't know awk well enough to maintain a large script written in it. Back when I maintained kernel.org/doc I wrote http://landley.net/hg/kdocs/file/tip/make/menuconfig2html.py but I am NOT reintroducing python as a build dependency. And neither actually implemented actual menuing part. So... todo list.)
2014-09-20Move testsuite out of scripts/test into its own top level tests directory, ↵Rob Landley
and make ctrl-c kill "make test" more reliably.
2014-09-20Give library probe a progress indicator, and use 150% of detected CPUs to ↵Rob Landley
try to keep large SMP machines busy (each compiler invocation is short so they exit almost as fast as we launch them).
2014-09-18Reorder functions to get rid of unnecessary prototypes, and move a global ↵Rob Landley
into GLOBALS.
2014-09-18rm -rf needs to chmod directories to u+rwx, because directories need +x to ↵Isaac Dunham
search. (Fixes messages about not being able to delete directories when running make test).
2014-09-18A few fixes for issues reported in static analysis.Ashwini Sharma
2014-09-17Cleanup pass on README.Rob Landley
Other versions are adding Cached from /proc/meminfo to free buffers/cache (and subtracting it from used), but sysinfo() doesn't provide it. (But it provide "high memory", which hasn't been relevant for almost a decade...) But that's a design change, not a cleanup issue.
2014-09-17Update README for pending directory, include list of code outside of pending ↵Rob Landley
(grandfathered) awaiting cleanup.
2014-09-17Minor cleanup pass on touch.Rob Landley
2014-09-17Cleanup pass on cut, more to do.Rob Landley
Cut predates the "pending" directory, so was checked in as-is. Ashwini Sharma's recent static analysis fixes touched this file, but there's a lot more to do than the static analyzer found.
2014-09-16Cleanup pass on useradd.Rob Landley
2014-09-14Add cpio -pRob Landley
2014-09-14find -xdev should return mount points, just not contents.Rob Landley
2014-09-14Second attempt at one way xpopen().Rob Landley
2014-09-14Split xpopen() into xpopen_both(), xpopen(), and xrun() depending on whether ↵Rob Landley
we want to redirect both, one, or neither of stdin/stdout.
2014-09-13Bug report from luckboy: rm -f on a broken symlink didn't work because our ↵Rob Landley
"does it exist" test (to avoid errors on rm -f of nonexistent files) said it didn't. The fix: replace the access() with unlink(), which produces the same "does not exist" errno and has the added bonus of acting as a fastpath for rm -f on non-directories. (And since it produces a different error on directories, falls through to the old behavior there.) Most of this commit is comment updates explaining being subtle. :)
2014-09-11Create a generated/build.sh with a single compiler command line to rebuild ↵Rob Landley
the toybox_unstripped binary using the existing generated/*.h files. This way we can snapshot the generated/*.{h,sh} from a defconfig build into a "shipped" directory or something, and then people can maybe build on crazy crippled environments like pcbsd that haven't got gmake and put bash under /usr/local so none of the #!/scripts can find it. This solves at least part of the "toybox can build with itself but you need to build toybox first to have the tools to run the build scripts" problem. Next up: work out the minimal config to provide the build tools needed to run an actual build. (This should, eventually, include a "make" command if freebsd's kernel is going to refuse to build with netbsd's "make" and we don't just write off the whole thing as crazy. But it probably shouldn't include commands that #include <linux/*.h> if we are trying to make that work.)
2014-09-11Oops, unbreak make.sh.Rob Landley
Clearing out old .o files needs -r now that generated/obj has its own subdirectory. (Works if you make clean between, but shouldn't need it.)
2014-09-09Ignore -m option to cpio, it's what we do anyway so it's not an error.Rob Landley
2014-09-09Two problems: 1) Sometimes toy_exec() needs to re-exec to gain dropped root ↵Rob Landley
permissions, 2) shouldn't recurse forever without exec, stack depth increases and we may leak other resources. Limit it to ~5 levels.
2014-09-09Make tweaks: collate generated/*.o files into their own subdirectory, add ↵Rob Landley
PIPEFAIL for better error reporting, and simpler regex to select toys/*/*.c list based on NEWTOY/OLDTOY macros.
2014-09-08Fix more memory leaks reported by Ashwini Sharma.Rob Landley
2014-09-08Don't close device handle until after calling flush ioctls, reported by ↵Rob Landley
Ashwini Sharma.
2014-09-08Add error test and fix memory leak, reported by Ashwini Sharma.Rob Landley