From b028e08d353f18d23c6b81d4ef260b1954adae72 Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Fri, 13 Jul 2001 06:43:03 +0000 Subject: [PATCH] Move setvbuf calls from gz_open() to calling functions, setvbuf is only supposed to be called prior to opening the stream, glibc tolerates later use, uclibc doesnt. --- archival/gunzip.c | 3 +++ archival/tar.c | 4 ++++ gunzip.c | 3 +++ libbb/unarchive.c | 3 +++ tar.c | 4 ++++ 5 files changed, 17 insertions(+) diff --git a/archival/gunzip.c b/archival/gunzip.c index c4e84260b..430bc630e 100644 --- a/archival/gunzip.c +++ b/archival/gunzip.c @@ -118,6 +118,9 @@ extern int gunzip_main(int argc, char **argv) /* Open input file */ in_file = xfopen(if_name, "r"); + /* set the buffer size */ + setvbuf(in_file, NULL, _IOFBF, 0x8000); + /* Get the time stamp on the input file. */ if (stat(if_name, &stat_buf) < 0) { error_msg_and_die("Couldn't stat file %s", if_name); diff --git a/archival/tar.c b/archival/tar.c index 31443ee22..cf65798ff 100644 --- a/archival/tar.c +++ b/archival/tar.c @@ -284,6 +284,10 @@ extern int tar_main(int argc, char **argv) /* unzip tarFd in a seperate process */ if (unzipFlag == TRUE) { comp_file = fdopen(tarFd, "r"); + + /* set the buffer size */ + setvbuf(comp_file, NULL, _IOFBF, 0x8000); + if ((tarFd = fileno(gz_open(comp_file, &pid))) == EXIT_FAILURE) { error_msg_and_die("Couldnt unzip file"); } diff --git a/gunzip.c b/gunzip.c index c4e84260b..430bc630e 100644 --- a/gunzip.c +++ b/gunzip.c @@ -118,6 +118,9 @@ extern int gunzip_main(int argc, char **argv) /* Open input file */ in_file = xfopen(if_name, "r"); + /* set the buffer size */ + setvbuf(in_file, NULL, _IOFBF, 0x8000); + /* Get the time stamp on the input file. */ if (stat(if_name, &stat_buf) < 0) { error_msg_and_die("Couldn't stat file %s", if_name); diff --git a/libbb/unarchive.c b/libbb/unarchive.c index 5c5bb49f3..80dddb226 100644 --- a/libbb/unarchive.c +++ b/libbb/unarchive.c @@ -568,6 +568,9 @@ char *deb_extract(const char *package_filename, FILE *out_stream, /* open the debian package to be worked on */ deb_stream = wfopen(package_filename, "r"); + /* set the buffer size */ + setvbuf(deb_stream, NULL, _IOFBF, 0x8000); + /* check ar magic */ fread(ar_magic, 1, 8, deb_stream); if (strncmp(ar_magic,"!",7) != 0) { diff --git a/tar.c b/tar.c index 31443ee22..cf65798ff 100644 --- a/tar.c +++ b/tar.c @@ -284,6 +284,10 @@ extern int tar_main(int argc, char **argv) /* unzip tarFd in a seperate process */ if (unzipFlag == TRUE) { comp_file = fdopen(tarFd, "r"); + + /* set the buffer size */ + setvbuf(comp_file, NULL, _IOFBF, 0x8000); + if ((tarFd = fileno(gz_open(comp_file, &pid))) == EXIT_FAILURE) { error_msg_and_die("Couldnt unzip file"); }