diff --git a/include/nuttx/streams.h b/include/nuttx/streams.h index e07d60e1c24..1f523eb10ce 100644 --- a/include/nuttx/streams.h +++ b/include/nuttx/streams.h @@ -74,19 +74,19 @@ /* These are the generic representations of a streams used by the NuttX */ struct lib_instream_s; -typedef CODE int (*lib_getc_t)(FAR struct lib_instream_s *self); -typedef CODE int (*lib_gets_t)(FAR struct lib_instream_s *self, - FAR void *buf, int len); +typedef CODE int (*lib_getc_t)(FAR struct lib_instream_s *self); +typedef CODE ssize_t (*lib_gets_t)(FAR struct lib_instream_s *self, + FAR void *buf, size_t len); struct lib_outstream_s; -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, - FAR const void *buf, int len); -typedef CODE int (*lib_flush_t)(FAR struct lib_outstream_s *self); +typedef CODE void (*lib_putc_t)(FAR struct lib_outstream_s *self, int ch); +typedef CODE ssize_t (*lib_puts_t)(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len); +typedef CODE int (*lib_flush_t)(FAR struct lib_outstream_s *self); 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 */ lib_getc_t getc; /* Get one character 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 { - int nput; /* Total number of characters put. Written + off_t nput; /* Total number of characters put. Written * by put method, readable by user */ lib_putc_t putc; /* Put one character to the outstream */ lib_puts_t puts; /* Writes the string to the outstream */ @@ -104,23 +104,24 @@ struct lib_outstream_s /* Seek-able streams */ struct lib_sistream_s; -typedef CODE int (*lib_sigetc_t)(FAR struct lib_sistream_s *self); -typedef CODE int (*lib_sigets_t)(FAR struct lib_sistream_s *self, - FAR void *buf, int len); -typedef CODE off_t (*lib_siseek_t)(FAR struct lib_sistream_s *self, - off_t offset, int whence); +typedef CODE int (*lib_sigetc_t)(FAR struct lib_sistream_s *self); +typedef CODE ssize_t (*lib_sigets_t)(FAR struct lib_sistream_s *self, + FAR void *buf, size_t len); +typedef CODE off_t (*lib_siseek_t)(FAR struct lib_sistream_s *self, + off_t offset, int whence); struct lib_sostream_s; -typedef CODE void (*lib_soputc_t)(FAR struct lib_sostream_s *self, int ch); -typedef CODE int (*lib_soputs_t)(FAR struct lib_sostream_s *self, - FAR const void *buf, int len); -typedef CODE int (*lib_soflush_t)(FAR struct lib_sostream_s *self); -typedef CODE off_t (*lib_soseek_t)(FAR struct lib_sostream_s *self, - off_t offset, int whence); +typedef CODE void (*lib_soputc_t)(FAR struct lib_sostream_s *self, + int ch); +typedef CODE ssize_t (*lib_soputs_t)(FAR struct lib_sostream_s *self, + FAR const void *buf, size_t len); +typedef CODE int (*lib_soflush_t)(FAR struct lib_sostream_s *self); +typedef CODE off_t (*lib_soseek_t)(FAR struct lib_sostream_s *self, + off_t offset, int whence); 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 */ lib_sigetc_t getc; /* Get one character 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 { - int nput; /* Total number of characters put. Written + off_t nput; /* Total number of characters put. Written * by put method, readable by user */ lib_soputc_t putc; /* Put one character 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; 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 */ }; @@ -165,7 +166,7 @@ struct lib_memsostream_s { struct lib_sostream_s common; 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 */ }; @@ -231,7 +232,7 @@ struct lib_bufferedoutstream_s { struct lib_outstream_s common; FAR struct lib_outstream_s *backend; - int pending; + size_t pending; char buffer[CONFIG_STREAM_OUT_BUFFER_SIZE]; }; @@ -239,7 +240,7 @@ struct lib_hexdumpstream_s { struct lib_outstream_s common; FAR struct lib_outstream_s *backend; - int pending; + size_t pending; char buffer[CONFIG_STREAM_HEXDUMP_BUFFER_SIZE + 1]; }; @@ -247,9 +248,9 @@ struct lib_base64outstream_s { struct lib_outstream_s common; FAR struct lib_outstream_s *backend; - int pending; + size_t pending; unsigned char bytes[3]; - int nbytes; + size_t nbytes; char buffer[CONFIG_STREAM_BASE64_BUFFER_SIZE + 1]; }; @@ -269,7 +270,7 @@ struct lib_syslograwstream_s struct lib_outstream_s common; #ifdef CONFIG_SYSLOG_BUFFER char buffer[CONFIG_SYSLOG_BUFSIZE]; - int offset; + off_t offset; #endif int last_ch; }; @@ -282,7 +283,7 @@ struct lib_lzfoutstream_s struct lib_outstream_s common; FAR struct lib_outstream_s *backend; lzf_state_t state; - size_t offset; + off_t offset; char in[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, - FAR const char *bufstart, int buflen); + FAR const char *bufstart, size_t buflen); 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, - FAR const char *bufstart, int buflen); + FAR const char *bufstart, size_t buflen); 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 diff --git a/libs/libc/obstack/lib_obstack_vprintf.c b/libs/libc/obstack/lib_obstack_vprintf.c index bedc3051d1b..9dec3c673a5 100644 --- a/libs/libc/obstack/lib_obstack_vprintf.c +++ b/libs/libc/obstack/lib_obstack_vprintf.c @@ -42,8 +42,8 @@ struct obstack_stream * Private Functions ****************************************************************************/ -static int obstack_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t obstack_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { FAR struct obstack_stream *stream = (FAR struct obstack_stream *)self; diff --git a/libs/libc/stream/lib_base64outstream.c b/libs/libc/stream/lib_base64outstream.c index a273195024d..27c4461e5f4 100644 --- a/libs/libc/stream/lib_base64outstream.c +++ b/libs/libc/stream/lib_base64outstream.c @@ -82,18 +82,18 @@ static void base64stream_putc(FAR struct lib_outstream_s *self, int ch) * Name: base64stream_puts ****************************************************************************/ -static int base64stream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t base64stream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { FAR struct lib_base64outstream_s *stream = (FAR void *)self; FAR const unsigned char *input = (FAR const unsigned char *)buf; - int remaining = len; + size_t remaining = len; if (stream->nbytes) { /* Flush the first three bytes */ - int n = 3 - stream->nbytes; + size_t n = 3 - stream->nbytes; if (n > remaining) { n = remaining; @@ -118,8 +118,9 @@ static int base64stream_puts(FAR struct lib_outstream_s *self, while (remaining >= 3) { - int outlen; - int n = (STREAM_BASE64_BUFFER_SIZE - stream->pending) / 4 * 3; + size_t outlen; + size_t n = (STREAM_BASE64_BUFFER_SIZE - stream->pending) / 4 * 3; + if (n > remaining) { n = remaining / 3 * 3; diff --git a/libs/libc/stream/lib_blkoutstream.c b/libs/libc/stream/lib_blkoutstream.c index 6824eddd2ca..c9132b445da 100644 --- a/libs/libc/stream/lib_blkoutstream.c +++ b/libs/libc/stream/lib_blkoutstream.c @@ -65,8 +65,8 @@ static int blkoutstream_flush(FAR struct lib_outstream_s *self) * Name: blkoutstream_puts ****************************************************************************/ -static int blkoutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t blkoutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { FAR struct lib_blkoutstream_s *stream = (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 const unsigned char *ptr = buf; size_t remain = len; - int ret; + ssize_t ret; while (remain > 0) { - size_t sector = self->nput / sectorsize; - size_t offset = self->nput % sectorsize; + off_t sector = self->nput / sectorsize; + off_t offset = self->nput % sectorsize; if (offset > 0) { diff --git a/libs/libc/stream/lib_bufferedoutstream.c b/libs/libc/stream/lib_bufferedoutstream.c index ae9c9f5443e..25b54908415 100644 --- a/libs/libc/stream/lib_bufferedoutstream.c +++ b/libs/libc/stream/lib_bufferedoutstream.c @@ -63,12 +63,12 @@ static int bufferedoutstream_flush(FAR struct lib_outstream_s *self) * Name: bufferedoutstream_puts ****************************************************************************/ -static int bufferedoutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t bufferedoutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { FAR struct lib_bufferedoutstream_s *stream = (FAR struct lib_bufferedoutstream_s *)self; - int ret = len; + size_t ret = len; if (stream->pending + len <= CONFIG_STREAM_OUT_BUFFER_SIZE) { diff --git a/libs/libc/stream/lib_fileoutstream.c b/libs/libc/stream/lib_fileoutstream.c index d3ffe6a300b..21ffe4e460a 100644 --- a/libs/libc/stream/lib_fileoutstream.c +++ b/libs/libc/stream/lib_fileoutstream.c @@ -42,12 +42,12 @@ * Name: rawoutstream_puts ****************************************************************************/ -static int fileoutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t fileoutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { FAR struct lib_fileoutstream_s *stream = (FAR struct lib_fileoutstream_s *)self; - int nwritten; + ssize_t nwritten; do { diff --git a/libs/libc/stream/lib_hexdumpstream.c b/libs/libc/stream/lib_hexdumpstream.c index 3e42c91f880..4e7231d67c2 100644 --- a/libs/libc/stream/lib_hexdumpstream.c +++ b/libs/libc/stream/lib_hexdumpstream.c @@ -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) { 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; 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 ****************************************************************************/ -static int hexdumpstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t hexdumpstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { FAR struct lib_hexdumpstream_s *stream = (FAR void *)self; const unsigned char *p = buf; - int outlen = CONFIG_STREAM_HEXDUMP_BUFFER_SIZE; - int line = outlen / 2; - int remain = len; - int ret; + size_t outlen = CONFIG_STREAM_HEXDUMP_BUFFER_SIZE; + size_t line = outlen / 2; + size_t remain = len; + ssize_t ret; while (remain > 0) { diff --git a/libs/libc/stream/lib_lowoutstream.c b/libs/libc/stream/lib_lowoutstream.c index 4a778c75b43..82d67734f6a 100644 --- a/libs/libc/stream/lib_lowoutstream.c +++ b/libs/libc/stream/lib_lowoutstream.c @@ -40,8 +40,8 @@ ****************************************************************************/ static void lowoutstream_putc(FAR struct lib_outstream_s *self, int ch); -static int lowoutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len); +static ssize_t lowoutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len); /**************************************************************************** * Public Data @@ -79,8 +79,8 @@ static void lowoutstream_putc(FAR struct lib_outstream_s *self, int ch) * Name: lowoutstream_puts ****************************************************************************/ -static int lowoutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t lowoutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { DEBUGASSERT(self); diff --git a/libs/libc/stream/lib_lzfcompress.c b/libs/libc/stream/lib_lzfcompress.c index a26bfa1b278..ad64dc8e4ea 100644 --- a/libs/libc/stream/lib_lzfcompress.c +++ b/libs/libc/stream/lib_lzfcompress.c @@ -64,8 +64,8 @@ static int lzfoutstream_flush(FAR struct lib_outstream_s *self) * Name: lzfoutstream_puts ****************************************************************************/ -static int lzfoutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t lzfoutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { FAR struct lib_lzfoutstream_s *stream = (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 copyin; size_t outlen; - int ret; + ssize_t ret; while (total > 0) { diff --git a/libs/libc/stream/lib_meminstream.c b/libs/libc/stream/lib_meminstream.c index c4b05767ed0..6a9f6c4968a 100644 --- a/libs/libc/stream/lib_meminstream.c +++ b/libs/libc/stream/lib_meminstream.c @@ -25,6 +25,7 @@ ****************************************************************************/ #include +#include #include #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 *)self; - int ret; + int ret = -EINVAL; DEBUGASSERT(self); @@ -52,10 +53,6 @@ static int meminstream_getc(FAR struct lib_instream_s *self) ret = stream->buffer[self->nget]; self->nget++; } - else - { - ret = EOF; - } return ret; } @@ -64,12 +61,12 @@ static int meminstream_getc(FAR struct lib_instream_s *self) * Name: meminstream_gets ****************************************************************************/ -static int meminstream_gets(FAR struct lib_instream_s *self, - FAR void *buffer, int len) +static ssize_t meminstream_gets(FAR struct lib_instream_s *self, + FAR void *buffer, size_t len) { FAR struct lib_meminstream_s *stream = (FAR struct lib_meminstream_s *)self; - int ret; + ssize_t ret = -EINVAL; DEBUGASSERT(self); @@ -82,10 +79,6 @@ static int meminstream_gets(FAR struct lib_instream_s *self, self->nget += ret; memcpy(buffer, stream->buffer, ret); } - else - { - ret = EOF; - } 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, - FAR const char *bufstart, int buflen) + FAR const char *bufstart, size_t buflen) { stream->common.getc = meminstream_getc; stream->common.gets = meminstream_gets; diff --git a/libs/libc/stream/lib_memoutstream.c b/libs/libc/stream/lib_memoutstream.c index 17b3bf2945d..2db0f6bd087 100644 --- a/libs/libc/stream/lib_memoutstream.c +++ b/libs/libc/stream/lib_memoutstream.c @@ -36,12 +36,12 @@ * Name: memoutstream_puts ****************************************************************************/ -static int memoutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t memoutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { FAR struct lib_memoutstream_s *stream = (FAR struct lib_memoutstream_s *)self; - int ncopy; + size_t ncopy; 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, - FAR char *bufstart, int buflen) + FAR char *bufstart, size_t buflen) { outstream->common.putc = memoutstream_putc; outstream->common.puts = memoutstream_puts; diff --git a/libs/libc/stream/lib_memsistream.c b/libs/libc/stream/lib_memsistream.c index 08e62352caa..0b063133002 100644 --- a/libs/libc/stream/lib_memsistream.c +++ b/libs/libc/stream/lib_memsistream.c @@ -25,6 +25,7 @@ ****************************************************************************/ #include +#include #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 *)self; - int ret; + int ret = -EINVAL; DEBUGASSERT(self); @@ -52,10 +53,6 @@ static int memsistream_getc(FAR struct lib_sistream_s *self) stream->offset++; self->nget++; } - else - { - ret = EOF; - } return ret; } @@ -64,12 +61,12 @@ static int memsistream_getc(FAR struct lib_sistream_s *self) * Name: meminstream_gets ****************************************************************************/ -static int memsistream_gets(FAR struct lib_instream_s *self, - FAR void *buffer, int len) +static ssize_t memsistream_gets(FAR struct lib_instream_s *self, + FAR void *buffer, size_t len) { FAR struct lib_memsistream_s *stream = (FAR struct lib_memsistream_s *)self; - int ret; + ssize_t ret = -EINVAL; DEBUGASSERT(self); @@ -82,10 +79,6 @@ static int memsistream_gets(FAR struct lib_instream_s *self, self->nget += ret; memcpy(buffer, stream->buffer, ret); } - else - { - ret = EOF; - } return ret; } @@ -106,7 +99,7 @@ static off_t memsistream_seek(FAR struct lib_sistream_s *self, off_t offset, switch (whence) { case SEEK_CUR: - newpos = (off_t)stream->offset + offset; + newpos = stream->offset + offset; break; case SEEK_SET: @@ -114,23 +107,23 @@ static off_t memsistream_seek(FAR struct lib_sistream_s *self, off_t offset, break; case SEEK_END: - newpos = (off_t)stream->buflen + offset; + newpos = stream->buflen + offset; break; default: - return (off_t)ERROR; + return -EINVAL; } /* 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 */ - stream->offset = (size_t)newpos; + stream->offset = 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, - FAR const char *bufstart, int buflen) + FAR const char *bufstart, size_t buflen) { instream->common.getc = memsistream_getc; instream->common.gets = memsistream_gets; diff --git a/libs/libc/stream/lib_memsostream.c b/libs/libc/stream/lib_memsostream.c index 2187c5e42cc..fb2eddb7eb0 100644 --- a/libs/libc/stream/lib_memsostream.c +++ b/libs/libc/stream/lib_memsostream.c @@ -25,6 +25,7 @@ ****************************************************************************/ #include +#include #include "libc.h" @@ -61,10 +62,10 @@ static void memsostream_putc(FAR struct lib_sostream_s *self, int ch) * Name: memoutstream_puts ****************************************************************************/ -static int memsostream_puts(FAR struct lib_sostream_s *self, - FAR const void *buf, int len) +static ssize_t memsostream_puts(FAR struct lib_sostream_s *self, + FAR const void *buf, size_t len) { - int ncopy; + ssize_t ncopy; FAR struct lib_memsostream_s *stream = (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) { case SEEK_CUR: - newpos = (off_t)stream->offset + offset; + newpos = stream->offset + offset; break; case SEEK_SET: @@ -107,23 +108,23 @@ static off_t memsostream_seek(FAR struct lib_sostream_s *self, off_t offset, break; case SEEK_END: - newpos = (off_t)stream->buflen + offset; + newpos = stream->buflen + offset; break; default: - return (off_t)ERROR; + return -EINVAL; } /* 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 */ - stream->offset = (size_t)newpos; + stream->offset = 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, - FAR char *bufstart, int buflen) + FAR char *bufstart, size_t buflen) { outstream->common.putc = memsostream_putc; outstream->common.puts = memsostream_puts; diff --git a/libs/libc/stream/lib_mtdoutstream.c b/libs/libc/stream/lib_mtdoutstream.c index 274b09acb85..8ea4da95c82 100644 --- a/libs/libc/stream/lib_mtdoutstream.c +++ b/libs/libc/stream/lib_mtdoutstream.c @@ -77,8 +77,8 @@ static int mtdoutstream_flush(FAR struct lib_outstream_s *self) * Name: mtdoutstream_puts ****************************************************************************/ -static int mtdoutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t mtdoutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { FAR struct lib_mtdoutstream_s *stream = (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 nblkpererase = erasesize / stream->geo.blocksize; size_t remain = len; - int ret; + ssize_t ret; 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) { - size_t sblock = self->nput / erasesize; - size_t offset = self->nput % erasesize; + off_t sblock = self->nput / erasesize; + off_t offset = self->nput % erasesize; if (offset > 0) { diff --git a/libs/libc/stream/lib_nullinstream.c b/libs/libc/stream/lib_nullinstream.c index effdd1e6bb7..bc0d460ad0e 100644 --- a/libs/libc/stream/lib_nullinstream.c +++ b/libs/libc/stream/lib_nullinstream.c @@ -36,15 +36,15 @@ static int nullinstream_getc(FAR struct lib_instream_s *self) { UNUSED(self); - return EOF; + return -EINVAL; } -static int nullinstream_gets(FAR struct lib_instream_s *self, - FAR void *buffer, int len) +static ssize_t nullinstream_gets(FAR struct lib_instream_s *self, + FAR void *buffer, size_t len) { UNUSED(buffer); UNUSED(len); - return EOF; + return -EINVAL; } /**************************************************************************** diff --git a/libs/libc/stream/lib_nulloutstream.c b/libs/libc/stream/lib_nulloutstream.c index c3f57399eec..c6c439a41af 100644 --- a/libs/libc/stream/lib_nulloutstream.c +++ b/libs/libc/stream/lib_nulloutstream.c @@ -41,8 +41,8 @@ static void nulloutstream_putc(FAR struct lib_outstream_s *self, int ch) self->nput++; } -static int nulloutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buffer, int len) +static ssize_t nulloutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buffer, size_t len) { UNUSED(buffer); UNUSED(len); diff --git a/libs/libc/stream/lib_rawinstream.c b/libs/libc/stream/lib_rawinstream.c index 02d4e0181d9..620c55a69b7 100644 --- a/libs/libc/stream/lib_rawinstream.c +++ b/libs/libc/stream/lib_rawinstream.c @@ -59,26 +59,22 @@ static int rawinstream_getc(FAR struct lib_instream_s *self) self->nget++; return ch; } - - /* Return EOF on any failure to read from the incoming byte stream. The - * only expected error is EINTR meaning that the read was interrupted - * by a signal. A Zero return value would indicate an end-of-file - * condition. - */ - - return EOF; + else + { + return _NX_GETERRVAL(nread); + } } /**************************************************************************** * Name: rawinstream_getc ****************************************************************************/ -static int rawinstream_gets(FAR struct lib_instream_s *self, - FAR void *buffer, int len) +static ssize_t rawinstream_gets(FAR struct lib_instream_s *self, + FAR void *buffer, size_t len) { FAR struct lib_rawinstream_s *stream = (FAR struct lib_rawinstream_s *)self; - int nread; + ssize_t nread; DEBUGASSERT(self && stream->fd >= 0); diff --git a/libs/libc/stream/lib_rawoutstream.c b/libs/libc/stream/lib_rawoutstream.c index 5eb798caf7d..98b7cf895d4 100644 --- a/libs/libc/stream/lib_rawoutstream.c +++ b/libs/libc/stream/lib_rawoutstream.c @@ -42,12 +42,12 @@ * Name: rawoutstream_puts ****************************************************************************/ -static int rawoutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buf, int len) +static ssize_t rawoutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buf, size_t len) { FAR struct lib_rawoutstream_s *stream = (FAR struct lib_rawoutstream_s *)self; - int nwritten = 0; + ssize_t nwritten = 0; do { diff --git a/libs/libc/stream/lib_rawsistream.c b/libs/libc/stream/lib_rawsistream.c index 72d77550c4b..af20a335d06 100644 --- a/libs/libc/stream/lib_rawsistream.c +++ b/libs/libc/stream/lib_rawsistream.c @@ -59,26 +59,22 @@ static int rawsistream_getc(FAR struct lib_sistream_s *self) self->nget++; return ch; } - - /* Return EOF on any failure to read from the incoming byte stream. The - * only expected error is EINTR meaning that the read was interrupted - * by a signal. A Zero return value would indicated an end-of-file - * confition. - */ - - return EOF; + else + { + return _NX_GETERRVAL(nread); + } } /**************************************************************************** * Name: rawsistream_gets ****************************************************************************/ -static int rawsistream_gets(FAR struct lib_instream_s *self, - FAR void *buffer, int len) +static ssize_t rawsistream_gets(FAR struct lib_instream_s *self, + FAR void *buffer, size_t len) { FAR struct lib_rawsistream_s *stream = (FAR struct lib_rawsistream_s *)self; - int nread; + ssize_t nread; 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; 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; } /**************************************************************************** diff --git a/libs/libc/stream/lib_rawsostream.c b/libs/libc/stream/lib_rawsostream.c index a81efa2a379..f741e856458 100644 --- a/libs/libc/stream/lib_rawsostream.c +++ b/libs/libc/stream/lib_rawsostream.c @@ -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 *)self; char buffer = ch; - int nwritten; + ssize_t nwritten; DEBUGASSERT(self && stream->fd >= 0); @@ -79,12 +79,12 @@ static void rawsostream_putc(FAR struct lib_sostream_s *self, int ch) * Name: rawsostream_puts ****************************************************************************/ -static int rawsostream_puts(FAR struct lib_sostream_s *self, - FAR const void *buffer, int len) +static ssize_t rawsostream_puts(FAR struct lib_sostream_s *self, + FAR const void *buffer, size_t len) { FAR struct lib_rawsostream_s *stream = (FAR struct lib_rawsostream_s *)self; - int nwritten; + ssize_t nwritten; 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; 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; } /**************************************************************************** diff --git a/libs/libc/stream/lib_stdinstream.c b/libs/libc/stream/lib_stdinstream.c index ae7094ec2bf..1fb0bf456f2 100644 --- a/libs/libc/stream/lib_stdinstream.c +++ b/libs/libc/stream/lib_stdinstream.c @@ -60,12 +60,12 @@ static int stdinstream_getc(FAR struct lib_instream_s *self) * Name: stdinstream_gets ****************************************************************************/ -static int stdinstream_gets(FAR struct lib_instream_s *self, - FAR void *buffer, int len) +static ssize_t stdinstream_gets(FAR struct lib_instream_s *self, + FAR void *buffer, size_t len) { FAR struct lib_stdinstream_s *stream = (FAR struct lib_stdinstream_s *)self; - int nread = 0; + ssize_t nread = 0; DEBUGASSERT(self); diff --git a/libs/libc/stream/lib_stdoutstream.c b/libs/libc/stream/lib_stdoutstream.c index 711aeb01959..8bb19c2446a 100644 --- a/libs/libc/stream/lib_stdoutstream.c +++ b/libs/libc/stream/lib_stdoutstream.c @@ -71,12 +71,12 @@ static void stdoutstream_putc(FAR struct lib_outstream_s *self, int ch) * Name: stdoutstream_puts ****************************************************************************/ -static int stdoutstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buffer, int len) +static ssize_t stdoutstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buffer, size_t len) { FAR struct lib_stdoutstream_s *stream = (FAR struct lib_stdoutstream_s *)self; - int result; + ssize_t result; DEBUGASSERT(self && stream->handle); diff --git a/libs/libc/stream/lib_stdsistream.c b/libs/libc/stream/lib_stdsistream.c index a86dab9e430..6915114868d 100644 --- a/libs/libc/stream/lib_stdsistream.c +++ b/libs/libc/stream/lib_stdsistream.c @@ -59,12 +59,12 @@ static int stdsistream_getc(FAR struct lib_sistream_s *self) * Name: stdsistream_gets ****************************************************************************/ -static int stdsistream_gets(FAR struct lib_instream_s *self, - FAR void *buffer, int len) +static ssize_t stdsistream_gets(FAR struct lib_instream_s *self, + FAR void *buffer, size_t len) { FAR struct lib_stdsistream_s *stream = (FAR struct lib_stdsistream_s *)self; - int nread = 0; + ssize_t nread = 0; 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; DEBUGASSERT(self); - return fseek(stream->handle, offset, whence); + offset = fseek(stream->handle, offset, whence); + if (offset < 0) + { + offset = _NX_GETERRVAL(offset); + } + + return offset; } /**************************************************************************** diff --git a/libs/libc/stream/lib_stdsostream.c b/libs/libc/stream/lib_stdsostream.c index c3a23314702..6343b0b6181 100644 --- a/libs/libc/stream/lib_stdsostream.c +++ b/libs/libc/stream/lib_stdsostream.c @@ -70,12 +70,12 @@ static void stdsostream_putc(FAR struct lib_sostream_s *self, int ch) * Name: stdsostream_puts ****************************************************************************/ -static int stdsostream_puts(FAR struct lib_sostream_s *self, - FAR const void *buffer, int len) +static ssize_t stdsostream_puts(FAR struct lib_sostream_s *self, + FAR const void *buffer, size_t len) { FAR struct lib_stdsostream_s *stream = (FAR struct lib_stdsostream_s *)self; - int result; + ssize_t result; 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; 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; } /**************************************************************************** diff --git a/libs/libc/stream/lib_syslograwstream.c b/libs/libc/stream/lib_syslograwstream.c index 23354004cdf..427b365e1a5 100644 --- a/libs/libc/stream/lib_syslograwstream.c +++ b/libs/libc/stream/lib_syslograwstream.c @@ -102,15 +102,15 @@ static void syslograwstream_addchar(FAR struct lib_syslograwstream_s *stream, * Name: syslograwstream_addstring ****************************************************************************/ -static int +static ssize_t 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 { - int remain = CONFIG_SYSLOG_BUFSIZE - stream->offset; + size_t remain = CONFIG_SYSLOG_BUFSIZE - stream->offset; remain = remain > len - ret ? len - ret : remain; memcpy(stream->buffer + stream->offset, buff + ret, 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, - FAR const void *buff, int len) +static ssize_t syslograwstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buff, size_t len) { 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); #else - int ret; + ssize_t ret; /* Try writing until the write was successful or until an * irrecoverable error occurs. diff --git a/libs/libc/stream/lib_syslogstream.c b/libs/libc/stream/lib_syslogstream.c index 495a7ba99cf..ff31365304d 100644 --- a/libs/libc/stream/lib_syslogstream.c +++ b/libs/libc/stream/lib_syslogstream.c @@ -49,8 +49,8 @@ static void syslogstream_putc(FAR struct lib_outstream_s *self, int ch) stream->common.nput++; } -static int syslogstream_puts(FAR struct lib_outstream_s *self, - FAR const void *buff, int len) +static ssize_t syslogstream_puts(FAR struct lib_outstream_s *self, + FAR const void *buff, size_t len) { FAR struct lib_syslogstream_s *stream = (FAR struct lib_syslogstream_s *)self; @@ -61,7 +61,7 @@ static int syslogstream_puts(FAR struct lib_outstream_s *self, return 0; } - syslog(stream->priority, "%.*s", len, (FAR const char *)buff); + syslog(stream->priority, "%.*s", (int)len, (FAR const char *)buff); return len; } diff --git a/libs/libc/stream/lib_zeroinstream.c b/libs/libc/stream/lib_zeroinstream.c index 051e15c2229..da1928bac11 100644 --- a/libs/libc/stream/lib_zeroinstream.c +++ b/libs/libc/stream/lib_zeroinstream.c @@ -38,8 +38,8 @@ static int zeroinstream_getc(FAR struct lib_instream_s *self) return 0; } -static int zeroinstream_gets(FAR struct lib_instream_s *self, - FAR void *buffer, int len) +static ssize_t zeroinstream_gets(FAR struct lib_instream_s *self, + FAR void *buffer, size_t len) { self->nget += len; memset(buffer, 0, len);