aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2019-03-27xabspath: use O_PATH for dirfd.Elliott Hughes
SELinux on Android is unhappy if you try to read "/": avc: denied { read } for name="/" dev="dm-3" ino=2 scontext=u:r:hal_dumpstate_impl:s0 tcontext=u:object_r:rootfs:s0 tclass=dir permissive=0 That could happen via the open of ".." too, and potentially any other directory might have similar restrictions, so move all of the open calls to using O_PATH. O_PATH seems more intention-revealing given what this function is doing anyway.
2019-03-27Change fileunderdir() to return abspath to file.Rob Landley
2019-03-26xabspath: use O_PATH.Elliott Hughes
SELinux on Android is unhappy if you try to read "/": avc: denied { read } for name="/" dev="dm-3" ino=2 scontext=u:r:hal_dumpstate_impl:s0 tcontext=u:object_r:rootfs:s0 tclass=dir permissive=0 O_PATH seems more intention-revealing anyway.
2019-03-26Make touch use xparsedate() (result: -t and -d the same, autodetects format),Rob Landley
and fix tests to pass on host too.
2019-03-24Factor out xparsedate() and xvali_date() into lib.Rob Landley
2019-03-17Fix xstrndup() bug.Rob Landley
Now there's a second user... the libc function already null terminates at len+1, and it doesn't malloc the full size if strlen() smaller so the redundant termination stomped unallocated memory. Oops. sort.c never noticed because it calculated length to truncate or copy existing string, so never hit this.
2019-03-10Add TOYFLAG_ARGFAIL() to allow argument parsing failures to exit with value.Rob Landley
2019-03-10Add missing isatty(3) call.Elliott Hughes
2019-03-10Make xsendfile() variants handle -1 length properly again.Rob Landley
2019-03-10Don't redirect stderr or xexec() error hidden.Rob Landley
2019-03-10Make multiple sendfile variants, and teach xpopen_both() to use existingRob Landley
stdin/stdout filehandles.
2019-03-09Half-finished su change checked in, sorry.Rob Landley
2019-03-07Add reset_env() and make su and login use it. Do long-delayed login cleanup.Rob Landley
2019-03-04Consistently use ARRAY_LEN.Elliott Hughes
2019-02-23Bumper typo cleanup.Elliott Hughes
Inspired by some of the small patches that have gone by recently. Limited to only things found in `generated/help.h`, plus a wider cleanup for the more common "milisecond" typo.
2019-02-20Make xgetaddrinfo() return a wildcard address for NULL host, and xconnbind()Rob Landley
always set SO_REUSEADDR (which won't reuse an active port but merely disables the strange "but reply packets might come in after we close the socket" hand-wringing timeout nobody's cared about in decades.)
2019-02-15Fix typos: e.g. change "cannonical" to "canonical".Jason Spiro
2019-02-13Move nanomove(), nanodiff(), union socksaddr, and xrecvwait() to lib.Rob Landley
2019-02-05The android NDK does not appear to have adjtime(). (It has the syscall, andRob Landley
it has clock_settime(), but not the libc adjtime() function...) *shrug* Stub it out in portability.h.
2019-02-03William Djupström pointed out that xexec() lost the absolute path check.Rob Landley
2019-01-22Fix sigjmp_buf/jmp_buf mismatches.Elliott Hughes
Broke the bionic build: external/toybox/toys/net/netcat.c:188:37: error: incompatible pointer types assigning to 'sigjmp_buf *' (aka 'long (*)[33]') from 'jmp_buf *' (aka 'long (*)[32]') [-Werror,-Wincompatible-pointer-types] if (toys.optflags&FLAG_L) NOEXIT(child = XVFORK()); ^~~~~~~~~~~~~~~~~~~~~~~~ external/toybox/lib/lib.h:375:19: note: expanded from macro 'NOEXIT' #define NOEXIT(x) WOULD_EXIT(_noexit_res, x) ^~~~~~~~~~~~~~~~~~~~~~~~~~ external/toybox/lib/lib.h:367:16: note: expanded from macro 'WOULD_EXIT' toys.rebound = &_noexit; \ ^ ~~~~~~~~ 1 error generated.
2019-01-18Teach xpoll() to measure time if interrupted, and wait for what's left.Rob Landley
2019-01-16Move xsendto() to lib/net.c.Rob Landley
2019-01-12sed: add -z.Elliott Hughes
Used to construct SELinux policies in the AOSP build. I left loopfiles_lines with its hard-coded '\n' because although cut(1) also has a -z option, I can't find any case where it's used in any of the codebases searchable by me. (And fmt(1), the other user, doesn't even have the option.) YAGNI. Bug: http://b/122744241
2019-01-12Merge xconnect/xbind.Rob Landley
2019-01-08xchdir: show the specific failure.Elliott Hughes
2019-01-08FreeBSD doesn't #define IUTF8 in termios.h, add workaround to portability.h.Rob Landley
2019-01-08FreeBSD will use the getmntinfo API as with AppleEd Maste
2019-01-08Ed Maste says freebsd hasn't got sys/xattr.h, so move it to portability.h.Rob Landley
2019-01-08Add FreeBSD endianness supportEd Maste
2018-12-27Make poke() alignment-agnostic.Rob Landley
2018-12-26Teach the argument plumbing how to do -@ for mkfs.vfatRob Landley
2018-12-23Add grep --colorRob Landley
2018-12-17Only set FLAGS_NODASH when arguments didn't have a dash.Rob Landley
This (eventually) lets "ps ax" and "ps -ax" behave differently.
2018-12-14Add xrename()Rob Landley
2018-12-10nc: add IPv6 support.Josh Gao
2018-12-07macOS: fix code using POSIX 2008 `st_[acm]tim` fields.Elliott Hughes
Hopefully they'll fix this properly at some point, but until then...
2018-12-07Forgot to check the portability.? changes. (Oops.)Rob Landley
2018-12-04macOS: move getmountlist.c functions into portability.c.Elliott Hughes
I think this was the preferred option for this code that turns out to be very different on Linux vs BSD. I don't yet have a BSD implementation, and I'm not likely to have chance to work on one in the near future, so this just #ifdefs it out for macOS right now. With this (and a suitably minimal .config), toybox builds for macOS out of the box.
2018-11-30macOS: remove unnecessary <stdio.h> workarounds.Elliott Hughes
These were added in macOS 10.7 in 2011-07, so the seven year rule applies...
2018-11-30macOS: work around header idiosyncracies.Elliott Hughes
2018-11-30macOS: fix endian macros for macOS.Elliott Hughes
I've also flipped the `#if` because `#ifdef` feels more naturally readable than #ifndef when there's also a `#else`. (I've preserved the oddness of the clearenv declaration being here, because there isn't currently a more suitable `#ifdef __APPLE__` to move it too. Later...)
2018-11-29Remove an extra #include <string.h>Rob Landley
2018-11-29macOS: remove glibc 2.10 workarounds.Elliott Hughes
The only part of this I actually need for macOS is to remove __APPLE__ from the getdelim/getline workaround, but if we're following the usual "seven year rule", glibc 2.10 is dead to us anyway, and we should just remove all of this.
2018-11-28macOS: there's no <features.h> on the Mac.Elliott Hughes
2018-11-28macOS: replace local strnstr with strcasestr.Elliott Hughes
bionic, glibc, macOS, and musl all have strcasestr (see http://man7.org/linux/man-pages/man3/strstr.3.html). macOS (via BSD) has a strnstr that does what strnstr sounds like it should do by analogy with strnlen and strncpy. So we at least need to rename strnstr, but it probably makes more sense just to switch to strcasestr instead.
2018-11-28macOS: noreturn.Elliott Hughes
The macOS libc headers use `__attribute__((noreturn))` rather than `__attribute__((__noreturn__))`, so toybox's `noreturn` macro trips them up. Since we already have a variety of uses of `__attribute__` that aren't guarded in this way, let's do the same here.
2018-10-28Rename interestingtimes.c to tty.c. (It's the "not curses" code.)Rob Landley
2018-10-27Dirtree shouldn't put a "No" in front of filename for "permission denied".Rob Landley
2018-10-22Don't call TIOCGWINSZ on non-ttysNick Kralevich
Prior to calling TIOCGWINSZ on stdin/stdout/stderr, check to see if the file descriptor is a tty. Calling TIOCGWINSZ on a non-tty doesn't make any sense. Calling TIOCGWINSZ on a non-tty is mildly problematic for systems like Android where strict ioctl filtering is in place, and generates SELinux audit noise. Strict ioctl filtering for non-filesystem fifo_files (eg pipe() or pipe2() generated pipes) was enabled in Android in commit https://android-review.googlesource.com/c/platform/system/sepolicy/+/792599