OSDN Git Service
Rob Landley [Tue, 29 Sep 2015 10:32:57 +0000 (05:32 -0500)]
help_exit() tweak.
Rob Landley [Tue, 29 Sep 2015 10:31:02 +0000 (05:31 -0500)]
xvfork went away.
Rob Landley [Tue, 29 Sep 2015 10:09:46 +0000 (05:09 -0500)]
Make defconfig build for nommu.
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.
Rob Landley [Sun, 27 Sep 2015 14:03:41 +0000 (09:03 -0500)]
Another chunk of nommu support, replacing toys.recursion with toys.stacktop.
Rob Landley [Thu, 24 Sep 2015 03:45:06 +0000 (22:45 -0500)]
xexec() is noreturn.
Rob Landley [Thu, 24 Sep 2015 03:18:22 +0000 (22:18 -0500)]
Add xvfork() as a static inline and use it from various places.
Note: vfork(), like fork(), can return -1 if too many processes, and
we should notice and fail loudly.
Rob Landley [Thu, 24 Sep 2015 03:10:23 +0000 (22:10 -0500)]
The -o /dev/null trick in probing isn't compatible with elf2flt, so use tempfile.
Rob Landley [Thu, 17 Sep 2015 06:49:48 +0000 (01:49 -0500)]
Fix a couple things gcc is too dumb to figure out on its own.
Daniel K. Levy [Mon, 14 Sep 2015 21:16:36 +0000 (16:16 -0500)]
Add find tests.
Rob Landley [Sat, 12 Sep 2015 20:46:46 +0000 (15:46 -0500)]
Fix a find segfault.
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.)
Rob Landley [Fri, 11 Sep 2015 21:35:14 +0000 (16:35 -0500)]
Replace toys.exithelp with help_exit() in lib.
Rob Landley [Wed, 9 Sep 2015 04:17:24 +0000 (23:17 -0500)]
Squish more warnings in pending.
Rob Landley [Wed, 9 Sep 2015 04:03:48 +0000 (23:03 -0500)]
Squish a warning in pending.
Elliott Hughes [Wed, 9 Sep 2015 03:52:21 +0000 (22:52 -0500)]
Fix netstat -e.
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!
Elliott Hughes [Wed, 9 Sep 2015 03:38:14 +0000 (22:38 -0500)]
i already did -l and -t, the positive side of -p, plus name filtering...
Elliott Hughes [Tue, 8 Sep 2015 15:39:07 +0000 (10:39 -0500)]
Fix netstat -p.
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.
Lipi Lee [Tue, 8 Sep 2015 10:37:00 +0000 (05:37 -0500)]
increase the size of progname to avoid buffer overflow
Rob Landley [Mon, 7 Sep 2015 22:12:57 +0000 (17:12 -0500)]
Remove prompt argument from yesno(), caller can fprintf(stderr, "blah") itself.
This fixes the build break, the change to yesno() prototype accidentally got
checked in last commit. (Oops, sorry.)
Rob Landley [Mon, 7 Sep 2015 01:10:04 +0000 (20:10 -0500)]
Switch HR_SI to HR_1000, make binary the default, make HR_B only affect bytes,
and update the tests.
Rob Landley [Sat, 5 Sep 2015 19:18:38 +0000 (14:18 -0500)]
Two large thinkos in oneit: -3 was always enabled and signal numbers were
overwritten before we set up signal handlers.
Rob Landley [Sat, 5 Sep 2015 10:46:35 +0000 (05:46 -0500)]
Add seq -f tests, tweak help text, and catch one more error case.
Elliott Hughes [Sat, 5 Sep 2015 10:09:22 +0000 (05:09 -0500)]
ls -h support.
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.
Elliott Hughes [Sat, 5 Sep 2015 10:00:49 +0000 (05:00 -0500)]
df -h and -H.
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).
Elliott Hughes [Fri, 4 Sep 2015 01:54:53 +0000 (20:54 -0500)]
Implement lsof.
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.
Rob Landley [Fri, 4 Sep 2015 01:36:44 +0000 (20:36 -0500)]
Make human_readable() handle base 1024 units without floating point.
Rounds correctly via brute force, displayed digits are decimal even when
working with powers of 2, shows at most 3 significant (decimal) digits.
(So no "1023M" nonsense, that's 1.0G.)
Rob Landley [Thu, 3 Sep 2015 01:09:42 +0000 (20:09 -0500)]
seq -f %0-f is a valid pattern.
Rob Landley [Thu, 3 Sep 2015 01:05:34 +0000 (20:05 -0500)]
If you start a git commit and then edit the file more on the filesystem
before saving, the updates don't go in the commit. Behavior difference
between git and mercurial, that.
Good to know.
Rob Landley [Thu, 3 Sep 2015 00:29:51 +0000 (19:29 -0500)]
Sanitize seq -f string.
Colin Cross [Wed, 2 Sep 2015 06:23:58 +0000 (01:23 -0500)]
vmstat: fix units for bi and bo columns
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.
Rob Landley [Wed, 2 Sep 2015 00:17:12 +0000 (19:17 -0500)]
Trivial code style tweak.
Colin Cross [Wed, 2 Sep 2015 00:16:06 +0000 (19:16 -0500)]
vmstat: reset header pointer when looping
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.
Elliott Hughes [Tue, 1 Sep 2015 02:47:12 +0000 (21:47 -0500)]
ls -l user/group/security context should be left-aligned.
Right-aligned looks pretty good to me, but it's not what anyone else does.
Rob Landley [Tue, 1 Sep 2015 02:42:47 +0000 (21:42 -0500)]
Work around bug in gcc 5.2.0 that miscompiles linux 2.6.12's kconfig.
Elliott Hughes [Sun, 30 Aug 2015 11:35:30 +0000 (06:35 -0500)]
Fix mv on overwrite.
We need to remove the destination, not the source, to be able to overwrite.
Rob Landley [Sun, 30 Aug 2015 11:00:32 +0000 (06:00 -0500)]
Add portability.h glue to let uptime build without TOYBOX_UTMPX.
Rob Landley [Sun, 30 Aug 2015 09:42:49 +0000 (04:42 -0500)]
Build updates: make change should use top level .config for global settings,
add NOSTRIP variable to force skipping strip, and save intermediate flag
data in generated/flags.raw and have mkflags.c error message point to that.
Rob Landley [Sun, 30 Aug 2015 03:12:56 +0000 (22:12 -0500)]
Menuconfig option for musl-libc pretending mmu is just pining for the fijords.
Rob Landley [Tue, 25 Aug 2015 08:22:02 +0000 (03:22 -0500)]
Static analysis from Hyejin Kim found possible pointer underflow.
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.
Isaac Dunham [Thu, 20 Aug 2015 16:49:16 +0000 (11:49 -0500)]
I discovered that the reason SIGINT causes a reboot on sysvinit is that
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.
Rob Landley [Tue, 18 Aug 2015 04:23:29 +0000 (23:23 -0500)]
Test for human_readable()
Rob Landley [Sat, 15 Aug 2015 14:09:57 +0000 (09:09 -0500)]
Kylie McClain pointed out that env should clear variables with NAME= by itself.
Elliott Hughes [Sat, 15 Aug 2015 02:54:30 +0000 (21:54 -0500)]
Another Android roadmap update.
The three separate lists had got a bit out of sync. The genuinely new
changes are in the top list.
Elliott Hughes [Sat, 15 Aug 2015 02:51:30 +0000 (21:51 -0500)]
Fix ionice default class.
Elliott Hughes [Tue, 11 Aug 2015 21:06:06 +0000 (16:06 -0500)]
Fix more date bugs.
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.
Rob Landley [Tue, 11 Aug 2015 06:50:19 +0000 (01:50 -0500)]
Bugfixes from Elliott Hughes: debug code got checked in (oops) and
uninitialized trash in struct tm fields could segfault glibc's strftime().
Elliott Hughes [Sun, 9 Aug 2015 02:10:44 +0000 (21:10 -0500)]
Different tools have different ideas about what human-readable output
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.
Rob Landley [Sun, 9 Aug 2015 00:21:42 +0000 (19:21 -0500)]
First pass at proper bunzip2 command line handling.
Elliott Hughes [Sat, 8 Aug 2015 22:55:02 +0000 (17:55 -0500)]
Fix ls -l user/group field ordering.
It's user then group, not the other way round.
Elliott Hughes [Sat, 8 Aug 2015 22:49:02 +0000 (17:49 -0500)]
More Android roadmap updates.
mkbootimg was rewritten as a python script a while ago, and I just
deleted gpttool. (gptfdisk is in external/, but I'm assuming the
existing entry for fdisk is meant to cover that.)
Isaac Dunham [Thu, 6 Aug 2015 00:48:14 +0000 (17:48 -0700)]
login: execl() requires a path, not a file name
Rob Landley [Sat, 8 Aug 2015 22:05:45 +0000 (17:05 -0500)]
Isaac Dunham pointed out that SIGINT's handler was set twice in init.c.
Isaac Dunham [Wed, 5 Aug 2015 02:40:56 +0000 (19:40 -0700)]
scripts/mkflags.c: add missing unistd.h, ctype.h
Isaac Dunham [Wed, 5 Aug 2015 05:15:56 +0000 (22:15 -0700)]
modprobe: use -q to silence
Isaac Dunham [Wed, 5 Aug 2015 02:34:00 +0000 (19:34 -0700)]
modprobe: use basename_r()
Isaac Dunham [Wed, 5 Aug 2015 02:23:55 +0000 (19:23 -0700)]
modprobe: delete perror_exit() that makes no sense
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.
Alistair Strachan [Wed, 6 May 2015 22:20:19 +0000 (15:20 -0700)]
Fix switch_root implementation.
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.
Rob Landley [Sat, 8 Aug 2015 21:06:24 +0000 (16:06 -0500)]
Teach date @unixtime[.fraction], switch -s to be -D (matching busybox and
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.)
Elliott Hughes [Sat, 8 Aug 2015 18:39:01 +0000 (13:39 -0500)]
Reject invalid dates in date(1).
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).
Rob Landley [Thu, 6 Aug 2015 21:38:03 +0000 (16:38 -0500)]
Detect swap partitions, inline loop_partitions(), various cleanups.
Rob Landley [Thu, 6 Aug 2015 21:15:29 +0000 (16:15 -0500)]
Initialize uninitialized variable. (Oops.)
Rob Landley [Thu, 6 Aug 2015 12:39:23 +0000 (07:39 -0500)]
Adjust xexec() exit code to be 127, and tweaks for nommu friendliness.
Rob Landley [Thu, 6 Aug 2015 12:37:23 +0000 (07:37 -0500)]
Make multiplexer's "command not found" exit 127.
Somebody (carsonh on freenode) objected that they were running something
like "toybox test 1 == 2" and couldn't distinguish the test failing from
toybox not having the test command. Why they were running toybox out of
the multiplexer instead of having a test symlink in the $PATH, I couldn't
tell you. (Is "I know toybox is on this system, but don't know how it was
configured" a problem people actually have?)
*shrug* They care about it more than I do, so now you can't distinguish between
the multiplexer not being found and the command the multiplexer tried to
run not being found. Progress!
Dima Krasner [Thu, 6 Aug 2015 04:05:49 +0000 (23:05 -0500)]
I've added support for running blkid without specifying a partition (so it scans /proc/partitions).
Rob Landley [Thu, 6 Aug 2015 02:39:53 +0000 (21:39 -0500)]
Minor tweak of reboot.c
Isaac Dunham [Thu, 6 Aug 2015 02:33:43 +0000 (21:33 -0500)]
reboot: signal init, add -f option to call reboot();
init: use SIGINT, use xsignal()
Now that oneit supports the same signals as our "sysv"-init for shutdown,
make reboot et al. signal pid 1 with the appropriate signal.
Of these signals, only SIGINT works with sysvinit 2.88, causing a reboot.
The others are only supported in Busybox init.
Also, make init accept SIGINT and use xsignal().
Rob Landley [Thu, 6 Aug 2015 02:23:50 +0000 (21:23 -0500)]
Cosmetic tweak: newline at the end of "make change".
Rob Landley [Thu, 6 Aug 2015 02:20:27 +0000 (21:20 -0500)]
Switch nbd_client to xconnect() and make xconnect() try all returned addresses
before failing.
Rob Landley [Thu, 6 Aug 2015 01:32:49 +0000 (20:32 -0500)]
Tweak xconnect: socket can be a string (ala "ftp") from /etc/services.
Still need a rethink on how to handle socket/bind/connect sequence.
Rob Landley [Mon, 3 Aug 2015 19:34:01 +0000 (14:34 -0500)]
Factor out xconnect(), plus some other small cleanups to telnet.c.
Rob Landley [Mon, 3 Aug 2015 02:51:41 +0000 (21:51 -0500)]
Mark command-local functions static.
Rob Landley [Sun, 2 Aug 2015 23:04:17 +0000 (18:04 -0500)]
Long-overdue cleanup on login.
Only tested that it compiled so far.
Rob Landley [Sat, 1 Aug 2015 17:22:18 +0000 (12:22 -0500)]
Replace xcheckrange() with atolx_range()
Rob Landley [Sat, 1 Aug 2015 16:48:59 +0000 (11:48 -0500)]
Move strlower() from find to lib.
Isaac Dunham [Sat, 1 Aug 2015 16:09:51 +0000 (11:09 -0500)]
'!' replaces '/' in the sysfs paths of older drivers, so properly
reverse that to get correct paths.
While we're here, reduce the duplication of initialization.
While this is enough for some drivers, it won't get 'input/' stuff
in the right folder.
Rob Landley [Fri, 31 Jul 2015 08:05:24 +0000 (03:05 -0500)]
Whitespace.
Rob Landley [Fri, 31 Jul 2015 07:59:40 +0000 (02:59 -0500)]
Check in the note about rebuilding the source tarball.
Rob Landley [Sat, 25 Jul 2015 00:58:59 +0000 (19:58 -0500)]
Promote fsync.
Rob Landley [Sat, 25 Jul 2015 00:55:15 +0000 (19:55 -0500)]
Promote hostid.
Sameer Pradhan [Sat, 25 Jul 2015 00:51:40 +0000 (19:51 -0500)]
Attached are new toys.
tftp - Client for tftp daemon.
hostid -Print the numeric identifier for the current host.
fsync -Synchronize a file's in-core state with storage device.
Rob Landley [Tue, 21 Jul 2015 04:36:01 +0000 (23:36 -0500)]
Release notes for 0.6.0.
Rob Landley [Tue, 21 Jul 2015 03:20:35 +0000 (22:20 -0500)]
Fix llvm build break.
Rob Landley [Sun, 19 Jul 2015 23:41:46 +0000 (18:41 -0500)]
Tweak version number.
Rob Landley [Mon, 13 Jul 2015 05:11:25 +0000 (00:11 -0500)]
Produce an error message for "cat /mnt", not just return code.
Rob Landley [Mon, 13 Jul 2015 00:23:24 +0000 (19:23 -0500)]
Commit rss feed.
Elliott Hughes [Sat, 11 Jul 2015 19:20:31 +0000 (14:20 -0500)]
Fix 32-bit bionic toybox build.
https://android-review.googlesource.com/159035/
Rob Landley [Fri, 10 Jul 2015 19:52:14 +0000 (14:52 -0500)]
Add a basename_r() and use it in names_to_pid() to avoid basename() overwriting
itself on some inputs. (Which makes killall really impolite. Bug report
from Nicholas Noury via Elliott Hughes.)
Rob Landley [Fri, 10 Jul 2015 19:23:00 +0000 (14:23 -0500)]
More explanation of TOYBOX_DEBUG for option string checking.
Rob Landley [Fri, 10 Jul 2015 19:12:44 +0000 (14:12 -0500)]
Move comment about TOYBOX_DEBUG to start of file so it's more obvious.
Elliott Hughes [Fri, 10 Jul 2015 18:53:39 +0000 (13:53 -0500)]
ifconfig MAC addresses should be lowercase.
A minor nit, but for some reason this really stands out every time I
run ifconfig...
Yeongdeok Suh [Fri, 10 Jul 2015 18:49:12 +0000 (13:49 -0500)]
I added dhcpd -6 option.
It's for supporting ipv6, and I referred to RFC 3315 Specification
http://www.rfc-base.org/txt/rfc-3315.txt
There are some different kind of requests in dhcpd6,
but I inplemented only a basic protocol. (Solicit - Advertise - Request - Reply)
There's a sample packet as below. toybox dhcpd works in the same way.
http://packetlife.net/captures/DHCPv6.cap
Greg Hackmann [Fri, 10 Jul 2015 17:14:02 +0000 (12:14 -0500)]
find: add -inum option
-inum is a commonly implemented extension to search by inode number.
Linux's fs-layer tracepoints log many events in terms of inodes, so
"find -inum" is useful for mapping those events back to specific files.
Rob Landley [Fri, 10 Jul 2015 06:23:54 +0000 (01:23 -0500)]
Rename a function to be more obvious, and factor out a repeated calculation
the compiler was almost certainly retaining in a register anyway.
Rob Landley [Fri, 10 Jul 2015 06:21:28 +0000 (01:21 -0500)]
Promote hwclock.
Elliott Hughes [Fri, 10 Jul 2015 05:57:22 +0000 (00:57 -0500)]
Fix hwclock -w.
The gmtime_r/localtime_r error check was backwards, and the wrong argument
was being passed to the RTC_SET_TIME ioctl.
Also, the error reporting was misleading (showing errno for functions that
don't set errno) and too vague for the user to tell what failed.
Sameer Pradhan [Thu, 9 Jul 2015 22:19:03 +0000 (17:19 -0500)]
There is a typo in mkfifo.c for __Z__ option.
Elliott Hughes [Wed, 8 Jul 2015 07:32:57 +0000 (02:32 -0500)]
Fix ionice.
ioprio_set takes a "prio" argument that combines class and level. Although
bionic (via the uapi headers) includes the appropriate constants and even
a convenience macro, glibc doesn't, so just hard-code the encoding.
Also fix the sense of a conditional so we actually execute the provided
command.
Rob Landley [Tue, 7 Jul 2015 00:41:57 +0000 (19:41 -0500)]
Avoid integer overflow with insane input data.
Rob Landley [Mon, 6 Jul 2015 10:08:48 +0000 (05:08 -0500)]
Save failure reason for each make change .bad file.
Rob Landley [Sun, 5 Jul 2015 07:36:51 +0000 (02:36 -0500)]
Kylie McClain pointed out that -z affects both input and output.
Can't say I'm happy with the API (-z and -Z to keep them independent would
be nice), but compatibility with what exists trumps having a good API...
Rob Landley [Sat, 4 Jul 2015 08:49:53 +0000 (03:49 -0500)]
Actually set time with touch -d and -t when you don't specify nanonseconds.
There's a nanoseconds field value that says use current time, which I set
but forgot to clear in the right places. (Oops.)