Libraries updates and cleanup
* Updating common/lib * Updating lib/csu * Updating lib/libc * Updating libexec/ld.elf_so * Corrected test on __minix in featuretest to actually follow the meaning of the comment. * Cleaned up _REENTRANT-related defintions. * Disabled -D_REENTRANT for libfetch * Removing some unneeded __NBSD_LIBC defines and tests Change-Id: Ic1394baef74d11b9f86b312f5ff4bbc3cbf72ce2
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* $NetBSD: fvwrite.c,v 1.21 2009/10/25 20:44:13 christos Exp $ */
|
||||
/* $NetBSD: fvwrite.c,v 1.25 2012/03/27 15:05:42 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
@@ -37,11 +37,12 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)fvwrite.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: fvwrite.c,v 1.21 2009/10/25 20:44:13 christos Exp $");
|
||||
__RCSID("$NetBSD: fvwrite.c,v 1.25 2012/03/27 15:05:42 christos Exp $");
|
||||
#endif
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stddef.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -57,30 +58,29 @@ __RCSID("$NetBSD: fvwrite.c,v 1.21 2009/10/25 20:44:13 christos Exp $");
|
||||
* to the three different kinds of output buffering is handled here.
|
||||
*/
|
||||
int
|
||||
__sfvwrite(fp, uio)
|
||||
FILE *fp;
|
||||
struct __suio *uio;
|
||||
__sfvwrite(FILE *fp, struct __suio *uio)
|
||||
{
|
||||
int len;
|
||||
size_t len;
|
||||
char *p;
|
||||
struct __siov *iov;
|
||||
int w, s;
|
||||
int s;
|
||||
ssize_t w;
|
||||
char *nl;
|
||||
int nlknown, nldist;
|
||||
size_t nlknown, nldist;
|
||||
|
||||
_DIAGASSERT(fp != NULL);
|
||||
_DIAGASSERT(uio != NULL);
|
||||
|
||||
if ((int)uio->uio_resid < 0) {
|
||||
if ((ssize_t)uio->uio_resid < 0) {
|
||||
errno = EINVAL;
|
||||
return (EOF);
|
||||
return EOF;
|
||||
}
|
||||
if ((len = uio->uio_resid) == 0)
|
||||
return (0);
|
||||
if (uio->uio_resid == 0)
|
||||
return 0;
|
||||
/* make sure we can write */
|
||||
if (cantwrite(fp)) {
|
||||
errno = EBADF;
|
||||
return (EOF);
|
||||
return EOF;
|
||||
}
|
||||
|
||||
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||
@@ -103,8 +103,7 @@ __sfvwrite(fp, uio)
|
||||
*/
|
||||
do {
|
||||
GETIOV(;);
|
||||
w = (*fp->_write)(fp->_cookie, p,
|
||||
(int)MIN(len, BUFSIZ));
|
||||
w = (*fp->_write)(fp->_cookie, p, MIN(len, BUFSIZ));
|
||||
if (w <= 0)
|
||||
goto err;
|
||||
p += w;
|
||||
@@ -125,8 +124,8 @@ __sfvwrite(fp, uio)
|
||||
do {
|
||||
GETIOV(;);
|
||||
if ((fp->_flags & (__SALC | __SSTR)) ==
|
||||
(__SALC | __SSTR) && fp->_w < len) {
|
||||
int blen = fp->_p - fp->_bf._base;
|
||||
(__SALC | __SSTR) && (size_t)fp->_w < len) {
|
||||
ptrdiff_t blen = fp->_p - fp->_bf._base;
|
||||
unsigned char *_base;
|
||||
int _size;
|
||||
|
||||
@@ -134,7 +133,7 @@ __sfvwrite(fp, uio)
|
||||
_size = fp->_bf._size;
|
||||
do {
|
||||
_size = (_size << 1) + 1;
|
||||
} while (_size < blen + len);
|
||||
} while ((size_t)_size < blen + len);
|
||||
_base = realloc(fp->_bf._base,
|
||||
(size_t)(_size + 1));
|
||||
if (_base == NULL)
|
||||
@@ -146,29 +145,29 @@ __sfvwrite(fp, uio)
|
||||
}
|
||||
w = fp->_w;
|
||||
if (fp->_flags & __SSTR) {
|
||||
if (len < w)
|
||||
if (len < (size_t)w)
|
||||
w = len;
|
||||
COPY(w); /* copy MIN(fp->_w,len), */
|
||||
fp->_w -= w;
|
||||
fp->_w -= (int)w;
|
||||
fp->_p += w;
|
||||
w = len; /* but pretend copied all */
|
||||
} else if (fp->_p > fp->_bf._base && len > w) {
|
||||
} else if (fp->_p > fp->_bf._base && len > (size_t)w) {
|
||||
/* fill and flush */
|
||||
COPY(w);
|
||||
/* fp->_w -= w; */ /* unneeded */
|
||||
fp->_p += w;
|
||||
if (fflush(fp))
|
||||
goto err;
|
||||
} else if (len >= (w = fp->_bf._size)) {
|
||||
} else if (len >= (size_t)(w = fp->_bf._size)) {
|
||||
/* write directly */
|
||||
w = (*fp->_write)(fp->_cookie, p, w);
|
||||
w = (*fp->_write)(fp->_cookie, p, (size_t)w);
|
||||
if (w <= 0)
|
||||
goto err;
|
||||
} else {
|
||||
/* fill and done */
|
||||
w = len;
|
||||
COPY(w);
|
||||
fp->_w -= w;
|
||||
fp->_w -= (int)w;
|
||||
fp->_p += w;
|
||||
}
|
||||
p += w;
|
||||
@@ -187,11 +186,11 @@ __sfvwrite(fp, uio)
|
||||
do {
|
||||
GETIOV(nlknown = 0);
|
||||
if (!nlknown) {
|
||||
nl = memchr(p, '\n', (size_t)len);
|
||||
nldist = nl ? nl + 1 - p : len + 1;
|
||||
nl = memchr(p, '\n', len);
|
||||
nldist = nl ? (size_t)(nl + 1 - p) : len + 1;
|
||||
nlknown = 1;
|
||||
}
|
||||
s = MIN(len, nldist);
|
||||
s = (int)MIN(len, nldist);
|
||||
w = fp->_w + fp->_bf._size;
|
||||
if (fp->_p > fp->_bf._base && s > w) {
|
||||
COPY(w);
|
||||
@@ -200,13 +199,13 @@ __sfvwrite(fp, uio)
|
||||
if (fflush(fp))
|
||||
goto err;
|
||||
} else if (s >= (w = fp->_bf._size)) {
|
||||
w = (*fp->_write)(fp->_cookie, p, w);
|
||||
w = (*fp->_write)(fp->_cookie, p, (size_t)w);
|
||||
if (w <= 0)
|
||||
goto err;
|
||||
} else {
|
||||
w = s;
|
||||
COPY(w);
|
||||
fp->_w -= w;
|
||||
fp->_w -= (int)w;
|
||||
fp->_p += w;
|
||||
}
|
||||
if ((nldist -= w) == 0) {
|
||||
@@ -219,9 +218,9 @@ __sfvwrite(fp, uio)
|
||||
len -= w;
|
||||
} while ((uio->uio_resid -= w) != 0);
|
||||
}
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
err:
|
||||
fp->_flags |= __SERR;
|
||||
return (EOF);
|
||||
return EOF;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user