rename functions to more understandable names
diff --git a/archival/dpkg.c b/archival/dpkg.c
index 2f73721..2b9c4b8 100644
--- a/archival/dpkg.c
+++ b/archival/dpkg.c
@@ -787,7 +787,7 @@
 	unsigned int status_num;
 
 	status_file = xfopen(filename, "r");
-	while ((control_buffer = fgets_str(status_file, "\n\n")) != NULL) {
+	while ((control_buffer = xmalloc_fgets_str(status_file, "\n\n")) != NULL) {
 		const unsigned int package_num = fill_package_struct(control_buffer);
 		if (package_num != -1) {
 			status_node = xmalloc(sizeof(status_node_t));
@@ -842,7 +842,7 @@
 	int i = 0;
 
 	/* Update previously known packages */
-	while ((control_buffer = fgets_str(old_status_file, "\n\n")) != NULL) {
+	while ((control_buffer = xmalloc_fgets_str(old_status_file, "\n\n")) != NULL) {
 		if ((tmp_string = strstr(control_buffer, "Package:")) == NULL) {
 			continue;
 		}
diff --git a/coreutils/cat.c b/coreutils/cat.c
index 10eb29c..a959805 100644
--- a/coreutils/cat.c
+++ b/coreutils/cat.c
@@ -26,10 +26,10 @@
 	}
 
 	do {
-		f = bb_wfopen_input(*argv);
+		f = fopen_or_warn_stdin(*argv);
 		if (f) {
 			off_t r = bb_copyfd_eof(fileno(f), STDOUT_FILENO);
-			bb_fclose_nonstdin(f);
+			fclose_if_not_stdin(f);
 			if (r >= 0) {
 				continue;
 			}
diff --git a/coreutils/cksum.c b/coreutils/cksum.c
index 3a9b0b0..5221332 100644
--- a/coreutils/cksum.c
+++ b/coreutils/cksum.c
@@ -22,7 +22,7 @@
 	int inp_stdin = (argc == optind) ? 1 : 0;
 
 	do {
-		fp = bb_wfopen_input((inp_stdin) ? bb_msg_standard_input : *++argv);
+		fp = fopen_or_warn_stdin((inp_stdin) ? bb_msg_standard_input : *++argv);
 
 		crc = 0;
 		length = 0;
diff --git a/coreutils/cmp.c b/coreutils/cmp.c
index 2b923c8..71007ea 100644
--- a/coreutils/cmp.c
+++ b/coreutils/cmp.c
@@ -27,10 +27,9 @@
 {
 	FILE *fp;
 
-	if ((fp = bb_wfopen_input(filename)) != NULL) {
+	fp = fopen_or_warn_stdin(filename);
+	if (fp)
 		return fp;
-	}
-
 	exit(xfunc_error_retval);	/* We already output an error message. */
 }
 
diff --git a/coreutils/cut.c b/coreutils/cut.c
index 5dc3543..a538e3d 100644
--- a/coreutils/cut.c
+++ b/coreutils/cut.c
@@ -272,7 +272,7 @@
 		FILE *file;
 
 		for (; optind < argc; optind++) {
-			file = bb_wfopen(argv[optind], "r");
+			file = fopen_or_warn(argv[optind], "r");
 			if (file) {
 				cut_file(file);
 				fclose(file);
diff --git a/coreutils/fold.c b/coreutils/fold.c
index e33be55..9ca693d 100644
--- a/coreutils/fold.c
+++ b/coreutils/fold.c
@@ -70,7 +70,7 @@
 	}
 
 	do {
-		FILE *istream = bb_wfopen_input(*argv);
+		FILE *istream = fopen_or_warn_stdin(*argv);
 		int c;
 		int column = 0;		/* Screen column where next char will go. */
 		int offset_out = 0;	/* Index in `line_out' for next char. */
@@ -144,7 +144,7 @@
 			fwrite(line_out, sizeof(char), (size_t) offset_out, stdout);
 		}
 
-		if (ferror(istream) || bb_fclose_nonstdin(istream)) {
+		if (ferror(istream) || fclose_if_not_stdin(istream)) {
 			bb_perror_msg("%s", *argv);	/* Avoid multibyte problems. */
 			errs |= EXIT_FAILURE;
 		}
diff --git a/coreutils/head.c b/coreutils/head.c
index 2e9000d..d732461 100644
--- a/coreutils/head.c
+++ b/coreutils/head.c
@@ -112,7 +112,7 @@
 #endif
 
 	do {
-		fp = bb_wfopen_input(*argv);
+		fp = fopen_or_warn_stdin(*argv);
 		if (fp) {
 			if (fp == stdin) {
 				*argv = (char *) bb_msg_standard_input;
@@ -127,7 +127,7 @@
 				}
 				putchar(c);
 			}
-			if (bb_fclose_nonstdin(fp)) {
+			if (fclose_if_not_stdin(fp)) {
 				bb_perror_msg("%s", *argv);	/* Avoid multibyte problems. */
 				retval = EXIT_FAILURE;
 			}
diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c
index ca23d8a..93d8946 100644
--- a/coreutils/md5_sha1_sum.c
+++ b/coreutils/md5_sha1_sum.c
@@ -162,7 +162,7 @@
 			bb_error_msg("WARNING: %d of %d computed checksums did NOT match",
 						 count_failed, count_total);
 		}
-		if (bb_fclose_nonstdin(pre_computed_stream) == EOF) {
+		if (fclose_if_not_stdin(pre_computed_stream) == EOF) {
 			bb_perror_msg_and_die("cannot close file %s", file_ptr);
 		}
 	} else {
diff --git a/coreutils/sum.c b/coreutils/sum.c
index d663e34..93f4e22 100644
--- a/coreutils/sum.c
+++ b/coreutils/sum.c
@@ -38,7 +38,7 @@
 		fp = stdin;
 		have_read_stdin++;
 	} else {
-		fp = bb_wfopen(file, "r");
+		fp = fopen_or_warn(file, "r");
 		if (fp == NULL)
 			goto out;
 	}
@@ -52,11 +52,11 @@
 
 	if (ferror(fp)) {
 		bb_perror_msg(file);
-		bb_fclose_nonstdin(fp);
+		fclose_if_not_stdin(fp);
 		goto out;
 	}
 
-	if (bb_fclose_nonstdin(fp) == EOF) {
+	if (fclose_if_not_stdin(fp) == EOF) {
 		bb_perror_msg(file);
 		goto out;
 	}
diff --git a/coreutils/tee.c b/coreutils/tee.c
index f0e1fad..06c94ab 100644
--- a/coreutils/tee.c
+++ b/coreutils/tee.c
@@ -49,7 +49,7 @@
 	goto GOT_NEW_FILE;
 
 	do {
-		if ((*p = bb_wfopen(*argv, mode)) == NULL) {
+		if ((*p = fopen_or_warn(*argv, mode)) == NULL) {
 			retval = EXIT_FAILURE;
 			continue;
 		}
diff --git a/coreutils/uudecode.c b/coreutils/uudecode.c
index c8152a8..a08d985 100644
--- a/coreutils/uudecode.c
+++ b/coreutils/uudecode.c
@@ -174,7 +174,7 @@
 		}
 		free(line);
 		ret = decode_fn_ptr(src_stream, dst_stream);
-		bb_fclose_nonstdin(src_stream);
+		fclose_if_not_stdin(src_stream);
 		return(ret);
 	}
 	bb_error_msg_and_die("No `begin' line");
diff --git a/coreutils/wc.c b/coreutils/wc.c
index ebae5f6..4b76e54 100644
--- a/coreutils/wc.c
+++ b/coreutils/wc.c
@@ -107,7 +107,7 @@
 
 	while ((arg = *argv++) != 0) {
 		++num_files;
-		fp = bb_wfopen_input(arg);
+		fp = fopen_or_warn_stdin(arg);
 		if (!fp) {
 			status = EXIT_FAILURE;
 			continue;
@@ -172,7 +172,7 @@
 		}
 		totals[WC_LENGTH] -= counts[WC_LENGTH];
 
-		bb_fclose_nonstdin(fp);
+		fclose_if_not_stdin(fp);
 
 	OUTPUT:
 		/* coreutils wc tries hard to print pretty columns
diff --git a/editors/sed.c b/editors/sed.c
index 3e33529..65ca560 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -1194,7 +1194,7 @@
 				process_files();
 				continue;
 			}
-			file = bb_wfopen(argv[i], "r");
+			file = fopen_or_warn(argv[i], "r");
 			if (!file) {
 				status = EXIT_FAILURE;
 				continue;
diff --git a/findutils/grep.c b/findutils/grep.c
index b7964d1..b76a17a 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -447,7 +447,7 @@
 			}
 		}
 		matched += grep_file(file);
-		bb_fclose_nonstdin(file);
+		fclose_if_not_stdin(file);
  grep_done:
 		if (matched < 0) {
 			/* we found a match but were told to be quiet, stop here and
diff --git a/include/libbb.h b/include/libbb.h
index f435a59..da936d6 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -240,20 +240,29 @@
 extern long *find_pid_by_name( const char* pidName);
 extern long *pidlist_reverse(long *pidList);
 extern char *find_block_device(char *path);
-extern char *xmalloc_fgets(FILE *file);
-/* Chops off '\n' from the end, unlike fgets: */
-extern char *xmalloc_getline(FILE *file);
-extern char *bb_get_chunk_from_file(FILE *file, int *end);
 extern off_t bb_copyfd_size(int fd1, int fd2, off_t size);
 extern off_t bb_copyfd_eof(int fd1, int fd2);
 extern char  bb_process_escape_sequence(const char **ptr);
 extern char *bb_get_last_path_component(char *path);
-extern FILE *bb_wfopen(const char *path, const char *mode);
-extern FILE *bb_wfopen_input(const char *filename);
-extern FILE *xfopen(const char *path, const char *mode);
 
-extern int bb_fclose_nonstdin(FILE *f);
+/* Prints to stdout closes entire FILE. Exits on error: */
+extern void xprint_and_close_file(FILE *file);
+extern char *xmalloc_fgets(FILE *file);
+/* /* Read up to (and including) TERMINATING_STRING: */
+extern char *xmalloc_fgets_str(FILE *file, const char *terminating_string);
+/* Chops off '\n' from the end, unlike fgets: */
+extern char *xmalloc_getline(FILE *file);
+extern char *bb_get_chunk_from_file(FILE *file, int *end);
+extern void die_if_ferror(FILE *file, const char *msg);
+extern void die_if_ferror_stdout(void);
+extern void xfflush_stdout(void);
 extern void fflush_stdout_and_exit(int retval) ATTRIBUTE_NORETURN;
+extern int fclose_if_not_stdin(FILE *file);
+extern FILE *xfopen(const char *filename, const char *mode);
+/* Prints warning to stderr and returns NULL on failure: */
+extern FILE *fopen_or_warn(const char *filename, const char *mode);
+/* "Opens" stdin if filename is special, else just opens file: */
+extern FILE *fopen_or_warn_stdin(const char *filename);
 
 extern void xstat(char *filename, struct stat *buf);
 extern int  xsocket(int domain, int type, int protocol);
@@ -278,10 +287,6 @@
 extern uint32_t option_mask32;
 extern uint32_t getopt32(int argc, char **argv, const char *applet_opts, ...);
 
-extern void die_if_ferror(FILE *fp, const char *fn);
-extern void die_if_ferror_stdout(void);
-extern void xfflush_stdout(void);
-
 extern void bb_warn_ignoring_args(int n);
 
 extern void chomp(char *s);
@@ -430,8 +435,6 @@
 char *concat_subpath_file(const char *path, const char *filename);
 char *last_char_is(const char *s, int c);
 
-char *fgets_str(FILE *file, const char *terminating_string);
-
 int execable_file(const char *name);
 char *find_execable(const char *filename);
 int exists_execable(const char *filename);
@@ -577,7 +580,6 @@
 void reset_ino_dev_hashtable(void);
 
 char *xasprintf(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
-void xprint_and_close_file(FILE *file);
 
 #define FAIL_DELAY    3
 extern void bb_do_delay(int seconds);
diff --git a/libbb/Kbuild b/libbb/Kbuild
index 0dd8c2b..87c09bd 100644
--- a/libbb/Kbuild
+++ b/libbb/Kbuild
@@ -9,7 +9,7 @@
 	compare_string_array.o concat_path_file.o copy_file.o copyfd.o \
 	crc32.o create_icmp_socket.o create_icmp6_socket.o \
 	device_open.o dump.o error_msg.o error_msg_and_die.o \
-	find_pid_by_name.o find_root_device.o fgets_str.o \
+	find_pid_by_name.o find_root_device.o xmalloc_fgets_str.o \
 	full_write.o get_last_path_component.o get_line_from_file.o \
 	herror_msg.o herror_msg_and_die.o \
 	human_readable.o inet_common.o inode_hash.o isdirectory.o \
diff --git a/libbb/fclose_nonstdin.c b/libbb/fclose_nonstdin.c
index be986d1..951ab30 100644
--- a/libbb/fclose_nonstdin.c
+++ b/libbb/fclose_nonstdin.c
@@ -15,7 +15,7 @@
 #include <stdio.h>
 #include <libbb.h>
 
-int bb_fclose_nonstdin(FILE *f)
+int fclose_if_not_stdin(FILE *f)
 {
 	if (f != stdin) {
 		return fclose(f);
diff --git a/libbb/fgets_str.c b/libbb/fgets_str.c
index 41370d1..1bc6c3b 100644
--- a/libbb/fgets_str.c
+++ b/libbb/fgets_str.c
@@ -8,17 +8,12 @@
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
 #include "libbb.h"
 
 /* Read up to (and including) TERMINATING_STRING from FILE and return it.
  * Return NULL on EOF.  */
 
-char *fgets_str(FILE *file, const char *terminating_string)
+char *xmalloc_fgets_str(FILE *file, const char *terminating_string)
 {
 	char *linebuf = NULL;
 	const int term_length = strlen(terminating_string);
@@ -36,7 +31,8 @@
 
 		/* grow the line buffer as necessary */
 		while (idx > linebufsz - 2) {
-			linebuf = xrealloc(linebuf, linebufsz += 1000);
+			linebufsz += 200;
+			linebuf = xrealloc(linebuf, linebufsz);
 		}
 
 		linebuf[idx] = ch;
diff --git a/libbb/wfopen.c b/libbb/wfopen.c
index 9d66328..26e6a13 100644
--- a/libbb/wfopen.c
+++ b/libbb/wfopen.c
@@ -7,14 +7,12 @@
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-#include <stdio.h>
-#include <errno.h>
 #include "libbb.h"
 
-FILE *bb_wfopen(const char *path, const char *mode)
+FILE *fopen_or_warn(const char *path, const char *mode)
 {
-	FILE *fp;
-	if ((fp = fopen(path, mode)) == NULL) {
+	FILE *fp = fopen(path, mode);
+	if (!fp) {
 		bb_perror_msg("%s", path);
 		errno = 0;
 	}
diff --git a/libbb/wfopen_input.c b/libbb/wfopen_input.c
index d764f1d..3da855f 100644
--- a/libbb/wfopen_input.c
+++ b/libbb/wfopen_input.c
@@ -14,18 +14,17 @@
  * Note: We also consider "" to main stdin (for 'cmp' at least).
  */
 
-#include <stdio.h>
-#include <sys/stat.h>
-#include <libbb.h>
+#include "libbb.h"
 
-FILE *bb_wfopen_input(const char *filename)
+FILE *fopen_or_warn_stdin(const char *filename)
 {
 	FILE *fp = stdin;
 
-	if ((filename != bb_msg_standard_input)
-		&& filename[0] && ((filename[0] != '-') || filename[1])
+	if (filename != bb_msg_standard_input
+	 && filename[0]
+	 && (filename[0] != '-' || filename[1])
 	) {
-		fp = bb_wfopen(filename, "r");
+		fp = fopen_or_warn(filename, "r");
 	}
 
 	return fp;
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index c5e18c3..1144a67 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -341,6 +341,7 @@
 // close that file.
 void xprint_and_close_file(FILE *file)
 {
+	fflush(stdout);
 	// copyfd outputs error messages for us.
 	if (bb_copyfd_eof(fileno(file), 1) == -1)
 		exit(xfunc_error_retval);
diff --git a/loginutils/deluser.c b/loginutils/deluser.c
index bbbd77d..795dae4 100644
--- a/loginutils/deluser.c
+++ b/loginutils/deluser.c
@@ -54,7 +54,7 @@
 	struct stat statbuf;
 
 
-	if ((passwd = bb_wfopen(filename, "r"))) {
+	if ((passwd = fopen_or_warn(filename, "r"))) {
 		// Remove pointless const.
 		xstat((char *)filename, &statbuf);
 		buffer = (char *) xmalloc(statbuf.st_size * sizeof(char));
@@ -64,7 +64,7 @@
 		b = boundary(buffer, login);
 		if (b.stop != 0) {
 			/* write the file w/o the user */
-			if ((passwd = bb_wfopen(filename, "w"))) {
+			if ((passwd = fopen_or_warn(filename, "w"))) {
 				fwrite(buffer, (b.start - 1), sizeof(char), passwd);
 				fwrite(&buffer[b.stop], (statbuf.st_size - b.stop), sizeof(char), passwd);
 				fclose(passwd);
diff --git a/miscutils/readahead.c b/miscutils/readahead.c
index 49cd7fd..356c404 100644
--- a/miscutils/readahead.c
+++ b/miscutils/readahead.c
@@ -20,7 +20,7 @@
 	if (argc == 1) bb_show_usage();
 
 	while (*++argv) {
-		if ((f = bb_wfopen(*argv, "r")) != NULL) {
+		if ((f = fopen_or_warn(*argv, "r")) != NULL) {
 			int r, fd=fileno(f);
 
 			r = readahead(fd, 0, fdlength(fd));
diff --git a/miscutils/strings.c b/miscutils/strings.c
index dae1731..0d5576e 100644
--- a/miscutils/strings.c
+++ b/miscutils/strings.c
@@ -45,7 +45,7 @@
 	}
 
 	do {
-		file = bb_wfopen(*argv, "r");
+		file = fopen_or_warn(*argv, "r");
 		if (file) {
 PIPE:
 			count = 0;
@@ -75,7 +75,7 @@
 				}
 				count++;
 			} while (c != EOF);
-			bb_fclose_nonstdin(file);
+			fclose_if_not_stdin(file);
 		} else {
 			status = EXIT_FAILURE;
 		}
diff --git a/shell/lash.c b/shell/lash.c
index 96c0b30..4067bc6 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -426,7 +426,7 @@
 	FILE *input;
 	int status;
 
-	input = bb_wfopen(child->argv[1], "r");
+	input = fopen_or_warn(child->argv[1], "r");
 	if (!input) {
 		return EXIT_FAILURE;
 	}
@@ -1522,7 +1522,7 @@
 			llist_add_to(&close_me_list, (void *)(long)fileno(prof_input));
 			/* Now run the file */
 			busy_loop(prof_input);
-			bb_fclose_nonstdin(prof_input);
+			fclose_if_not_stdin(prof_input);
 			llist_pop(&close_me_list);
 		}
 	}
diff --git a/util-linux/fdisk.c b/util-linux/fdisk.c
index 40a8d1b..6e4bf64 100644
--- a/util-linux/fdisk.c
+++ b/util-linux/fdisk.c
@@ -2771,7 +2771,7 @@
 	char line[100], ptname[100], devname[120], *s;
 	int ma, mi, sz;
 
-	procpt = bb_wfopen("/proc/partitions", "r");
+	procpt = fopen_or_warn("/proc/partitions", "r");
 
 	while (fgets(line, sizeof(line), procpt)) {
 		if (sscanf(line, " %d %d %d %[^\n ]",
diff --git a/util-linux/more.c b/util-linux/more.c
index f68292e..85209ce 100644
--- a/util-linux/more.c
+++ b/util-linux/more.c
@@ -81,7 +81,7 @@
 		if (argc == 0) {
 			file = stdin;
 		} else
-			file = bb_wfopen(*argv, "r");
+			file = fopen_or_warn(*argv, "r");
 		if(file==0)
 			goto loop;