setvbuf: Fix some compile errors in first build of logic to enable/disable buffering.
This commit is contained in:
parent
1d290c2b37
commit
889ff4b01e
@ -99,7 +99,7 @@ ssize_t lib_fread(FAR void *ptr, size_t count, FAR FILE *stream)
|
|||||||
#ifndef CONFIG_STDIO_DISABLE_BUFFERING
|
#ifndef CONFIG_STDIO_DISABLE_BUFFERING
|
||||||
/* Is there an I/O buffer? */
|
/* Is there an I/O buffer? */
|
||||||
|
|
||||||
if (stream->bufstart != NULL)
|
if (stream->fs_bufstart != NULL)
|
||||||
{
|
{
|
||||||
/* If the buffer is currently being used for write access, then
|
/* If the buffer is currently being used for write access, then
|
||||||
* flush all of the buffered write data. We do not support concurrent
|
* flush all of the buffered write data. We do not support concurrent
|
||||||
@ -202,7 +202,8 @@ ssize_t lib_fread(FAR void *ptr, size_t count, FAR FILE *stream)
|
|||||||
* into the buffer.
|
* into the buffer.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bytes_read = read(stream->fs_fd, stream->fs_bufread, buffer_available);
|
bytes_read = read(stream->fs_fd, stream->fs_bufread,
|
||||||
|
buffer_available);
|
||||||
if (bytes_read < 0)
|
if (bytes_read < 0)
|
||||||
{
|
{
|
||||||
/* An error occurred on the read. The error code is
|
/* An error occurred on the read. The error code is
|
||||||
@ -229,7 +230,10 @@ ssize_t lib_fread(FAR void *ptr, size_t count, FAR FILE *stream)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
/* Now get any other needed chars from the file. */
|
/* Now get any other needed chars from the file. */
|
||||||
|
|
||||||
while (count > 0)
|
while (count > 0)
|
||||||
@ -259,7 +263,6 @@ ssize_t lib_fread(FAR void *ptr, size_t count, FAR FILE *stream)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Here after a successful (but perhaps short) read */
|
/* Here after a successful (but perhaps short) read */
|
||||||
|
|
||||||
|
@ -63,7 +63,6 @@ ssize_t lib_fwrite(FAR const void *ptr, size_t count, FAR FILE *stream)
|
|||||||
FAR const unsigned char *src = ptr;
|
FAR const unsigned char *src = ptr;
|
||||||
ssize_t ret = ERROR;
|
ssize_t ret = ERROR;
|
||||||
unsigned char *dest;
|
unsigned char *dest;
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Make sure that writing to this stream is allowed */
|
/* Make sure that writing to this stream is allowed */
|
||||||
|
|
||||||
@ -153,7 +152,7 @@ ssize_t lib_fwrite(FAR const void *ptr, size_t count, FAR FILE *stream)
|
|||||||
|
|
||||||
/* Return the number of bytes written */
|
/* Return the number of bytes written */
|
||||||
|
|
||||||
ret = src - start;
|
ret = (uintptr_t)src - (uintptr_t)start;
|
||||||
|
|
||||||
errout_with_semaphore:
|
errout_with_semaphore:
|
||||||
lib_give_semaphore(stream);
|
lib_give_semaphore(stream);
|
||||||
|
@ -65,7 +65,7 @@ int lib_rdflush(FAR FILE *stream)
|
|||||||
{
|
{
|
||||||
/* Sanity checking */
|
/* Sanity checking */
|
||||||
|
|
||||||
if (stream =- NULL)
|
if (stream == NULL)
|
||||||
{
|
{
|
||||||
set_errno(EBADF);
|
set_errno(EBADF);
|
||||||
return ERROR;
|
return ERROR;
|
||||||
|
@ -132,7 +132,7 @@ int setvbuf(FAR FILE *stream, FAR char *buffer, int mode, size_t size)
|
|||||||
if ((mode == _IOFBF || mode == _IOLBF) && size == 0 &&
|
if ((mode == _IOFBF || mode == _IOLBF) && size == 0 &&
|
||||||
stream->fs_bufstart == NULL)
|
stream->fs_bufstart == NULL)
|
||||||
{
|
{
|
||||||
size = BUFSIZE;
|
size = BUFSIZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure that we have exclusive access to the stream */
|
/* Make sure that we have exclusive access to the stream */
|
||||||
@ -169,7 +169,7 @@ int setvbuf(FAR FILE *stream, FAR char *buffer, int mode, size_t size)
|
|||||||
* successful.
|
* successful.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
flags = stream->fs_flags & ~(__FS_FLAG_LBF | __FS_FLAG_NBF | __FS_FLAG_UBF);
|
flags = stream->fs_flags & ~(__FS_FLAG_LBF | __FS_FLAG_UBF);
|
||||||
|
|
||||||
/* Allocate a new buffer if one is needed or reuse the existing buffer it
|
/* Allocate a new buffer if one is needed or reuse the existing buffer it
|
||||||
* is appropriate to do so.
|
* is appropriate to do so.
|
||||||
@ -230,7 +230,6 @@ int setvbuf(FAR FILE *stream, FAR char *buffer, int mode, size_t size)
|
|||||||
|
|
||||||
DEBUGASSERT(size == 0);
|
DEBUGASSERT(size == 0);
|
||||||
newbuf = NULL;
|
newbuf = NULL;
|
||||||
flags |= __FS_FLAG_NBF;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -276,5 +275,3 @@ errout:
|
|||||||
return ERROR;
|
return ERROR;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* !CONFIG_STDIO_DISABLE_BUFFERING */
|
|
||||||
|
@ -86,19 +86,9 @@ static void stdoutstream_putc(FAR struct lib_outstream_s *this, int ch)
|
|||||||
static int stdoutstream_flush(FAR struct lib_outstream_s *this)
|
static int stdoutstream_flush(FAR struct lib_outstream_s *this)
|
||||||
{
|
{
|
||||||
FAR struct lib_stdoutstream_s *sthis = (FAR struct lib_stdoutstream_s *)this;
|
FAR struct lib_stdoutstream_s *sthis = (FAR struct lib_stdoutstream_s *)this;
|
||||||
FAR struct file *stream;
|
|
||||||
|
|
||||||
DEBUGASSERT(sthis != NULL && sthis->stream != NULL);
|
DEBUGASSERT(sthis != NULL && sthis->stream != NULL);
|
||||||
stream = sthis->stream;
|
return lib_fflush(sthis->stream, true);
|
||||||
|
|
||||||
if (stream->fs_bufstart != NULL)
|
|
||||||
{
|
|
||||||
return lib_fflush(sthis->stream, true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return OK;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -85,20 +85,10 @@ static void stdsostream_putc(FAR struct lib_sostream_s *this, int ch)
|
|||||||
#ifndef CONFIG_STDIO_DISABLE_BUFFERING
|
#ifndef CONFIG_STDIO_DISABLE_BUFFERING
|
||||||
static int stdsostream_flush(FAR struct lib_sostream_s *this)
|
static int stdsostream_flush(FAR struct lib_sostream_s *this)
|
||||||
{
|
{
|
||||||
FAR struct lib_stdsostream_s *sthis = (FAR struct lib_stdoutstream_s *)this;
|
FAR struct lib_stdsostream_s *sthis = (FAR struct lib_stdsostream_s *)this;
|
||||||
FAR struct file *stream;
|
|
||||||
|
|
||||||
DEBUGASSERT(sthis != NULL && sthis->stream != NULL);
|
DEBUGASSERT(sthis != NULL && sthis->stream != NULL);
|
||||||
stream = sthis->stream;
|
return lib_fflush(sthis->stream, true);
|
||||||
|
|
||||||
if (stream->fs_bufstart != NULL)
|
|
||||||
{
|
|
||||||
return lib_fflush(sthis->stream, true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return OK;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -109,10 +99,10 @@ static int stdsostream_flush(FAR struct lib_sostream_s *this)
|
|||||||
static off_t stdsostream_seek(FAR struct lib_sostream_s *this, off_t offset,
|
static off_t stdsostream_seek(FAR struct lib_sostream_s *this, off_t offset,
|
||||||
int whence)
|
int whence)
|
||||||
{
|
{
|
||||||
FAR struct lib_stdsostream_s *mthis = (FAR struct lib_stdsostream_s *)this;
|
FAR struct lib_stdsostream_s *sthis = (FAR struct lib_stdsostream_s *)this;
|
||||||
|
|
||||||
DEBUGASSERT(this);
|
DEBUGASSERT(sthis != NULL && sthis->stream != NULL);
|
||||||
return fseek(mthis->stream, offset, whence);
|
return fseek(sthis->stream, offset, whence);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
Loading…
Reference in New Issue
Block a user