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:
parent
50f56e483a
commit
49a598ab87
@ -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));
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user