added QSE_TIO_IGNOREMBWCERR

This commit is contained in:
hyung-hwan 2011-09-11 20:48:21 +00:00
parent 00e15a42e9
commit e2affec43b
11 changed files with 113 additions and 68 deletions

View File

@ -237,43 +237,51 @@ static int handle_args (int argc, qse_char_t* argv[])
return 1; return 1;
} }
qse_char_t* load_script_file (const qse_char_t* file) qse_char_t* load_script_file (qse_sed_t* sed, const qse_char_t* file)
{ {
qse_cint_t c;
qse_str_t script; qse_str_t script;
QSE_FILE* fp; qse_sio_t* fp;
qse_xstr_t xstr; qse_xstr_t xstr;
qse_char_t buf[256];
fp = qse_fopen (file, QSE_T("r")); fp = qse_sio_open (
qse_sed_getmmgr(sed), 0, file,
QSE_SIO_READ | QSE_SIO_IGNOREMBWCERR);
if (fp == QSE_NULL) return QSE_NULL; if (fp == QSE_NULL) return QSE_NULL;
if (qse_str_init (&script, QSE_MMGR_GETDFL(), 1024) <= -1) if (qse_str_init (&script, QSE_MMGR_GETDFL(), 1024) <= -1)
{ {
qse_fclose (fp); qse_sio_close (fp);
qse_fprintf (QSE_STDERR, QSE_T("ERROR: cannot load %s\n"), file); qse_fprintf (QSE_STDERR, QSE_T("ERROR: cannot load %s\n"), file);
return QSE_NULL; return QSE_NULL;
} }
while ((c = qse_fgetc (fp)) != QSE_CHAR_EOF) while (1)
{ {
if (qse_str_ccat (&script, c) == (qse_size_t)-1) qse_ssize_t n;
n = qse_sio_gets (fp, buf, QSE_COUNTOF(buf));
if (n == 0) break;
if (n <= -1)
{ {
qse_fprintf (QSE_STDERR, QSE_T("ERROR: cannot read %s\n"), file);
qse_str_fini (&script); qse_str_fini (&script);
qse_fclose (fp); qse_sio_close (fp);
return QSE_NULL;
}
if (qse_str_ncat (&script, buf, n) == (qse_size_t)-1)
{
qse_fprintf (QSE_STDERR, QSE_T("ERROR: out of memory\n"));
qse_str_fini (&script);
qse_sio_close (fp);
return QSE_NULL; return QSE_NULL;
} }
}
if (qse_ferror(fp))
{
qse_fprintf (QSE_STDERR, QSE_T("ERROR: cannot read %s\n"), file);
qse_str_fini (&script);
qse_fclose (fp);
return QSE_NULL;
} }
qse_str_yield (&script, &xstr, 0); qse_str_yield (&script, &xstr, 0);
qse_str_fini (&script); qse_str_fini (&script);
qse_fclose (fp); qse_sio_close (fp);
return xstr.ptr; return xstr.ptr;
} }
@ -314,7 +322,7 @@ int sed_main (int argc, qse_char_t* argv[])
{ {
QSE_ASSERT (g_script == QSE_NULL); QSE_ASSERT (g_script == QSE_NULL);
g_script = load_script_file (g_script_file); g_script = load_script_file (sed, g_script_file);
if (g_script == QSE_NULL) goto oops; if (g_script == QSE_NULL) goto oops;
} }

View File

@ -1,5 +1,5 @@
/* /*
* $Id: fio.h 556 2011-08-31 15:43:46Z hyunghwan.chung $ * $Id: fio.h 565 2011-09-11 02:48:21Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -33,10 +33,11 @@
enum qse_fio_open_flag_t enum qse_fio_open_flag_t
{ {
/* request qse_char_io based IO */ /* request qse_char_io based IO */
QSE_FIO_TEXT = (1 << 0), QSE_FIO_TEXT = (1 << 0),
QSE_FIO_IGNOREMBWCERR = (1 << 1),
/* treat the file name pointer as a handle pointer */ /* treat the file name pointer as a handle pointer */
QSE_FIO_HANDLE = (1 << 1), QSE_FIO_HANDLE = (1 << 3),
QSE_FIO_READ = (1 << 8), QSE_FIO_READ = (1 << 8),
QSE_FIO_WRITE = (1 << 9), QSE_FIO_WRITE = (1 << 9),

