renamed qse_awk_getwerrmsg() to qse_awk_geterrmsgaswcs.

renamed qse_awk_getmerrmsg() to qse_awk_geterrmsgasmbs()
This commit is contained in:
2019-08-28 15:14:22 +00:00
parent 510bde2abc
commit 24bcca71bf
13 changed files with 284 additions and 68 deletions

View File

@ -1208,20 +1208,20 @@ int StdAwk::SourceFile::open (Data& io)
file = ioname;
if (io.getPrevHandle())
{
const char_t* outer;
const qse_char_t* outer;
outer = qse_sio_getpath ((qse_sio_t*)io.getPrevHandle());
if (outer)
{
const qse_char_t* base;
base = qse_basename (outer);
base = qse_basename(outer);
if (base != outer && ioname[0] != QSE_T('/'))
{
size_t tmplen, totlen, dirlen;
dirlen = base - outer;
totlen = qse_strlen(ioname) + dirlen;
totlen = qse_strlen(ioname) + dirlen;
if (totlen >= QSE_COUNTOF(fbuf))
{
dbuf = (qse_char_t*) QSE_MMGR_ALLOC (
@ -1309,7 +1309,7 @@ int StdAwk::SourceString::open (Data& io)
{
const qse_char_t* base;
base = qse_basename (outer);
base = qse_basename(outer);
if (base != outer && ioname[0] != QSE_T('/'))
{
size_t tmplen, totlen, dirlen;
@ -1318,7 +1318,7 @@ int StdAwk::SourceString::open (Data& io)
totlen = qse_strlen(ioname) + dirlen;
if (totlen >= QSE_COUNTOF(fbuf))
{
dbuf = (qse_char_t*) QSE_MMGR_ALLOC (
dbuf = (qse_char_t*)QSE_MMGR_ALLOC(
((Awk*)io)->getMmgr(),
QSE_SIZEOF(qse_char_t) * (totlen + 1)
);

View File

@ -194,7 +194,7 @@ const qse_awk_loc_t* qse_awk_geterrloc (qse_awk_t* awk)
return &awk->errinf.loc;
}
const qse_mchar_t* qse_awk_getmerrmsg (qse_awk_t* awk)
const qse_mchar_t* qse_awk_geterrmsgasmbs (qse_awk_t* awk)
{
#if defined(QSE_CHAR_IS_MCHAR)
return (awk->errinf.msg[0] == QSE_T('\0'))?
@ -213,7 +213,7 @@ const qse_mchar_t* qse_awk_getmerrmsg (qse_awk_t* awk)
#endif
}
const qse_wchar_t* qse_awk_getwerrmsg (qse_awk_t* awk)
const qse_wchar_t* qse_awk_geterrmsgaswcs (qse_awk_t* awk)
{
#if defined(QSE_CHAR_IS_MCHAR)
const qse_char_t* msg;
@ -310,7 +310,7 @@ const qse_awk_loc_t* qse_awk_rtx_geterrloc (qse_awk_rtx_t* rtx)
return &rtx->errinf.loc;
}
const qse_mchar_t* qse_awk_rtx_getmerrmsg (qse_awk_rtx_t* rtx)
const qse_mchar_t* qse_awk_rtx_geterrmsgasmbs (qse_awk_rtx_t* rtx)
{
#if defined(QSE_CHAR_IS_MCHAR)
return (rtx->errinf.msg[0] == QSE_T('\0')) ?
@ -329,7 +329,7 @@ const qse_mchar_t* qse_awk_rtx_getmerrmsg (qse_awk_rtx_t* rtx)
#endif
}
const qse_wchar_t* qse_awk_rtx_getwerrmsg (qse_awk_rtx_t* rtx)
const qse_wchar_t* qse_awk_rtx_geterrmsgaswcs (qse_awk_rtx_t* rtx)
{
#if defined(QSE_CHAR_IS_MCHAR)
const qse_char_t* msg;

View File

@ -1021,3 +1021,101 @@ void* qse_awk_rtx_callocmem (qse_awk_rtx_t* rtx, qse_size_t size)
return ptr;
}
qse_wchar_t* qse_awk_rtx_mbstowcsdup (qse_awk_rtx_t* rtx, const qse_mchar_t* mbs, qse_size_t* _wcslen)
{
qse_size_t mbslen, wcslen;
qse_wchar_t* wcs;
/* if i use qse_mbstowcsdupwithcmgr(), i cannot pinpoint the exact failure cause.
* let's do it differently. */
if (qse_mbstowcswithcmgr(mbs, &mbslen, QSE_NULL, &wcslen, qse_awk_rtx_getcmgr(rtx)) <= -1)
{
qse_awk_rtx_seterrnum (rtx, QSE_AWK_EINVAL, QSE_NULL);
return QSE_NULL;
}
wcslen = wcslen + 1; /* for terminating null */
wcs = qse_awk_rtx_allocmem(rtx, QSE_SIZEOF(*wcs) * wcslen);
if (!wcs) return QSE_NULL;
qse_mbstowcswithcmgr (mbs, &mbslen, wcs, &wcslen, qse_awk_rtx_getcmgr(rtx));
if (_wcslen) *_wcslen = wcslen;
return wcs;
}
qse_mchar_t* qse_awk_rtx_wcstombsdup (qse_awk_rtx_t* rtx, const qse_wchar_t* wcs, qse_size_t* _mbslen)
{
qse_size_t mbslen, wcslen;
qse_mchar_t* mbs;
if (qse_wcstombswithcmgr(wcs, &wcslen, QSE_NULL, &mbslen, qse_awk_rtx_getcmgr(rtx)) <= -1)
{
qse_awk_rtx_seterrnum (rtx, QSE_AWK_EINVAL, QSE_NULL);
return QSE_NULL;
}
mbslen = mbslen + 1; /* for terminating null */
mbs = qse_awk_rtx_allocmem(rtx, QSE_SIZEOF(*mbs) * mbslen);
if (!mbs) return QSE_NULL;
qse_wcstombswithcmgr (wcs, &wcslen, mbs, &mbslen, qse_awk_rtx_getcmgr(rtx));
if (_mbslen) *_mbslen = mbslen;
return mbs;
}
qse_wchar_t* qse_awk_rtx_mbsntowcsdup (qse_awk_rtx_t* rtx, const qse_mchar_t* mbs, qse_size_t _mbslen, qse_size_t* _wcslen)
{
qse_size_t mbslen, wcslen;
qse_wchar_t* wcs;
/* if i use qse_mbstowcsdupwithcmgr(), i cannot pinpoint the exact failure cause.
* let's do it differently. */
mbslen = _mbslen;
if (qse_mbsntowcsnwithcmgr(mbs, &mbslen, QSE_NULL, &wcslen, qse_awk_rtx_getcmgr(rtx)) <= -1)
{
qse_awk_rtx_seterrnum (rtx, QSE_AWK_EINVAL, QSE_NULL);
return QSE_NULL;
}
wcs = qse_awk_rtx_allocmem(rtx, QSE_SIZEOF(*wcs) * (wcslen + 1));
if (!wcs) return QSE_NULL;
mbslen= _mbslen;
qse_mbsntowcsnwithcmgr (mbs, &mbslen, wcs, &wcslen, qse_awk_rtx_getcmgr(rtx));
wcs[wcslen] = QSE_WT('\0');
if (_wcslen) *_wcslen = wcslen;
return wcs;
}
qse_mchar_t* qse_awk_rtx_wcsntombsdup (qse_awk_rtx_t* rtx, const qse_wchar_t* wcs, qse_size_t _wcslen, qse_size_t* _mbslen)
{
qse_size_t mbslen, wcslen;
qse_mchar_t* mbs;
wcslen = _wcslen;
if (qse_wcsntombsnwithcmgr(wcs, &wcslen, QSE_NULL, &mbslen, qse_awk_rtx_getcmgr(rtx)) <= -1)
{
qse_awk_rtx_seterrnum (rtx, QSE_AWK_EINVAL, QSE_NULL);
return QSE_NULL;
}
mbs = qse_awk_rtx_allocmem(rtx, QSE_SIZEOF(*mbs) * (mbslen + 1));
if (!mbs) return QSE_NULL;
wcslen = _wcslen;
qse_wcsntombsnwithcmgr (wcs, &wcslen, mbs, &mbslen, qse_awk_rtx_getcmgr(rtx));
mbs[mbslen] = QSE_MT('\0');
if (_mbslen) *_mbslen = mbslen;
return mbs;
}

View File

@ -1508,7 +1508,7 @@ qse_awk_val_t* qse_awk_rtx_loop (qse_awk_rtx_t* rtx)
}
/* find an AWK function by name */
qse_awk_fun_t* qse_awk_rtx_findfun (qse_awk_rtx_t* rtx, const qse_char_t* name)
static qse_awk_fun_t* find_fun (qse_awk_rtx_t* rtx, const qse_char_t* name)
{
qse_htb_pair_t* pair;
@ -1528,6 +1528,36 @@ qse_awk_fun_t* qse_awk_rtx_findfun (qse_awk_rtx_t* rtx, const qse_char_t* name)
return (qse_awk_fun_t*)QSE_HTB_VPTR(pair);
}
qse_awk_fun_t* qse_awk_rtx_findfunwithmbs (qse_awk_rtx_t* rtx, const qse_mchar_t* name)
{
#if defined(QSE_CHAR_IS_MCHAR)
return find_fun(rtx, name);
#else
qse_mcstr_t mbs;
qse_awk_fun_t* fun;
mbs.ptr = qse_awk_rtx_wcstombsdup(rtx, name, &mbs.len);
if (!mbs.ptr) return -1;
fun = find_fun(rtx, mbs.ptr);
qse_awk_rtx_freemem (rtx, mbs.ptr);
return fun;
#endif
}
qse_awk_fun_t* qse_awk_rtx_findfunwithwcs (qse_awk_rtx_t* rtx, const qse_wchar_t* name)
{
#if defined(QSE_CHAR_IS_MCHAR)
qse_wcstr_t wcs;
qse_awk_fun_t* fun;
wcs.ptr = qse_awk_rtx_mbstowcsdup(rtx, name, &wcs.len);
if (!wcs.ptr) return -1;
fun = find_fun(rtx, wcs.ptr);
qse_awk_rtx_freemem (rtx, wcs.ptr);
return fun;
#else
return find_fun(rtx, name);
#endif
}
/* call an AWK function by the function structure */
qse_awk_val_t* qse_awk_rtx_callfun (qse_awk_rtx_t* rtx, qse_awk_fun_t* fun, qse_awk_val_t* args[], qse_size_t nargs)
{
@ -1606,11 +1636,21 @@ qse_awk_val_t* qse_awk_rtx_callfun (qse_awk_rtx_t* rtx, qse_awk_fun_t* fun, qse_
}
/* call an AWK function by name */
qse_awk_val_t* qse_awk_rtx_call (qse_awk_rtx_t* rtx, const qse_char_t* name, qse_awk_val_t* args[], qse_size_t nargs)
qse_awk_val_t* qse_awk_rtx_callwithmbs (qse_awk_rtx_t* rtx, const qse_mchar_t* name, qse_awk_val_t* args[], qse_size_t nargs)
{
qse_awk_fun_t* fun;
fun = qse_awk_rtx_findfun(rtx, name);
fun = qse_awk_rtx_findfunwithmbs(rtx, name);
if (!fun) return QSE_NULL;
return qse_awk_rtx_callfun(rtx, fun, args, nargs);
}
qse_awk_val_t* qse_awk_rtx_callwithwcs (qse_awk_rtx_t* rtx, const qse_wchar_t* name, qse_awk_val_t* args[], qse_size_t nargs)
{
qse_awk_fun_t* fun;
fun = qse_awk_rtx_findfunwithwcs(rtx, name);
if (!fun) return QSE_NULL;
return qse_awk_rtx_callfun(rtx, fun, args, nargs);

View File

@ -30,7 +30,7 @@
#define IS_MSEP(c) QSE_ISPATHMBSEP(c)
#define IS_WSEP(c) QSE_ISPATHWCSEP(c)
const qse_mchar_t* qse_mbsbasename (const qse_mchar_t* path)
const qse_mchar_t* qse_basenameasmbs (const qse_mchar_t* path)
{
const qse_mchar_t* p, * last = QSE_NULL;
@ -42,7 +42,7 @@ const qse_mchar_t* qse_mbsbasename (const qse_mchar_t* path)
return (last == QSE_NULL)? path: (last + 1);
}
const qse_wchar_t* qse_wcsbasename (const qse_wchar_t* path)
const qse_wchar_t* qse_basenameaswcs (const qse_wchar_t* path)
{
const qse_wchar_t* p, * last = QSE_NULL;
@ -61,7 +61,7 @@ qse_mchar_t* qse_substmbsbasenamedup (const qse_mchar_t* path, const qse_mchar_t
qse_mcstr_t seg[3];
qse_size_t idx = 0;
b = qse_mbsbasename(path);
b = qse_basenameasmbs(path);
if (b)
{
seg[idx].ptr = (qse_mchar_t*)path;
@ -85,7 +85,7 @@ qse_wchar_t* qse_substwcsbasenamedup (const qse_wchar_t* path, const qse_wchar_t
qse_wcstr_t seg[3];
qse_size_t idx = 0;
b = qse_wcsbasename(path);
b = qse_basenameaswcs(path);
if (b)
{
seg[idx].ptr = (qse_wchar_t*)path;

View File

@ -43,12 +43,12 @@
#if defined(QSE_HTTPD_DEBUG)
# include <qse/si/sio.h>
# include <qse/cmn/path.h>
# define HTTPD_DBGOUT0(fmt) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__))
# define HTTPD_DBGOUT1(fmt,a1) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__), (a1))
# define HTTPD_DBGOUT2(fmt,a1,a2) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__), (a1), (a2))
# define HTTPD_DBGOUT3(fmt,a1,a2,a3) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__), (a1), (a2), (a3))
# define HTTPD_DBGOUT4(fmt,a1,a2,a3,a4) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__), (a1), (a2), (a3), (a4))
# define HTTPD_DBGOUT5(fmt,a1,a2,a3,a4,a5) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_mbsbasename(__FILE__), (a1), (a2), (a3), (a4), (a5))
# define HTTPD_DBGOUT0(fmt) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__))
# define HTTPD_DBGOUT1(fmt,a1) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__), (a1))
# define HTTPD_DBGOUT2(fmt,a1,a2) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__), (a1), (a2))
# define HTTPD_DBGOUT3(fmt,a1,a2,a3) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__), (a1), (a2), (a3))
# define HTTPD_DBGOUT4(fmt,a1,a2,a3,a4) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__), (a1), (a2), (a3), (a4))
# define HTTPD_DBGOUT5(fmt,a1,a2,a3,a4,a5) qse_putmbsf("%06d %-20hs " fmt, (int)__LINE__, qse_basenameasmbs(__FILE__), (a1), (a2), (a3), (a4), (a5))
#else
# define HTTPD_DBGOUT0(fmt)
# define HTTPD_DBGOUT1(fmt,a1)

View File

@ -94,14 +94,14 @@
# define canon_fspath(path,canon,flags) qse_canonmbspath(path,canon,flags)
# define merge_fspath_dup(dir,file,mmgr) qse_mergembspathdup(dir,file,mmgr)
# define get_fspath_core(fspath) qse_mbspathcore(fspath)
# define get_fspath_base(fspath) qse_mbsbasename(fspath)
# define get_fspath_base(fspath) qse_basenameasmbs(fspath)
# define IS_FSPATHSEP(x) QSE_ISPATHMBSEP(x)
# define QSE_FS_T(x) QSE_MT(x)
#else
# define canon_fspath(fspath,canon,flags) qse_canonwcspath(fspath,canon,flags)
# define merge_fspath_dup(dir,file,mmgr) qse_mergewcspathdup(dir,file,mmgr)
# define get_fspath_core(fspath) qse_wcspathcore(fspath)
# define get_fspath_base(fspath) qse_wcsbasename(fspath)
# define get_fspath_base(fspath) qse_basenameaswcs(fspath)
# define IS_FSPATHSEP(x) QSE_ISPATHWCSEP(x)
# define QSE_FS_T(x) QSE_WT(x)
#endif

View File

@ -211,7 +211,7 @@ static qse_ssize_t sf_in_open (qse_xli_t* xli, qse_xli_io_arg_t* arg, xtn_t* xtn
const qse_char_t* base;
/* i'm being included from another file */
base = qse_basename (outer);
base = qse_basename(outer);
if (base != outer && arg->name[0] != QSE_T('/'))
{
qse_size_t tmplen, totlen, dirlen;
@ -438,7 +438,7 @@ static qse_ssize_t sf_out_open (qse_xli_t* xli, qse_xli_io_arg_t* arg, xtn_t* xt
const qse_char_t* base;
/* i'm being included from another file */
base = qse_basename (outer);
base = qse_basename(outer);
if (base != outer && arg->name[0] != QSE_T('/'))
{
qse_size_t tmplen, totlen, dirlen;