added qse_sed_geterrstr() and qse_sed_seterrstr()

This commit is contained in:
2009-05-28 07:55:17 +00:00
parent 83a6e0d3b0
commit 16f0580d75
4 changed files with 72 additions and 85 deletions

View File

@ -18,73 +18,17 @@
#include "sed.h"
static const qse_char_t* geterrstr (int errnum)
qse_sed_errstr_t qse_sed_geterrstr (qse_sed_t* sed)
{
static const qse_char_t* errstr[] =
{
QSE_T("no error"),
QSE_T("out of memory"),
QSE_T("command '${0}' not recognized"),
QSE_T("command code missing"),
QSE_T("command '${0}' incomplete"),
QSE_T("regular expression '${0}' incomplete"),
QSE_T("failed to compile regular expression '${0}'"),
QSE_T("failed to match regular expression"),
QSE_T("address 1 prohibited for '${0}'"),
QSE_T("address 2 prohibited"),
QSE_T("invalid step address"),
QSE_T("a new line expected"),
QSE_T("a backslash expected"),
QSE_T("a backslash used as a delimiter"),
QSE_T("garbage after a backslash"),
QSE_T("a semicolon expected"),
QSE_T("empty label name"),
QSE_T("duplicate label name '${0}'"),
QSE_T("label '${0}' not found"),
QSE_T("empty file name"),
QSE_T("illegal file name"),
QSE_T("strings in translation set not the same length"),
QSE_T("group brackets not balanced"),
QSE_T("group nesting too deep"),
QSE_T("multiple occurrence specifier"),
QSE_T("occurrence specifier is zero"),
QSE_T("occurrence specifier too large"),
QSE_T("io error with file '${0}'"),
QSE_T("error returned by user io handler")
};
return (errnum >= 0 && errnum < QSE_COUNTOF(errstr))?
errstr[errnum]: QSE_T("unknown error");
return sed->errstr;
}
#if 0
const qse_char_t* qse_sed_geterrstr (qse_sed_t* sed, qse_sed_errnum_t num)
void qse_sed_seterrstr (qse_sed_t* sed, qse_sed_errstr_t errstr)
{
if (sed != QSE_NULL &&
sed->errstr[num] != QSE_NULL) return sed->errstr[num];
return geterrstr (num);
sed->errstr = errstr;
}
int qse_sed_seterrstr (
qse_sed_t* sed, qse_sed_errnum_t num, const qse_char_t* str)
{
qse_char_t* dup;
if (str == QSE_NULL) dup = QSE_NULL;
else
{
dup = QSE_AWK_STRDUP (sed, str);
if (dup == QSE_NULL) return -1;
}
if (sed->errstr[num] != QSE_NULL)
QSE_AWK_FREE (sed, sed->errstr[num]);
else sed->errstr[num] = dup;
return 0;
}
#endif
int qse_sed_geterrnum (qse_sed_t* sed)
qse_sed_errnum_t qse_sed_geterrnum (qse_sed_t* sed)
{
return sed->errnum;
}
@ -96,14 +40,12 @@ qse_size_t qse_sed_geterrlin (qse_sed_t* sed)
const qse_char_t* qse_sed_geterrmsg (qse_sed_t* sed)
{
if (sed->errmsg[0] == QSE_T('\0'))
/*return qse_sed_geterrstr (sed, sed->errnum);*/
return geterrstr (sed->errnum);
return sed->errmsg;
return (sed->errmsg[0] == QSE_T('\0'))?
qse_sed_geterrstr(sed)(sed,sed->errnum): sed->errmsg;
}
void qse_sed_geterror (
qse_sed_t* sed, int* errnum,
qse_sed_t* sed, qse_sed_errnum_t* errnum,
qse_size_t* errlin, const qse_char_t** errmsg)
{
if (errnum != QSE_NULL) *errnum = sed->errnum;
@ -111,21 +53,21 @@ void qse_sed_geterror (
if (errmsg != QSE_NULL)
{
*errmsg = (sed->errmsg[0] == QSE_T('\0'))?
/*qse_sed_geterrstr (sed, sed->errnum):*/
geterrstr (sed->errnum):
qse_sed_geterrstr(sed)(sed,sed->errnum):
sed->errmsg;
}
}
void qse_sed_seterrnum (qse_sed_t* sed, int errnum)
void qse_sed_seterrnum (qse_sed_t* sed, qse_sed_errnum_t errnum)
{
sed->errnum = errnum;
sed->errlin = 0;
sed->errmsg[0] = QSE_T('\0');
}
void qse_sed_seterrmsg (qse_sed_t* sed,
int errnum, qse_size_t errlin, const qse_char_t* errmsg)
void qse_sed_seterrmsg (
qse_sed_t* sed, qse_sed_errnum_t errnum,
qse_size_t errlin, const qse_char_t* errmsg)
{
sed->errnum = errnum;
sed->errlin = errlin;
@ -133,7 +75,7 @@ void qse_sed_seterrmsg (qse_sed_t* sed,
}
void qse_sed_seterror (
qse_sed_t* sed, int errnum,
qse_sed_t* sed, qse_sed_errnum_t errnum,
qse_size_t errlin, const qse_cstr_t* errarg)
{
const qse_char_t* errfmt;
@ -141,7 +83,7 @@ void qse_sed_seterror (
sed->errnum = errnum;
sed->errlin = errlin;
errfmt = /*qse_sed_geterrstr (sed, errnum);*/ geterrstr (sed->errnum);
errfmt = qse_sed_geterrstr(sed)(sed,sed->errnum);
QSE_ASSERT (errfmt != QSE_NULL);
qse_strxfncpy (sed->errmsg, QSE_COUNTOF(sed->errmsg), errfmt, errarg);
}