From 9ea63a0b7361ad87eeedbdd215f390d505d9803f Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sat, 10 Mar 2007 11:59:04 +0000 Subject: [PATCH] *** empty log message *** --- ase/awk/awk.h | 27 +-- ase/awk/err.c | 59 +++--- ase/awk/extio.c | 20 +- ase/awk/func.c | 25 ++- ase/awk/parse.c | 470 ++++++++++++++++----------------------------- ase/awk/run.c | 213 +++++++++++--------- ase/awk/val.c | 33 ++-- ase/test/awk/awk.c | 4 +- 8 files changed, 379 insertions(+), 472 deletions(-) diff --git a/ase/awk/awk.h b/ase/awk/awk.h index 3d4b1ff8..2247848e 100644 --- a/ase/awk/awk.h +++ b/ase/awk/awk.h @@ -1,5 +1,5 @@ /* - * $Id: awk.h,v 1.205 2007-03-09 14:19:55 bacon Exp $ + * $Id: awk.h,v 1.206 2007-03-10 11:58:34 bacon Exp $ * * {License} */ @@ -201,10 +201,10 @@ enum ASE_AWK_ENOPER, /* operation not allowed */ ASE_AWK_ENODEV, /* function '%.*s' not found */ ASE_AWK_ENOSPC, /* no space left on device */ - ASE_AWK_ENOENT, /* no such file, directory, or data */ ASE_AWK_EMFILE, /* too many open files */ ASE_AWK_EMLINK, /* too many links */ ASE_AWK_EAGAIN, /* resource temporarily unavailable */ + ASE_AWK_ENOENT, /* file or data not existing */ ASE_AWK_EEXIST, /* file or data exists */ ASE_AWK_EFTBIG, /* file or data too big */ ASE_AWK_ETBUSY, /* system too busy */ @@ -238,8 +238,8 @@ enum ASE_AWK_ELXUNG, /* lexer failed to unget a character */ ASE_AWK_EENDSRC, /* unexpected end of source */ - ASE_AWK_EENDCMT, /* unexpected end of a comment */ - ASE_AWK_EENDSTR, /* unexpected end of a string */ + ASE_AWK_EENDCMT, /* a comment not closed properly */ + ASE_AWK_EENDSTR, /* a string not closed with a quote */ ASE_AWK_EENDREX, /* unexpected end of a regular expression */ ASE_AWK_ELBRACE, /* left brace expected */ ASE_AWK_ELPAREN, /* left parenthesis expected */ @@ -268,17 +268,24 @@ enum ASE_AWK_EDUPPAR, /* duplicate parameter name */ ASE_AWK_EDUPGBL, /* duplicate global variable name */ ASE_AWK_EDUPLCL, /* duplicate local variable name */ + ASE_AWK_EBADPAR, /* not a valid parameter name */ + ASE_AWK_EBADVAR, /* not a valid variable name */ ASE_AWK_EUNDEF, /* undefined identifier */ ASE_AWK_ELVALUE, /* l-value required */ ASE_AWK_EGBLTM, /* too many global variables */ ASE_AWK_ELCLTM, /* too many local variables */ ASE_AWK_EPARTM, /* too many parameters */ + ASE_AWK_EDELETE, /* delete not followed by a variable */ ASE_AWK_EBREAK, /* break outside a loop */ ASE_AWK_ECONTINUE, /* continue outside a loop */ - ASE_AWK_ENEXT, /* next illegal in BEGIN or END block */ - ASE_AWK_ENEXTFILE, /* nextfile illegal in BEGIN or END block */ - ASE_AWK_EGETLINE, /* getline expected */ - ASE_AWK_EPRINTFARG, /* printf must have one or more arguments */ + ASE_AWK_ENEXTBEG, /* next illegal in BEGIN block */ + ASE_AWK_ENEXTEND, /* next illegal in END block */ + ASE_AWK_ENEXTFBEG, /* nextfile illegal in BEGIN block */ + ASE_AWK_ENEXTFEND, /* nextfile illegal in END block */ + ASE_AWK_EPRINTFARG, /* printf not followed by any arguments */ + ASE_AWK_EPREPST, /* both prefix and postfix increment/decrement + operator present */ + ASE_AWK_EGLNCPS, /* coprocess not supported by getline */ /* run time error */ ASE_AWK_EDIVBY0, /* divide by zero */ @@ -396,10 +403,6 @@ void ase_awk_seterror ( ase_awk_t* awk, int errnum, ase_size_t errlin, const ase_cstr_t* errarg, ase_size_t argcnt); -void ase_awk_seterror_old ( - ase_awk_t* run, int errnum, - ase_size_t errlin, const ase_char_t* errmsg); - int ase_awk_getoption (ase_awk_t* awk); void ase_awk_setoption (ase_awk_t* awk, int opt); diff --git a/ase/awk/err.c b/ase/awk/err.c index 5ae9f530..99cb11c0 100644 --- a/ase/awk/err.c +++ b/ase/awk/err.c @@ -1,5 +1,5 @@ /* - * $Id: err.c,v 1.89 2007-03-09 14:19:55 bacon Exp $ + * $Id: err.c,v 1.90 2007-03-10 11:58:35 bacon Exp $ * * {License} */ @@ -18,11 +18,11 @@ static const ase_char_t* __geterrstr (int errnum) ASE_T("operation not allowed"), ASE_T("no such device"), ASE_T("no space left on device"), - ASE_T("no such file, directory, or data"), ASE_T("too many open files"), ASE_T("too many links"), ASE_T("resource temporarily unavailable"), - ASE_T("file or data exists"), + ASE_T("'%.*s' not existing"), + ASE_T("'%.*s' already exists"), ASE_T("file or data too big"), ASE_T("system too busy"), ASE_T("is a directory"), @@ -55,8 +55,8 @@ static const ase_char_t* __geterrstr (int errnum) ASE_T("cannot unget character"), ASE_T("unexpected end of source"), - ASE_T("unexpected end of a comment"), - ASE_T("unexpected end of a string"), + ASE_T("a comment not closed properly"), + ASE_T("a string not closed with a quote"), ASE_T("unexpected end of a regular expression"), ASE_T("a left brace expected n place of '%.*s'"), ASE_T("a left parenthesis expected in place of '%.*s'"), @@ -67,12 +67,12 @@ static const ase_char_t* __geterrstr (int errnum) ASE_T("a colon expected in place of '%.*s'"), ASE_T("statement not ending with a semicolon"), ASE_T("keyword 'in' expected in place of '%.*s'"), - ASE_T("not a variable after 'in'"), - ASE_T("expression expected"), + ASE_T("right-hand side of the 'in' operator not a variable"), + ASE_T("invalid expression"), - ASE_T("keyword 'while' expected"), - ASE_T("assignment statement expected"), - ASE_T("identifier expected"), + ASE_T("keyword 'while' expected in place of '%.*s'"), + ASE_T("invalid assignment statement"), + ASE_T("an identifier expected in place of '%.*s'"), ASE_T("'%.*s' not a valid function name"), ASE_T("BEGIN not followed by a left bracket on the same line"), ASE_T("END not followed by a left bracket on the same line"), @@ -85,17 +85,23 @@ static const ase_char_t* __geterrstr (int errnum) ASE_T("duplicate parameter name '%.*s'"), ASE_T("duplicate global variable '%.*s'"), ASE_T("duplicate local variable '%.*s'"), - ASE_T("undefined identifier"), + ASE_T("'%.*s' not a valid parameter name"), + ASE_T("'%.*s' not a valid variable name"), + ASE_T("undefined identifier '%.*s'"), ASE_T("l-value required"), ASE_T("too many global variables"), ASE_T("too many local variables"), ASE_T("too many parameters"), - ASE_T("break outside a loop"), - ASE_T("continue outside a loop"), - ASE_T("next illegal in BEGIN or END block"), - ASE_T("nextfile illegal in BEGIN or END block"), - ASE_T("getline expected"), - ASE_T("printf requires one or more arguments"), + ASE_T("delete statement not followed by a normal variable"), + ASE_T("break statement outside a loop"), + ASE_T("continue statement outside a loop"), + ASE_T("next statement illegal in the BEGIN block"), + ASE_T("next statement illegal in the END block"), + ASE_T("nextfile statement illegal in the BEGIN block"), + ASE_T("nextfile statement illegal in the END block"), + ASE_T("printf not followed by any arguments"), + ASE_T("both prefix and postfix increment/decrement operator present"), + ASE_T("coprocess not supported by getline"), ASE_T("divide by zero"), ASE_T("invalid operand"), @@ -113,7 +119,7 @@ static const ase_char_t* __geterrstr (int errnum) ASE_T("map '%.*s' not assignable with a scalar"), ASE_T("cannot change a scalar value to a map"), ASE_T("a map is not allowed"), - ASE_T("wrong value type"), + ASE_T("invalid value type"), ASE_T("next cannot be called from the BEGIN or END block"), ASE_T("nextfile cannot be called from the BEGIN or END block"), ASE_T("wrong implementation of built-in function handler"), @@ -131,7 +137,7 @@ static const ase_char_t* __geterrstr (int errnum) ASE_T("a right parenthesis expected in the regular expression"), ASE_T("a right bracket expected in the regular expression"), ASE_T("a right brace expected in the regular expression"), - ASE_T("unbalanced parenthesis"), + ASE_T("unbalanced parenthesis in the regular expression"), ASE_T("a colon expected in the regular expression"), ASE_T("invalid character range in the regular expression"), ASE_T("invalid character class in the regular expression"), @@ -307,21 +313,6 @@ void ase_awk_seterror ( } } -void ase_awk_seterror_old ( - ase_awk_t* awk, int errnum, - ase_size_t errlin, const ase_char_t* errmsg) -{ - awk->errnum = errnum; - awk->errlin = errlin; - if (errmsg == ASE_NULL) awk->errmsg[0] = ASE_T('\0'); - else if (awk->errmsg != errmsg) - { - ase_strxcpy ( - awk->errmsg, ASE_COUNTOF(awk->errmsg), errmsg); - } -} - - int ase_awk_getrunerrnum (ase_awk_run_t* run) { return run->errnum; diff --git a/ase/awk/extio.c b/ase/awk/extio.c index 344ef4df..bac3ba6f 100644 --- a/ase/awk/extio.c +++ b/ase/awk/extio.c @@ -1,5 +1,5 @@ /* - * $Id: extio.c,v 1.74 2007-03-06 14:51:52 bacon Exp $ + * $Id: extio.c,v 1.75 2007-03-10 11:58:35 bacon Exp $ * * {License} */ @@ -117,7 +117,8 @@ int ase_awk_readextio ( run->awk, ASE_SIZEOF(ase_awk_extio_t)); if (p == ASE_NULL) { - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return -1; } @@ -125,7 +126,8 @@ int ase_awk_readextio ( if (p->name == ASE_NULL) { ASE_AWK_FREE (run->awk, p); - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return -1; } @@ -319,7 +321,8 @@ int ase_awk_readextio ( if (ase_str_ccat (buf, c) == (ase_size_t)-1) { - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); ret = -1; break; } @@ -353,7 +356,8 @@ int ase_awk_readextio ( nr = ase_awk_makeintval (run, lv + 1); if (nr == ASE_NULL) { - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); ret = -1; } else @@ -445,7 +449,8 @@ int ase_awk_writeextio_str ( run->awk, ASE_SIZEOF(ase_awk_extio_t)); if (p == ASE_NULL) { - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return -1; } @@ -453,7 +458,8 @@ int ase_awk_writeextio_str ( if (p->name == ASE_NULL) { ASE_AWK_FREE (run->awk, p); - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return -1; } diff --git a/ase/awk/func.c b/ase/awk/func.c index 84ae5b95..4d860637 100644 --- a/ase/awk/func.c +++ b/ase/awk/func.c @@ -1,5 +1,5 @@ /* - * $Id: func.c,v 1.100 2007-03-06 14:51:52 bacon Exp $ + * $Id: func.c,v 1.101 2007-03-10 11:58:35 bacon Exp $ * * {License} */ @@ -53,18 +53,19 @@ void* ase_awk_addbfn ( if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL) { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("'%.*s' added already"), name_len, name); - ase_awk_seterror_old (awk, ASE_AWK_EEXIST, 0, awk->errmsg); + ase_cstr_t errarg; + + errarg.ptr = name; + errarg.len = name_len; + + ase_awk_seterror (awk, ASE_AWK_EEXIST, 0, &errarg, 1); return ASE_NULL; } p = (ase_awk_bfn_t*) ASE_AWK_MALLOC (awk, ASE_SIZEOF(ase_awk_bfn_t)); if (p == ASE_NULL) { - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } @@ -72,7 +73,7 @@ void* ase_awk_addbfn ( if (p->name.ptr == ASE_NULL) { ASE_AWK_FREE (awk, p); - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } @@ -88,7 +89,7 @@ void* ase_awk_addbfn ( { ASE_AWK_FREE (awk, p->name.ptr); ASE_AWK_FREE (awk, p); - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } } @@ -103,6 +104,7 @@ void* ase_awk_addbfn ( int ase_awk_delbfn (ase_awk_t* awk, const ase_char_t* name, ase_size_t name_len) { ase_awk_bfn_t* p, * pp = ASE_NULL; + ase_cstr_t errarg; for (p = awk->bfn.user; p != ASE_NULL; p = p->next) { @@ -123,7 +125,10 @@ int ase_awk_delbfn (ase_awk_t* awk, const ase_char_t* name, ase_size_t name_len) pp = p; } - ase_awk_seterror_old (awk, ASE_AWK_ENOENT, 0, ASE_NULL); + errarg.ptr = name; + errarg.len = name_len; + + ase_awk_seterror (awk, ASE_AWK_ENOENT, 0, &errarg, 1); return -1; } diff --git a/ase/awk/parse.c b/ase/awk/parse.c index f9b8b942..de616265 100644 --- a/ase/awk/parse.c +++ b/ase/awk/parse.c @@ -1,5 +1,5 @@ /* - * $Id: parse.c,v 1.254 2007-03-08 14:31:34 bacon Exp $ + * $Id: parse.c,v 1.255 2007-03-10 11:58:35 bacon Exp $ * * {License} */ @@ -337,37 +337,6 @@ static global_t gtab[] = ase_awk_seterror (awk, code, (awk)->token.line, &errarg, 1); \ } while (0) -#define SET_ERROR_TOKEN_LINE(awk,code,line) \ - do { \ - ase_cstr_t errarg; \ - errarg.len = ASE_STR_LEN(&(awk)->token.name); \ - errarg.ptr = ASE_STR_BUF(&(awk)->token.name); \ - ase_awk_seterror (awk, code, line, &errarg, 1); \ - } while (0) - - -#define SET_ERROR_0(awk,code,msg) \ - do { \ - if (MATCH(awk,TOKEN_EOF)) \ - { \ - ase_awk_seterror_old ( \ - awk, ASE_AWK_EENDSRC, \ - (awk)->token.prev.line, ASE_NULL); \ - } \ - else \ - { \ - (awk)->prmfns.misc.sprintf ( \ - (awk)->prmfns.misc.custom_data, \ - (awk)->errmsg, ASE_COUNTOF((awk)->errmsg), \ - msg, \ - ASE_STR_LEN(&(awk)->token.name), \ - ASE_STR_BUF(&(awk)->token.name)); \ - ase_awk_seterror_old ( \ - awk, code, (awk)->token.line, \ - (awk)->errmsg); \ - } \ - } while (0) - ase_size_t ase_awk_getmaxdepth (ase_awk_t* awk, int type) { return (type == ASE_AWK_DEPTH_BLOCK_PARSE)? awk->parse.depth.max.block: @@ -455,9 +424,7 @@ static int __parse (ase_awk_t* awk) { /* cannot open the source file. * it doesn't even have to call CLOSE */ - ase_awk_seterror_old ( - awk, ASE_AWK_ESINOP, 0, - ASE_T("cannot open the source input")); + ase_awk_seterror (awk, ASE_AWK_ESINOP, 0, ASE_NULL, 0); return -1; } @@ -519,9 +486,7 @@ exit_parse: { /* this is to keep the earlier error above * that might be more critical than this */ - ase_awk_seterror_old ( - awk, ASE_AWK_ESINCL, 0, - ASE_T("cannot close the source input")); + ase_awk_seterror (awk, ASE_AWK_ESINCL, 0, ASE_NULL, 0); n = -1; } } @@ -837,33 +802,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) { ASE_AWK_FREE (awk, name_dup); ase_awk_tab_clear (&awk->parse.params); - - if (MATCH(awk,TOKEN_EOF)) - { - ase_awk_seterror_old ( - awk, ASE_AWK_EENDSRC, awk->token.prev.line, - ASE_NULL); - } - else if (MATCH(awk,TOKEN_RPAREN)) - { - ase_awk_seterror_old ( - awk, ASE_AWK_EIDENT, awk->token.prev.line, - ASE_T("premature end of parameter list")); - } - else - { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("'%.*s' not a valid parameter name"), - ASE_STR_LEN(&awk->token.name), - ASE_STR_BUF(&awk->token.name)); - - ase_awk_seterror_old ( - awk, ASE_AWK_EIDENT, awk->token.line, - awk->errmsg); - } - + SET_ERROR_TOKEN (awk, ASE_AWK_EBADPAR); return ASE_NULL; } @@ -925,10 +864,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) ASE_AWK_FREE (awk, name_dup); ase_awk_tab_clear (&awk->parse.params); - ase_awk_seterror_old ( - awk, ASE_AWK_EPARTM, awk->token.line, - ASE_T("too many parameters in the parameter list")); - + SET_ERROR_TOKEN (awk, ASE_AWK_EPARTM); return ASE_NULL; } @@ -939,8 +875,9 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) ASE_AWK_FREE (awk, name_dup); ase_awk_tab_clear (&awk->parse.params); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, awk->token.line, + ASE_NULL, 0); return ASE_NULL; } @@ -1027,8 +964,9 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) ASE_AWK_FREE (awk, name_dup); ase_awk_clrpt (awk, body); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, awk->token.line, + ASE_NULL, 0); return ASE_NULL; } @@ -1109,7 +1047,7 @@ static ase_awk_chain_t* __parse_pattern_block ( { ase_awk_clrpt (awk, nde); - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -1180,9 +1118,9 @@ static ase_awk_nde_t* __parse_block ( ase_awk_tab_getsize(&awk->parse.locals) - nlocals); if (head != ASE_NULL) ase_awk_clrpt (awk, head); - ase_awk_seterror_old ( + ase_awk_seterror ( awk, ASE_AWK_EENDSRC, awk->token.prev.line, - ASE_NULL); + ASE_NULL, 0); return ASE_NULL; } @@ -1228,7 +1166,7 @@ static ase_awk_nde_t* __parse_block ( ase_awk_tab_getsize(&awk->parse.locals)-nlocals); ase_awk_clrpt (awk, head); - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -1374,13 +1312,13 @@ static ase_awk_t* __add_global ( if (ase_awk_tab_getsize(&awk->parse.globals) >= ASE_AWK_MAX_GLOBALS) { - ase_awk_seterror_old (awk, ASE_AWK_EGBLTM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_EGBLTM, line, ASE_NULL, 0); return ASE_NULL; } if (ase_awk_tab_add (&awk->parse.globals, name, len) == (ase_size_t)-1) { - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -1393,27 +1331,8 @@ static ase_awk_t* __collect_globals (ase_awk_t* awk) { if (!MATCH(awk,TOKEN_IDENT)) { - if (MATCH(awk,TOKEN_EOF)) - { - ase_awk_seterror_old ( - awk, ASE_AWK_EENDSRC, awk->token.prev.line, - ASE_NULL); - return ASE_NULL; - } - else - { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("'%.*s' not a valid variable name"), - ASE_STR_LEN(&awk->token.name), - ASE_STR_BUF(&awk->token.name)); - - ase_awk_seterror_old ( - awk, ASE_AWK_EIDENT, awk->token.line, - awk->errmsg); - return ASE_NULL; - } + SET_ERROR_TOKEN (awk, ASE_AWK_EBADVAR); + return ASE_NULL; } if (__add_global ( @@ -1451,27 +1370,8 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) { if (!MATCH(awk,TOKEN_IDENT)) { - if (MATCH(awk,TOKEN_EOF)) - { - ase_awk_seterror_old ( - awk, ASE_AWK_EENDSRC, awk->token.prev.line, - ASE_NULL); - return ASE_NULL; - } - else - { - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("'%.*s' not a valid variable name"), - ASE_STR_LEN(&awk->token.name), - ASE_STR_BUF(&awk->token.name)); - - ase_awk_seterror_old ( - awk, ASE_AWK_EIDENT, awk->token.line, - awk->errmsg); - return ASE_NULL; - } + SET_ERROR_TOKEN (awk, ASE_AWK_EBADVAR); + return ASE_NULL; } local = ASE_STR_BUF(&awk->token.name); @@ -1551,16 +1451,18 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) if (ase_awk_tab_getsize(&awk->parse.locals) >= ASE_AWK_MAX_LOCALS) { - ase_awk_seterror_old ( - awk, ASE_AWK_ELCLTM, awk->token.line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ELCLTM, awk->token.line, + ASE_NULL, 0); return ASE_NULL; } if (ase_awk_tab_add ( &awk->parse.locals, local, local_len) == (ase_size_t)-1) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, awk->token.line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, awk->token.line, + ASE_NULL, 0); return ASE_NULL; } @@ -1594,7 +1496,8 @@ static ase_awk_nde_t* __parse_statement (ase_awk_t* awk, ase_size_t line) ASE_AWK_MALLOC (awk, ASE_SIZEOF(ase_awk_nde_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -1796,9 +1699,7 @@ static ase_awk_nde_t* __parse_expression0 (ase_awk_t* awk, ase_size_t line) if (!__is_var(x) && x->type != ASE_AWK_NDE_POS) { ase_awk_clrpt (awk, x); - ase_awk_seterror_old ( - awk, ASE_AWK_EASSIGN, line, - ASE_T("invalid assignment expression")); + ase_awk_seterror (awk, ASE_AWK_EASSIGN, line, ASE_NULL, 0); return ASE_NULL; } @@ -1823,7 +1724,7 @@ static ase_awk_nde_t* __parse_expression0 (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, x); ase_awk_clrpt (awk, y); - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -1882,8 +1783,8 @@ static ase_awk_nde_t* __parse_basic_expr (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, n1); ase_awk_clrpt (awk, n2); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -1948,8 +1849,8 @@ static ase_awk_nde_t* __parse_binary_expr ( ase_awk_clrpt (awk, right); ase_awk_clrpt (awk, left); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2031,9 +1932,8 @@ static ase_awk_nde_t* __parse_in (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, right); ase_awk_clrpt (awk, left); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOTVAR, line2, - ASE_T("right-hand side of the 'in' operator not a variable")); + ase_awk_seterror ( + awk, ASE_AWK_ENOTVAR, line2, ASE_NULL, 0); return ASE_NULL; } @@ -2044,8 +1944,8 @@ static ase_awk_nde_t* __parse_in (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, right); ase_awk_clrpt (awk, left); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2148,8 +2048,8 @@ static ase_awk_nde_t* __parse_bitwise_or_with_extio (ase_awk_t* awk, ase_size_t { ase_awk_clrpt (awk, left); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2171,9 +2071,8 @@ static ase_awk_nde_t* __parse_bitwise_or_with_extio (ase_awk_t* awk, ase_size_t ase_awk_clrpt (awk, left); /* TODO: support coprocess */ - ase_awk_seterror_old ( - awk, ASE_AWK_EGETLINE, line, - ASE_T("coprocess not supported by getline")); + ase_awk_seterror ( + awk, ASE_AWK_EGLNCPS, line, ASE_NULL, 0); return ASE_NULL; } @@ -2191,8 +2090,8 @@ static ase_awk_nde_t* __parse_bitwise_or_with_extio (ase_awk_t* awk, ase_size_t ase_awk_clrpt (awk, right); ase_awk_clrpt (awk, left); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2308,8 +2207,8 @@ static ase_awk_nde_t* __parse_concat (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, left); ase_awk_clrpt (awk, right); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2388,8 +2287,8 @@ static ase_awk_nde_t* __parse_unary (ase_awk_t* awk, ase_size_t line) { ase_awk_clrpt (awk, left); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2448,8 +2347,8 @@ static ase_awk_nde_t* __parse_unary_exp (ase_awk_t* awk, ase_size_t line) { ase_awk_clrpt (awk, left); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2491,9 +2390,7 @@ static ase_awk_nde_t* __parse_increment (ase_awk_t* awk, ase_size_t line) * not allowed */ ase_awk_clrpt (awk, left); - ase_awk_seterror_old ( - awk, ASE_AWK_ELVALUE, line, - ASE_T("both prefix and postfix increment/decrement operator present")); + ase_awk_seterror (awk, ASE_AWK_EPREPST, line, ASE_NULL, 0); return ASE_NULL; } else if (opcode1 == -1 && opcode2 == -1) @@ -2522,8 +2419,7 @@ static ase_awk_nde_t* __parse_increment (ase_awk_t* awk, ase_size_t line) { ase_awk_clrpt (awk, left); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2551,8 +2447,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) awk, ASE_SIZEOF(ase_awk_nde_int_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2594,8 +2490,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) awk, ASE_SIZEOF(ase_awk_nde_real_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2637,8 +2533,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) awk, ASE_SIZEOF(ase_awk_nde_str_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2653,8 +2549,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) if (nde->buf == ASE_NULL) { ASE_AWK_FREE (awk, nde); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2684,8 +2580,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) awk, ASE_SIZEOF(ase_awk_nde_rex_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2701,8 +2597,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) if (nde->buf == ASE_NULL) { ASE_AWK_FREE (awk, nde); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2715,8 +2611,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) ASE_AWK_FREE (awk, nde->buf); ASE_AWK_FREE (awk, nde); - ase_awk_seterror_old ( - awk, errnum, line, ASE_NULL); + ase_awk_seterror ( + awk, errnum, line, ASE_NULL, 0); return ASE_NULL; } @@ -2745,8 +2641,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) if (nde == ASE_NULL) { ase_awk_clrpt (awk, prim); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2838,8 +2734,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) { ase_awk_clrpt (awk, nde); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2895,8 +2791,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) if (var != ASE_NULL) ase_awk_clrpt (awk, var); if (in != ASE_NULL) ase_awk_clrpt (awk, in); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -2912,10 +2808,10 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) } /* valid expression introducer is expected */ - ase_awk_seterror_old ( + ase_awk_seterror ( awk, ASE_AWK_EEXPRES, (MATCH(awk,TOKEN_EOF)? awk->token.prev.line: line), - ASE_T("invalid expression")); + ASE_NULL, 0); return ASE_NULL; } @@ -2924,6 +2820,7 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line) ase_char_t* name_dup; ase_size_t name_len; ase_awk_bfn_t* bfn; + ase_cstr_t errarg; ASE_ASSERT (MATCH(awk,TOKEN_IDENT)); @@ -2933,7 +2830,7 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line) &awk->prmfns.mmgr); if (name_dup == ASE_NULL) { - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } name_len = ASE_STR_LEN(&awk->token.name); @@ -2992,7 +2889,8 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line) if (nde == ASE_NULL) { ASE_AWK_FREE (awk, name_dup); - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3060,17 +2958,14 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line) return (ase_awk_nde_t*)nde; } - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("undefined identifier '%.*s'"), - name_len, name_dup); + errarg.ptr = name_dup; + errarg.len = name_len; + ase_awk_seterror (awk, ASE_AWK_EUNDEF, line, &errarg, 1); /* undefined variable */ ASE_AWK_FREE (awk, name_dup); ASE_AWK_FREE (awk, nde); - ase_awk_seterror_old (awk, ASE_AWK_EUNDEF, line, awk->errmsg); return ASE_NULL; } } @@ -3081,6 +2976,7 @@ static ase_awk_nde_t* __parse_hashidx ( ase_awk_nde_t* idx, * tmp, * last; ase_awk_nde_var_t* nde; ase_size_t idxa; + ase_cstr_t errarg; idx = ASE_NULL; last = ASE_NULL; @@ -3134,7 +3030,7 @@ static ase_awk_nde_t* __parse_hashidx ( if (nde == ASE_NULL) { ase_awk_clrpt (awk, idx); - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3203,11 +3099,10 @@ static ase_awk_nde_t* __parse_hashidx ( ase_awk_clrpt (awk, idx); ASE_AWK_FREE (awk, nde); - awk->prmfns.misc.sprintf ( - awk->prmfns.misc.custom_data, - awk->errmsg, ASE_COUNTOF(awk->errmsg), - ASE_T("undefined identifier '%.*s'"), name_len, name); - ase_awk_seterror_old (awk, ASE_AWK_EUNDEF, line, awk->errmsg); + errarg.ptr = name; + errarg.len = name_len; + + ase_awk_seterror (awk, ASE_AWK_EUNDEF, line, &errarg, 1); return ASE_NULL; } @@ -3282,8 +3177,7 @@ static ase_awk_nde_t* __parse_fncall ( { if (head != ASE_NULL) ase_awk_clrpt (awk, head); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3384,8 +3278,7 @@ static ase_awk_nde_t* __parse_if (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, then_part); ase_awk_clrpt (awk, test); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3442,8 +3335,7 @@ static ase_awk_nde_t* __parse_while (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, body); ase_awk_clrpt (awk, test); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3513,8 +3405,8 @@ static ase_awk_nde_t* __parse_for (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, init); ase_awk_clrpt (awk, body); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3617,8 +3509,8 @@ static ase_awk_nde_t* __parse_for (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, incr); ase_awk_clrpt (awk, body); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3647,9 +3539,7 @@ static ase_awk_nde_t* __parse_dowhile (ase_awk_t* awk, ase_size_t line) { ase_awk_clrpt (awk, body); - SET_ERROR_0 ( - awk, ASE_AWK_EWHILE, - ASE_T("'while' expected in place of '%.*s'")); + SET_ERROR_TOKEN (awk, ASE_AWK_EWHILE); return ASE_NULL; } @@ -3685,9 +3575,7 @@ static ase_awk_nde_t* __parse_dowhile (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, body); ase_awk_clrpt (awk, test); - SET_ERROR_0 ( - awk, ASE_AWK_ERPAREN, - ASE_T("right parenthesis expected in place of '%.*s'")); + SET_ERROR_TOKEN (awk, ASE_AWK_ERPAREN); return ASE_NULL; } @@ -3705,8 +3593,8 @@ static ase_awk_nde_t* __parse_dowhile (ase_awk_t* awk, ase_size_t line) ase_awk_clrpt (awk, body); ase_awk_clrpt (awk, test); - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3726,9 +3614,7 @@ static ase_awk_nde_t* __parse_break (ase_awk_t* awk, ase_size_t line) ASE_ASSERT (awk->token.prev.type == TOKEN_BREAK); if (awk->parse.depth.cur.loop <= 0) { - ase_awk_seterror_old ( - awk, ASE_AWK_EBREAK, line, - ASE_T("break statement outside a loop")); + ase_awk_seterror (awk, ASE_AWK_EBREAK, line, ASE_NULL, 0); return ASE_NULL; } @@ -3736,8 +3622,7 @@ static ase_awk_nde_t* __parse_break (ase_awk_t* awk, ase_size_t line) ASE_AWK_MALLOC (awk, ASE_SIZEOF(ase_awk_nde_break_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3755,9 +3640,7 @@ static ase_awk_nde_t* __parse_continue (ase_awk_t* awk, ase_size_t line) ASE_ASSERT (awk->token.prev.type == TOKEN_CONTINUE); if (awk->parse.depth.cur.loop <= 0) { - ase_awk_seterror_old ( - awk, ASE_AWK_ECONTINUE, line, - ASE_T("continue statement outside a loop")); + ase_awk_seterror (awk, ASE_AWK_ECONTINUE, line, ASE_NULL, 0); return ASE_NULL; } @@ -3765,8 +3648,7 @@ static ase_awk_nde_t* __parse_continue (ase_awk_t* awk, ase_size_t line) ASE_AWK_MALLOC (awk, ASE_SIZEOF(ase_awk_nde_continue_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3788,8 +3670,7 @@ static ase_awk_nde_t* __parse_return (ase_awk_t* awk, ase_size_t line) awk, ASE_SIZEOF(ase_awk_nde_return_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3827,8 +3708,7 @@ static ase_awk_nde_t* __parse_exit (ase_awk_t* awk, ase_size_t line) ASE_AWK_MALLOC (awk, ASE_SIZEOF(ase_awk_nde_exit_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3863,16 +3743,12 @@ static ase_awk_nde_t* __parse_next (ase_awk_t* awk, ase_size_t line) if (awk->parse.id.block == PARSE_BEGIN_BLOCK) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENEXT, line, - ASE_T("next statement in BEGIN block")); + ase_awk_seterror (awk, ASE_AWK_ENEXTBEG, line, ASE_NULL, 0); return ASE_NULL; } if (awk->parse.id.block == PARSE_END_BLOCK) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENEXT, line, - ASE_T("next statement in END block")); + ase_awk_seterror (awk, ASE_AWK_ENEXTEND, line, ASE_NULL, 0); return ASE_NULL; } @@ -3880,8 +3756,7 @@ static ase_awk_nde_t* __parse_next (ase_awk_t* awk, ase_size_t line) ASE_AWK_MALLOC (awk, ASE_SIZEOF(ase_awk_nde_next_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } nde->type = ASE_AWK_NDE_NEXT; @@ -3897,16 +3772,12 @@ static ase_awk_nde_t* __parse_nextfile (ase_awk_t* awk, ase_size_t line, int out if (awk->parse.id.block == PARSE_BEGIN_BLOCK) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENEXTFILE, line, - ASE_T("nextfile statement in BEGIN block")); + ase_awk_seterror (awk, ASE_AWK_ENEXTFBEG, line, ASE_NULL, 0); return ASE_NULL; } if (awk->parse.id.block == PARSE_END_BLOCK) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENEXTFILE, line, - ASE_T("nextfile statement in END block")); + ase_awk_seterror (awk, ASE_AWK_ENEXTFEND, line, ASE_NULL, 0); return ASE_NULL; } @@ -3914,8 +3785,7 @@ static ase_awk_nde_t* __parse_nextfile (ase_awk_t* awk, ase_size_t line, int out ASE_AWK_MALLOC (awk, ASE_SIZEOF(ase_awk_nde_nextfile_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -3935,9 +3805,7 @@ static ase_awk_nde_t* __parse_delete (ase_awk_t* awk, ase_size_t line) ASE_ASSERT (awk->token.prev.type == TOKEN_DELETE); if (!MATCH(awk,TOKEN_IDENT)) { - SET_ERROR_0 ( - awk, ASE_AWK_EIDENT, - ASE_T("identifier expected in place of '%.*s'")); + SET_ERROR_TOKEN (awk, ASE_AWK_EIDENT); return ASE_NULL; } @@ -3948,9 +3816,7 @@ static ase_awk_nde_t* __parse_delete (ase_awk_t* awk, ase_size_t line) { /* a normal identifier is expected */ ase_awk_clrpt (awk, var); - - ase_awk_seterror_old (awk, ASE_AWK_EIDENT, line, - ASE_T("'delete' not followed by a normal variable")); + ase_awk_seterror (awk, ASE_AWK_EDELETE, line, ASE_NULL, 0); return ASE_NULL; } @@ -3958,8 +3824,7 @@ static ase_awk_nde_t* __parse_delete (ase_awk_t* awk, ase_size_t line) awk, ASE_SIZEOF(ase_awk_nde_delete_t)); if (nde == ASE_NULL) { - ase_awk_seterror_old ( - awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -4098,7 +3963,7 @@ static ase_awk_nde_t* __parse_print (ase_awk_t* awk, ase_size_t line, int type) if (args != ASE_NULL) ase_awk_clrpt (awk, args); if (out != ASE_NULL) ase_awk_clrpt (awk, out); - ase_awk_seterror_old (awk, ASE_AWK_ENOMEM, line, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL, 0); return ASE_NULL; } @@ -4109,9 +3974,7 @@ static ase_awk_nde_t* __parse_print (ase_awk_t* awk, ase_size_t line, int type) if (type == ASE_AWK_NDE_PRINTF && args == ASE_NULL) { if (out != ASE_NULL) ase_awk_clrpt (awk, out); - ase_awk_seterror_old ( - awk, ASE_AWK_EPRINTFARG, line, - ASE_T("printf not followed by any arguments")); + ase_awk_seterror (awk, ASE_AWK_EPRINTFARG, line, ASE_NULL, 0); return ASE_NULL; } @@ -4197,7 +4060,7 @@ static int __get_token (ase_awk_t* awk) /* else { - ase_awk_seterror_old ( + ase_awk_seterror ( awk, ASE_AWK_ELXCHR, awk->token.line, ASE_T("floating point not followed by any valid digits")); return -1; @@ -4732,9 +4595,7 @@ static int __get_string ( if (c == ASE_CHAR_EOF) { - ase_awk_seterror_old ( - awk, ASE_AWK_EENDSTR, awk->token.line, - ASE_T("string not closed with a quote")); + SET_ERROR_TOKEN (awk, ASE_AWK_EENDSTR); return -1; } @@ -4893,9 +4754,7 @@ static int __get_char (ase_awk_t* awk) awk->src.shared.buf, ASE_COUNTOF(awk->src.shared.buf)); if (n <= -1) { - ase_awk_seterror_old ( - awk, ASE_AWK_ESINRD, 0, - ASE_T("cannot read the source input")); + ase_awk_seterror (awk, ASE_AWK_ESINRD, 0, ASE_NULL, 0); return -1; } @@ -4925,8 +4784,8 @@ static int __unget_char (ase_awk_t* awk, ase_cint_t c) { if (awk->src.lex.ungotc_count >= ASE_COUNTOF(awk->src.lex.ungotc)) { - ase_awk_seterror_old ( - awk, ASE_AWK_ELXUNG, awk->src.lex.line, ASE_NULL); + ase_awk_seterror ( + awk, ASE_AWK_ELXUNG, awk->src.lex.line, ASE_NULL, 0); return -1; } @@ -4973,9 +4832,9 @@ static int __skip_comment (ase_awk_t* awk) GET_CHAR_TO (awk, c); if (c == ASE_CHAR_EOF) { - ase_awk_seterror_old ( - awk, ASE_AWK_EENDCMT, awk->src.lex.line, - ASE_T("comment not properly closed")); + ase_awk_seterror ( + awk, ASE_AWK_EENDCMT, awk->src.lex.line, + ASE_NULL, 0); return -1; } @@ -4984,9 +4843,9 @@ static int __skip_comment (ase_awk_t* awk) GET_CHAR_TO (awk, c); if (c == ASE_CHAR_EOF) { - ase_awk_seterror_old ( + ase_awk_seterror ( awk, ASE_AWK_EENDCMT, awk->src.lex.line, - ASE_T("comment not properly closed")); + ASE_NULL, 0); return -1; } @@ -5096,9 +4955,7 @@ static int __deparse (ase_awk_t* awk) ASE_AWK_IO_OPEN, awk->src.ios.custom_data, ASE_NULL, 0); if (op <= -1) { - ase_awk_seterror_old ( - awk, ASE_AWK_ESOUTOP, 0, - ASE_T("cannot open the source output")); + ase_awk_seterror (awk, ASE_AWK_ESOUTOP, 0, ASE_NULL, 0); return -1; } @@ -5119,12 +4976,7 @@ static int __deparse (ase_awk_t* awk) goto exit_deparse; } -#define EXIT_DEPARSE(num) \ - do { \ - n = -1; \ - ase_awk_seterror_old (awk, num, 0, ASE_NULL); \ - goto exit_deparse; \ - } while(0) +#define EXIT_DEPARSE() do { n = -1; goto exit_deparse; } while(0) if (awk->tree.nglobals > awk->tree.nbglobals) { @@ -5132,7 +4984,9 @@ static int __deparse (ase_awk_t* awk) ASE_ASSERT (awk->tree.nglobals > 0); if (ase_awk_putsrcstr (awk, ASE_T("global ")) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + { + EXIT_DEPARSE (); + } for (i = awk->tree.nbglobals; i < awk->tree.nglobals - 1; i++) { @@ -5141,17 +4995,19 @@ static int __deparse (ase_awk_t* awk) 10, ASE_T("__global"), tmp, ASE_COUNTOF(tmp)); ASE_ASSERT (len != (ase_size_t)-1); if (ase_awk_putsrcstrx (awk, tmp, len) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + { + EXIT_DEPARSE (); + } */ if (ase_awk_putsrcstrx (awk, awk->parse.globals.buf[i].name, awk->parse.globals.buf[i].name_len) == -1) { - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } if (ase_awk_putsrcstr (awk, ASE_T(", ")) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } /* @@ -5159,27 +5015,29 @@ static int __deparse (ase_awk_t* awk) 10, ASE_T("__global"), tmp, ASE_COUNTOF(tmp)); ASE_ASSERT (len != (ase_size_t)-1); if (ase_awk_putsrcstrx (awk, tmp, len) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + { + EXIT_DEPARSE (); + } */ if (ase_awk_putsrcstrx (awk, awk->parse.globals.buf[i].name, awk->parse.globals.buf[i].name_len) == -1) { - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } if (awk->option & ASE_AWK_CRLF) { if (ase_awk_putsrcstr (awk, ASE_T(";\r\n\r\n")) == -1) { - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } } else { if (ase_awk_putsrcstr (awk, ASE_T(";\n\n")) == -1) { - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } } } @@ -5190,25 +5048,25 @@ static int __deparse (ase_awk_t* awk) if (ase_awk_map_walk (&awk->tree.afns, __deparse_func, &df) == -1) { - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } if (awk->tree.begin != ASE_NULL) { if (ase_awk_putsrcstr (awk, ASE_T("BEGIN ")) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + { + EXIT_DEPARSE (); + } - if (ase_awk_prnpt (awk, awk->tree.begin) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + if (ase_awk_prnpt (awk, awk->tree.begin) == -1) EXIT_DEPARSE (); if (awk->option & ASE_AWK_CRLF) { if (__put_char (awk, ASE_T('\r')) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } - if (__put_char (awk, ASE_T('\n')) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + if (__put_char (awk, ASE_T('\n')) == -1) EXIT_DEPARSE (); } chain = awk->tree.chain; @@ -5217,7 +5075,7 @@ static int __deparse (ase_awk_t* awk) if (chain->pattern != ASE_NULL) { if (ase_awk_prnptnpt (awk, chain->pattern) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } if (chain->action == ASE_NULL) @@ -5226,31 +5084,31 @@ static int __deparse (ase_awk_t* awk) if (awk->option & ASE_AWK_CRLF) { if (__put_char (awk, ASE_T('\r')) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } if (__put_char (awk, ASE_T('\n')) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } else { if (chain->pattern != ASE_NULL) { if (__put_char (awk, ASE_T(' ')) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } if (ase_awk_prnpt (awk, chain->action) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } if (awk->option & ASE_AWK_CRLF) { if (__put_char (awk, ASE_T('\r')) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } if (__put_char (awk, ASE_T('\n')) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); chain = chain->next; } @@ -5258,12 +5116,12 @@ static int __deparse (ase_awk_t* awk) if (awk->tree.end != ASE_NULL) { if (ase_awk_putsrcstr (awk, ASE_T("END ")) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); if (ase_awk_prnpt (awk, awk->tree.end) == -1) - EXIT_DEPARSE (ASE_AWK_ESOUTWR); + EXIT_DEPARSE (); } - if (__flush (awk) == -1) EXIT_DEPARSE (ASE_AWK_ESOUTWR); + if (__flush (awk) == -1) EXIT_DEPARSE (); exit_deparse: if (awk->src.ios.out ( @@ -5271,9 +5129,7 @@ exit_deparse: { if (n == 0) { - ase_awk_seterror_old ( - awk, ASE_AWK_ESOUTCL, 0, - ASE_T("cannot close the source output")); + ase_awk_seterror (awk, ASE_AWK_ESOUTCL, 0, ASE_NULL, 0); n = -1; } } @@ -5342,7 +5198,11 @@ static int __flush (ase_awk_t* awk) ASE_AWK_IO_WRITE, awk->src.ios.custom_data, &awk->src.shared.buf[awk->src.shared.buf_pos], awk->src.shared.buf_len - awk->src.shared.buf_pos); - if (n <= 0) return -1; + if (n <= 0) + { + ase_awk_seterror (awk, ASE_AWK_ESOUTWR, 0, ASE_NULL, 0); + return -1; + } awk->src.shared.buf_pos += n; } diff --git a/ase/awk/run.c b/ase/awk/run.c index 73850754..0120329d 100644 --- a/ase/awk/run.c +++ b/ase/awk/run.c @@ -1,5 +1,5 @@ /* - * $Id: run.c,v 1.341 2007-03-09 14:19:55 bacon Exp $ + * $Id: run.c,v 1.342 2007-03-10 11:58:35 bacon Exp $ * * {License} */ @@ -601,7 +601,7 @@ int ase_awk_run (ase_awk_t* awk, ase_awk_map_getsize(&awk->tree.afns) == 0) { /* if not, deny the run */ - ase_awk_seterror_old (awk, ASE_AWK_ENOPER, 0, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ENOPER, 0, ASE_NULL, 0); return -1; } @@ -646,13 +646,16 @@ int ase_awk_run (ase_awk_t* awk, * is updated with the run's error number */ if (runcbs == ASE_NULL) { - ase_awk_seterror_old ( - awk, run->errnum, run->errlin, run->errmsg); + awk->errnum = run->errnum; + awk->errlin = run->errlin; + + ase_strxcpy ( + awk->errmsg, ASE_COUNTOF(awk->errmsg), + run->errmsg); } else { - ase_awk_seterror_old ( - awk, ASE_AWK_ERUNTIME, 0, ASE_NULL); + ase_awk_seterror (awk, ASE_AWK_ERUNTIME, 0, ASE_NULL, 0); } } @@ -3375,7 +3378,8 @@ static ase_awk_val_t* __eval_binary (ase_awk_run_t* run, ase_awk_nde_t* nde) res = __binop_func[exp->opcode] (run, left, right); if (res == ASE_NULL) { - ase_awk_setrunerror_old (run, run->errnum, nde->line, ASE_NULL); + /* change the error line */ + run->errlin = nde->line; } ase_awk_refdownval (run, left); @@ -3499,7 +3503,8 @@ static ase_awk_val_t* __eval_binop_in ( ASE_ASSERT ( !"should never happen - in needs a plain variable"); - ase_awk_setrunerror_old (run, ASE_AWK_EINTERN, right->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_EINTERN, right->line, ASE_NULL, 0); return ASE_NULL; } @@ -4153,7 +4158,8 @@ static ase_awk_val_t* __eval_binop_div ( { if (l2 == 0) { - ase_awk_setrunerror_old (run, ASE_AWK_EDIVBY0, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_EDIVBY0, 0, ASE_NULL, 0); return ASE_NULL; } @@ -4215,7 +4221,8 @@ static ase_awk_val_t* __eval_binop_idiv ( { if (l2 == 0) { - ase_awk_setrunerror_old (run, ASE_AWK_EDIVBY0, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_EDIVBY0, 0, ASE_NULL, 0); return ASE_NULL; } res = ase_awk_makeintval ( @@ -4321,7 +4328,8 @@ static ase_awk_val_t* __eval_binop_exp ( } else if (l1 == 0) { - ase_awk_setrunerror_old (run, ASE_AWK_EDIVBY0, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_EDIVBY0, 0, ASE_NULL, 0); return ASE_NULL; } else @@ -4343,7 +4351,8 @@ static ase_awk_val_t* __eval_binop_exp ( } else if (r1 == 0.0) { - ase_awk_setrunerror_old (run, ASE_AWK_EDIVBY0, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_EDIVBY0, 0, ASE_NULL, 0); return ASE_NULL; } else @@ -4503,7 +4512,7 @@ static ase_awk_val_t* __eval_binop_match0 ( ((ase_awk_val_str_t*)right)->len, &errnum); if (rex_code == ASE_NULL) { - ase_awk_setrunerror_old (run, errnum, rline, ASE_NULL); + ase_awk_setrunerror (run, errnum, rline, ASE_NULL, 0); return ASE_NULL; } } @@ -4518,7 +4527,7 @@ static ase_awk_val_t* __eval_binop_match0 ( { ASE_AWK_FREE (run->awk, str); - ase_awk_setrunerror_old (run, errnum, rline, ASE_NULL); + ase_awk_setrunerror (run, errnum, rline, ASE_NULL, 0); return ASE_NULL; } @@ -4538,7 +4547,7 @@ static ase_awk_val_t* __eval_binop_match0 ( if (right->type != ASE_AWK_VAL_REX) ASE_AWK_FREE (run->awk, rex_code); - ase_awk_setrunerror_old (run, errnum, lline, ASE_NULL); + ase_awk_setrunerror (run, errnum, lline, ASE_NULL, 0); return ASE_NULL; } @@ -4548,8 +4557,8 @@ static ase_awk_val_t* __eval_binop_match0 ( if (right->type != ASE_AWK_VAL_REX) ASE_AWK_FREE (run->awk, rex_code); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, lline, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, lline, ASE_NULL, 0); return ASE_NULL; } } @@ -4574,8 +4583,7 @@ static ase_awk_val_t* __eval_binop_match0 ( if (right->type != ASE_AWK_VAL_REX) ASE_AWK_FREE (run->awk, rex_code); - ase_awk_setrunerror_old ( - run, errnum, lline, ASE_NULL); + ase_awk_setrunerror (run, errnum, lline, ASE_NULL, 0); return ASE_NULL; } @@ -4586,8 +4594,8 @@ static ase_awk_val_t* __eval_binop_match0 ( if (right->type != ASE_AWK_VAL_REX) ASE_AWK_FREE (run->awk, rex_code); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, lline, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, lline, ASE_NULL, 0); return ASE_NULL; } @@ -4683,8 +4691,8 @@ static ase_awk_val_t* __eval_unary (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); return ASE_NULL; } @@ -4728,8 +4736,9 @@ static ase_awk_val_t* __eval_incpre (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -4740,8 +4749,9 @@ static ase_awk_val_t* __eval_incpre (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -4773,8 +4783,9 @@ static ase_awk_val_t* __eval_incpre (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -4788,8 +4799,9 @@ static ase_awk_val_t* __eval_incpre (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -4800,8 +4812,9 @@ static ase_awk_val_t* __eval_incpre (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -4816,7 +4829,8 @@ static ase_awk_val_t* __eval_incpre (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_setrunerror ( - run, ASE_AWK_EOPERAND, nde->line, ASE_NULL, 0); + run, ASE_AWK_EOPERAND, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -4833,8 +4847,9 @@ static ase_awk_val_t* __eval_incpre (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -4896,8 +4911,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -4906,8 +4922,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_freeval (run, res, ase_true); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -4918,8 +4935,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -4928,8 +4946,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_freeval (run, res, ase_true); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -4944,7 +4963,8 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_setrunerror ( - run, ASE_AWK_EOPERAND, nde->line, ASE_NULL, 0); + run, ASE_AWK_EOPERAND, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -4955,7 +4975,8 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -4964,8 +4985,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_freeval (run, res, ase_true); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -4976,8 +4998,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -4986,8 +5009,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_freeval (run, res, ase_true); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -5002,8 +5026,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -5012,8 +5037,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_freeval (run, res, ase_true); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -5024,8 +5050,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -5035,7 +5062,8 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) ase_awk_refdownval (run, left); ase_awk_freeval (run, res, ase_true); ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -5050,7 +5078,8 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_setrunerror ( - run, ASE_AWK_EOPERAND, nde->line, ASE_NULL, 0); + run, ASE_AWK_EOPERAND, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -5061,7 +5090,8 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -5070,8 +5100,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_awk_refdownval (run, left); ase_awk_freeval (run, res, ase_true); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -5082,8 +5113,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) if (res == ASE_NULL) { ase_awk_refdownval (run, left); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -5093,8 +5125,9 @@ static ase_awk_val_t* __eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) ase_awk_refdownval (run, left); ase_awk_freeval (run, res, ase_true); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } } @@ -5285,16 +5318,16 @@ static ase_awk_val_t* __eval_call ( #endif if (__raw_push(run,(void*)run->stack_base) == -1) { - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); return ASE_NULL; } if (__raw_push(run,(void*)saved_stack_top) == -1) { __raw_pop (run); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); return ASE_NULL; } @@ -5303,8 +5336,8 @@ static ase_awk_val_t* __eval_call ( { __raw_pop (run); __raw_pop (run); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); return ASE_NULL; } @@ -5314,8 +5347,8 @@ static ase_awk_val_t* __eval_call ( __raw_pop (run); __raw_pop (run); __raw_pop (run); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); return ASE_NULL; } @@ -5374,8 +5407,8 @@ static ase_awk_val_t* __eval_call ( ase_awk_refdownval (run, v); UNWIND_RUN_STACK (run, nargs); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); return ASE_NULL; } @@ -5395,8 +5428,9 @@ static ase_awk_val_t* __eval_call ( if (__raw_push(run,ase_awk_val_nil) == -1) { UNWIND_RUN_STACK (run, nargs); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return ASE_NULL; } @@ -5493,8 +5527,9 @@ static int __get_reference ( tgt->id.name_len, ase_awk_val_nil); if (pair == ASE_NULL) { - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return -1; } } @@ -5534,8 +5569,9 @@ static int __get_reference ( tgt->id.name_len, ase_awk_val_nil); if (pair == ASE_NULL) { - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, + ASE_NULL, 0); return -1; } } @@ -5625,8 +5661,8 @@ static ase_awk_val_t** __get_reference_indexed ( tmp = ase_awk_makemapval (run); if (tmp == ASE_NULL) { - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); return ASE_NULL; } @@ -5655,8 +5691,8 @@ static ase_awk_val_t** __get_reference_indexed ( if (pair == ASE_NULL) { ASE_AWK_FREE (run->awk, str); - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); return ASE_NULL; } @@ -6829,7 +6865,8 @@ ase_char_t* ase_awk_format ( else { ase_awk_refdownval (run, v); - ase_awk_setrunerror_old (run, ASE_AWK_EVALTYPE, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_EVALTYPE, 0, ASE_NULL, 0); return ASE_NULL; } diff --git a/ase/awk/val.c b/ase/awk/val.c index ec4109a6..4c443501 100644 --- a/ase/awk/val.c +++ b/ase/awk/val.c @@ -1,5 +1,5 @@ /* - * $Id: val.c,v 1.114 2007-03-06 14:51:53 bacon Exp $ + * $Id: val.c,v 1.115 2007-03-10 11:58:35 bacon Exp $ * * {License} */ @@ -481,7 +481,7 @@ ase_char_t* ase_awk_valtostr ( v->type); #endif - ase_awk_setrunerror_old (run, ASE_AWK_EVALTYPE, 0, ASE_NULL); + ase_awk_setrunerror (run, ASE_AWK_EVALTYPE, 0, ASE_NULL, 0); return ASE_NULL; } @@ -495,7 +495,8 @@ static ase_char_t* __str_to_str ( tmp = ase_strxdup (str, str_len, &run->awk->prmfns.mmgr); if (tmp == ASE_NULL) { - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } @@ -510,7 +511,8 @@ static ase_char_t* __str_to_str ( n = ase_str_ncat (buf, str, str_len); if (n == (ase_size_t)-1) { - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } @@ -537,8 +539,8 @@ static ase_char_t* __val_int_to_str ( run->awk, 2 * ASE_SIZEOF(ase_char_t)); if (tmp == ASE_NULL) { - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } @@ -552,8 +554,8 @@ static ase_char_t* __val_int_to_str ( if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf); if (ase_str_cat (buf, ASE_T("0")) == (ase_size_t)-1) { - ase_awk_setrunerror_old ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } @@ -572,7 +574,8 @@ static ase_char_t* __val_int_to_str ( run->awk, (l + 1) * ASE_SIZEOF(ase_char_t)); if (tmp == ASE_NULL) { - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } @@ -590,7 +593,8 @@ static ase_char_t* __val_int_to_str ( if (ase_str_nccat ( buf, ASE_T(' '), l) == (ase_size_t)-1) { - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } } @@ -636,14 +640,14 @@ static ase_char_t* __val_real_to_str ( if (ase_str_open (&out, 256, &run->awk->prmfns.mmgr) == ASE_NULL) { - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } if (ase_str_open (&fbu, 256, &run->awk->prmfns.mmgr) == ASE_NULL) { ase_str_close (&out); - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } @@ -670,7 +674,8 @@ static ase_char_t* __val_real_to_str ( { ase_str_close (&fbu); ase_str_close (&out); - ase_awk_setrunerror_old (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); return ASE_NULL; } @@ -738,7 +743,7 @@ int ase_awk_valtonum ( v->type); #endif - ase_awk_setrunerror_old (run, ASE_AWK_EVALTYPE, 0, ASE_NULL); + ase_awk_setrunerror (run, ASE_AWK_EVALTYPE, 0, ASE_NULL, 0); return -1; /* error */ } diff --git a/ase/test/awk/awk.c b/ase/test/awk/awk.c index fc5afff7..768bc083 100644 --- a/ase/test/awk/awk.c +++ b/ase/test/awk/awk.c @@ -1,5 +1,5 @@ /* - * $Id: awk.c,v 1.186 2007-03-09 14:19:55 bacon Exp $ + * $Id: awk.c,v 1.187 2007-03-10 11:59:04 bacon Exp $ */ #include @@ -716,7 +716,7 @@ static int awk_main (int argc, ase_char_t* argv[]) ase_awk_runios_t runios; ase_awk_prmfns_t prmfns; struct awk_src_io src_io = { NULL, NULL }; - int opt, i, file_count = 0, errnum; + int opt, i, file_count = 0; #ifdef _WIN32 struct mmgr_data_t mmgr_data; #endif