View File

@ -1,5 +1,5 @@
/* /*
* $Id: pio.h 556 2011-08-31 15:43:46Z hyunghwan.chung $ * $Id: pio.h 565 2011-09-11 02:48:21Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -38,15 +38,16 @@
enum qse_pio_oflag_t enum qse_pio_oflag_t
{ {
/** enable text based I/O. */ /** enable text based I/O. */
QSE_PIO_TEXT = (1 << 0), QSE_PIO_TEXT = (1 << 0),
QSE_PIO_IGNOREMBWCERR = (1 << 1),
/** execute the command via a system shell /** execute the command via a system shell
* (/bin/sh on *nix, cmd.exe on windows) */ * (/bin/sh on *nix, cmd.exe on windows) */
QSE_PIO_SHELL = (1 << 1), QSE_PIO_SHELL = (1 << 3),
/** indicate that the command to qse_pio_open() is a multi-byte string. /** indicate that the command to qse_pio_open() is a multi-byte string.
* it is useful if #QSE_CHAR_IS_WCHAR is defined. */ * it is useful if #QSE_CHAR_IS_WCHAR is defined. */
QSE_PIO_MBSCMD = (1 << 2), QSE_PIO_MBSCMD = (1 << 4),
/** write to stdin of a child process */ /** write to stdin of a child process */
QSE_PIO_WRITEIN = (1 << 8), QSE_PIO_WRITEIN = (1 << 8),

View File

