aboutsummaryrefslogtreecommitdiff
path: root/lib/lib.c
AgeCommit message (Collapse)Author
2017-10-01Fix xargs to obey POSIX's ARG_MAX restrictions.Elliott Hughes
This avoids "xargs: exec echo: Argument list too long" errors in practice. find(1) needs to be fixed too, but that's a bit more complicated and a working xargs provides a workaround. Bug: http://b/65818597 Test: find /proc | strace -f -e execve ./toybox xargs echo > /dev/null
2017-09-05Tweak utf8towc() to return -1 earlier sometimes (instead of -2), and add testRob Landley
program to compare against libc output.
2017-09-02utf8towc() has to be in lib.c if strlower() is going to use it, becauseRob Landley
scripts/*.c builds against lib.c but not linestack.c.
2017-07-07Make dd use atolx_range(), and teach atolx_range() about "w" suffix (word, *2).Rob Landley
2017-06-26Most things seem to want the "b" suffix to mean 512 instead of 1.Rob Landley
(According to the git history I added "b" for "od" but the man page says 512 there too.)
2017-06-06Add comment explaining strend()Rob Landley
2017-06-05Have help_exit() give a brief "See %s --help" message instead of theRob Landley
full help text, and put it back in the args constraint failures.
2017-05-21Cleaup chrtRob Landley
2017-05-08Move strend() to lib/lib.cRob Landley
2017-02-204a4b3d65644ce403b0f22887fc0d38b0202ec8c7 upset clang.Elliott Hughes
Recent-ish clang doesn't like self-assignment. Google/Android code always uses the [template-based moral equivalent of] __attribute__((__unused__)) to keep both compilers happy.
2017-02-05Silence a warning.Rob Landley
Once upon a time you could call fchown() and let it fail. Then gcc decided not using its return code was inconcievable, but you could typecast it to (void) to shut it up. Then gcc noticed people doing that and clutched its pearls and took it away, so I added an if() statement that does nothing with the result because we _expect_ this to fail when we're not root. Then clang started complaining about an if (); statement with the semicolon on the same line, but decided it's ok if the ; is on the next line (I.E. significant whitespace in C), so I'm adding an "assignemnt to self" that gets optimized away so it does a more _explicit_ nothing (the same way you suppress gcc's broken "this isn't used uninitialized" warnings). If the compilers weren't going to so much trouble to force the issue I might add code to only call fchown when we're UID 0, but I refuse to be coerced into it. (And if getpid() is still a system call instead of a vdso member then it doesn't actually _save_ us anything, the dentry should be hot and the permission check was just "if (!uid)" before selinux entered into it and we're operating on an fd so the security's the same.)
2016-09-30sed -i run as root wasn't preserving ownership.Rob Landley
2016-09-05Replace loopfiles' failok with WARN_ONLY open flag.Rob Landley
2016-09-03Move genericish function to lib.Rob Landley
2016-08-13Move getusername/getgroupname to lib. (Return name or string representationRob Landley
of number, but never NULL. Both returned in static buffer good through next call.)
2016-08-04Make xopen() skip stdin/stdout/stderr, add xopen_stdio() if you want stdout,Rob Landley
add xopenro() that takes one argument and understands "-" means stdin, and switch over lots of users.
2016-07-26Move regexec0 into lib (regexec that takes length and matches after NUL).Rob Landley
2016-07-15Don't close stdin when loopfiles reads "-".Rob Landley
2016-07-13Bugfix: suffixless string was feeding terminating NUL to strchr() and matching.Rob Landley
2016-07-12Convert atolx() and friends to use long long internally. Update design.htmlRob Landley
to use this (and tail) as examples of simplicity of implementation winning and losing.
2016-06-15Add readlink0() and readlinkat0() which null terminate the data.Rob Landley
2016-05-20Add bufgetgrgid()Rob Landley
2016-05-17Add bufgetpwuid. (Repeated calls to getpwuid() are really expensive.)Rob Landley
2016-04-10Didn't check in all my local basename_r->getbasename changes. (Oops.)Rob Landley
2016-04-08Redefining basename_r to mean something random seems popular (bionic and freebsdRob Landley
both did it) so use getbasename instead.
2016-03-29Fix exit code of things like sed -i that use tempfile_handler().Rob Landley
(The sigatexit() handler list code now calls the handlers on the normal exit path, so _exit(1) from the handler is wrong; exit_signal() modifies toys.exitval if necessary.)
2016-03-13Split out _xexit() from xexit() and give sigatexit() multiple callbacks.Rob Landley
2016-03-02For years the man pages have said to #include <sys/types.h> to getRob Landley
major/minor/makedev, but glibc has vowed to break existing programs (https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html) and replace it with _another_ non-standard header (not in posix or lsb), so let's just add functions to lib/ that do the transform ourselves.
2016-02-19Implement "insmod -".Elliott Hughes
Also use finit_module if available. Given that "insmod -" requires init_module, maybe this isn't a worthwhile optimization. Given that "insmod /actual/file.ko" is the common use case, maybe it is. Fix a bug in readfileat where *plen would be corrupted if you didn't supply your own buffer (because ibuf is 0 in that case, not a pointer to the start of the allocated space).
2016-02-14Implement file(1).Elliott Hughes
Unlike the POSIX file(1), there's no magic file here, just hard-coded common (non-obsolete) file formats. Personally most of my use of file(1) is as a one-line readelf(1) summarizer, so although I assume a full POSIX file(1) is out of scope (because just the database would likely be larger than all the rest of toybox), a subset that only supports in-use file types actually covers most of the use cases I encounter personally. Also fix peek_be/peek_le.
2016-02-10Factor out strnstr() since posix hasn't got it, and add a config option forRob Landley
the deeply sad passwd heuristics that don't even check numbers and punctuation.
2016-01-22Factor out insanitize() from seq.c to next_printf() in lib.Rob Landley
2016-01-20First stab at making readfileat() realloc() in a loop to read long files.Rob Landley
2016-01-17Extend utf8 fontmetrics so ps can use them.Rob Landley
Also, I forgot to check in uuid_show() last time.
2016-01-16Move create_uuid() to lib and xpoll() to lib/net.c.Rob Landley
2016-01-10Fix perror_exit_raw.Elliott Hughes
Some things are worse when you remove the 'p'.
2016-01-08Fix cat -.Elliott Hughes
Commit 4b4ab6a50998 broke loopfiles' handling of "-". This broke the existing cat tests, so no new test is necessary here.
2016-01-05Add error_msg_raw() and friends, replace error_msg("%s", s) uses, enable formatRob Landley
checking, and fix up format checking complaints. Added out(type, value) function to stat to avoid a zillion printf typecasts.
2015-12-29Add strafter() to lib.Rob Landley
2015-12-27Add scan_key_getsize() doing the ANSI probe, switch scan_key() to TAGGED_ARRAY,Rob Landley
and add test_scankey.
2015-11-26Split do_ps() into get_ps() and show_ps() as a start on implementing --sort.Rob Landley
Change readfileat() to pass back length of read.
2015-11-02If chomp() needs to test it found \n, should also test it's at end of string.Rob Landley
2015-11-02Add ps -Z.Elliott Hughes
As with ls, it doesn't seem like -Z should be guarded behind LSM availability. On a non-SELinux system, the label is always "unconfined".
2015-09-29help_exit() tweak.Rob Landley
2015-09-11Replace toys.exithelp with help_exit() in lib.Rob Landley
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-03Make human_readable() handle base 1024 units without floating point.Rob Landley
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.)
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