summaryrefslogtreecommitdiffstats
path: root/usr.bin/tail
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/tail')
-rw-r--r--usr.bin/tail/extern.h4
-rw-r--r--usr.bin/tail/read.c8
-rw-r--r--usr.bin/tail/reverse.c5
3 files changed, 11 insertions, 6 deletions
diff --git a/usr.bin/tail/extern.h b/usr.bin/tail/extern.h
index 65efc14..f1daa9b 100644
--- a/usr.bin/tail/extern.h
+++ b/usr.bin/tail/extern.h
@@ -42,8 +42,8 @@ enum STYLE { NOTSET = 0, FBYTES, FLINES, RBYTES, RLINES, REVERSE };
void forward __P((FILE *, enum STYLE, long, struct stat *));
void reverse __P((FILE *, enum STYLE, long, struct stat *));
-void bytes __P((FILE *, off_t));
-void lines __P((FILE *, off_t));
+int bytes __P((FILE *, off_t));
+int lines __P((FILE *, off_t));
void err __P((int fatal, const char *fmt, ...));
void ierr __P((void));
diff --git a/usr.bin/tail/read.c b/usr.bin/tail/read.c
index ad29dbd..94f3f0b 100644
--- a/usr.bin/tail/read.c
+++ b/usr.bin/tail/read.c
@@ -58,7 +58,7 @@ static char sccsid[] = "@(#)read.c 8.1 (Berkeley) 6/6/93";
* it is displayed from the character closest to the beginning of the input to
* the end.
*/
-void
+int
bytes(fp, off)
register FILE *fp;
off_t off;
@@ -80,7 +80,7 @@ bytes(fp, off)
}
if (ferror(fp)) {
ierr();
- return;
+ return 1;
}
if (rflag) {
@@ -125,7 +125,7 @@ bytes(fp, off)
* it is displayed from the line closest to the beginning of the input to
* the end.
*/
-void
+int
lines(fp, off)
register FILE *fp;
off_t off;
@@ -171,7 +171,7 @@ lines(fp, off)
}
if (ferror(fp)) {
ierr();
- return;
+ return 1;
}
if (cnt) {
lines[recno].l = sp;
diff --git a/usr.bin/tail/reverse.c b/usr.bin/tail/reverse.c
index 34cd980..4557064 100644
--- a/usr.bin/tail/reverse.c
+++ b/usr.bin/tail/reverse.c
@@ -200,6 +200,11 @@ r_buf(fp)
len < BSZ && (ch = getc(fp)) != EOF; ++len)
*p++ = ch;
+ if (ferror(fp)) {
+ ierr();
+ return;
+ }
+
/*
* If no input data for this block and we tossed some data,
* recover it.
OpenPOWER on IntegriCloud