@ -1,5 +1,5 @@
/* /*
* $Id: sio.h 556 2011-08-31 15:43:46Z hyunghwan.chung $ * $Id: sio.h 565 2011-09-11 02:48:21Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -32,19 +32,20 @@
enum qse_sio_open_flag_t enum qse_sio_open_flag_t
{ {
QSE_SIO_HANDLE = QSE_FIO_HANDLE, QSE_SIO_HANDLE = QSE_FIO_HANDLE,
QSE_SIO_IGNOREMBWCERR = QSE_FIO_IGNOREMBWCERR,
QSE_SIO_READ = QSE_FIO_READ, QSE_SIO_READ = QSE_FIO_READ,
QSE_SIO_WRITE = QSE_FIO_WRITE, QSE_SIO_WRITE = QSE_FIO_WRITE,
QSE_SIO_APPEND = QSE_FIO_APPEND, QSE_SIO_APPEND = QSE_FIO_APPEND,
QSE_SIO_CREATE = QSE_FIO_CREATE, QSE_SIO_CREATE = QSE_FIO_CREATE,
QSE_SIO_TRUNCATE = QSE_FIO_TRUNCATE, QSE_SIO_TRUNCATE = QSE_FIO_TRUNCATE,
QSE_SIO_EXCLUSIVE = QSE_FIO_EXCLUSIVE, QSE_SIO_EXCLUSIVE = QSE_FIO_EXCLUSIVE,
QSE_SIO_SYNC = QSE_FIO_SYNC, QSE_SIO_SYNC = QSE_FIO_SYNC,
QSE_SIO_NOSHRD = QSE_FIO_NOSHRD, QSE_SIO_NOSHRD = QSE_FIO_NOSHRD,
QSE_SIO_NOSHWR = QSE_FIO_NOSHWR QSE_SIO_NOSHWR = QSE_FIO_NOSHWR
}; };
typedef qse_fio_off_t qse_sio_pos_t; typedef qse_fio_off_t qse_sio_pos_t;

View File

@ -1,5 +1,5 @@
/* /*
* $Id: tio.h 556 2011-08-31 15:43:46Z hyunghwan.chung $ * $Id: tio.h 565 2011-09-11 02:48:21Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -60,12 +60,18 @@ enum
QSE_TIO_MAX_OUTBUF_LEN = 4096 QSE_TIO_MAX_OUTBUF_LEN = 4096
}; };
enum enum qse_tio_cmd_t
{ {
QSE_TIO_IO_OPEN, QSE_TIO_IO_OPEN,
QSE_TIO_IO_CLOSE, QSE_TIO_IO_CLOSE,
QSE_TIO_IO_DATA QSE_TIO_IO_DATA
}; };
typedef enum qse_tio_cmd_t qse_tio_cmd_t;
enum qse_tio_flag_t
{
QSE_TIO_IGNOREMBWCERR = (1 << 0)
};
#define QSE_TIO_ERRNUM(tio) ((const qse_tio_errnum_t)(tio)->errnum) #define QSE_TIO_ERRNUM(tio) ((const qse_tio_errnum_t)(tio)->errnum)
@ -75,10 +81,10 @@ typedef struct qse_tio_t qse_tio_t;
* The qse_tio_io_t types define a text I/O handler. * The qse_tio_io_t types define a text I/O handler.
*/ */
typedef qse_ssize_t (*qse_tio_io_t) ( typedef qse_ssize_t (*qse_tio_io_t) (
int cmd, qse_tio_cmd_t cmd,
void* arg, void* arg,
void* data, void* data,
qse_size_t size qse_size_t size
); );
/** /**
@ -90,6 +96,7 @@ struct qse_tio_t
{ {
QSE_DEFINE_COMMON_FIELDS (tio) QSE_DEFINE_COMMON_FIELDS (tio)
qse_tio_errnum_t errnum; qse_tio_errnum_t errnum;
int flags;
/* io functions */ /* io functions */
qse_tio_io_t input_func; qse_tio_io_t input_func;
@ -126,7 +133,8 @@ QSE_DEFINE_COMMON_FUNCTIONS (tio)
*/ */
qse_tio_t* qse_tio_open ( qse_tio_t* qse_tio_open (
qse_mmgr_t* mmgr, qse_mmgr_t* mmgr,
qse_size_t xtnsize qse_size_t xtnsize,
int flags
); );
/** /**
@ -142,7 +150,8 @@ int qse_tio_close (
*/ */
int qse_tio_init ( int qse_tio_init (
qse_tio_t* tio, qse_tio_t* tio,
qse_mmgr_t* mmgr qse_mmgr_t* mmgr,
int flags
); );
/** /**

View File

@ -1,5 +1,5 @@
/* /*
* $Id: fio.c 556 2011-08-31 15:43:46Z hyunghwan.chung $ * $Id: fio.c 565 2011-09-11 02:48:21Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -45,8 +45,8 @@
QSE_IMPLEMENT_COMMON_FUNCTIONS (fio) QSE_IMPLEMENT_COMMON_FUNCTIONS (fio)
static qse_ssize_t fio_input (int cmd, void* arg, void* buf, qse_size_t size); static qse_ssize_t fio_input (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size);
static qse_ssize_t fio_output (int cmd, void* arg, void* buf, qse_size_t size); static qse_ssize_t fio_output (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size);
qse_fio_t* qse_fio_open ( qse_fio_t* qse_fio_open (
qse_mmgr_t* mmgr, qse_size_t ext, qse_mmgr_t* mmgr, qse_size_t ext,
@ -365,8 +365,11 @@ int qse_fio_init (
if (flags & QSE_FIO_TEXT) if (flags & QSE_FIO_TEXT)
{ {
qse_tio_t* tio; qse_tio_t* tio;
int opt = 0;
tio = qse_tio_open (fio->mmgr, 0); if (fio->flags & QSE_FIO_IGNOREMBWCERR) opt |= QSE_TIO_IGNOREMBWCERR;
tio = qse_tio_open (fio->mmgr, 0, opt);
if (tio == QSE_NULL) QSE_THROW_ERR (tio); if (tio == QSE_NULL) QSE_THROW_ERR (tio);
if (qse_tio_attachin (tio, fio_input, fio) <= -1 || if (qse_tio_attachin (tio, fio_input, fio) <= -1 ||
@ -826,7 +829,7 @@ int qse_fio_unlock (qse_fio_t* fio, qse_fio_lck_t* lck, int flags)
return -1; return -1;
} }
static qse_ssize_t fio_input (int cmd, void* arg, void* buf, qse_size_t size) static qse_ssize_t fio_input (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size)
{ {
qse_fio_t* fio = (qse_fio_t*)arg; qse_fio_t* fio = (qse_fio_t*)arg;
QSE_ASSERT (fio != QSE_NULL); QSE_ASSERT (fio != QSE_NULL);
@ -838,7 +841,7 @@ static qse_ssize_t fio_input (int cmd, void* arg, void* buf, qse_size_t size)
return 0; return 0;
} }
static qse_ssize_t fio_output (int cmd, void* arg, void* buf, qse_size_t size) static qse_ssize_t fio_output (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size)
{ {
qse_fio_t* fio = (qse_fio_t*)arg; qse_fio_t* fio = (qse_fio_t*)arg;
QSE_ASSERT (fio != QSE_NULL); QSE_ASSERT (fio != QSE_NULL);

View File

@ -1,5 +1,5 @@
/* /*
* $Id: pio.c 556 2011-08-31 15:43:46Z hyunghwan.chung $ * $Id: pio.c 565 2011-09-11 02:48:21Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -40,8 +40,8 @@
QSE_IMPLEMENT_COMMON_FUNCTIONS (pio) QSE_IMPLEMENT_COMMON_FUNCTIONS (pio)
static qse_ssize_t pio_input (int cmd, void* arg, void* buf, qse_size_t size); static qse_ssize_t pio_input (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size);
static qse_ssize_t pio_output (int cmd, void* arg, void* buf, qse_size_t size); static qse_ssize_t pio_output (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size);
qse_pio_t* qse_pio_open ( qse_pio_t* qse_pio_open (
qse_mmgr_t* mmgr, qse_size_t ext, qse_mmgr_t* mmgr, qse_size_t ext,
@ -999,11 +999,15 @@ int qse_pio_init (
if (oflags & QSE_PIO_TEXT) if (oflags & QSE_PIO_TEXT)
{ {
int topt = 0;
if (oflags & QSE_PIO_IGNOREMBWCERR) topt |= QSE_TIO_IGNOREMBWCERR;
for (i = 0; i < QSE_COUNTOF(tio); i++) for (i = 0; i < QSE_COUNTOF(tio); i++)
{ {
int r; int r;
tio[i] = qse_tio_open (pio->mmgr, 0); tio[i] = qse_tio_open (pio->mmgr, 0, topt);
if (tio[i] == QSE_NULL) if (tio[i] == QSE_NULL)
{ {
pio->errnum = QSE_PIO_ENOMEM; pio->errnum = QSE_PIO_ENOMEM;
@ -1565,7 +1569,7 @@ int qse_pio_kill (qse_pio_t* pio)
#endif #endif
} }
static qse_ssize_t pio_input (int cmd, void* arg, void* buf, qse_size_t size) static qse_ssize_t pio_input (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size)
{ {
qse_pio_pin_t* pin = (qse_pio_pin_t*)arg; qse_pio_pin_t* pin = (qse_pio_pin_t*)arg;
QSE_ASSERT (pin != QSE_NULL); QSE_ASSERT (pin != QSE_NULL);
@ -1580,7 +1584,7 @@ static qse_ssize_t pio_input (int cmd, void* arg, void* buf, qse_size_t size)
return 0; return 0;
} }
static qse_ssize_t pio_output (int cmd, void* arg, void* buf, qse_size_t size) static qse_ssize_t pio_output (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size)
{ {
qse_pio_pin_t* pin = (qse_pio_pin_t*)arg; qse_pio_pin_t* pin = (qse_pio_pin_t*)arg;
QSE_ASSERT (pin != QSE_NULL); QSE_ASSERT (pin != QSE_NULL);

View File

@ -1,5 +1,5 @@
/* /*
* $Id: sio.c 556 2011-08-31 15:43:46Z hyunghwan.chung $ * $Id: sio.c 565 2011-09-11 02:48:21Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -21,8 +21,8 @@
#include <qse/cmn/sio.h> #include <qse/cmn/sio.h>
#include "mem.h" #include "mem.h"
static qse_ssize_t __sio_input (int cmd, void* arg, void* buf, qse_size_t size); static qse_ssize_t __sio_input (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size);
static qse_ssize_t __sio_output (int cmd, void* arg, void* buf, qse_size_t size); static qse_ssize_t __sio_output (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size);
#if defined(_WIN32) #if defined(_WIN32)
# include <windows.h> # include <windows.h>
@ -56,6 +56,7 @@ static qse_sio_t __sio_in =
{ {
QSE_NULL, QSE_NULL,
0, 0,
0,
__sio_input, __sio_input,
__sio_output, __sio_output,
@ -97,6 +98,7 @@ static qse_sio_t __sio_out =
{ {
QSE_NULL, QSE_NULL,
0, 0,
0,
__sio_input, __sio_input,
__sio_output, __sio_output,
@ -138,6 +140,7 @@ static qse_sio_t __sio_err =
{ {
QSE_NULL, QSE_NULL,
0, 0,
0,
__sio_input, __sio_input,
__sio_output, __sio_output,
@ -195,6 +198,7 @@ int qse_sio_init (
qse_sio_t* sio, qse_mmgr_t* mmgr, const qse_char_t* file, int flags) qse_sio_t* sio, qse_mmgr_t* mmgr, const qse_char_t* file, int flags)
{ {
int mode; int mode;
int topt = 0;
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL(); if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
@ -206,7 +210,9 @@ int qse_sio_init (
if (qse_fio_init (&sio->fio, mmgr, file, flags, mode) <= -1) return -1; if (qse_fio_init (&sio->fio, mmgr, file, flags, mode) <= -1) return -1;
if (qse_tio_init(&sio->tio, mmgr) <= -1) if (flags & QSE_SIO_IGNOREMBWCERR) topt |= QSE_TIO_IGNOREMBWCERR;
if (qse_tio_init(&sio->tio, mmgr, topt) <= -1)
{ {
qse_fio_fini (&sio->fio); qse_fio_fini (&sio->fio);
return -1; return -1;
@ -329,7 +335,7 @@ int qse_sio_seek (qse_sio_t* sio, qse_sio_seek_t pos)
} }
#endif #endif
static qse_ssize_t __sio_input (int cmd, void* arg, void* buf, qse_size_t size) static qse_ssize_t __sio_input (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size)
{ {
qse_sio_t* sio = (qse_sio_t*)arg; qse_sio_t* sio = (qse_sio_t*)arg;
@ -358,7 +364,7 @@ static qse_ssize_t __sio_input (int cmd, void* arg, void* buf, qse_size_t size)
return 0; return 0;
} }
static qse_ssize_t __sio_output (int cmd, void* arg, void* buf, qse_size_t size) static qse_ssize_t __sio_output (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size)
{ {
qse_sio_t* sio = (qse_sio_t*)arg; qse_sio_t* sio = (qse_sio_t*)arg;

View File

@ -1,5 +1,5 @@
/* /*
* $Id: tio-get.c 556 2011-08-31 15:43:46Z hyunghwan.chung $ * $Id: tio-get.c 565 2011-09-11 02:48:21Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -84,6 +84,12 @@ static qse_ssize_t tio_getc (qse_tio_t* tio, qse_char_t* c)
if (n == 0) if (n == 0)
{ {
/* illegal sequence */ /* illegal sequence */
if (tio->flags & QSE_TIO_IGNOREMBWCERR)
{
*c = tio->inbuf[tio->inbuf_curp++];
return 1;
}
tio->inbuf_curp++; /* skip one byte */ tio->inbuf_curp++; /* skip one byte */
tio->errnum = QSE_TIO_EILSEQ; tio->errnum = QSE_TIO_EILSEQ;
return -1; return -1;

