summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdio/fvwrite.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/stdio/fvwrite.c')
-rw-r--r--lib/libc/stdio/fvwrite.c33
1 files changed, 4 insertions, 29 deletions
diff --git a/lib/libc/stdio/fvwrite.c b/lib/libc/stdio/fvwrite.c
index efcfffb..9196825 100644
--- a/lib/libc/stdio/fvwrite.c
+++ b/lib/libc/stdio/fvwrite.c
@@ -64,7 +64,7 @@ __sfvwrite(fp, uio)
register struct __siov *iov;
register int w, s;
char *nl;
- int nlknown, nldist, firsttime;
+ int nlknown, nldist;
if ((len = uio->uio_resid) == 0)
return (0);
@@ -86,22 +86,13 @@ __sfvwrite(fp, uio)
len = iov->iov_len; \
iov++; \
}
- firsttime = 1;
if (fp->_flags & __SNBF) {
/*
* Unbuffered: write up to BUFSIZ bytes at a time.
*/
do {
GETIOV(;);
- if (firsttime) {
- if ((fp->_flags & __SAPP) &&
- _sseek(fp, (fpos_t)0, SEEK_END) == -1)
- goto err;
- /* In case FAPPEND mode is set. */
- fp->_flags &= ~__SOFF;
- firsttime = 0;
- }
- w = (*fp->_write)(fp->_cookie, p, MIN(len, BUFSIZ));
+ w = _swrite(fp, p, MIN(len, BUFSIZ));
if (w <= 0)
goto err;
p += w;
@@ -156,15 +147,7 @@ __sfvwrite(fp, uio)
goto err;
} else if (len >= (w = fp->_bf._size)) {
/* write directly */
- if (firsttime) {
- if ((fp->_flags & __SAPP) &&
- _sseek(fp, (fpos_t)0, SEEK_END) == -1)
- goto err;
- /* In case FAPPEND mode is set. */
- fp->_flags &= ~__SOFF;
- firsttime = 0;
- }
- w = (*fp->_write)(fp->_cookie, p, w);
+ w = _swrite(fp, p, w);
if (w <= 0)
goto err;
} else {
@@ -203,15 +186,7 @@ __sfvwrite(fp, uio)
if (__fflush(fp))
goto err;
} else if (s >= (w = fp->_bf._size)) {
- if (firsttime) {
- if ((fp->_flags & __SAPP) &&
- _sseek(fp, (fpos_t)0, SEEK_END) == -1)
- goto err;
- /* In case FAPPEND mode is set. */
- fp->_flags &= ~__SOFF;
- firsttime = 0;
- }
- w = (*fp->_write)(fp->_cookie, p, w);
+ w = _swrite(fp, p, w);
if (w <= 0)
goto err;
} else {
OpenPOWER on IntegriCloud