core: stream: formatting tweaks
This commit is contained in:
+146
-48
@@ -6,16 +6,16 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define READ_MAGIC(p) (*(uint64_t *)p)
|
#define READ_MAGIC(p) (*(uint64_t *)p)
|
||||||
#define IS_BSTR(p) (READ_MAGIC(p) == FX_BSTR_MAGIC)
|
#define IS_BSTR(p) (READ_MAGIC(p) == FX_BSTR_MAGIC)
|
||||||
|
|
||||||
#define FX_TYPE_STDIO_STREAM (fx_stdio_stream_get_type())
|
#define FX_TYPE_STDIO_STREAM (fx_stdio_stream_get_type())
|
||||||
|
|
||||||
#define STREAM_DISPATCH_VIRTUAL(func, stream, ...) \
|
#define STREAM_DISPATCH_VIRTUAL(func, stream, ...) \
|
||||||
do { \
|
do { \
|
||||||
struct stream_data _stream; \
|
struct stream_data _stream; \
|
||||||
enum fx_status status = stream_get_data(stream, &_stream); \
|
enum fx_status status = stream_get_data(stream, &_stream); \
|
||||||
if (!FX_OK(status)) { \
|
if (!FX_OK(status)) { \
|
||||||
return status; \
|
return status; \
|
||||||
} \
|
} \
|
||||||
return func(&_stream, __VA_ARGS__); \
|
return func(&_stream, __VA_ARGS__); \
|
||||||
@@ -23,8 +23,8 @@
|
|||||||
#define STREAM_DISPATCH_VIRTUAL_0(func, stream) \
|
#define STREAM_DISPATCH_VIRTUAL_0(func, stream) \
|
||||||
do { \
|
do { \
|
||||||
struct stream_data _stream; \
|
struct stream_data _stream; \
|
||||||
enum fx_status status = stream_get_data(stream, &_stream); \
|
enum fx_status status = stream_get_data(stream, &_stream); \
|
||||||
if (!FX_OK(status)) { \
|
if (!FX_OK(status)) { \
|
||||||
return status; \
|
return status; \
|
||||||
} \
|
} \
|
||||||
return func(&_stream); \
|
return func(&_stream); \
|
||||||
@@ -84,12 +84,17 @@ static enum fx_status stdio_write(fx_stream *, const void *, size_t, size_t *);
|
|||||||
static enum fx_status stdio_seek(fx_stream *, long long, fx_stream_seek_origin);
|
static enum fx_status stdio_seek(fx_stream *, long long, fx_stream_seek_origin);
|
||||||
static enum fx_status stdio_tell(const fx_stream *, size_t *);
|
static enum fx_status stdio_tell(const fx_stream *, size_t *);
|
||||||
|
|
||||||
static enum fx_status stream_get_data(const fx_stream *strp, struct stream_data *out)
|
static enum fx_status stream_get_data(
|
||||||
|
const fx_stream *strp,
|
||||||
|
struct stream_data *out)
|
||||||
{
|
{
|
||||||
out->s_obj = (fx_stream *)strp;
|
out->s_obj = (fx_stream *)strp;
|
||||||
return fx_object_get_data(
|
return fx_object_get_data(
|
||||||
strp, FX_TYPE_STREAM, (void **)&out->s_private,
|
strp,
|
||||||
(void **)&out->s_cfg, (void **)&out->s_ops);
|
FX_TYPE_STREAM,
|
||||||
|
(void **)&out->s_private,
|
||||||
|
(void **)&out->s_cfg,
|
||||||
|
(void **)&out->s_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int current_indent(struct stream_data *stream)
|
static int current_indent(struct stream_data *stream)
|
||||||
@@ -117,7 +122,9 @@ static size_t stream_cursor(const struct stream_data *stream)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stream_seek(
|
static enum fx_status stream_seek(
|
||||||
struct stream_data *stream, long long offset, fx_stream_seek_origin origin)
|
struct stream_data *stream,
|
||||||
|
long long offset,
|
||||||
|
fx_stream_seek_origin origin)
|
||||||
{
|
{
|
||||||
if (!stream || !stream->s_ops || !stream->s_ops->s_seek) {
|
if (!stream || !stream->s_ops || !stream->s_ops->s_seek) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -236,7 +243,8 @@ static enum fx_status __write_char(struct stream_data *stream, fx_wchar c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
status = stream->s_ops->s_write(stream->s_obj, (unsigned char *)s, len, &w);
|
status = stream->s_ops
|
||||||
|
->s_write(stream->s_obj, (unsigned char *)s, len, &w);
|
||||||
|
|
||||||
if (!FX_OK(status)) {
|
if (!FX_OK(status)) {
|
||||||
return status;
|
return status;
|
||||||
@@ -289,7 +297,10 @@ static enum fx_status stream_write_char(struct stream_data *stream, fx_wchar c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stream_read_bytes(
|
static enum fx_status stream_read_bytes(
|
||||||
struct stream_data *stream, void *buf, size_t count, size_t *nr_read)
|
struct stream_data *stream,
|
||||||
|
void *buf,
|
||||||
|
size_t count,
|
||||||
|
size_t *nr_read)
|
||||||
{
|
{
|
||||||
if (!(stream->s_cfg->s_mode & FX_STREAM_READ)) {
|
if (!(stream->s_cfg->s_mode & FX_STREAM_READ)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -304,7 +315,10 @@ static enum fx_status stream_read_bytes(
|
|||||||
return stream->s_ops->s_read(stream->s_obj, buf, count, nr_read);
|
return stream->s_ops->s_read(stream->s_obj, buf, count, nr_read);
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stream_read_line(struct stream_data *stream, char *s, size_t max)
|
static enum fx_status stream_read_line(
|
||||||
|
struct stream_data *stream,
|
||||||
|
char *s,
|
||||||
|
size_t max)
|
||||||
{
|
{
|
||||||
if (!(stream->s_cfg->s_mode & FX_STREAM_READ)) {
|
if (!(stream->s_cfg->s_mode & FX_STREAM_READ)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -337,7 +351,8 @@ static enum fx_status stream_read_line(struct stream_data *stream, char *s, size
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stream_read_line_s(
|
static enum fx_status stream_read_line_s(
|
||||||
struct stream_data *src, struct stream_data *dest)
|
struct stream_data *src,
|
||||||
|
struct stream_data *dest)
|
||||||
{
|
{
|
||||||
if (!(src->s_cfg->s_mode & FX_STREAM_READ)) {
|
if (!(src->s_cfg->s_mode & FX_STREAM_READ)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -374,7 +389,8 @@ static enum fx_status stream_read_line_s(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stream_read_line_to_bstr(
|
static enum fx_status stream_read_line_to_bstr(
|
||||||
struct stream_data *src, struct fx_bstr *dest)
|
struct stream_data *src,
|
||||||
|
struct fx_bstr *dest)
|
||||||
{
|
{
|
||||||
if (!(src->s_cfg->s_mode & FX_STREAM_READ)) {
|
if (!(src->s_cfg->s_mode & FX_STREAM_READ)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -407,7 +423,10 @@ static enum fx_status stream_read_line_to_bstr(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stream_write_bytes(
|
static enum fx_status stream_write_bytes(
|
||||||
struct stream_data *stream, const void *buf, size_t count, size_t *nr_written)
|
struct stream_data *stream,
|
||||||
|
const void *buf,
|
||||||
|
size_t count,
|
||||||
|
size_t *nr_written)
|
||||||
{
|
{
|
||||||
if (!(stream->s_cfg->s_mode & FX_STREAM_WRITE)) {
|
if (!(stream->s_cfg->s_mode & FX_STREAM_WRITE)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -423,7 +442,10 @@ static enum fx_status stream_write_bytes(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stream_read_all_bytes(
|
static enum fx_status stream_read_all_bytes(
|
||||||
struct stream_data *stream, void *p, size_t max, size_t *out_nr_read)
|
struct stream_data *stream,
|
||||||
|
void *p,
|
||||||
|
size_t max,
|
||||||
|
size_t *out_nr_read)
|
||||||
{
|
{
|
||||||
if (!(stream->s_cfg->s_mode & FX_STREAM_READ)) {
|
if (!(stream->s_cfg->s_mode & FX_STREAM_READ)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -452,8 +474,10 @@ static enum fx_status stream_read_all_bytes(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stream_read_all_bytes_s(
|
static enum fx_status stream_read_all_bytes_s(
|
||||||
struct stream_data *src, struct stream_data *dest,
|
struct stream_data *src,
|
||||||
struct fx_stream_buffer_p *buffer, size_t *out_nr_read)
|
struct stream_data *dest,
|
||||||
|
struct fx_stream_buffer_p *buffer,
|
||||||
|
size_t *out_nr_read)
|
||||||
{
|
{
|
||||||
if (!(src->s_cfg->s_mode & FX_STREAM_READ)) {
|
if (!(src->s_cfg->s_mode & FX_STREAM_READ)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -482,7 +506,10 @@ static enum fx_status stream_read_all_bytes_s(
|
|||||||
while (1) {
|
while (1) {
|
||||||
size_t r = 0, w = 0;
|
size_t r = 0, w = 0;
|
||||||
status = stream_read_bytes(
|
status = stream_read_bytes(
|
||||||
src, buffer->p_buf, buffer->p_buf_len, &r);
|
src,
|
||||||
|
buffer->p_buf,
|
||||||
|
buffer->p_buf_len,
|
||||||
|
&r);
|
||||||
if (status != FX_SUCCESS) {
|
if (status != FX_SUCCESS) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -507,8 +534,10 @@ static enum fx_status stream_read_all_bytes_s(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stream_read_all_bytes_to_bstr_s(
|
static enum fx_status stream_read_all_bytes_to_bstr_s(
|
||||||
struct stream_data *src, struct fx_bstr *dest,
|
struct stream_data *src,
|
||||||
struct fx_stream_buffer_p *buffer, size_t *out_nr_read)
|
struct fx_bstr *dest,
|
||||||
|
struct fx_stream_buffer_p *buffer,
|
||||||
|
size_t *out_nr_read)
|
||||||
{
|
{
|
||||||
if (!(src->s_cfg->s_mode & FX_STREAM_READ)) {
|
if (!(src->s_cfg->s_mode & FX_STREAM_READ)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -533,7 +562,10 @@ static enum fx_status stream_read_all_bytes_to_bstr_s(
|
|||||||
while (1) {
|
while (1) {
|
||||||
size_t r = 0, w = 0;
|
size_t r = 0, w = 0;
|
||||||
status = stream_read_bytes(
|
status = stream_read_bytes(
|
||||||
src, buffer->p_buf, buffer->p_buf_len, &r);
|
src,
|
||||||
|
buffer->p_buf,
|
||||||
|
buffer->p_buf_len,
|
||||||
|
&r);
|
||||||
if (status != FX_SUCCESS) {
|
if (status != FX_SUCCESS) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -557,8 +589,10 @@ static enum fx_status stream_read_all_bytes_to_bstr_s(
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stream_write_string(
|
static enum fx_status stream_write_cstr(
|
||||||
struct stream_data *stream, const char *s, size_t *nr_written)
|
struct stream_data *stream,
|
||||||
|
const char *s,
|
||||||
|
size_t *nr_written)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
enum fx_status status = FX_SUCCESS;
|
enum fx_status status = FX_SUCCESS;
|
||||||
@@ -610,7 +644,8 @@ static enum fx_status stream_push_indent(struct stream_data *stream, int indent)
|
|||||||
stream->s_private->s_istack_ptr = 0;
|
stream->s_private->s_istack_ptr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stream->s_private->s_istack_ptr + 1 >= stream->s_private->s_istack_size) {
|
if (stream->s_private->s_istack_ptr + 1
|
||||||
|
>= stream->s_private->s_istack_size) {
|
||||||
int *buf = realloc(
|
int *buf = realloc(
|
||||||
stream->s_private->s_istack,
|
stream->s_private->s_istack,
|
||||||
(stream->s_private->s_istack_size + 4) * sizeof(int));
|
(stream->s_private->s_istack_size + 4) * sizeof(int));
|
||||||
@@ -735,20 +770,31 @@ enum fx_status fx_stream_reserve(fx_stream *stream, size_t len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
FX_CLASS_DISPATCH_VIRTUAL(
|
FX_CLASS_DISPATCH_VIRTUAL(
|
||||||
fx_stream, FX_TYPE_STREAM, FX_ERR_NOT_SUPPORTED, s_reserve, stream,
|
fx_stream,
|
||||||
|
FX_TYPE_STREAM,
|
||||||
|
FX_ERR_NOT_SUPPORTED,
|
||||||
|
s_reserve,
|
||||||
|
stream,
|
||||||
len);
|
len);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum fx_status fx_stream_seek(
|
enum fx_status fx_stream_seek(
|
||||||
fx_stream *stream, long long offset, fx_stream_seek_origin origin)
|
fx_stream *stream,
|
||||||
|
long long offset,
|
||||||
|
fx_stream_seek_origin origin)
|
||||||
{
|
{
|
||||||
if (IS_BSTR(stream)) {
|
if (IS_BSTR(stream)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
FX_CLASS_DISPATCH_VIRTUAL(
|
FX_CLASS_DISPATCH_VIRTUAL(
|
||||||
fx_stream, FX_TYPE_STREAM, FX_ERR_NOT_SUPPORTED, s_seek, stream,
|
fx_stream,
|
||||||
offset, origin);
|
FX_TYPE_STREAM,
|
||||||
|
FX_ERR_NOT_SUPPORTED,
|
||||||
|
s_seek,
|
||||||
|
stream,
|
||||||
|
offset,
|
||||||
|
origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t fx_stream_cursor(const fx_stream *stream)
|
size_t fx_stream_cursor(const fx_stream *stream)
|
||||||
@@ -788,7 +834,10 @@ enum fx_status fx_stream_read_char(fx_stream *strp, int *c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum fx_status fx_stream_read_bytes(
|
enum fx_status fx_stream_read_bytes(
|
||||||
fx_stream *strp, void *buf, size_t count, size_t *nr_read)
|
fx_stream *strp,
|
||||||
|
void *buf,
|
||||||
|
size_t count,
|
||||||
|
size_t *nr_read)
|
||||||
{
|
{
|
||||||
if (IS_BSTR(strp)) {
|
if (IS_BSTR(strp)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -833,17 +882,28 @@ enum fx_status fx_stream_read_line_s(fx_stream *src, fx_stream *dest)
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum fx_status fx_stream_read_all_bytes(
|
enum fx_status fx_stream_read_all_bytes(
|
||||||
fx_stream *stream, void *p, size_t max, size_t *out_nr_read)
|
fx_stream *stream,
|
||||||
|
void *p,
|
||||||
|
size_t max,
|
||||||
|
size_t *out_nr_read)
|
||||||
{
|
{
|
||||||
if (IS_BSTR(stream)) {
|
if (IS_BSTR(stream)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
STREAM_DISPATCH_VIRTUAL(stream_read_all_bytes, stream, p, max, out_nr_read);
|
STREAM_DISPATCH_VIRTUAL(
|
||||||
|
stream_read_all_bytes,
|
||||||
|
stream,
|
||||||
|
p,
|
||||||
|
max,
|
||||||
|
out_nr_read);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum fx_status fx_stream_read_all_bytes_s(
|
enum fx_status fx_stream_read_all_bytes_s(
|
||||||
fx_stream *src, fx_stream *dest, fx_stream_buffer *buffer, size_t *out_nr_read)
|
fx_stream *src,
|
||||||
|
fx_stream *dest,
|
||||||
|
fx_stream_buffer *buffer,
|
||||||
|
size_t *out_nr_read)
|
||||||
{
|
{
|
||||||
if (IS_BSTR(src)) {
|
if (IS_BSTR(src)) {
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_ERR_NOT_SUPPORTED;
|
||||||
@@ -865,7 +925,10 @@ enum fx_status fx_stream_read_all_bytes_s(
|
|||||||
|
|
||||||
if (IS_BSTR(dest)) {
|
if (IS_BSTR(dest)) {
|
||||||
return stream_read_all_bytes_to_bstr_s(
|
return stream_read_all_bytes_to_bstr_s(
|
||||||
&src_p, (fx_bstr *)dest, buffer_p, out_nr_read);
|
&src_p,
|
||||||
|
(fx_bstr *)dest,
|
||||||
|
buffer_p,
|
||||||
|
out_nr_read);
|
||||||
}
|
}
|
||||||
|
|
||||||
status = stream_get_data(dest, &dest_p);
|
status = stream_get_data(dest, &dest_p);
|
||||||
@@ -885,34 +948,54 @@ enum fx_status fx_stream_write_char(fx_stream *stream, fx_wchar c)
|
|||||||
STREAM_DISPATCH_VIRTUAL(stream_write_char, stream, c);
|
STREAM_DISPATCH_VIRTUAL(stream_write_char, stream, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum fx_status fx_stream_write_string(
|
enum fx_status fx_stream_write_cstr(
|
||||||
fx_stream *stream, const char *s, size_t *nr_written)
|
fx_stream *stream,
|
||||||
|
const char *s,
|
||||||
|
size_t *nr_written)
|
||||||
{
|
{
|
||||||
if (IS_BSTR(stream)) {
|
if (IS_BSTR(stream)) {
|
||||||
return fx_bstr_write_cstr((fx_bstr *)stream, s, nr_written);
|
return fx_bstr_write_cstr((fx_bstr *)stream, s, nr_written);
|
||||||
}
|
}
|
||||||
|
|
||||||
STREAM_DISPATCH_VIRTUAL(stream_write_string, stream, s, nr_written);
|
STREAM_DISPATCH_VIRTUAL(stream_write_cstr, stream, s, nr_written);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum fx_status fx_stream_write_bytes(
|
enum fx_status fx_stream_write_bytes(
|
||||||
fx_stream *stream, const void *buf, size_t count, size_t *nr_written)
|
fx_stream *stream,
|
||||||
|
const void *buf,
|
||||||
|
size_t count,
|
||||||
|
size_t *nr_written)
|
||||||
{
|
{
|
||||||
if (IS_BSTR(stream)) {
|
if (IS_BSTR(stream)) {
|
||||||
return fx_bstr_write_chars((fx_bstr *)stream, buf, count, nr_written);
|
return fx_bstr_write_chars(
|
||||||
|
(fx_bstr *)stream,
|
||||||
|
buf,
|
||||||
|
count,
|
||||||
|
nr_written);
|
||||||
}
|
}
|
||||||
|
|
||||||
STREAM_DISPATCH_VIRTUAL(stream_write_bytes, stream, buf, count, nr_written);
|
STREAM_DISPATCH_VIRTUAL(
|
||||||
|
stream_write_bytes,
|
||||||
|
stream,
|
||||||
|
buf,
|
||||||
|
count,
|
||||||
|
nr_written);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum fx_status fx_stream_write_fmt(
|
enum fx_status fx_stream_write_fmt(
|
||||||
fx_stream *stream, size_t *nr_written, const char *format, ...)
|
fx_stream *stream,
|
||||||
|
size_t *nr_written,
|
||||||
|
const char *format,
|
||||||
|
...)
|
||||||
{
|
{
|
||||||
if (IS_BSTR(stream)) {
|
if (IS_BSTR(stream)) {
|
||||||
va_list arg;
|
va_list arg;
|
||||||
va_start(arg, format);
|
va_start(arg, format);
|
||||||
fx_status w = fx_bstr_write_vfmt(
|
fx_status w = fx_bstr_write_vfmt(
|
||||||
(fx_bstr *)stream, nr_written, format, arg);
|
(fx_bstr *)stream,
|
||||||
|
nr_written,
|
||||||
|
format,
|
||||||
|
arg);
|
||||||
va_end(arg);
|
va_end(arg);
|
||||||
|
|
||||||
return w;
|
return w;
|
||||||
@@ -934,10 +1017,17 @@ enum fx_status fx_stream_write_fmt(
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum fx_status fx_stream_write_vfmt(
|
enum fx_status fx_stream_write_vfmt(
|
||||||
fx_stream *stream, size_t *nr_written, const char *format, va_list arg)
|
fx_stream *stream,
|
||||||
|
size_t *nr_written,
|
||||||
|
const char *format,
|
||||||
|
va_list arg)
|
||||||
{
|
{
|
||||||
if (IS_BSTR(stream)) {
|
if (IS_BSTR(stream)) {
|
||||||
return fx_bstr_write_vfmt((fx_bstr *)stream, nr_written, format, arg);
|
return fx_bstr_write_vfmt(
|
||||||
|
(fx_bstr *)stream,
|
||||||
|
nr_written,
|
||||||
|
format,
|
||||||
|
arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct stream_data p;
|
struct stream_data p;
|
||||||
@@ -997,7 +1087,10 @@ static void stdio_stream_fini(fx_object *obj, void *priv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stdio_read(
|
static enum fx_status stdio_read(
|
||||||
fx_stream *stream, void *out, size_t max, size_t *nr_read)
|
fx_stream *stream,
|
||||||
|
void *out,
|
||||||
|
size_t max,
|
||||||
|
size_t *nr_read)
|
||||||
{
|
{
|
||||||
struct fx_stdio_stream_p *p
|
struct fx_stdio_stream_p *p
|
||||||
= fx_object_get_private(stream, FX_TYPE_STDIO_STREAM);
|
= fx_object_get_private(stream, FX_TYPE_STDIO_STREAM);
|
||||||
@@ -1015,7 +1108,10 @@ static enum fx_status stdio_read(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stdio_write(
|
static enum fx_status stdio_write(
|
||||||
fx_stream *stream, const void *data, size_t count, size_t *nr_written)
|
fx_stream *stream,
|
||||||
|
const void *data,
|
||||||
|
size_t count,
|
||||||
|
size_t *nr_written)
|
||||||
{
|
{
|
||||||
struct fx_stdio_stream_p *p
|
struct fx_stdio_stream_p *p
|
||||||
= fx_object_get_private(stream, FX_TYPE_STDIO_STREAM);
|
= fx_object_get_private(stream, FX_TYPE_STDIO_STREAM);
|
||||||
@@ -1032,7 +1128,9 @@ static enum fx_status stdio_write(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status stdio_seek(
|
static enum fx_status stdio_seek(
|
||||||
fx_stream *stream, long long offset, fx_stream_seek_origin origin)
|
fx_stream *stream,
|
||||||
|
long long offset,
|
||||||
|
fx_stream_seek_origin origin)
|
||||||
{
|
{
|
||||||
struct fx_stdio_stream_p *p
|
struct fx_stdio_stream_p *p
|
||||||
= fx_object_get_private(stream, FX_TYPE_STDIO_STREAM);
|
= fx_object_get_private(stream, FX_TYPE_STDIO_STREAM);
|
||||||
|
|||||||
Reference in New Issue
Block a user