From 95bcfc3b6eb6b813e30c4cd332d5aa6fefea0ef1 Mon Sep 17 00:00:00 2001 From: Stephen Heumann Date: Thu, 20 Nov 2014 20:00:21 -0600 Subject: [PATCH] Remove libbb/copyfd.c and an unused function that was its only caller. --- Makefile | 1 - Makefile.gmake | 1 - libbb/copyfd.c | 135 ------------------------------------------ libbb/xfuncs.printf.c | 12 ---- 4 files changed, 149 deletions(-) delete mode 100644 libbb/copyfd.c diff --git a/Makefile b/Makefile index ab1ad5305..46159fb51 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,6 @@ LIBBB_B_SRC = \ libbb/bb.strtonum.c \ libbb/full.write.c \ libbb/bb.qsort.c \ - libbb/copyfd.c \ libbb/get.line.c \ libbb/conc.pathfile.c \ libbb/last.char.is.c \ diff --git a/Makefile.gmake b/Makefile.gmake index 144c5d227..9ffe806d9 100644 --- a/Makefile.gmake +++ b/Makefile.gmake @@ -32,7 +32,6 @@ SRCS = \ libbb/full.write.c \ libbb/bb.qsort.c \ libbb/xrealloc.vec.c \ - libbb/copyfd.c \ libbb/read.key.c \ libbb/unicode.c \ libbb/safe.write.c \ diff --git a/libbb/copyfd.c b/libbb/copyfd.c deleted file mode 100644 index eda2747f9..000000000 --- a/libbb/copyfd.c +++ /dev/null @@ -1,135 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * Utility routines. - * - * Copyright (C) 1999-2005 by Erik Andersen - * - * Licensed under GPLv2 or later, see file LICENSE in this source tree. - */ - -#include "libbb.h" - -/* Used by NOFORK applets (e.g. cat) - must not use xmalloc. - * size < 0 means "ignore write errors", used by tar --to-command - * size = 0 means "copy till EOF" - */ -static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size) -{ - int status = -1; - off_t total = 0; - bool continue_on_write_error = 0; -#if CONFIG_FEATURE_COPYBUF_KB <= 4 - char buffer[CONFIG_FEATURE_COPYBUF_KB * 1024]; - enum { buffer_size = sizeof(buffer) }; -#else - char *buffer; - int buffer_size; -#endif - - if (size < 0) { - size = -size; - continue_on_write_error = 1; - } - -#if CONFIG_FEATURE_COPYBUF_KB > 4 - if (size > 0 && size <= 4 * 1024) - goto use_small_buf; - /* We want page-aligned buffer, just in case kernel is clever - * and can do page-aligned io more efficiently */ - buffer = mmap(NULL, CONFIG_FEATURE_COPYBUF_KB * 1024, - PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANON, - /* ignored: */ -1, 0); - buffer_size = CONFIG_FEATURE_COPYBUF_KB * 1024; - if (buffer == MAP_FAILED) { - use_small_buf: - buffer = alloca(4 * 1024); - buffer_size = 4 * 1024; - } -#endif - - if (src_fd < 0) - goto out; - - if (!size) { - size = buffer_size; - status = 1; /* copy until eof */ - } - - while (1) { - ssize_t rd; - - rd = safe_read(src_fd, buffer, size > buffer_size ? buffer_size : size); - - if (!rd) { /* eof - all done */ - status = 0; - break; - } - if (rd < 0) { - bb_perror_msg(bb_msg_read_error); - break; - } - /* dst_fd == -1 is a fake, else... */ - if (dst_fd >= 0) { - ssize_t wr = full_write(dst_fd, buffer, rd); - if (wr < rd) { - if (!continue_on_write_error) { - bb_perror_msg(bb_msg_write_error); - break; - } - dst_fd = -1; - } - } - total += rd; - if (status < 0) { /* if we aren't copying till EOF... */ - size -= rd; - if (!size) { - /* 'size' bytes copied - all done */ - status = 0; - break; - } - } - } - out: - -#if CONFIG_FEATURE_COPYBUF_KB > 4 - if (buffer_size != 4 * 1024) - munmap(buffer, buffer_size); -#endif - return status ? -1 : total; -} - - -#if 0 -void FAST_FUNC complain_copyfd_and_die(off_t sz) -{ - if (sz != -1) - bb_error_msg_and_die("short read"); - /* if sz == -1, bb_copyfd_XX already complained */ - xfunc_die(); -} -#endif - -off_t FAST_FUNC bb_copyfd_size(int fd1, int fd2, off_t size) -{ - if (size) { - return bb_full_fd_action(fd1, fd2, size); - } - return 0; -} - -void FAST_FUNC bb_copyfd_exact_size(int fd1, int fd2, off_t size) -{ - off_t sz = bb_copyfd_size(fd1, fd2, size); - if (sz == (size >= 0 ? size : -size)) - return; - if (sz != -1) - bb_error_msg_and_die("short read"); - /* if sz == -1, bb_copyfd_XX already complained */ - xfunc_die(); -} - -off_t FAST_FUNC bb_copyfd_eof(int fd1, int fd2) -{ - return bb_full_fd_action(fd1, fd2, 0); -} diff --git a/libbb/xfuncs.printf.c b/libbb/xfuncs.printf.c index bef0b504b..97814fd56 100644 --- a/libbb/xfuncs.printf.c +++ b/libbb/xfuncs.printf.c @@ -306,18 +306,6 @@ void FAST_FUNC bb_putchar_binary(int ch) } -/* Die with an error message if we can't copy an entire FILE* to stdout, - * then close that file. */ -void FAST_FUNC xprint_and_close_file(FILE *file) -{ - fflush_all(); - // copyfd outputs error messages for us. - if (bb_copyfd_eof(fileno(file), STDOUT_FILENO) == -1) - xfunc_die(); - - fclose(file); -} - // Die with an error message if we can't malloc() enough space and do an // sprintf() into that space. char* FAST_FUNC xasprintf(const char *format, ...)