View File

@ -1,5 +1,5 @@
/* /*
* $Id: tio-put.c 559 2011-09-04 16:21:54Z hyunghwan.chung $ * $Id: tio-put.c 565 2011-09-11 02:48:21Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -51,6 +51,12 @@ static qse_ssize_t tio_putc (qse_tio_t* tio, qse_char_t c, int* flush_needed)
n = qse_wcrtomb (c, mc, QSE_COUNTOF(mc), &tio->mbstate.out); n = qse_wcrtomb (c, mc, QSE_COUNTOF(mc), &tio->mbstate.out);
if (n == 0) if (n == 0)
{ {
if (tio->flags & QSE_TIO_IGNOREMBWCERR)
{
/* return 1 as if c has been written successfully */
return 1;
}
tio->errnum = QSE_TIO_EILCHR; tio->errnum = QSE_TIO_EILCHR;
return -1; return -1;
} }

View File

@ -1,5 +1,5 @@
/* /*
* $Id: tio.c 559 2011-09-04 16:21:54Z hyunghwan.chung $ * $Id: tio.c 565 2011-09-11 02:48:21Z hyunghwan.chung $
* *
Copyright 2006-2011 Chung, Hyung-Hwan. Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE. This file is part of QSE.
@ -23,7 +23,7 @@
QSE_IMPLEMENT_COMMON_FUNCTIONS (tio) QSE_IMPLEMENT_COMMON_FUNCTIONS (tio)
qse_tio_t* qse_tio_open (qse_mmgr_t* mmgr, qse_size_t xtnsize) qse_tio_t* qse_tio_open (qse_mmgr_t* mmgr, qse_size_t xtnsize, int flags)
{ {
qse_tio_t* tio; qse_tio_t* tio;
@ -40,7 +40,7 @@ qse_tio_t* qse_tio_open (qse_mmgr_t* mmgr, qse_size_t xtnsize)
tio = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_tio_t) + xtnsize); tio = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_tio_t) + xtnsize);
if (tio == QSE_NULL) return QSE_NULL; if (tio == QSE_NULL) return QSE_NULL;
if (qse_tio_init (tio, mmgr) <= -1) if (qse_tio_init (tio, mmgr, flags) <= -1)
{ {
QSE_MMGR_FREE (mmgr, tio); QSE_MMGR_FREE (mmgr, tio);
return QSE_NULL; return QSE_NULL;
@ -56,13 +56,14 @@ int qse_tio_close (qse_tio_t* tio)
return n; return n;
} }
int qse_tio_init (qse_tio_t* tio, qse_mmgr_t* mmgr) int qse_tio_init (qse_tio_t* tio, qse_mmgr_t* mmgr, int flags)
{ {
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL(); if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
QSE_MEMSET (tio, 0, QSE_SIZEOF(*tio)); QSE_MEMSET (tio, 0, QSE_SIZEOF(*tio));
tio->mmgr = mmgr; tio->mmgr = mmgr;
tio->flags = flags;
/* /*
tio->input_func = QSE_NULL; tio->input_func = QSE_NULL;
@ -77,7 +78,6 @@ int qse_tio_init (qse_tio_t* tio, qse_mmgr_t* mmgr)
*/ */
tio->errnum = QSE_TIO_ENOERR; tio->errnum = QSE_TIO_ENOERR;
return 0; return 0;
} }