From c7a2aa5dfc53161365373f05e3304faae6c8ff20 Mon Sep 17 00:00:00 2001 From: Alfred Perlstein Date: Fri, 2 Nov 2001 09:27:16 +0000 Subject: In order to perform faster when doing "head -n", use a pair of fgetln/fwrite instead of getc/putchar, this seems about five times faster. --- usr.bin/head/head.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/usr.bin/head/head.c b/usr.bin/head/head.c index d262a95fbec5..6af287c1d38f 100644 --- a/usr.bin/head/head.c +++ b/usr.bin/head/head.c @@ -130,14 +130,15 @@ head(fp, cnt) FILE *fp; register int cnt; { - register int ch; + char *cp; + int error, readlen; - while (cnt && (ch = getc(fp)) != EOF) { - if (putchar(ch) == EOF) - err(1, "stdout"); - if (ch == '\n') - cnt--; - } + while (cnt && (cp = fgetln(fp, &readlen)) != NULL) { + error = fwrite(cp, sizeof(char), readlen, stdout); + if (error != readlen) + err(1, "stdout"); + cnt--; + } } void -- cgit v1.3