summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2015-01-16Move pty.h back to toys.h (under LSB 4.1 headers).Rob Landley1-3/+0
2015-01-16AOSP master has <pty.h> and builds netcat/nc.Elliott Hughes1-4/+1
2015-01-16id.c #ifdefectomy. (ifdefs belong in headers, not in C code.)Rob Landley1-0/+3
2015-01-16This patch adds a TOYBOX_SELINUX configuration option to control bothElliott Hughes1-0/+4
the SELinux commands (such as chcon) and the SELinux-specific options to regular commands (such as ls -Z). This lets us #include <selinux/selinux.h> in portability.h. I've also fixed chcon to insist on being given the a context argument. This patch also adds -Z to id and fixes id's regular output (-G should be separated by spaces, non-G output should be separated by commas, and you don't want a double comma where the egid is omitted from the list of groups).
2015-01-03Move fflush() checking to xexit() and have exit paths in main() call that.Rob Landley1-0/+2
2015-01-01strtol() doesn't return error indicator for overflow, it just sets errno. So ↵Rob Landley2-5/+25
add estrtol() (which clears errno first), and xstrtol() (which error_exit()s on overflow).
2015-01-01Debris from flag handling rewrite: don't allow -^A to actually trigger.Rob Landley1-0/+1
2014-12-31Redo option parsing infrastructure so #define FORCE_FLAGS can unzero flag ↵Rob Landley1-1/+1
macros for a disabled command (needed when multiple commands share infrastructure with a common set of flags). This means the flag space is no longer packed, but leaves gaps where the zeroes go. (Actual flag bit positions are the same for all configs.) Since the option parsing needs to know where the holes are, the OPTSTR values are now generated as part of flags.h with ascii 1 values for the disabled values. (So generated/oldflags.h went away.) This also means that the option string argument for OLDTOY() went away, it now uses the same arguments as the NEWTOY() it references.
2014-12-31When you include the posix header libgen.h, glibc #defines basename to some ↵Rob Landley2-0/+17
random other symbol name (because gnu) and this screws up nontrivial macro expansions of NEWTOY(basename), so work around it in portability.h.
2014-12-22Allocate space for null terminator.Rob Landley1-2/+1
2014-12-13Forgot to check in a header file for base64.Rob Landley1-0/+2
2014-12-13Add base64.Rob Landley1-0/+15
The tizen guys wanted this. Yeah, I know there's base64 code in uuencode/uudecode, but that this has -i, input lines aren't of fixed length, encode/decode are in same file, there's no prefix/suffix code, it always writes to stdout... Eliminating the code duplication wouldn't be worth the if/else I'd have to add, so I just did a new one. Factored out the base64 table init into lib.c though: that was worth sharing.
2014-12-13Remove more strncpy() calls.Rob Landley1-2/+3
The semantics of strncat() and strncpy() are non-obvious, so let's not use 'em. Both zero all their remaining buffer space, and with strncat() the size is the space left at the _end_ of the string (not the size of the buffer) so it's way too easy to stomp memory you don't own. As long as we have to measure stuff ourselves to get it right, just use memcpy().
2014-12-09ls: Fix indentation of -Ci and -CsJan Cybulski1-2/+5
Idantation for -C option was not correctly displayed. The lenght of column has to be calculated on basis of biggest lenght of all inodes not only current lenght. What is more lenght of inodes which were bigger than MAX_INT were incorrect. Change-Id: I07f994b90c82ac750b8aa63a4146e17773fd2919 Signed-off-by: Jan Cybulski <j.cybulski@samsung.com>
2014-12-09Imported Upstream version 0.5.1upstream/0.5.1xroche6-10/+47
2014-12-04Work with buildroot's extensively patched uClibc, and for nommu support move ↵Rob Landley4-10/+32
xfork() to portability.h and #ifdef based on __uClinux__ (which seems to be the nommu compiler define).
2014-12-04Implement xstrncat() and fix xstrndup().Rob Landley2-4/+18
2014-11-28Make sendfile use libbuf.Rob Landley1-3/+2
2014-11-22As long as Android's going to require fortify, fixup the warnings it generates.Rob Landley1-12/+0
2014-11-21A patch against your current ToT that builds in AOSP master.Elliott Hughes2-16/+1
2014-11-21Don't include asm/* files directly.Rob Landley1-1/+1
2014-11-21Patch from Elliott Hughes for Android/bionic build.Rob Landley1-1/+4
2014-11-19Fixups for the android/bionic build probes patch.Rob Landley1-3/+5
The CFG_* symbols are always defined so if() can use them as compile-time constants, so don't if defined() them. Doing USE_BLAH() around variable definitions opens up the same potential for config-dependent build breaks as #ifdefs do, just make the whole command depend on the symbol for now, factor out the utmpx infrastructure later. The PTY probe was always failing because it used NULL without #including the header that defines it. Substitute 0 instead.
2014-11-19probe for getspnam(), forkpty(), utmpx, replace sethostname()Isaac Dunham2-1/+26
Android is missing all of these; we need to probe for some so we have a config symbol to depend on. sethostname() is easily replaced. We got termios.h via pty.h; now it's not included in configure-step tools, so we need termios.h to generate globals.
2014-11-11Remove unnecessary assignment spotted by Cynt Rynt.Rob Landley1-1/+1
2014-10-27O_CLOEXEC was confusing the O_RDONLY test in loopfiles(), resulting in ↵Rob Landley1-2/+2
attempts to read from stdout instead of stdin for "-" or no arguments.
2014-10-20More static analysis fixes from Ashwini Sharma.Rob Landley1-0/+1
2014-10-20Add TOYBOX_NORECURSE so xexec() won't make internal function calls.Rob Landley1-1/+1
2014-10-18Factor out printf-style escape parsing logic from echo.c.Rob Landley2-0/+9
2014-10-14Use O_CLOEXEC instead of O_RDONLY to signal loopfiles_rw() to close filehandles.Rob Landley1-5/+5
2014-10-02Workaround for musl's faccessat bug (the rm -r "error: is a directory" thing).Rob Landley1-0/+6
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-09-28Brown paper bag time: comma_scan() didn't work for anything but the last entry.Rob Landley1-1/+1
2014-09-27Don't segfault for --help of single.sh build of OLDTOY commands that use ↵Rob Landley1-0/+5
another command's help.
2014-09-26The only illegal characters in a username are ":" (field separator), "\n" ↵Rob Landley2-32/+1
(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-22Respond to two static analysis issues in dirtree_path() reported by Ashwini ↵Rob Landley1-1/+5
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-20Tweak portability.h for uClibc version in buildroot defconfig.Rob Landley1-0/+2
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-14Second attempt at one way xpopen().Rob Landley1-4/+6
2014-09-14Split xpopen() into xpopen_both(), xpopen(), and xrun() depending on whether ↵Rob Landley2-25/+61
we want to redirect both, one, or neither of stdin/stdout.
2014-09-07Debugging pass on mount. Not quite done yet, but the basics seem to work now.Rob Landley1-3/+5
2014-09-06Work around uClibc brain-damage.Rob Landley1-0/+12
2014-08-24Work in progress snapshot of mount, with fallout to umount. (Not done yet.)Rob Landley2-0/+131
2014-08-18Cleanups on useradd/groupadd/groupdel, and put TOYBOX_UID_SYS and ↵Rob Landley1-2/+0
TOYBOX_UID_USR in the top level Config.
2014-08-15Fix bug reported by Ashwini Sharma: [-abc] syntax to switch off a command forgetRob Landley1-2/+5
s _all_ saved command line arguments in GLOBALS(), not just for the command bein g dropped.
2014-08-15If string_to_mode() is called on a base mode with S_ISDIR() and such set, ↵Rob Landley1-4/+6
pass those extra bits through.
2014-08-12Patches to commands for issues reported from static analysis tool.Ashwini Sharma1-0/+4
portability.h.patch - it is for O_CLOEXEC, as compiler complained of it. Makefile.patch - for cleaning generated/*.o files and libopts.dat file [Fixup to uniq.c from Rob.]
2014-08-03Implement exec -user, -group, and -newer. Enable find in defconfig.Rob Landley2-0/+9
2014-08-02Yank xrealpath prototype since the function's gone.Rob Landley1-1/+0
2014-07-30As long as I had to write xabspath(), no point in wrapping realpath().Rob Landley1-8/+0
2014-07-29Actually set the again flag when calling the dirtree comeagain callback.Rob Landley1-1/+4
2014-07-26Move DIRTREE_COMEAGAIN second callback up to when the filehandle is still ↵Rob Landley2-9/+13
open, and add dir->again variable to distinguish second call instead of checking for -1 filehandle.