1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-08-04 07:43:58 +02:00

Revert last change -- timing showed 10% speedup w/o stream I/O.

This commit is contained in:
Jim Meyering
1994-01-11 05:52:05 +00:00
parent cd7ed8b383
commit a63a148116
+42 -7
View File
@@ -75,6 +75,7 @@ static char *xmalloc ();
static char *xrealloc ();
static void output ();
static void save_stdin ();
static void xwrite ();
void error ();
int full_write ();
@@ -250,12 +251,13 @@ main (argc, argv)
errors |= tac_file (argv[optind]);
}
if (ferror (stdout) || fclose (stdout) == EOF)
error (1, errno, "write error");
/* Flush the output buffer. */
output ((char *) NULL, (char *) NULL);
if (have_read_stdin && close (0) < 0)
error (1, errno, "-");
if (close (1) < 0)
error (1, errno, "write error");
exit (errors);
}
@@ -600,11 +602,31 @@ output (start, past_end)
char *start;
char *past_end;
{
int n_bytes;
static char buffer[WRITESIZE];
static int bytes_in_buffer = 0;
int bytes_to_add = past_end - start;
int bytes_available = WRITESIZE - bytes_in_buffer;
n_bytes = past_end - start;
fwrite (start, 1, n_bytes, stdout);
if (start == 0)
{
xwrite (1, buffer, bytes_in_buffer);
bytes_in_buffer = 0;
return;
}
/* Write out as many full buffers as possible. */
while (bytes_to_add >= bytes_available)
{
bcopy (start, buffer + bytes_in_buffer, bytes_available);
bytes_to_add -= bytes_available;
start += bytes_available;
xwrite (1, buffer, WRITESIZE);
bytes_in_buffer = 0;
bytes_available = WRITESIZE;
}
bcopy (start, buffer + bytes_in_buffer, bytes_to_add);
bytes_in_buffer += bytes_to_add;
}
static RETSIGTYPE
@@ -614,6 +636,19 @@ cleanup ()
exit (1);
}
static void
xwrite (desc, buffer, size)
int desc;
char *buffer;
int size;
{
if (full_write (desc, buffer, size) < 0)
{
error (0, errno, "write error");
cleanup ();
}
}
/* Allocate N bytes of memory dynamically, with error checking. */
static char *