--- refill.c.bsdnew 2009-11-11 13:33:14.000000000 -0800 +++ refill.c 2009-11-11 13:33:14.000000000 -0800 @@ -64,8 +64,8 @@ lflush(FILE *fp) * Refill a stdio buffer. * Return EOF on eof or error, 0 otherwise. */ -int -__srefill(FILE *fp) +__private_extern__ int +__srefill0(FILE *fp) { /* make sure stdio is set up */ @@ -130,6 +130,13 @@ __srefill(FILE *fp) if ((fp->_flags & (__SLBF|__SWR)) == (__SLBF|__SWR)) __sflush(fp); } + return (1); +} + +__private_extern__ int +__srefill1(FILE *fp) +{ + fp->_p = fp->_bf._base; fp->_r = _sread(fp, (char *)fp->_p, fp->_bf._size); fp->_flags &= ~__SMOD; /* buffer contents are again pristine */ @@ -144,3 +151,13 @@ __srefill(FILE *fp) } return (0); } + +int +__srefill(FILE *fp) +{ + int ret; + + if ((ret = __srefill0(fp)) <= 0) + return ret; + return __srefill1(fp); +}