started adding nwio
This commit is contained in:
@ -135,6 +135,8 @@ static int find_rio_in (
|
||||
return -1;
|
||||
}
|
||||
|
||||
QSE_MEMSET (p, 0, QSE_SIZEOF(*p));
|
||||
|
||||
p->name = QSE_AWK_STRDUP (run->awk, name);
|
||||
if (p->name == QSE_NULL)
|
||||
{
|
||||
@ -146,6 +148,7 @@ static int find_rio_in (
|
||||
p->type = (io_type | io_mask);
|
||||
p->mode = io_mode;
|
||||
p->rwcmode = QSE_AWK_RIO_CLOSE_FULL;
|
||||
/*
|
||||
p->handle = QSE_NULL;
|
||||
p->next = QSE_NULL;
|
||||
p->rwcstate = 0;
|
||||
@ -155,6 +158,7 @@ static int find_rio_in (
|
||||
p->in.len = 0;
|
||||
p->in.eof = 0;
|
||||
p->in.eos = 0;
|
||||
*/
|
||||
|
||||
qse_awk_rtx_seterrnum (run, QSE_AWK_ENOERR, QSE_NULL);
|
||||
|
||||
@ -718,6 +722,8 @@ int qse_awk_rtx_writeio_str (
|
||||
qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
QSE_MEMSET (p, 0, QSE_SIZEOF(*p));
|
||||
|
||||
p->name = QSE_AWK_STRDUP (run->awk, name);
|
||||
if (p->name == QSE_NULL)
|
||||
@ -730,12 +736,14 @@ int qse_awk_rtx_writeio_str (
|
||||
p->type = (io_type | io_mask);
|
||||
p->mode = io_mode;
|
||||
p->rwcmode = QSE_AWK_RIO_CLOSE_FULL;
|
||||
/*
|
||||
p->handle = QSE_NULL;
|
||||
p->next = QSE_NULL;
|
||||
p->rwcstate = 0;
|
||||
|
||||
p->out.eof = 0;
|
||||
p->out.eos = 0;
|
||||
*/
|
||||
|
||||
qse_awk_rtx_seterrnum (run, QSE_AWK_ENOERR, QSE_NULL);
|
||||
n = handler (run, QSE_AWK_RIO_OPEN, p, QSE_NULL, 0);
|
||||
|
@ -765,6 +765,20 @@ qse_bool_t qse_awk_rtx_isstop (qse_awk_rtx_t* rtx)
|
||||
return (rtx->exit_level == EXIT_ABORT || rtx->awk->stopall);
|
||||
}
|
||||
|
||||
void qse_awk_rtx_getrio (qse_awk_rtx_t* rtx, qse_awk_rio_t* rio)
|
||||
{
|
||||
rio->pipe = rtx->rio.handler[QSE_AWK_RIO_PIPE];
|
||||
rio->file = rtx->rio.handler[QSE_AWK_RIO_FILE];
|
||||
rio->console = rtx->rio.handler[QSE_AWK_RIO_CONSOLE];
|
||||
}
|
||||
|
||||
void qse_awk_rtx_setrio (qse_awk_rtx_t* rtx, const qse_awk_rio_t* rio)
|
||||
{
|
||||
rtx->rio.handler[QSE_AWK_RIO_PIPE] = rio->pipe;
|
||||
rtx->rio.handler[QSE_AWK_RIO_FILE] = rio->file;
|
||||
rtx->rio.handler[QSE_AWK_RIO_CONSOLE] = rio->console;
|
||||
}
|
||||
|
||||
qse_awk_rcb_t* qse_awk_rtx_poprcb (qse_awk_rtx_t* rtx)
|
||||
{
|
||||
qse_awk_rcb_t* top = rtx->rcb;
|
||||
@ -917,7 +931,7 @@ static int init_rtx (qse_awk_rtx_t* rtx, qse_awk_t* awk, qse_awk_rio_t* rio)
|
||||
}
|
||||
else rtx->pattern_range_state = QSE_NULL;
|
||||
|
||||
if (rio != QSE_NULL)
|
||||
if (rio)
|
||||
{
|
||||
rtx->rio.handler[QSE_AWK_RIO_PIPE] = rio->pipe;
|
||||
rtx->rio.handler[QSE_AWK_RIO_FILE] = rio->file;
|
||||
|
@ -91,11 +91,10 @@ typedef struct xtn_t
|
||||
} str;
|
||||
} u;
|
||||
} out;
|
||||
} s; /* script/source handling */
|
||||
|
||||
} s;
|
||||
} xtn_t;
|
||||
|
||||
|
||||
typedef struct rxtn_t
|
||||
{
|
||||
unsigned int seed;
|
||||
@ -124,11 +123,6 @@ typedef struct rxtn_t
|
||||
#endif
|
||||
} rxtn_t;
|
||||
|
||||
#if defined(QSE_CHAR_IS_WCHAR)
|
||||
static qse_cmgr_t* getcmgr_from_cmgrtab (
|
||||
qse_awk_rtx_t* rtx, const qse_char_t* ioname);
|
||||
#endif
|
||||
|
||||
static qse_flt_t custom_awk_pow (qse_awk_t* awk, qse_flt_t x, qse_flt_t y)
|
||||
{
|
||||
#if defined(HAVE_POWL) && (QSE_SIZEOF_LONG_DOUBLE > QSE_SIZEOF_DOUBLE)
|
||||
@ -798,6 +792,7 @@ int qse_awk_parsestd (
|
||||
}
|
||||
|
||||
/*** RTX_OPENSTD ***/
|
||||
|
||||
static qse_ssize_t awk_rio_pipe (
|
||||
qse_awk_rtx_t* rtx, qse_awk_rio_cmd_t cmd, qse_awk_rio_arg_t* riod,
|
||||
qse_char_t* data, qse_size_t size)
|
||||
@ -811,7 +806,7 @@ static qse_ssize_t awk_rio_pipe (
|
||||
|
||||
if (riod->mode == QSE_AWK_RIO_PIPE_READ)
|
||||
{
|
||||
/* TODO: should we specify ERRTOOUT? */
|
||||
/* TODO: should ERRTOOUT be unset? */
|
||||
flags = QSE_PIO_READOUT |
|
||||
QSE_PIO_ERRTOOUT;
|
||||
}
|
||||
@ -825,7 +820,12 @@ static qse_ssize_t awk_rio_pipe (
|
||||
QSE_PIO_ERRTOOUT |
|
||||
QSE_PIO_WRITEIN;
|
||||
}
|
||||
else return -1; /* TODO: any way to set the error number? */
|
||||
else
|
||||
{
|
||||
/* this must not happen */
|
||||
qse_awk_rtx_seterrnum (rtx, QSE_AWK_EINTERN, QSE_NULL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
handle = qse_pio_open (
|
||||
rtx->awk->mmgr,
|
||||
@ -838,7 +838,7 @@ static qse_ssize_t awk_rio_pipe (
|
||||
|
||||
#if defined(QSE_CHAR_IS_WCHAR)
|
||||
{
|
||||
qse_cmgr_t* cmgr = getcmgr_from_cmgrtab (rtx, riod->name);
|
||||
qse_cmgr_t* cmgr = qse_awk_rtx_getcmgrstd (rtx, riod->name);
|
||||
if (cmgr)
|
||||
{
|
||||
qse_pio_setcmgr (handle, QSE_PIO_IN, cmgr);
|
||||
@ -951,7 +951,7 @@ static qse_ssize_t awk_rio_file (
|
||||
|
||||
#if defined(QSE_CHAR_IS_WCHAR)
|
||||
{
|
||||
qse_cmgr_t* cmgr = getcmgr_from_cmgrtab (rtx, riod->name);
|
||||
qse_cmgr_t* cmgr = qse_awk_rtx_getcmgrstd (rtx, riod->name);
|
||||
if (cmgr) qse_sio_setcmgr (handle, cmgr);
|
||||
}
|
||||
#endif
|
||||
@ -1587,7 +1587,7 @@ static int fnc_time (qse_awk_rtx_t* rtx, const qse_cstr_t* fnm)
|
||||
}
|
||||
|
||||
#if defined(QSE_CHAR_IS_WCHAR)
|
||||
static qse_cmgr_t* getcmgr_from_cmgrtab (
|
||||
qse_cmgr_t* qse_awk_rtx_getcmgrstd (
|
||||
qse_awk_rtx_t* rtx, const qse_char_t* ioname)
|
||||
{
|
||||
rxtn_t* rxtn;
|
||||
|
Reference in New Issue
Block a user