aboutsummaryrefslogtreecommitdiff
path: root/toys
AgeCommit message (Collapse)Author
2015-10-04Minor cleanup and add "MODALIAS" handler (suggested by Isaac Dunham).Rob Landley
2015-10-03Back to chipping away at ps...Rob Landley
2015-09-29help_exit() tweak.Rob Landley
2015-09-29xvfork went away.Rob Landley
2015-09-29Make defconfig build for nommu.Rob Landley
Adds XVFORK() macro, teaches xpopen_both() to call /proc/self/exe with NULL argv (and converts cpio -p to use that), adds TOYBOX_FORK guards to some unconverted commands.
2015-09-23xexec() is noreturn.Rob Landley
2015-09-23Add xvfork() as a static inline and use it from various places.Rob Landley
Note: vfork(), like fork(), can return -1 if too many processes, and we should notice and fail loudly.
2015-09-17Fix a couple things gcc is too dumb to figure out on its own.Rob Landley
2015-09-12Fix a find segfault.Rob Landley
Elliott Hughes found a bug https://android-review.googlesource.com/#/c/170020/ and Daniel K. Levy worked out the problem: the user/group/newer arguments to find weren't consuming their arguments when not checking the results of their comparison (because an earlier test had already caused their parenthetical group to fail). This confused the argument parsing logic and could lead to segfaults. I applied a different fix that reorganized the existing tests instead of adding a new test. (Looks like a big commit but it's mostly whitespace due to extra curly brackets changing indendentation levels.)
2015-09-11Replace toys.exithelp with help_exit() in lib.Rob Landley
2015-09-08Squish more warnings in pending.Rob Landley
2015-09-08Squish a warning in pending.Rob Landley
2015-09-08Fix netstat -e.Elliott Hughes
The -e flag should add "user" and "inode" columns to the TCP output. Also truncate IP addresses in non-wide (no -W) mode. This also removes a bit more of the duplication, though there's still plenty left in this file!
2015-09-08i already did -l and -t, the positive side of -p, plus name filtering...Elliott Hughes
2015-09-08Fix netstat -p.Elliott Hughes
netstat -p was failing for any cmdline longer than 21 characters. (A typical Chrome render process has about half a kilobyte of cmdline.) There's still a lot of cleanup to be done later, but this is enough to fix -p and remove a fair amount of unnecessary custom code into the bargain.
2015-09-08increase the size of progname to avoid buffer overflowLipi Lee
2015-09-07Remove prompt argument from yesno(), caller can fprintf(stderr, "blah") itself.Rob Landley
This fixes the build break, the change to yesno() prototype accidentally got checked in last commit. (Oops, sorry.)
2015-09-06Switch HR_SI to HR_1000, make binary the default, make HR_B only affect bytes,Rob Landley
and update the tests.
2015-09-05Two large thinkos in oneit: -3 was always enabled and signal numbers wereRob Landley
overwritten before we set up signal handlers.
2015-09-05Add seq -f tests, tweak help text, and catch one more error case.Rob Landley
2015-09-05ls -h support.Elliott Hughes
It turns out that people are anticipating the switch to toybox ls from toolbox ls on the assumption that this will finally bring -h support. Let's not disappoint. I've merged two existing buffers in listfiles whose uses didn't overlap into one. It may be possible to cram this into toybuf with the other stuff, but it didn't seem worth the extra complexity for 64B of stack, especially since we were already living with that for time formatting anyway.
2015-09-05df -h and -H.Elliott Hughes
This doesn't address the lack of support for a variable-width "Filesystems" column, but it doesn't make the current situation any worse either. This is the last of the missing -h options. The other commands with -h also have --si, but only for df did it get a corresponding short option (and I've never personally used --si on du or ls, so let's wait until someone actually cares).
2015-09-03Implement lsof.Elliott Hughes
This is a superset of the current AOSP lsof (which is itself a superset of the lsof in Android M). It fixes several bugs/misfeatures and adds support for decoding IPv4/IPv6 tcp/udp/raw sockets and Unix domain sockets.
2015-09-02seq -f %0-f is a valid pattern.Rob Landley
2015-09-02If you start a git commit and then edit the file more on the filesystemRob Landley
before saving, the updates don't go in the commit. Behavior difference between git and mercurial, that. Good to know.
2015-09-02Sanitize seq -f string.Rob Landley
2015-09-02vmstat: fix units for bi and bo columnsColin Cross
pgpgin and pgpgout in /proc/vmstat are in kbytes, not pages. (see http://lxr.free-electrons.com/source/mm/vmstat.c?v=4.2#L1310). Remove the extra * page_kb for io_in and io_out.
2015-09-01Trivial code style tweak.Rob Landley
2015-09-01vmstat: reset header pointer when loopingColin Cross
Modifying the headers pointer when printing the headers causes a buffer overrun the second time they are printed. Use a local header pointer that is reset to the beginning of the buffer for each loop.
2015-08-31ls -l user/group/security context should be left-aligned.Elliott Hughes
Right-aligned looks pretty good to me, but it's not what anyone else does.
2015-08-30Fix mv on overwrite.Elliott Hughes
We need to remove the destination, not the source, to be able to overwrite.
2015-08-25Static analysis from Hyejin Kim found possible pointer underflow.Rob Landley
Now that the kernel's 128k environment size has been lifted, it might be possible to feed in a gigabyte of suffix so argv[2] is enough larger than argv[1] that char *s decrements past NULL and points to arbitrary high memory (I.E. strlen(suffix) > (long)base), at which point the base > s test is defeated and we strcmp() against a wild pointer. Which is read only anyway and on 64 bit you probably couldn't hit any interesting addresses, but the fix is easy enough: compare strlen values instead of pointers. So do that instead.
2015-08-20I discovered that the reason SIGINT causes a reboot on sysvinit is thatIsaac Dunham
it's how the kernel signals that ctrl-alt-delete has been pressed; thus, setting it as the signal for reboot prevents ctrlaltdel scripts from working. SIGTERM is what Busybox uses, so we might as well be compatible.
2015-08-17Test for human_readable()Rob Landley
2015-08-15Kylie McClain pointed out that env should clear variables with NAME= by itself.Rob Landley
2015-08-14Fix ionice default class.Elliott Hughes
2015-08-11Fix more date bugs.Elliott Hughes
Correctly and portably check for non-normal dates, and explicitly show the "before" and "after" dates (in the format of the user's choosing). Clear the struct tm in date_main rather than parse_default because on one path the struct tm is actually initialized. Explicitly clear the tm_sec field in parse_default because -- experiment shows -- that should not be preserved. Only do the "what does this 2-digit year mean?" dance if we actually parsed a 2-digit year. Show the right string in the error message if strptime fails. Also add more tests, and use UTC in the tests to avoid flakiness.
2015-08-11Bugfixes from Elliott Hughes: debug code got checked in (oops) andRob Landley
uninitialized trash in struct tm fields could segfault glibc's strftime().
2015-08-08Different tools have different ideas about what human-readable outputElliott Hughes
looks like. dd uses "7 MB" where du uses "7M", for example. this patch adds flags, similar to the BSD humanize_number. most callers will pass 0.
2015-08-08First pass at proper bunzip2 command line handling.Rob Landley
2015-08-08Fix ls -l user/group field ordering.Elliott Hughes
It's user then group, not the other way round.
2015-08-08login: execl() requires a path, not a file nameIsaac Dunham
2015-08-08Isaac Dunham pointed out that SIGINT's handler was set twice in init.c.Rob Landley
2015-08-08modprobe: use -q to silenceIsaac Dunham
2015-08-08modprobe: use basename_r()Isaac Dunham
2015-08-08modprobe: delete perror_exit() that makes no senseIsaac Dunham
Given modprobe -a, it's important to not exit early for a failure to load a module; additionally, the rest of the code presumes that this can fail without exiting.
2015-08-08Fix switch_root implementation.Alistair Strachan
Add the MS_MOVE of cwd to / and chroot into it. chdir is also called to ensure cwd does not point outside the chroot. The switch_root toy was also blocking any case where NEW_ROOT/init did not exist, even though NEW_INIT was a required parameter and did not have to be '/init'. Change it to handle any NEW_INIT passed as either a relative or absolute path. With this change, the switch_root toy actually works from initramfs.
2015-08-08Teach date @unixtime[.fraction], switch -s to be -D (matching busybox andRob Landley
not stomping on gnu's "an extra argument tells it to set the time so let's add -s to do the same thing" extension). Nanoseconds aren't uniformly supported by these apis, so had to stick it in GLOBALS() and pull it out later. Awkward, open to suggestions for a better way. (Also, the setting API is microseconds, not nanoseconds. Collect nano, convert to micro so we can switch APIs later without changing date's external UI again.) Oh, and shrink really_long_name_mktime() with a for() loop (and rename it) although I may go back and redo that for portability to hypothetical libraries if I can convert this mess to struct timespec with proper nanoseconds support. But that needs an extended strptime() which needs an extended struct tm, and between us and that is convincing posix computers got fast enough to care about fractions of a second. (Yes, I'm aware gnu added %N to date without adding it to strptime, implying they reimplemented strptime longhand inside date. I'm not doing that.)
2015-08-08Reject invalid dates in date(1).Elliott Hughes
Humans get upset when date(1) lets mktime(3) work out what the 99th day of the 99th month would be rather than rejecting the invalid date. For the subtly wrong cases, rather than get into the leap year business, let's rely on localtime_r(3).
2015-08-06Detect swap partitions, inline loop_partitions(), various cleanups.Rob Landley