made minor changes related to setioattr() and getioattr()
This commit is contained in:
parent
7aa4324a47
commit
9186415fa7
@ -181,7 +181,8 @@ void* qse_awk_rtx_getxtnstd (
|
|||||||
/**
|
/**
|
||||||
* The qse_awk_rtx_getcmgrstd() function gets the current character
|
* The qse_awk_rtx_getcmgrstd() function gets the current character
|
||||||
* manager associated with a particular I/O target indicated by the name
|
* manager associated with a particular I/O target indicated by the name
|
||||||
* @a ioname.
|
* @a ioname if #QSE_CHAR_IS_WCHAR is defined. It always returns #QSE_NULL
|
||||||
|
* if #QSE_CHAR_IS_MCHAR.
|
||||||
*/
|
*/
|
||||||
qse_cmgr_t* qse_awk_rtx_getcmgrstd (
|
qse_cmgr_t* qse_awk_rtx_getcmgrstd (
|
||||||
qse_awk_rtx_t* rtx,
|
qse_awk_rtx_t* rtx,
|
||||||
|
@ -1718,6 +1718,7 @@ static int fnc_time (qse_awk_rtx_t* rtx, const qse_cstr_t* fnm)
|
|||||||
qse_cmgr_t* qse_awk_rtx_getcmgrstd (
|
qse_cmgr_t* qse_awk_rtx_getcmgrstd (
|
||||||
qse_awk_rtx_t* rtx, const qse_char_t* ioname)
|
qse_awk_rtx_t* rtx, const qse_char_t* ioname)
|
||||||
{
|
{
|
||||||
|
#if defined(QSE_CHAR_IS_WCHAR)
|
||||||
rxtn_t* rxtn;
|
rxtn_t* rxtn;
|
||||||
qse_htb_pair_t* pair;
|
qse_htb_pair_t* pair;
|
||||||
ioattr_t* ioattr;
|
ioattr_t* ioattr;
|
||||||
@ -1731,7 +1732,7 @@ qse_cmgr_t* qse_awk_rtx_getcmgrstd (
|
|||||||
ioattr = (ioattr_t*)QSE_HTB_VPTR(pair);
|
ioattr = (ioattr_t*)QSE_HTB_VPTR(pair);
|
||||||
return ioattr->cmgr;
|
return ioattr->cmgr;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return QSE_NULL;
|
return QSE_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1747,7 +1748,11 @@ static QSE_INLINE void init_ioattr (ioattr_t* ioattr)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
QSE_MEMSET (ioattr, 0, QSE_SIZEOF(*ioattr));
|
QSE_MEMSET (ioattr, 0, QSE_SIZEOF(*ioattr));
|
||||||
for (i = 0; i < QSE_COUNTOF(ioattr->timeout); i++) ioattr->timeout[i] = -1;
|
for (i = 0; i < QSE_COUNTOF(ioattr->timeout); i++)
|
||||||
|
{
|
||||||
|
/* a negative number for no timeout */
|
||||||
|
ioattr->timeout[i] = -999;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static qse_htb_pair_t* find_or_make_ioattr (
|
static qse_htb_pair_t* find_or_make_ioattr (
|
||||||
@ -1814,7 +1819,32 @@ static int fnc_setioattr (qse_awk_rtx_t* rtx, const qse_cstr_t* fnm)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qse_strcmp (ptr[1], QSE_T("codepage")) == 0)
|
if ((tmout = timeout_code (ptr[1])) >= 0)
|
||||||
|
{
|
||||||
|
qse_htb_pair_t* pair;
|
||||||
|
ioattr_t* ioattr;
|
||||||
|
|
||||||
|
qse_long_t l;
|
||||||
|
qse_flt_t r;
|
||||||
|
int x;
|
||||||
|
|
||||||
|
/* no error is returned by qse_awk_rtx_strnum() if the second
|
||||||
|
* parameter is 0. so i don't check for an error */
|
||||||
|
x = qse_awk_rtx_strtonum (rtx, 0, ptr[2], len[2], &l, &r);
|
||||||
|
if (x >= 1) l = (qse_long_t)r;
|
||||||
|
|
||||||
|
pair = find_or_make_ioattr (rtx, &rxtn->cmgrtab, ptr[0], len[0]);
|
||||||
|
if (pair == QSE_NULL)
|
||||||
|
{
|
||||||
|
ret = -1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
ioattr = QSE_HTB_VPTR(pair);
|
||||||
|
ioattr->timeout[tmout] = l;
|
||||||
|
}
|
||||||
|
#if defined(QSE_CHAR_IS_WCHAR)
|
||||||
|
else if (qse_strcmp (ptr[1], QSE_T("codepage")) == 0)
|
||||||
{
|
{
|
||||||
qse_htb_pair_t* pair;
|
qse_htb_pair_t* pair;
|
||||||
ioattr_t* ioattr;
|
ioattr_t* ioattr;
|
||||||
@ -1844,30 +1874,7 @@ static int fnc_setioattr (qse_awk_rtx_t* rtx, const qse_cstr_t* fnm)
|
|||||||
ioattr->cmgr = cmgr;
|
ioattr->cmgr = cmgr;
|
||||||
qse_strxcpy (ioattr->cmgr_name, QSE_COUNTOF(ioattr->cmgr_name), ptr[2]);
|
qse_strxcpy (ioattr->cmgr_name, QSE_COUNTOF(ioattr->cmgr_name), ptr[2]);
|
||||||
}
|
}
|
||||||
else if ((tmout = timeout_code (ptr[1])) >= 0)
|
#endif
|
||||||
{
|
|
||||||
qse_htb_pair_t* pair;
|
|
||||||
ioattr_t* ioattr;
|
|
||||||
|
|
||||||
qse_long_t l;
|
|
||||||
qse_flt_t r;
|
|
||||||
int x;
|
|
||||||
|
|
||||||
/* no error is returned by qse_awk_rtx_strnum() if the second
|
|
||||||
* parameter is 0. so i don't check for an error */
|
|
||||||
x = qse_awk_rtx_strtonum (rtx, 0, ptr[2], len[2], &l, &r);
|
|
||||||
if (x >= 1) l = (qse_long_t)r;
|
|
||||||
|
|
||||||
pair = find_or_make_ioattr (rtx, &rxtn->cmgrtab, ptr[0], len[0]);
|
|
||||||
if (pair == QSE_NULL)
|
|
||||||
{
|
|
||||||
ret = -1;
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
ioattr = QSE_HTB_VPTR(pair);
|
|
||||||
ioattr->timeout[tmout] = l;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* unknown attribute name */
|
/* unknown attribute name */
|
||||||
@ -1946,16 +1953,7 @@ static int fnc_getioattr (qse_awk_rtx_t* rtx, const qse_cstr_t* fnm)
|
|||||||
ioattr = QSE_HTB_VPTR(pair);
|
ioattr = QSE_HTB_VPTR(pair);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qse_strcmp (ptr[1], QSE_T("codepage")) == 0)
|
if ((tmout = timeout_code (ptr[1])) >= 0)
|
||||||
{
|
|
||||||
rv = qse_awk_rtx_makestrval0 (rtx, ioattr->cmgr_name);
|
|
||||||
if (rv == QSE_NULL)
|
|
||||||
{
|
|
||||||
ret = -1;
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ((tmout = timeout_code (ptr[1])) >= 0)
|
|
||||||
{
|
{
|
||||||
rv = qse_awk_rtx_makeintval (rtx, ioattr->timeout[tmout]);
|
rv = qse_awk_rtx_makeintval (rtx, ioattr->timeout[tmout]);
|
||||||
if (rv == QSE_NULL)
|
if (rv == QSE_NULL)
|
||||||
@ -1964,6 +1962,17 @@ static int fnc_getioattr (qse_awk_rtx_t* rtx, const qse_cstr_t* fnm)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if defined(QSE_CHAR_IS_WCHAR)
|
||||||
|
else if (qse_strcmp (ptr[1], QSE_T("codepage")) == 0)
|
||||||
|
{
|
||||||
|
rv = qse_awk_rtx_makestrval0 (rtx, ioattr->cmgr_name);
|
||||||
|
if (rv == QSE_NULL)
|
||||||
|
{
|
||||||
|
ret = -1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* unknown attribute name */
|
/* unknown attribute name */
|
||||||
@ -2001,9 +2010,7 @@ static int add_functions (qse_awk_t* awk)
|
|||||||
ADDFNC (awk, QSE_T("srand"), 0, 1, fnc_srand, 0);
|
ADDFNC (awk, QSE_T("srand"), 0, 1, fnc_srand, 0);
|
||||||
ADDFNC (awk, QSE_T("system"), 1, 1, fnc_system, 0);
|
ADDFNC (awk, QSE_T("system"), 1, 1, fnc_system, 0);
|
||||||
ADDFNC (awk, QSE_T("time"), 0, 0, fnc_time, 0);
|
ADDFNC (awk, QSE_T("time"), 0, 0, fnc_time, 0);
|
||||||
#if defined(QSE_CHAR_IS_WCHAR)
|
|
||||||
ADDFNC (awk, QSE_T("setioattr"), 3, 3, fnc_setioattr, QSE_AWK_RIO);
|
ADDFNC (awk, QSE_T("setioattr"), 3, 3, fnc_setioattr, QSE_AWK_RIO);
|
||||||
ADDFNC (awk, QSE_T("getioattr"), 2, 2, fnc_getioattr, QSE_AWK_RIO);
|
ADDFNC (awk, QSE_T("getioattr"), 2, 2, fnc_getioattr, QSE_AWK_RIO);
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -292,6 +292,9 @@ int qse_htb_init (
|
|||||||
QSE_ASSERTX (factor >= 0 && factor <= 100,
|
QSE_ASSERTX (factor >= 0 && factor <= 100,
|
||||||
"The load factor should be between 0 and 100 inclusive. In the release mode, a value out of the range is adjusted to 100");
|
"The load factor should be between 0 and 100 inclusive. In the release mode, a value out of the range is adjusted to 100");
|
||||||
|
|
||||||
|
QSE_ASSERT (kscale >= 0 && kscale <= QSE_TYPE_MAX(qse_byte_t));
|
||||||
|
QSE_ASSERT (vscale >= 0 && vscale <= QSE_TYPE_MAX(qse_byte_t));
|
||||||
|
|
||||||
/* some initial adjustment */
|
/* some initial adjustment */
|
||||||
if (capa <= 0) capa = 1;
|
if (capa <= 0) capa = 1;
|
||||||
if (factor > 100) factor = 100;
|
if (factor > 100) factor = 100;
|
||||||
|
Loading…
Reference in New Issue
Block a user