touched up code related to QSE_SIO_IGNOREMBWCERR.
set QSE_SIO_IGNOREMBWCERR to qse_sio_in, qse_sio_out, qse_sio_err by default
This commit is contained in:
parent
e2affec43b
commit
e2a65338c8
@ -67,7 +67,7 @@ static qse_ssize_t in (
|
|||||||
qse_sed_getmmgr(sed),
|
qse_sed_getmmgr(sed),
|
||||||
0,
|
0,
|
||||||
file,
|
file,
|
||||||
QSE_SIO_READ
|
QSE_SIO_READ | QSE_SIO_IGNOREMBWCERR
|
||||||
);
|
);
|
||||||
|
|
||||||
if (arg->handle == QSE_NULL) return -1;
|
if (arg->handle == QSE_NULL) return -1;
|
||||||
@ -107,7 +107,8 @@ static qse_ssize_t out (
|
|||||||
arg->path,
|
arg->path,
|
||||||
QSE_SIO_WRITE |
|
QSE_SIO_WRITE |
|
||||||
QSE_SIO_CREATE |
|
QSE_SIO_CREATE |
|
||||||
QSE_SIO_TRUNCATE
|
QSE_SIO_TRUNCATE |
|
||||||
|
QSE_SIO_IGNOREMBWCERR
|
||||||
);
|
);
|
||||||
|
|
||||||
if (arg->handle == QSE_NULL) return -1;
|
if (arg->handle == QSE_NULL) return -1;
|
||||||
@ -247,7 +248,11 @@ qse_char_t* load_script_file (qse_sed_t* sed, const qse_char_t* file)
|
|||||||
fp = qse_sio_open (
|
fp = qse_sio_open (
|
||||||
qse_sed_getmmgr(sed), 0, file,
|
qse_sed_getmmgr(sed), 0, file,
|
||||||
QSE_SIO_READ | QSE_SIO_IGNOREMBWCERR);
|
QSE_SIO_READ | QSE_SIO_IGNOREMBWCERR);
|
||||||
if (fp == QSE_NULL) return QSE_NULL;
|
if (fp == QSE_NULL)
|
||||||
|
{
|
||||||
|
qse_fprintf (QSE_STDERR, QSE_T("ERROR: cannot open %s\n"), file);
|
||||||
|
return QSE_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (qse_str_init (&script, QSE_MMGR_GETDFL(), 1024) <= -1)
|
if (qse_str_init (&script, QSE_MMGR_GETDFL(), 1024) <= -1)
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sio.c 565 2011-09-11 02:48:21Z hyunghwan.chung $
|
* $Id: sio.c 566 2011-09-11 12:44:56Z 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.
|
||||||
@ -56,7 +56,7 @@ static qse_sio_t __sio_in =
|
|||||||
{
|
{
|
||||||
QSE_NULL,
|
QSE_NULL,
|
||||||
0,
|
0,
|
||||||
0,
|
QSE_TIO_IGNOREMBWCERR,
|
||||||
|
|
||||||
__sio_input,
|
__sio_input,
|
||||||
__sio_output,
|
__sio_output,
|
||||||
@ -98,7 +98,7 @@ static qse_sio_t __sio_out =
|
|||||||
{
|
{
|
||||||
QSE_NULL,
|
QSE_NULL,
|
||||||
0,
|
0,
|
||||||
0,
|
QSE_TIO_IGNOREMBWCERR,
|
||||||
|
|
||||||
__sio_input,
|
__sio_input,
|
||||||
__sio_output,
|
__sio_output,
|
||||||
@ -140,7 +140,7 @@ static qse_sio_t __sio_err =
|
|||||||
{
|
{
|
||||||
QSE_NULL,
|
QSE_NULL,
|
||||||
0,
|
0,
|
||||||
0,
|
QSE_TIO_IGNOREMBWCERR,
|
||||||
|
|
||||||
__sio_input,
|
__sio_input,
|
||||||
__sio_output,
|
__sio_output,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: tio-get.c 565 2011-09-11 02:48:21Z hyunghwan.chung $
|
* $Id: tio-get.c 566 2011-09-11 12:44:56Z 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.
|
||||||
@ -55,7 +55,8 @@ static qse_ssize_t tio_getc (qse_tio_t* tio, qse_char_t* c)
|
|||||||
&tio->inbuf[left], QSE_COUNTOF(tio->inbuf)-left);
|
&tio->inbuf[left], QSE_COUNTOF(tio->inbuf)-left);
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
{
|
{
|
||||||
if (tio->inbuf_curp < tio->inbuf_len)
|
if (tio->inbuf_curp < tio->inbuf_len &&
|
||||||
|
!(tio->flags & QSE_TIO_IGNOREMBWCERR))
|
||||||
{
|
{
|
||||||
/* gargage left in the buffer */
|
/* gargage left in the buffer */
|
||||||
tio->errnum = QSE_TIO_EICSEQ;
|
tio->errnum = QSE_TIO_EICSEQ;
|
||||||
@ -86,7 +87,9 @@ static qse_ssize_t tio_getc (qse_tio_t* tio, qse_char_t* c)
|
|||||||
/* illegal sequence */
|
/* illegal sequence */
|
||||||
if (tio->flags & QSE_TIO_IGNOREMBWCERR)
|
if (tio->flags & QSE_TIO_IGNOREMBWCERR)
|
||||||
{
|
{
|
||||||
*c = tio->inbuf[tio->inbuf_curp++];
|
/* *c = tio->inbuf[tio->inbuf_curp++]; */
|
||||||
|
*c = QSE_WT('?');
|
||||||
|
tio->inbuf_curp++;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: tio-put.c 565 2011-09-11 02:48:21Z hyunghwan.chung $
|
* $Id: tio-put.c 566 2011-09-11 12:44:56Z 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.
|
||||||
@ -62,6 +62,7 @@ static qse_ssize_t tio_putc (qse_tio_t* tio, qse_char_t c, int* flush_needed)
|
|||||||
}
|
}
|
||||||
else if (n > QSE_COUNTOF(mc))
|
else if (n > QSE_COUNTOF(mc))
|
||||||
{
|
{
|
||||||
|
if (tio->flags & QSE_TIO_IGNOREMBWCERR) return 1;
|
||||||
tio->errnum = QSE_TIO_ENOSPC;
|
tio->errnum = QSE_TIO_ENOSPC;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sed.c 564 2011-09-10 16:14:38Z hyunghwan.chung $
|
* $Id: sed.c 566 2011-09-11 12:44:56Z 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.
|
||||||
@ -145,7 +145,6 @@ int qse_sed_getoption (qse_sed_t* sed)
|
|||||||
return sed->option;
|
return sed->option;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_REX
|
#ifdef USE_REX
|
||||||
qse_size_t qse_sed_getmaxdepth (qse_sed_t* sed, qse_sed_depth_t id)
|
qse_size_t qse_sed_getmaxdepth (qse_sed_t* sed, qse_sed_depth_t id)
|
||||||
{
|
{
|
||||||
@ -1015,60 +1014,6 @@ static int get_subst (qse_sed_t* sed, qse_sed_cmd_t* cmd)
|
|||||||
|
|
||||||
if (pickup_rex (sed, delim, 1, cmd, t[0]) <= -1) goto oops;
|
if (pickup_rex (sed, delim, 1, cmd, t[0]) <= -1) goto oops;
|
||||||
if (pickup_rex (sed, delim, 0, cmd, t[1]) <= -1) goto oops;
|
if (pickup_rex (sed, delim, 0, cmd, t[1]) <= -1) goto oops;
|
||||||
#if 0
|
|
||||||
/* calling pickup_rex twice above instead of commenting out this part */
|
|
||||||
for (i = 0; i < 2; i++)
|
|
||||||
{
|
|
||||||
c = NXTSC (sed);
|
|
||||||
|
|
||||||
while (c != delim)
|
|
||||||
{
|
|
||||||
CHECK_CMDIC (sed, cmd, c, goto oops);
|
|
||||||
|
|
||||||
if (c == QSE_T('\\'))
|
|
||||||
{
|
|
||||||
qse_cint_t nc;
|
|
||||||
|
|
||||||
nc = NXTSC (sed);
|
|
||||||
CHECK_CMDIC_ESCAPED (sed, cmd, nc, goto oops);
|
|
||||||
|
|
||||||
if (nc == QSE_T('\n')) c = nc;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
qse_cint_t ec;
|
|
||||||
|
|
||||||
/* Escaping a known speical character for the regular expression
|
|
||||||
* part is done here. However, Escaping a special character for
|
|
||||||
* the replacement part is done in do_subst() except '\n' because
|
|
||||||
* it has more special characters like '&'. */
|
|
||||||
|
|
||||||
ec = trans_escaped (nc);
|
|
||||||
if (ec == nc)
|
|
||||||
{
|
|
||||||
/* if the character after a backslash is not special at the
|
|
||||||
* this layer, add the backslash into the regular expression
|
|
||||||
* buffer as it is. */
|
|
||||||
if (qse_str_ccat (t[i], QSE_T('\\')) == (qse_size_t)-1)
|
|
||||||
{
|
|
||||||
SETERR0 (sed, QSE_SED_ENOMEM, QSE_NULL);
|
|
||||||
goto oops;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
c = ec;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qse_str_ccat (t[i], c) == (qse_size_t)-1)
|
|
||||||
{
|
|
||||||
SETERR0 (sed, QSE_SED_ENOMEM, QSE_NULL);
|
|
||||||
goto oops;
|
|
||||||
}
|
|
||||||
|
|
||||||
c = NXTSC (sed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* skip spaces before options */
|
/* skip spaces before options */
|
||||||
do { c = NXTSC(sed); } while (IS_SPACE(c));
|
do { c = NXTSC(sed); } while (IS_SPACE(c));
|
||||||
|
@ -84,7 +84,7 @@ static qse_ssize_t xin (
|
|||||||
sed->mmgr,
|
sed->mmgr,
|
||||||
0,
|
0,
|
||||||
xtn->infile,
|
xtn->infile,
|
||||||
QSE_SIO_READ
|
QSE_SIO_READ | QSE_SIO_IGNOREMBWCERR
|
||||||
);
|
);
|
||||||
if (sio == QSE_NULL)
|
if (sio == QSE_NULL)
|
||||||
{
|
{
|
||||||
@ -105,7 +105,7 @@ static qse_ssize_t xin (
|
|||||||
sed->mmgr,
|
sed->mmgr,
|
||||||
0,
|
0,
|
||||||
arg->path,
|
arg->path,
|
||||||
QSE_SIO_READ
|
QSE_SIO_READ | QSE_SIO_IGNOREMBWCERR
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,7 +167,8 @@ static qse_ssize_t xout (
|
|||||||
xtn->outfile,
|
xtn->outfile,
|
||||||
QSE_SIO_WRITE |
|
QSE_SIO_WRITE |
|
||||||
QSE_SIO_CREATE |
|
QSE_SIO_CREATE |
|
||||||
QSE_SIO_TRUNCATE
|
QSE_SIO_TRUNCATE |
|
||||||
|
QSE_SIO_IGNOREMBWCERR
|
||||||
);
|
);
|
||||||
if (sio == QSE_NULL)
|
if (sio == QSE_NULL)
|
||||||
{
|
{
|
||||||
@ -190,7 +191,8 @@ static qse_ssize_t xout (
|
|||||||
arg->path,
|
arg->path,
|
||||||
QSE_SIO_WRITE |
|
QSE_SIO_WRITE |
|
||||||
QSE_SIO_CREATE |
|
QSE_SIO_CREATE |
|
||||||
QSE_SIO_TRUNCATE
|
QSE_SIO_TRUNCATE |
|
||||||
|
QSE_SIO_IGNOREMBWCERR
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user