summaryrefslogtreecommitdiff
path: root/libbb/copyfd.c
AgeCommit message (Collapse)Author
2019-10-11dpkg-deb: work around bogus error message when working with XZ compressed ↵Denys Vlasenko
packages function old new delta unpack_xz_stream 2309 2317 +8 bb_full_fd_action 464 472 +8 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2019-07-02libbb: reduce the overhead of single parameter bb_error_msg() callsJames Byrne
Back in 2007, commit 0c97c9d43707 ("'simple' error message functions by Loic Grenie") introduced bb_simple_perror_msg() to allow for a lower overhead call to bb_perror_msg() when only a string was being printed with no parameters. This saves space for some CPU architectures because it avoids the overhead of a call to a variadic function. However there has never been a simple version of bb_error_msg(), and since 2007 many new calls to bb_perror_msg() have been added that only take a single parameter and so could have been using bb_simple_perror_message(). This changeset introduces 'simple' versions of bb_info_msg(), bb_error_msg(), bb_error_msg_and_die(), bb_herror_msg() and bb_herror_msg_and_die(), and replaces all calls that only take a single parameter, or use something like ("%s", arg), with calls to the corresponding 'simple' version. Since it is likely that single parameter calls to the variadic functions may be accidentally reintroduced in the future a new debugging config option WARN_SIMPLE_MSG has been introduced. This uses some macro magic which will cause any such calls to generate a warning, but this is turned off by default to avoid use of the unpleasant macros in normal circumstances. This is a large changeset due to the number of calls that have been replaced. The only files that contain changes other than simple substitution of function calls are libbb.h, libbb/herror_msg.c, libbb/verror_msg.c and libbb/xfuncs_printf.c. In miscutils/devfsd.c, networking/udhcp/common.h and util-linux/mdev.c additonal macros have been added for logging so that single parameter and multiple parameter logging variants exist. The amount of space saved varies considerably by architecture, and was found to be as follows (for 'defconfig' using GCC 7.4): Arm: -92 bytes MIPS: -52 bytes PPC: -1836 bytes x86_64: -938 bytes Note that for the MIPS architecture only an exception had to be made disabling the 'simple' calls for 'udhcp' (in networking/udhcp/common.h) because it made these files larger on MIPS. Signed-off-by: James Byrne <james.byrne@origamienergy.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-10-05whitespace and comment format fixes, no code changesDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2017-07-15copyfd: guard use of munmap() with #if (windows builds need this)Johannes Schindelin
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2014-11-27libbb: use sendfile() to copy data between file descriptorsBartosz Golaszewski
Busybox already uses sendfile in httpd. This patch proposes to use it globally to copy data between file descriptors. It speeds up the copying on slow systems a lot - below are the times needed to copy a 450Mb file with and without this option enabled on a BeagleBone Black: sendfile: user 0m0.000s sys 0m8.170s read/write 4k: user 0m0.470s sys 0m16.300s function old new delta bb_full_fd_action 394 474 +80 Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-08-16*: make GNU licensing statement forms more regularDenys Vlasenko
This change retains "or later" state! No licensing _changes_ here, only form is adjusted (article, space between "GPL" and "v2" and so on). Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-06-26libbb/copyfd.c: fix the case of copy buffer <= 4kbDenys Vlasenko
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-06-26tar: fix --to-command wrt short writesDenys Vlasenko
function old new delta bb_copyfd_exact_size 51 98 +47 bb_full_fd_action 362 394 +32 get_header_tar 1546 1558 +12 data_extract_to_command 430 439 +9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/0 up/down: 100/0) Total: 100 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-03-19libbb/copyfd.c: don't mmap a largish buffer if we only want to copy a few kbDenys Vlasenko
function old new delta bb_full_fd_action 283 295 +12 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2008-06-27*: introduce and use FAST_FUNC: regparm on i386, otherwise no-onDenis Vlasenko
text data bss dec hex filename 808035 611 6868 815514 c719a busybox_old 804472 611 6868 811951 c63af busybox_unstripped
2007-12-02explain why we use mmap instead of mallocDenis Vlasenko
2007-12-02Introduce FEATURE_COPYBUF_KB.Denis Vlasenko
People who want smaller stack at any cost may use it to reduce cp's stack usage (FEATURE_COPYBUF_KB=1). Desktop people may get faster copy of big files (FEATURE_COPYBUF_KB=32 is ~30% faster than 4kb)
2007-04-11bb_full_fd_action: remove potential xmalloc from NOFORK pathDenis Vlasenko
cat: stop using stdio.h opens libbb: introduce & use open[3]_or_warn function old new delta open3_or_warn - 54 +54 bb_cat 115 144 +29 open_or_warn - 25 +25 unlzma 2404 2412 +8 chattr_main 334 339 +5 xstrtoul_range_sfx 251 255 +4 telnet_main 1514 1510 -4 static.opt 4 - -4 qgravechar 122 118 -4 fuser_add_pid 61 54 -7 fuser_add_inode 154 147 -7 writeFileToTarball 1542 1534 -8 refresh 1156 1148 -8 do_show 856 846 -10 read_leases 212 200 -12 setup_redirects 236 222 -14 iproute_list_or_flush 1582 1568 -14 read_config 427 411 -16 write_leases 284 264 -20 hash_file 338 318 -20 copy_file 1760 1740 -20 do_iproute 2610 2588 -22 bb_full_fd_action 320 269 -51 open_to_or_warn 103 49 -54 fuser_main 1660 1596 -64 .rodata 131160 131096 -64 ------------------------------------------------------------------------------ (add/remove: 2/1 grow/shrink: 4/19 up/down: 125/-423) Total: -298 bytes
2007-04-10make a few struct bb_applet members conditionalDenis Vlasenko
rename sllep_and_die -> xfunc_die make fflush_stdout_and_exit NOFORK-safe fix some buglets found by randomconfig
2007-04-10audit small applets and mark some of them as NOFORK.Denis Vlasenko
Put big scary warnings in relevant places.
2007-04-09make xfunctions optionally longjump instead of exit.Denis Vlasenko
use it for making NOFORK more practical. touch: make it a NOFORK applet
2007-01-11Trailing whitespace removal over entire treeDenis Vlasenko
2006-12-22tar et al: die if bb_copyfd_size copies less than asked for.Denis Vlasenko
(we have bb_copyfd_exact_size now for that kind of usage)
2006-11-25tee: fix bug: argv[-1] is a no-no!Denis Vlasenko
bb_full_fd_action: optimize die_if_ferror: "<applet>: filename" isn't a good err msg, add "..I/O error"
2006-11-24tar: cry murder and bail out if file shrinks under us while we tar it upDenis Vlasenko
2006-10-08correct largefile support, add comments about it.Denis Vlasenko
2006-09-17style fixesDenis Vlasenko
2006-07-16Cleaup read() and write() variants, plus a couple of new functions likeRob Landley
xlseek and fdlength() for the new mkswap.
2006-04-03- move buffer allocation schemes to libbb.hBernhard Reutner-Fischer
- include the correct headers: applets need busybox.h while lib* need libbb.h
2006-03-06Robert P. Day removed 8 gazillion occurrences of "extern" on functionRob Landley
definitions. (That should only be on prototypes.)
2006-02-13Bug fix from Kim B. Heino, manifested via:Rob Landley
echo > foo && zip foo.zip foo && ./busybox unzip foo.zip
2006-01-31avoid signed<->unsigned warning"Vladimir N. Oleynik"
2006-01-25just whitespaceTim Riker
2005-11-12My last change to this file broke tar x. Sigh. (Trying to make sure we workRob Landley
on file sizes between 2 and 4 gigs on 32 bit machines. For supporting >4 gigs, just use a 64 bit machine already...)
2005-11-04Fix bug 424: doing full_read breaks things like cat which should return aRob Landley
chunk of data when they get it and not block until they've buffered 4k. The use case was cat /proc/psaux, but you can also reproduce this by running non-busybox cat by itself and typing things at the command line. Then run busybox cat. Notice how cat is _supposed_ to echo each line back to us as we hit enter?
2005-11-04When cp ran out of space it didn't return a nonzero error code. Fixes bug 493.Rob Landley
2005-04-27Correct errors preventing busybox tar from working properly,Eric Andersen
fixing bug http://bugs.uclibc.org/view.php?id=231
2005-04-16Rework to fix http://bugs.uclibc.org/view.php?id=107Eric Andersen
2004-03-15Remove trailing whitespace. Update copyright to include 2004.Eric Andersen
2004-02-23bb_full_fd_action was incorrectly returning an error message causingGlenn L McGrath
major breaking.
2004-02-21Sometimes i get carried away with the use of function pointers, im sureGlenn L McGrath
it seemed like a good idea at the time.
2003-11-24When a size of 0 is passed to copyfd_size, dont do anything, it wasGlenn L McGrath
reading untill eof which breaks tar
2003-11-22Fix warningGlenn L McGrath
2003-11-21As we no longer use function pointers for read in common archiving codeGlenn L McGrath
archive_xread can be replaced with bb_full_read, and archive_copy_file with bb_copyfd* bb_copyfd is split into two functions bb_copyfd_size and bb_copyfd_eof, they share a common backend.
2003-07-14Update a bunch of docs. Run a script to update my email addr.Eric Andersen
2003-03-19Major coreutils update.Manuel Novoa III
2002-12-13Merge copyfd and copy_file_chunkGlenn L McGrath
2001-10-24Major rework of the directory structure and the entire build system.Eric Andersen
-Erik
2001-05-18Rewrote copyfd to use library functions, terminate, and copy correct data.Matt Kraai
2001-05-15This patch from Adam Heath <doogie@debian.org>, makes print_fileEric Andersen
(used by cat, grep, sed, etc) quite a bit faster.