when file can be opened for read but cannot be read from:

fail once (was twice) in forward case
fail once (was no times) in reverse case

this can happen when file is a directory on an NFS or procfs mount.
This commit is contained in:
Adam David 1996-07-30 13:11:43 +00:00
parent 50f56e483a
commit 49a598ab87
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=17339
3 changed files with 11 additions and 6 deletions

View File

@ -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));

View File

@ -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;

View File

@ -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.