stream: reduce int use, handle FS_LARGEFILE correctly.

offset int -> offset, len int -> size_t, ret int -> ssize_t

Signed-off-by: buxiasen <buxiasen@xiaomi.com>
This commit is contained in:
buxiasen 2024-11-09 17:10:17 +08:00 committed by Xiang Xiao
parent 2433094ebd
commit a5459cdaca
27 changed files with 186 additions and 181 deletions

View file

@ -74,19 +74,19 @@
/* These are the generic representations of a streams used by the NuttX */ /* These are the generic representations of a streams used by the NuttX */
struct lib_instream_s; struct lib_instream_s;
typedef CODE int (*lib_getc_t)(FAR struct lib_instream_s *self); typedef CODE int (*lib_getc_t)(FAR struct lib_instream_s *self);
typedef CODE int (*lib_gets_t)(FAR struct lib_instream_s *self, typedef CODE ssize_t (*lib_gets_t)(FAR struct lib_instream_s *self,
FAR void *buf, int len); FAR void *buf, size_t len);
struct lib_outstream_s; struct lib_outstream_s;
typedef CODE void (*lib_putc_t)(FAR struct lib_outstream_s *self, int ch); typedef CODE void (*lib_putc_t)(FAR struct lib_outstream_s *self, int ch);
typedef CODE int (*lib_puts_t)(FAR struct lib_outstream_s *self, typedef CODE ssize_t (*lib_puts_t)(FAR struct lib_outstream_s *self,
FAR const void *buf, int len); FAR const void *buf, size_t len);
typedef CODE int (*lib_flush_t)(FAR struct lib_outstream_s *self); typedef CODE int (*lib_flush_t)(FAR struct lib_outstream_s *self);
struct lib_instream_s struct lib_instream_s
{ {
int nget; /* Total number of characters gotten. Written off_t nget; /* Total number of characters gotten. Written
* by get method, readable by user */ * by get method, readable by user */
lib_getc_t getc; /* Get one character from the instream */ lib_getc_t getc; /* Get one character from the instream */
lib_gets_t gets; /* Get the string from the instream */ lib_gets_t gets; /* Get the string from the instream */
@ -94,7 +94,7 @@ struct lib_instream_s
struct lib_outstream_s struct lib_outstream_s
{ {
int nput; /* Total number of characters put. Written off_t nput; /* Total number of characters put. Written
* by put method, readable by user */ * by put method, readable by user */
lib_putc_t putc; /* Put one character to the outstream */ lib_putc_t putc; /* Put one character to the outstream */
lib_puts_t puts; /* Writes the string to the outstream */ lib_puts_t puts; /* Writes the string to the outstream */
@ -104,23 +104,24 @@ struct lib_outstream_s
/* Seek-able streams */ /* Seek-able streams */
struct lib_sistream_s; struct lib_sistream_s;
typedef CODE int (*lib_sigetc_t)(FAR struct lib_sistream_s *self); typedef CODE int (*lib_sigetc_t)(FAR struct lib_sistream_s *self);
typedef CODE int (*lib_sigets_t)(FAR struct lib_sistream_s *self, typedef CODE ssize_t (*lib_sigets_t)(FAR struct lib_sistream_s *self,
FAR void *buf, int len); FAR void *buf, size_t len);
typedef CODE off_t (*lib_siseek_t)(FAR struct lib_sistream_s *self, typedef CODE off_t (*lib_siseek_t)(FAR struct lib_sistream_s *self,
off_t offset, int whence); off_t offset, int whence);
struct lib_sostream_s; struct lib_sostream_s;
typedef CODE void (*lib_soputc_t)(FAR struct lib_sostream_s *self, int ch); typedef CODE void (*lib_soputc_t)(FAR struct lib_sostream_s *self,
typedef CODE int (*lib_soputs_t)(FAR struct lib_sostream_s *self, int ch);
FAR const void *buf, int len); typedef CODE ssize_t (*lib_soputs_t)(FAR struct lib_sostream_s *self,
typedef CODE int (*lib_soflush_t)(FAR struct lib_sostream_s *self); FAR const void *buf, size_t len);
typedef CODE off_t (*lib_soseek_t)(FAR struct lib_sostream_s *self, typedef CODE int (*lib_soflush_t)(FAR struct lib_sostream_s *self);
off_t offset, int whence); typedef CODE off_t (*lib_soseek_t)(FAR struct lib_sostream_s *self,
off_t offset, int whence);
struct lib_sistream_s struct lib_sistream_s
{ {
int nget; /* Total number of characters gotten. Written off_t nget; /* Total number of characters gotten. Written
* by get method, readable by user */ * by get method, readable by user */
lib_sigetc_t getc; /* Get one character from the instream */ lib_sigetc_t getc; /* Get one character from the instream */
lib_gets_t gets; /* Get the string from the instream */ lib_gets_t gets; /* Get the string from the instream */
@ -129,7 +130,7 @@ struct lib_sistream_s
struct lib_sostream_s struct lib_sostream_s
{ {
int nput; /* Total number of characters put. Written off_t nput; /* Total number of characters put. Written
* by put method, readable by user */ * by put method, readable by user */
lib_soputc_t putc; /* Put one character to the outstream */ lib_soputc_t putc; /* Put one character to the outstream */
lib_soputs_t puts; /* Writes the string to the outstream */ lib_soputs_t puts; /* Writes the string to the outstream */
@ -157,7 +158,7 @@ struct lib_memsistream_s
{ {
struct lib_sistream_s common; struct lib_sistream_s common;
FAR const char *buffer; /* Address of first byte in the buffer */ FAR const char *buffer; /* Address of first byte in the buffer */
size_t offset; /* Current buffer offset in bytes */ off_t offset; /* Current buffer offset in bytes */
size_t buflen; /* Size of the buffer in bytes */ size_t buflen; /* Size of the buffer in bytes */
}; };
@ -165,7 +166,7 @@ struct lib_memsostream_s
{ {
struct lib_sostream_s common; struct lib_sostream_s common;
FAR char *buffer; /* Address of first byte in the buffer */ FAR char *buffer; /* Address of first byte in the buffer */
size_t offset; /* Current buffer offset in bytes */ off_t offset; /* Current buffer offset in bytes */
size_t buflen; /* Size of the buffer in bytes */ size_t buflen; /* Size of the buffer in bytes */
}; };
@ -231,7 +232,7 @@ struct lib_bufferedoutstream_s
{ {
struct lib_outstream_s common; struct lib_outstream_s common;
FAR struct lib_outstream_s *backend; FAR struct lib_outstream_s *backend;
int pending; size_t pending;
char buffer[CONFIG_STREAM_OUT_BUFFER_SIZE]; char buffer[CONFIG_STREAM_OUT_BUFFER_SIZE];
}; };
@ -239,7 +240,7 @@ struct lib_hexdumpstream_s
{ {
struct lib_outstream_s common; struct lib_outstream_s common;
FAR struct lib_outstream_s *backend; FAR struct lib_outstream_s *backend;
int pending; size_t pending;
char buffer[CONFIG_STREAM_HEXDUMP_BUFFER_SIZE + 1]; char buffer[CONFIG_STREAM_HEXDUMP_BUFFER_SIZE + 1];
}; };
@ -247,9 +248,9 @@ struct lib_base64outstream_s
{ {
struct lib_outstream_s common; struct lib_outstream_s common;
FAR struct lib_outstream_s *backend; FAR struct lib_outstream_s *backend;
int pending; size_t pending;
unsigned char bytes[3]; unsigned char bytes[3];
int nbytes; size_t nbytes;
char buffer[CONFIG_STREAM_BASE64_BUFFER_SIZE + 1]; char buffer[CONFIG_STREAM_BASE64_BUFFER_SIZE + 1];
}; };
@ -269,7 +270,7 @@ struct lib_syslograwstream_s
struct lib_outstream_s common; struct lib_outstream_s common;
#ifdef CONFIG_SYSLOG_BUFFER #ifdef CONFIG_SYSLOG_BUFFER
char buffer[CONFIG_SYSLOG_BUFSIZE]; char buffer[CONFIG_SYSLOG_BUFSIZE];
int offset; off_t offset;
#endif #endif
int last_ch; int last_ch;
}; };
@ -282,7 +283,7 @@ struct lib_lzfoutstream_s
struct lib_outstream_s common; struct lib_outstream_s common;
FAR struct lib_outstream_s *backend; FAR struct lib_outstream_s *backend;
lzf_state_t state; lzf_state_t state;
size_t offset; off_t offset;
char in[LZF_STREAM_BLOCKSIZE]; char in[LZF_STREAM_BLOCKSIZE];
char out[LZF_MAX_HDR_SIZE + LZF_STREAM_BLOCKSIZE]; char out[LZF_MAX_HDR_SIZE + LZF_STREAM_BLOCKSIZE];
}; };
@ -354,13 +355,13 @@ extern struct lib_outstream_s g_lowoutstream;
****************************************************************************/ ****************************************************************************/
void lib_meminstream(FAR struct lib_meminstream_s *stream, void lib_meminstream(FAR struct lib_meminstream_s *stream,
FAR const char *bufstart, int buflen); FAR const char *bufstart, size_t buflen);
void lib_memoutstream(FAR struct lib_memoutstream_s *stream, void lib_memoutstream(FAR struct lib_memoutstream_s *stream,
FAR char *bufstart, int buflen); FAR char *bufstart, size_t buflen);
void lib_memsistream(FAR struct lib_memsistream_s *stream, void lib_memsistream(FAR struct lib_memsistream_s *stream,
FAR const char *bufstart, int buflen); FAR const char *bufstart, size_t buflen);
void lib_memsostream(FAR struct lib_memsostream_s *stream, void lib_memsostream(FAR struct lib_memsostream_s *stream,
FAR char *bufstart, int buflen); FAR char *bufstart, size_t buflen);
/**************************************************************************** /****************************************************************************
* Name: lib_stdinstream, lib_stdoutstream * Name: lib_stdinstream, lib_stdoutstream

View file

@ -42,8 +42,8 @@ struct obstack_stream
* Private Functions * Private Functions
****************************************************************************/ ****************************************************************************/
static int obstack_puts(FAR struct lib_outstream_s *self, static ssize_t obstack_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
FAR struct obstack_stream *stream = (FAR struct obstack_stream *)self; FAR struct obstack_stream *stream = (FAR struct obstack_stream *)self;

View file

@ -82,18 +82,18 @@ static void base64stream_putc(FAR struct lib_outstream_s *self, int ch)
* Name: base64stream_puts * Name: base64stream_puts
****************************************************************************/ ****************************************************************************/
static int base64stream_puts(FAR struct lib_outstream_s *self, static ssize_t base64stream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
FAR struct lib_base64outstream_s *stream = (FAR void *)self; FAR struct lib_base64outstream_s *stream = (FAR void *)self;
FAR const unsigned char *input = (FAR const unsigned char *)buf; FAR const unsigned char *input = (FAR const unsigned char *)buf;
int remaining = len; size_t remaining = len;
if (stream->nbytes) if (stream->nbytes)
{ {
/* Flush the first three bytes */ /* Flush the first three bytes */
int n = 3 - stream->nbytes; size_t n = 3 - stream->nbytes;
if (n > remaining) if (n > remaining)
{ {
n = remaining; n = remaining;
@ -118,8 +118,9 @@ static int base64stream_puts(FAR struct lib_outstream_s *self,
while (remaining >= 3) while (remaining >= 3)
{ {
int outlen; size_t outlen;
int n = (STREAM_BASE64_BUFFER_SIZE - stream->pending) / 4 * 3; size_t n = (STREAM_BASE64_BUFFER_SIZE - stream->pending) / 4 * 3;
if (n > remaining) if (n > remaining)
{ {
n = remaining / 3 * 3; n = remaining / 3 * 3;

View file

@ -65,8 +65,8 @@ static int blkoutstream_flush(FAR struct lib_outstream_s *self)
* Name: blkoutstream_puts * Name: blkoutstream_puts
****************************************************************************/ ****************************************************************************/
static int blkoutstream_puts(FAR struct lib_outstream_s *self, static ssize_t blkoutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
FAR struct lib_blkoutstream_s *stream = FAR struct lib_blkoutstream_s *stream =
(FAR struct lib_blkoutstream_s *)self; (FAR struct lib_blkoutstream_s *)self;
@ -74,12 +74,12 @@ static int blkoutstream_puts(FAR struct lib_outstream_s *self,
FAR struct inode *inode = stream->inode; FAR struct inode *inode = stream->inode;
FAR const unsigned char *ptr = buf; FAR const unsigned char *ptr = buf;
size_t remain = len; size_t remain = len;
int ret; ssize_t ret;
while (remain > 0) while (remain > 0)
{ {
size_t sector = self->nput / sectorsize; off_t sector = self->nput / sectorsize;
size_t offset = self->nput % sectorsize; off_t offset = self->nput % sectorsize;
if (offset > 0) if (offset > 0)
{ {

View file

@ -63,12 +63,12 @@ static int bufferedoutstream_flush(FAR struct lib_outstream_s *self)
* Name: bufferedoutstream_puts * Name: bufferedoutstream_puts
****************************************************************************/ ****************************************************************************/
static int bufferedoutstream_puts(FAR struct lib_outstream_s *self, static ssize_t bufferedoutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
FAR struct lib_bufferedoutstream_s *stream = FAR struct lib_bufferedoutstream_s *stream =
(FAR struct lib_bufferedoutstream_s *)self; (FAR struct lib_bufferedoutstream_s *)self;
int ret = len; size_t ret = len;
if (stream->pending + len <= CONFIG_STREAM_OUT_BUFFER_SIZE) if (stream->pending + len <= CONFIG_STREAM_OUT_BUFFER_SIZE)
{ {

View file

@ -42,12 +42,12 @@
* Name: rawoutstream_puts * Name: rawoutstream_puts
****************************************************************************/ ****************************************************************************/
static int fileoutstream_puts(FAR struct lib_outstream_s *self, static ssize_t fileoutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
FAR struct lib_fileoutstream_s *stream = FAR struct lib_fileoutstream_s *stream =
(FAR struct lib_fileoutstream_s *)self; (FAR struct lib_fileoutstream_s *)self;
int nwritten; ssize_t nwritten;
do do
{ {

View file

@ -100,7 +100,7 @@ static int hexdumpstream_flush(FAR struct lib_outstream_s *self)
static void hexdumpstream_putc(FAR struct lib_outstream_s *self, int ch) static void hexdumpstream_putc(FAR struct lib_outstream_s *self, int ch)
{ {
FAR struct lib_hexdumpstream_s *stream = (FAR void *)self; FAR struct lib_hexdumpstream_s *stream = (FAR void *)self;
int outlen = CONFIG_STREAM_HEXDUMP_BUFFER_SIZE; size_t outlen = CONFIG_STREAM_HEXDUMP_BUFFER_SIZE;
const uint8_t byte = ch; const uint8_t byte = ch;
bin2hex(&byte, 1, stream->buffer + stream->pending, bin2hex(&byte, 1, stream->buffer + stream->pending,
@ -120,15 +120,15 @@ static void hexdumpstream_putc(FAR struct lib_outstream_s *self, int ch)
* Name: hexdumpstream_puts * Name: hexdumpstream_puts
****************************************************************************/ ****************************************************************************/
static int hexdumpstream_puts(FAR struct lib_outstream_s *self, static ssize_t hexdumpstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
FAR struct lib_hexdumpstream_s *stream = (FAR void *)self; FAR struct lib_hexdumpstream_s *stream = (FAR void *)self;
const unsigned char *p = buf; const unsigned char *p = buf;
int outlen = CONFIG_STREAM_HEXDUMP_BUFFER_SIZE; size_t outlen = CONFIG_STREAM_HEXDUMP_BUFFER_SIZE;
int line = outlen / 2; size_t line = outlen / 2;
int remain = len; size_t remain = len;
int ret; ssize_t ret;
while (remain > 0) while (remain > 0)
{ {

View file

@ -40,8 +40,8 @@
****************************************************************************/ ****************************************************************************/
static void lowoutstream_putc(FAR struct lib_outstream_s *self, int ch); static void lowoutstream_putc(FAR struct lib_outstream_s *self, int ch);
static int lowoutstream_puts(FAR struct lib_outstream_s *self, static ssize_t lowoutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len); FAR const void *buf, size_t len);
/**************************************************************************** /****************************************************************************
* Public Data * Public Data
@ -79,8 +79,8 @@ static void lowoutstream_putc(FAR struct lib_outstream_s *self, int ch)
* Name: lowoutstream_puts * Name: lowoutstream_puts
****************************************************************************/ ****************************************************************************/
static int lowoutstream_puts(FAR struct lib_outstream_s *self, static ssize_t lowoutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
DEBUGASSERT(self); DEBUGASSERT(self);

View file

@ -64,8 +64,8 @@ static int lzfoutstream_flush(FAR struct lib_outstream_s *self)
* Name: lzfoutstream_puts * Name: lzfoutstream_puts
****************************************************************************/ ****************************************************************************/
static int lzfoutstream_puts(FAR struct lib_outstream_s *self, static ssize_t lzfoutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
FAR struct lib_lzfoutstream_s *stream = FAR struct lib_lzfoutstream_s *stream =
(FAR struct lib_lzfoutstream_s *)self; (FAR struct lib_lzfoutstream_s *)self;
@ -74,7 +74,7 @@ static int lzfoutstream_puts(FAR struct lib_outstream_s *self,
size_t total = len; size_t total = len;
size_t copyin; size_t copyin;
size_t outlen; size_t outlen;
int ret; ssize_t ret;
while (total > 0) while (total > 0)
{ {

View file

@ -25,6 +25,7 @@
****************************************************************************/ ****************************************************************************/
#include <assert.h> #include <assert.h>
#include <errno.h>
#include <string.h> #include <string.h>
#include "libc.h" #include "libc.h"
@ -41,7 +42,7 @@ static int meminstream_getc(FAR struct lib_instream_s *self)
{ {
FAR struct lib_meminstream_s *stream = FAR struct lib_meminstream_s *stream =
(FAR struct lib_meminstream_s *)self; (FAR struct lib_meminstream_s *)self;
int ret; int ret = -EINVAL;
DEBUGASSERT(self); DEBUGASSERT(self);
@ -52,10 +53,6 @@ static int meminstream_getc(FAR struct lib_instream_s *self)
ret = stream->buffer[self->nget]; ret = stream->buffer[self->nget];
self->nget++; self->nget++;
} }
else
{
ret = EOF;
}
return ret; return ret;
} }
@ -64,12 +61,12 @@ static int meminstream_getc(FAR struct lib_instream_s *self)
* Name: meminstream_gets * Name: meminstream_gets
****************************************************************************/ ****************************************************************************/
static int meminstream_gets(FAR struct lib_instream_s *self, static ssize_t meminstream_gets(FAR struct lib_instream_s *self,
FAR void *buffer, int len) FAR void *buffer, size_t len)
{ {
FAR struct lib_meminstream_s *stream = FAR struct lib_meminstream_s *stream =
(FAR struct lib_meminstream_s *)self; (FAR struct lib_meminstream_s *)self;
int ret; ssize_t ret = -EINVAL;
DEBUGASSERT(self); DEBUGASSERT(self);
@ -82,10 +79,6 @@ static int meminstream_gets(FAR struct lib_instream_s *self,
self->nget += ret; self->nget += ret;
memcpy(buffer, stream->buffer, ret); memcpy(buffer, stream->buffer, ret);
} }
else
{
ret = EOF;
}
return ret; return ret;
} }
@ -112,7 +105,7 @@ static int meminstream_gets(FAR struct lib_instream_s *self,
****************************************************************************/ ****************************************************************************/
void lib_meminstream(FAR struct lib_meminstream_s *stream, void lib_meminstream(FAR struct lib_meminstream_s *stream,
FAR const char *bufstart, int buflen) FAR const char *bufstart, size_t buflen)
{ {
stream->common.getc = meminstream_getc; stream->common.getc = meminstream_getc;
stream->common.gets = meminstream_gets; stream->common.gets = meminstream_gets;

View file

@ -36,12 +36,12 @@
* Name: memoutstream_puts * Name: memoutstream_puts
****************************************************************************/ ****************************************************************************/
static int memoutstream_puts(FAR struct lib_outstream_s *self, static ssize_t memoutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
FAR struct lib_memoutstream_s *stream = FAR struct lib_memoutstream_s *stream =
(FAR struct lib_memoutstream_s *)self; (FAR struct lib_memoutstream_s *)self;
int ncopy; size_t ncopy;
DEBUGASSERT(self); DEBUGASSERT(self);
@ -94,7 +94,7 @@ static void memoutstream_putc(FAR struct lib_outstream_s *self, int ch)
****************************************************************************/ ****************************************************************************/
void lib_memoutstream(FAR struct lib_memoutstream_s *outstream, void lib_memoutstream(FAR struct lib_memoutstream_s *outstream,
FAR char *bufstart, int buflen) FAR char *bufstart, size_t buflen)
{ {
outstream->common.putc = memoutstream_putc; outstream->common.putc = memoutstream_putc;
outstream->common.puts = memoutstream_puts; outstream->common.puts = memoutstream_puts;

View file

@ -25,6 +25,7 @@
****************************************************************************/ ****************************************************************************/
#include <assert.h> #include <assert.h>
#include <errno.h>
#include "libc.h" #include "libc.h"
@ -40,7 +41,7 @@ static int memsistream_getc(FAR struct lib_sistream_s *self)
{ {
FAR struct lib_memsistream_s *stream = FAR struct lib_memsistream_s *stream =
(FAR struct lib_memsistream_s *)self; (FAR struct lib_memsistream_s *)self;
int ret; int ret = -EINVAL;
DEBUGASSERT(self); DEBUGASSERT(self);
@ -52,10 +53,6 @@ static int memsistream_getc(FAR struct lib_sistream_s *self)
stream->offset++; stream->offset++;
self->nget++; self->nget++;
} }
else
{
ret = EOF;
}
return ret; return ret;
} }
@ -64,12 +61,12 @@ static int memsistream_getc(FAR struct lib_sistream_s *self)
* Name: meminstream_gets * Name: meminstream_gets
****************************************************************************/ ****************************************************************************/
static int memsistream_gets(FAR struct lib_instream_s *self, static ssize_t memsistream_gets(FAR struct lib_instream_s *self,
FAR void *buffer, int len) FAR void *buffer, size_t len)
{ {
FAR struct lib_memsistream_s *stream = FAR struct lib_memsistream_s *stream =
(FAR struct lib_memsistream_s *)self; (FAR struct lib_memsistream_s *)self;
int ret; ssize_t ret = -EINVAL;
DEBUGASSERT(self); DEBUGASSERT(self);
@ -82,10 +79,6 @@ static int memsistream_gets(FAR struct lib_instream_s *self,
self->nget += ret; self->nget += ret;
memcpy(buffer, stream->buffer, ret); memcpy(buffer, stream->buffer, ret);
} }
else
{
ret = EOF;
}
return ret; return ret;
} }
@ -106,7 +99,7 @@ static off_t memsistream_seek(FAR struct lib_sistream_s *self, off_t offset,
switch (whence) switch (whence)
{ {
case SEEK_CUR: case SEEK_CUR:
newpos = (off_t)stream->offset + offset; newpos = stream->offset + offset;
break; break;
case SEEK_SET: case SEEK_SET:
@ -114,23 +107,23 @@ static off_t memsistream_seek(FAR struct lib_sistream_s *self, off_t offset,
break; break;
case SEEK_END: case SEEK_END:
newpos = (off_t)stream->buflen + offset; newpos = stream->buflen + offset;
break; break;
default: default:
return (off_t)ERROR; return -EINVAL;
} }
/* Make sure that the new position is within range */ /* Make sure that the new position is within range */
if (newpos < 0 || newpos >= (off_t)stream->buflen) if (newpos < 0 || newpos >= stream->buflen)
{ {
return (off_t)ERROR; return -EINVAL;
} }
/* Return the new position */ /* Return the new position */
stream->offset = (size_t)newpos; stream->offset = newpos;
return newpos; return newpos;
} }
@ -156,7 +149,7 @@ static off_t memsistream_seek(FAR struct lib_sistream_s *self, off_t offset,
****************************************************************************/ ****************************************************************************/
void lib_memsistream(FAR struct lib_memsistream_s *instream, void lib_memsistream(FAR struct lib_memsistream_s *instream,
FAR const char *bufstart, int buflen) FAR const char *bufstart, size_t buflen)
{ {
instream->common.getc = memsistream_getc; instream->common.getc = memsistream_getc;
instream->common.gets = memsistream_gets; instream->common.gets = memsistream_gets;

View file

@ -25,6 +25,7 @@
****************************************************************************/ ****************************************************************************/
#include <assert.h> #include <assert.h>
#include <errno.h>
#include "libc.h" #include "libc.h"
@ -61,10 +62,10 @@ static void memsostream_putc(FAR struct lib_sostream_s *self, int ch)
* Name: memoutstream_puts * Name: memoutstream_puts
****************************************************************************/ ****************************************************************************/
static int memsostream_puts(FAR struct lib_sostream_s *self, static ssize_t memsostream_puts(FAR struct lib_sostream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
int ncopy; ssize_t ncopy;
FAR struct lib_memsostream_s *stream = FAR struct lib_memsostream_s *stream =
(FAR struct lib_memsostream_s *)self; (FAR struct lib_memsostream_s *)self;
@ -99,7 +100,7 @@ static off_t memsostream_seek(FAR struct lib_sostream_s *self, off_t offset,
switch (whence) switch (whence)
{ {
case SEEK_CUR: case SEEK_CUR:
newpos = (off_t)stream->offset + offset; newpos = stream->offset + offset;
break; break;
case SEEK_SET: case SEEK_SET:
@ -107,23 +108,23 @@ static off_t memsostream_seek(FAR struct lib_sostream_s *self, off_t offset,
break; break;
case SEEK_END: case SEEK_END:
newpos = (off_t)stream->buflen + offset; newpos = stream->buflen + offset;
break; break;
default: default:
return (off_t)ERROR; return -EINVAL;
} }
/* Make sure that the new position is within range */ /* Make sure that the new position is within range */
if (newpos < 0 || newpos >= (off_t)stream->buflen) if (newpos < 0 || newpos >= stream->buflen)
{ {
return (off_t)ERROR; return -EINVAL;
} }
/* Return the new position */ /* Return the new position */
stream->offset = (size_t)newpos; stream->offset = newpos;
return newpos; return newpos;
} }
@ -149,7 +150,7 @@ static off_t memsostream_seek(FAR struct lib_sostream_s *self, off_t offset,
****************************************************************************/ ****************************************************************************/
void lib_memsostream(FAR struct lib_memsostream_s *outstream, void lib_memsostream(FAR struct lib_memsostream_s *outstream,
FAR char *bufstart, int buflen) FAR char *bufstart, size_t buflen)
{ {
outstream->common.putc = memsostream_putc; outstream->common.putc = memsostream_putc;
outstream->common.puts = memsostream_puts; outstream->common.puts = memsostream_puts;

View file

@ -77,8 +77,8 @@ static int mtdoutstream_flush(FAR struct lib_outstream_s *self)
* Name: mtdoutstream_puts * Name: mtdoutstream_puts
****************************************************************************/ ****************************************************************************/
static int mtdoutstream_puts(FAR struct lib_outstream_s *self, static ssize_t mtdoutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
FAR struct lib_mtdoutstream_s *stream = FAR struct lib_mtdoutstream_s *stream =
(FAR struct lib_mtdoutstream_s *)self; (FAR struct lib_mtdoutstream_s *)self;
@ -87,7 +87,7 @@ static int mtdoutstream_puts(FAR struct lib_outstream_s *self,
size_t erasesize = stream->geo.erasesize; size_t erasesize = stream->geo.erasesize;
size_t nblkpererase = erasesize / stream->geo.blocksize; size_t nblkpererase = erasesize / stream->geo.blocksize;
size_t remain = len; size_t remain = len;
int ret; ssize_t ret;
if (self->nput + len > erasesize * stream->geo.neraseblocks) if (self->nput + len > erasesize * stream->geo.neraseblocks)
{ {
@ -96,8 +96,8 @@ static int mtdoutstream_puts(FAR struct lib_outstream_s *self,
while (remain > 0) while (remain > 0)
{ {
size_t sblock = self->nput / erasesize; off_t sblock = self->nput / erasesize;
size_t offset = self->nput % erasesize; off_t offset = self->nput % erasesize;
if (offset > 0) if (offset > 0)
{ {

View file

@ -36,15 +36,15 @@
static int nullinstream_getc(FAR struct lib_instream_s *self) static int nullinstream_getc(FAR struct lib_instream_s *self)
{ {
UNUSED(self); UNUSED(self);
return EOF; return -EINVAL;
} }
static int nullinstream_gets(FAR struct lib_instream_s *self, static ssize_t nullinstream_gets(FAR struct lib_instream_s *self,
FAR void *buffer, int len) FAR void *buffer, size_t len)
{ {
UNUSED(buffer); UNUSED(buffer);
UNUSED(len); UNUSED(len);
return EOF; return -EINVAL;
} }
/**************************************************************************** /****************************************************************************

View file

@ -41,8 +41,8 @@ static void nulloutstream_putc(FAR struct lib_outstream_s *self, int ch)
self->nput++; self->nput++;
} }
static int nulloutstream_puts(FAR struct lib_outstream_s *self, static ssize_t nulloutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buffer, int len) FAR const void *buffer, size_t len)
{ {
UNUSED(buffer); UNUSED(buffer);
UNUSED(len); UNUSED(len);

View file

@ -59,26 +59,22 @@ static int rawinstream_getc(FAR struct lib_instream_s *self)
self->nget++; self->nget++;
return ch; return ch;
} }
else
/* Return EOF on any failure to read from the incoming byte stream. The {
* only expected error is EINTR meaning that the read was interrupted return _NX_GETERRVAL(nread);
* by a signal. A Zero return value would indicate an end-of-file }
* condition.
*/
return EOF;
} }
/**************************************************************************** /****************************************************************************
* Name: rawinstream_getc * Name: rawinstream_getc
****************************************************************************/ ****************************************************************************/
static int rawinstream_gets(FAR struct lib_instream_s *self, static ssize_t rawinstream_gets(FAR struct lib_instream_s *self,
FAR void *buffer, int len) FAR void *buffer, size_t len)
{ {
FAR struct lib_rawinstream_s *stream = FAR struct lib_rawinstream_s *stream =
(FAR struct lib_rawinstream_s *)self; (FAR struct lib_rawinstream_s *)self;
int nread; ssize_t nread;
DEBUGASSERT(self && stream->fd >= 0); DEBUGASSERT(self && stream->fd >= 0);

View file

@ -42,12 +42,12 @@
* Name: rawoutstream_puts * Name: rawoutstream_puts
****************************************************************************/ ****************************************************************************/
static int rawoutstream_puts(FAR struct lib_outstream_s *self, static ssize_t rawoutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buf, int len) FAR const void *buf, size_t len)
{ {
FAR struct lib_rawoutstream_s *stream = FAR struct lib_rawoutstream_s *stream =
(FAR struct lib_rawoutstream_s *)self; (FAR struct lib_rawoutstream_s *)self;
int nwritten = 0; ssize_t nwritten = 0;
do do
{ {

View file

@ -59,26 +59,22 @@ static int rawsistream_getc(FAR struct lib_sistream_s *self)
self->nget++; self->nget++;
return ch; return ch;
} }
else
/* Return EOF on any failure to read from the incoming byte stream. The {
* only expected error is EINTR meaning that the read was interrupted return _NX_GETERRVAL(nread);
* by a signal. A Zero return value would indicated an end-of-file }
* confition.
*/
return EOF;
} }
/**************************************************************************** /****************************************************************************
* Name: rawsistream_gets * Name: rawsistream_gets
****************************************************************************/ ****************************************************************************/
static int rawsistream_gets(FAR struct lib_instream_s *self, static ssize_t rawsistream_gets(FAR struct lib_instream_s *self,
FAR void *buffer, int len) FAR void *buffer, size_t len)
{ {
FAR struct lib_rawsistream_s *stream = FAR struct lib_rawsistream_s *stream =
(FAR struct lib_rawsistream_s *)self; (FAR struct lib_rawsistream_s *)self;
int nread; ssize_t nread;
DEBUGASSERT(self && stream->fd >= 0); DEBUGASSERT(self && stream->fd >= 0);
@ -108,7 +104,13 @@ static off_t rawsistream_seek(FAR struct lib_sistream_s *self, off_t offset,
(FAR struct lib_rawsistream_s *)self; (FAR struct lib_rawsistream_s *)self;
DEBUGASSERT(self); DEBUGASSERT(self);
return _NX_SEEK(stream->fd, offset, whence); offset = _NX_SEEK(stream->fd, offset, whence);
if (offset < 0)
{
offset = _NX_GETERRVAL(offset);
}
return offset;
} }
/**************************************************************************** /****************************************************************************

View file

@ -47,7 +47,7 @@ static void rawsostream_putc(FAR struct lib_sostream_s *self, int ch)
FAR struct lib_rawsostream_s *stream = FAR struct lib_rawsostream_s *stream =
(FAR struct lib_rawsostream_s *)self; (FAR struct lib_rawsostream_s *)self;
char buffer = ch; char buffer = ch;
int nwritten; ssize_t nwritten;
DEBUGASSERT(self && stream->fd >= 0); DEBUGASSERT(self && stream->fd >= 0);
@ -79,12 +79,12 @@ static void rawsostream_putc(FAR struct lib_sostream_s *self, int ch)
* Name: rawsostream_puts * Name: rawsostream_puts
****************************************************************************/ ****************************************************************************/
static int rawsostream_puts(FAR struct lib_sostream_s *self, static ssize_t rawsostream_puts(FAR struct lib_sostream_s *self,
FAR const void *buffer, int len) FAR const void *buffer, size_t len)
{ {
FAR struct lib_rawsostream_s *stream = FAR struct lib_rawsostream_s *stream =
(FAR struct lib_rawsostream_s *)self; (FAR struct lib_rawsostream_s *)self;
int nwritten; ssize_t nwritten;
DEBUGASSERT(self && stream->fd >= 0); DEBUGASSERT(self && stream->fd >= 0);
@ -125,7 +125,13 @@ static off_t rawsostream_seek(FAR struct lib_sostream_s *self, off_t offset,
(FAR struct lib_rawsostream_s *)self; (FAR struct lib_rawsostream_s *)self;
DEBUGASSERT(self); DEBUGASSERT(self);
return _NX_SEEK(stream->fd, offset, whence); offset = _NX_SEEK(stream->fd, offset, whence);
if (offset < 0)
{
offset = _NX_GETERRVAL(offset);
}
return offset;
} }
/**************************************************************************** /****************************************************************************

View file

@ -60,12 +60,12 @@ static int stdinstream_getc(FAR struct lib_instream_s *self)
* Name: stdinstream_gets * Name: stdinstream_gets
****************************************************************************/ ****************************************************************************/
static int stdinstream_gets(FAR struct lib_instream_s *self, static ssize_t stdinstream_gets(FAR struct lib_instream_s *self,
FAR void *buffer, int len) FAR void *buffer, size_t len)
{ {
FAR struct lib_stdinstream_s *stream = FAR struct lib_stdinstream_s *stream =
(FAR struct lib_stdinstream_s *)self; (FAR struct lib_stdinstream_s *)self;
int nread = 0; ssize_t nread = 0;
DEBUGASSERT(self); DEBUGASSERT(self);

View file

@ -71,12 +71,12 @@ static void stdoutstream_putc(FAR struct lib_outstream_s *self, int ch)
* Name: stdoutstream_puts * Name: stdoutstream_puts
****************************************************************************/ ****************************************************************************/
static int stdoutstream_puts(FAR struct lib_outstream_s *self, static ssize_t stdoutstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buffer, int len) FAR const void *buffer, size_t len)
{ {
FAR struct lib_stdoutstream_s *stream = FAR struct lib_stdoutstream_s *stream =
(FAR struct lib_stdoutstream_s *)self; (FAR struct lib_stdoutstream_s *)self;
int result; ssize_t result;
DEBUGASSERT(self && stream->handle); DEBUGASSERT(self && stream->handle);

View file

@ -59,12 +59,12 @@ static int stdsistream_getc(FAR struct lib_sistream_s *self)
* Name: stdsistream_gets * Name: stdsistream_gets
****************************************************************************/ ****************************************************************************/
static int stdsistream_gets(FAR struct lib_instream_s *self, static ssize_t stdsistream_gets(FAR struct lib_instream_s *self,
FAR void *buffer, int len) FAR void *buffer, size_t len)
{ {
FAR struct lib_stdsistream_s *stream = FAR struct lib_stdsistream_s *stream =
(FAR struct lib_stdsistream_s *)self; (FAR struct lib_stdsistream_s *)self;
int nread = 0; ssize_t nread = 0;
DEBUGASSERT(self); DEBUGASSERT(self);
@ -94,7 +94,13 @@ static off_t stdsistream_seek(FAR struct lib_sistream_s *self, off_t offset,
(FAR struct lib_stdsistream_s *)self; (FAR struct lib_stdsistream_s *)self;
DEBUGASSERT(self); DEBUGASSERT(self);
return fseek(stream->handle, offset, whence); offset = fseek(stream->handle, offset, whence);
if (offset < 0)
{
offset = _NX_GETERRVAL(offset);
}
return offset;
} }
/**************************************************************************** /****************************************************************************

View file

@ -70,12 +70,12 @@ static void stdsostream_putc(FAR struct lib_sostream_s *self, int ch)
* Name: stdsostream_puts * Name: stdsostream_puts
****************************************************************************/ ****************************************************************************/
static int stdsostream_puts(FAR struct lib_sostream_s *self, static ssize_t stdsostream_puts(FAR struct lib_sostream_s *self,
FAR const void *buffer, int len) FAR const void *buffer, size_t len)
{ {
FAR struct lib_stdsostream_s *stream = FAR struct lib_stdsostream_s *stream =
(FAR struct lib_stdsostream_s *)self; (FAR struct lib_stdsostream_s *)self;
int result; ssize_t result;
DEBUGASSERT(self && stream->handle); DEBUGASSERT(self && stream->handle);
@ -129,7 +129,13 @@ static off_t stdsostream_seek(FAR struct lib_sostream_s *self, off_t offset,
(FAR struct lib_stdsostream_s *)self; (FAR struct lib_stdsostream_s *)self;
DEBUGASSERT(stream != NULL && stream->handle != NULL); DEBUGASSERT(stream != NULL && stream->handle != NULL);
return fseek(stream->handle, offset, whence); offset = fseek(stream->handle, offset, whence);
if (offset < 0)
{
offset = _NX_GETERRVAL(offset);
}
return offset;
} }
/**************************************************************************** /****************************************************************************

View file

@ -102,15 +102,15 @@ static void syslograwstream_addchar(FAR struct lib_syslograwstream_s *stream,
* Name: syslograwstream_addstring * Name: syslograwstream_addstring
****************************************************************************/ ****************************************************************************/
static int static ssize_t
syslograwstream_addstring(FAR struct lib_syslograwstream_s *stream, syslograwstream_addstring(FAR struct lib_syslograwstream_s *stream,
FAR const char *buff, int len) FAR const char *buff, size_t len)
{ {
int ret = 0; ssize_t ret = 0;
do do
{ {
int remain = CONFIG_SYSLOG_BUFSIZE - stream->offset; size_t remain = CONFIG_SYSLOG_BUFSIZE - stream->offset;
remain = remain > len - ret ? len - ret : remain; remain = remain > len - ret ? len - ret : remain;
memcpy(stream->buffer + stream->offset, buff + ret, remain); memcpy(stream->buffer + stream->offset, buff + ret, remain);
stream->offset += remain; stream->offset += remain;
@ -183,8 +183,8 @@ static void syslograwstream_putc(FAR struct lib_outstream_s *self, int ch)
} }
} }
static int syslograwstream_puts(FAR struct lib_outstream_s *self, static ssize_t syslograwstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buff, int len) FAR const void *buff, size_t len)
{ {
FAR struct lib_syslograwstream_s *stream = (FAR void *)self; FAR struct lib_syslograwstream_s *stream = (FAR void *)self;
@ -202,7 +202,7 @@ static int syslograwstream_puts(FAR struct lib_outstream_s *self,
return syslograwstream_addstring(stream, buff, len); return syslograwstream_addstring(stream, buff, len);
#else #else
int ret; ssize_t ret;
/* Try writing until the write was successful or until an /* Try writing until the write was successful or until an
* irrecoverable error occurs. * irrecoverable error occurs.

View file

@ -49,8 +49,8 @@ static void syslogstream_putc(FAR struct lib_outstream_s *self, int ch)
stream->common.nput++; stream->common.nput++;
} }
static int syslogstream_puts(FAR struct lib_outstream_s *self, static ssize_t syslogstream_puts(FAR struct lib_outstream_s *self,
FAR const void *buff, int len) FAR const void *buff, size_t len)
{ {
FAR struct lib_syslogstream_s *stream = FAR struct lib_syslogstream_s *stream =
(FAR struct lib_syslogstream_s *)self; (FAR struct lib_syslogstream_s *)self;
@ -61,7 +61,7 @@ static int syslogstream_puts(FAR struct lib_outstream_s *self,
return 0; return 0;
} }
syslog(stream->priority, "%.*s", len, (FAR const char *)buff); syslog(stream->priority, "%.*s", (int)len, (FAR const char *)buff);
return len; return len;
} }

View file

@ -38,8 +38,8 @@ static int zeroinstream_getc(FAR struct lib_instream_s *self)
return 0; return 0;
} }
static int zeroinstream_gets(FAR struct lib_instream_s *self, static ssize_t zeroinstream_gets(FAR struct lib_instream_s *self,
FAR void *buffer, int len) FAR void *buffer, size_t len)
{ {
self->nget += len; self->nget += len;
memset(buffer, 0, len); memset(buffer, 0, len);