From fad47e1027331ab0c63f7d42ac63f6c424b3eafd Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Tue, 2 Jan 2007 12:25:18 +0000 Subject: [PATCH] *** empty log message *** --- ase/awk/awk.h | 16 ++-- ase/awk/err.c | 4 +- ase/awk/extio.c | 78 ++++++++------- ase/awk/func.c | 24 ++--- ase/awk/jni.c | 10 +- ase/awk/rec.c | 46 +++++---- ase/awk/run.c | 249 ++++++++++++++++++++++-------------------------- ase/awk/val.c | 26 ++--- 8 files changed, 225 insertions(+), 228 deletions(-) diff --git a/ase/awk/awk.h b/ase/awk/awk.h index fc0ec289..35245146 100644 --- a/ase/awk/awk.h +++ b/ase/awk/awk.h @@ -1,5 +1,5 @@ /* - * $Id: awk.h,v 1.176 2007-01-01 15:07:25 bacon Exp $ + * $Id: awk.h,v 1.177 2007-01-02 12:25:18 bacon Exp $ */ #ifndef _ASE_AWK_AWK_H_ @@ -308,7 +308,7 @@ enum ASE_AWK_EPOSIDX, /* wrong position index */ ASE_AWK_EARGTF, /* too few arguments */ ASE_AWK_EARGTM, /* too many arguments */ - ASE_AWK_ENOSUCHFN, /* no such function */ + ASE_AWK_EFNNONE, /* no such function */ ASE_AWK_ENOTIDX, /* variable not indexable */ ASE_AWK_ENOTDEL, /* variable not deletable */ ASE_AWK_ENOTMAP, /* value not a map */ @@ -322,14 +322,14 @@ enum ASE_AWK_EVALTYPE, /* wrong value type */ ASE_AWK_ENEXTCALL, /* next called from BEGIN or END */ ASE_AWK_ENEXTFILECALL, /* nextfile called from BEGIN or END */ - ASE_AWK_EIOIMPL, /* wrong user io handler implementation */ - ASE_AWK_EBFNIMPL, /* wrong builtin function implementation */ - ASE_AWK_EBFNFAIL, /* builtin function handler failed */ - ASE_AWK_ENOSUCHIO, /* no such io name found */ - ASE_AWK_EIOHANDLER, /* i/o callback returned an error */ + ASE_AWK_EBFNUSER, /* wrong builtin function implementation */ + ASE_AWK_EBFNIMPL, /* builtin function handler failed */ + ASE_AWK_EIOUSER, /* wrong user io handler implementation */ + ASE_AWK_EIONONE, /* no such io name found */ + ASE_AWK_EIOIMPL, /* i/o callback returned an error */ ASE_AWK_EIONAME, /* invalid i/o name */ ASE_AWK_EFMTARG, /* arguments to format string not sufficient */ - ASE_AWK_EFMTCONV, /* recursion detected in format conversion */ + ASE_AWK_EFMTCNV, /* recursion detected in format conversion */ ASE_AWK_ECONVFMTCHAR, /* an invalid character found in CONVFMT */ ASE_AWK_EOFMTCHAR, /* an invalid character found in OFMT */ diff --git a/ase/awk/err.c b/ase/awk/err.c index 08eb5fc7..6d1f981f 100644 --- a/ase/awk/err.c +++ b/ase/awk/err.c @@ -1,5 +1,5 @@ /* - * $Id: err.c,v 1.67 2006-12-30 08:54:43 bacon Exp $ + * $Id: err.c,v 1.68 2007-01-02 12:25:18 bacon Exp $ */ #include @@ -156,9 +156,9 @@ const ase_char_t* ase_awk_geterrstr (int errnum) ASE_T("wrong 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 user-defined io handler"), ASE_T("wrong implementation of built-in function handler"), ASE_T("built-in function handler returned an error"), + ASE_T("wrong implementation of user-defined io handler"), ASE_T("no such io name found"), ASE_T("i/o handler returned an error"), ASE_T("invalid i/o name"), diff --git a/ase/awk/extio.c b/ase/awk/extio.c index 35e6386b..9e8fa1b7 100644 --- a/ase/awk/extio.c +++ b/ase/awk/extio.c @@ -1,5 +1,5 @@ /* - * $Id: extio.c,v 1.68 2006-12-30 08:54:43 bacon Exp $ + * $Id: extio.c,v 1.69 2007-01-02 12:25:18 bacon Exp $ */ #include @@ -100,7 +100,7 @@ int ase_awk_readextio ( if (handler == ASE_NULL) { /* no io handler provided */ - run->errnum = ASE_AWK_EIOIMPL; /* TODO: change the error code */ + ase_awk_setrunerror (run, ASE_AWK_EIOUSER, 0, ASE_NULL); return -1; } @@ -117,7 +117,7 @@ int ase_awk_readextio ( run->awk, ASE_SIZEOF(ase_awk_extio_t)); if (p == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -125,7 +125,7 @@ int ase_awk_readextio ( if (p->name == ASE_NULL) { ASE_AWK_FREE (run->awk, p); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -147,7 +147,7 @@ int ase_awk_readextio ( { ASE_AWK_FREE (run->awk, p->name); ASE_AWK_FREE (run->awk, p); - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } @@ -218,12 +218,11 @@ int ase_awk_readextio ( break; } - n = handler (ASE_AWK_IO_READ, p, - p->in.buf, ASE_COUNTOF(p->in.buf)); + n = handler (ASE_AWK_IO_READ, p, p->in.buf, ASE_COUNTOF(p->in.buf)); if (n <= -1) { /* handler error. getline should return -1 */ - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); ret = -1; break; } @@ -309,7 +308,7 @@ int ase_awk_readextio ( if (ase_awk_str_ccat (buf, c) == (ase_size_t)-1) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); ret = -1; break; } @@ -343,7 +342,7 @@ int ase_awk_readextio ( nr = ase_awk_makeintval (run, lv + 1); if (nr == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); ret = -1; } else @@ -409,7 +408,7 @@ int ase_awk_writeextio_str ( if (handler == ASE_NULL) { /* no io handler provided */ - run->errnum = ASE_AWK_EIOIMPL; /* TODO: change the error code */ + ase_awk_setrunerror (run, ASE_AWK_EIOUSER, 0, ASE_NULL); return -1; } @@ -438,7 +437,7 @@ int ase_awk_writeextio_str ( run->awk, ASE_SIZEOF(ase_awk_extio_t)); if (p == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -446,7 +445,7 @@ int ase_awk_writeextio_str ( if (p->name == ASE_NULL) { ASE_AWK_FREE (run->awk, p); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -465,7 +464,7 @@ int ase_awk_writeextio_str ( { ASE_AWK_FREE (run->awk, p->name); ASE_AWK_FREE (run->awk, p); - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } @@ -504,7 +503,7 @@ int ase_awk_writeextio_str ( if (n <= -1) { - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } @@ -545,7 +544,7 @@ int ase_awk_flushextio ( if (handler == ASE_NULL) { /* no io handler provided */ - run->errnum = ASE_AWK_EIOIMPL; /* TODO: change the error code */ + ase_awk_setrunerror (run, ASE_AWK_EIOUSER, 0, ASE_NULL); return -1; } @@ -559,7 +558,7 @@ int ase_awk_flushextio ( if (n <= -1) { - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } @@ -572,7 +571,7 @@ int ase_awk_flushextio ( if (ok) return 0; /* there is no corresponding extio for name */ - run->errnum = ASE_AWK_ENOSUCHIO; + ase_awk_setrunerror (run, ASE_AWK_EIONONE, 0, ASE_NULL); return -1; } @@ -599,7 +598,7 @@ int ase_awk_nextextio_read ( if (handler == ASE_NULL) { /* no io handler provided */ - run->errnum = ASE_AWK_EIOIMPL; /* TODO: change the error code */ + ase_awk_setrunerror (run, ASE_AWK_EIOUSER, 0, ASE_NULL); return -1; } @@ -615,7 +614,7 @@ int ase_awk_nextextio_read ( /* something is totally wrong */ ASE_AWK_ASSERT (run->awk, !"should never happen - cannot find the relevant extio entry"); - run->errnum = ASE_AWK_EINTERN; + ase_awk_setrunerror (run, ASE_AWK_EINTERN, 0, ASE_NULL); return -1; } @@ -628,8 +627,7 @@ int ase_awk_nextextio_read ( n = handler (ASE_AWK_IO_NEXT, p, ASE_NULL, 0); if (n <= -1) { - /* TODO: is this errnum correct? */ - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } @@ -677,7 +675,7 @@ int ase_awk_nextextio_write ( if (handler == ASE_NULL) { /* no io handler provided */ - run->errnum = ASE_AWK_EIOIMPL; /* TODO: change the error code */ + ase_awk_setrunerror (run, ASE_AWK_EIOUSER, 0, ASE_NULL); return -1; } @@ -694,7 +692,7 @@ int ase_awk_nextextio_write ( ASE_AWK_ASSERT (run->awk, !"should never happen - cannot find the relevant extio entry"); - run->errnum = ASE_AWK_EINTERN; + ase_awk_setrunerror (run, ASE_AWK_EINTERN, 0, ASE_NULL); return -1; } @@ -707,8 +705,20 @@ int ase_awk_nextextio_write ( n = handler (ASE_AWK_IO_NEXT, p, ASE_NULL, 0); if (n <= -1) { - /* TODO: is this errnum correct? */ - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); + return -1; + } + + if (p->out.eos) + { + /* no more streams. */ + return 0; + } + + n = handler (ASE_AWK_IO_NEXT, p, ASE_NULL, 0); + if (n <= -1) + { + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } @@ -752,7 +762,7 @@ int ase_awk_closeextio_read ( if (handler == ASE_NULL) { /* no io handler provided */ - run->errnum = ASE_AWK_EIOIMPL; /* TODO: change the error code */ + ase_awk_setrunerror (run, ASE_AWK_EIOUSER, 0, ASE_NULL); return -1; } @@ -769,7 +779,7 @@ int ase_awk_closeextio_read ( if (handler (ASE_AWK_IO_CLOSE, p, ASE_NULL, 0) <= -1) { /* this is not a run-time error.*/ - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } } @@ -787,7 +797,7 @@ int ase_awk_closeextio_read ( } /* this is not a run-time error */ - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } @@ -814,7 +824,7 @@ int ase_awk_closeextio_write ( if (handler == ASE_NULL) { /* no io handler provided */ - run->errnum = ASE_AWK_EIOIMPL; /* TODO: change the error code */ + ase_awk_setrunerror (run, ASE_AWK_EIOUSER, 0, ASE_NULL); return -1; } @@ -831,7 +841,7 @@ int ase_awk_closeextio_write ( if (handler (ASE_AWK_IO_CLOSE, p, ASE_NULL, 0) <= -1) { /* this is not a run-time error.*/ - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } } @@ -849,7 +859,7 @@ int ase_awk_closeextio_write ( } /* this is not a run-time error */ - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } @@ -871,7 +881,7 @@ int ase_awk_closeextio (ase_awk_run_t* run, const ase_char_t* name) if (handler (ASE_AWK_IO_CLOSE, p, ASE_NULL, 0) <= -1) { /* this is not a run-time error.*/ - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } } @@ -889,7 +899,7 @@ int ase_awk_closeextio (ase_awk_run_t* run, const ase_char_t* name) } /* this is not a run-time error */ - run->errnum = ASE_AWK_EIOHANDLER; + ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL); return -1; } diff --git a/ase/awk/func.c b/ase/awk/func.c index d5aac15a..7dffa4c4 100644 --- a/ase/awk/func.c +++ b/ase/awk/func.c @@ -1,5 +1,5 @@ /* - * $Id: func.c,v 1.85 2006-12-17 14:56:06 bacon Exp $ + * $Id: func.c,v 1.86 2007-01-02 12:25:18 bacon Exp $ */ #include @@ -51,14 +51,14 @@ void* ase_awk_addbfn ( if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL) { - awk->errnum = ASE_AWK_EEXIST; + ase_awk_seterror (awk, ASE_AWK_EEXIST, 0, ASE_NULL); return ASE_NULL; } p = (ase_awk_bfn_t*) ASE_AWK_MALLOC (awk, ASE_SIZEOF(ase_awk_bfn_t)); if (p == ASE_NULL) { - awk->errnum = ASE_AWK_ENOMEM; + ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -66,7 +66,7 @@ void* ase_awk_addbfn ( if (p->name.ptr == ASE_NULL) { ASE_AWK_FREE (awk, p); - awk->errnum = ASE_AWK_ENOMEM; + ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -82,7 +82,7 @@ void* ase_awk_addbfn ( { ASE_AWK_FREE (awk, p->name.ptr); ASE_AWK_FREE (awk, p); - awk->errnum = ASE_AWK_ENOMEM; + ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } } @@ -117,7 +117,7 @@ int ase_awk_delbfn (ase_awk_t* awk, const ase_char_t* name, ase_size_t name_len) pp = p; } - awk->errnum = ASE_AWK_ENOENT; + ase_awk_seterror (awk, ASE_AWK_ENOENT, 0, ASE_NULL); return -1; } @@ -223,7 +223,7 @@ static int __bfn_close ( } n = ase_awk_closeextio (run, name); - if (n == -1 && run->errnum != ASE_AWK_EIOHANDLER) + if (n == -1 && run->errnum != ASE_AWK_EIOIMPL) { if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, name); @@ -254,8 +254,8 @@ static int __flush_extio ( n2 = ase_awk_flushextio (run, extio, name); if (n2 == -1) { - if (run->errnum == ASE_AWK_EIOHANDLER) n = -1; - else if (run->errnum == ASE_AWK_ENOSUCHIO) + if (run->errnum == ASE_AWK_EIOIMPL) n = -1; + else if (run->errnum == ASE_AWK_EIONONE) { if (n != 0) n = -2; } @@ -284,13 +284,13 @@ static int __bfn_fflush ( /* flush the console output */ n = ase_awk_flushextio (run, ASE_AWK_OUT_CONSOLE, ASE_T("")); if (n == -1 && - run->errnum != ASE_AWK_EIOHANDLER && - run->errnum != ASE_AWK_ENOSUCHIO) + run->errnum != ASE_AWK_EIOIMPL && + run->errnum != ASE_AWK_EIONONE) { return -1; } - /* fflush() should return -1 on EIOHANDLER and ENOSUCHIO */ + /* fflush() should return -1 on EIOIMPL and EIONONE */ } else { diff --git a/ase/awk/jni.c b/ase/awk/jni.c index e526fae2..15a94e83 100644 --- a/ase/awk/jni.c +++ b/ase/awk/jni.c @@ -1,5 +1,5 @@ /* - * $Id: jni.c,v 1.43 2006-12-19 14:20:30 bacon Exp $ + * $Id: jni.c,v 1.44 2007-01-02 12:25:18 bacon Exp $ */ #include @@ -1013,7 +1013,7 @@ static int __handle_bfn ( * so clear it to prevent it from being thrown */ if ((*env)->ExceptionOccurred (env)) (*env)->ExceptionClear (env); - ase_awk_setrunerrnum (run, ASE_AWK_EBFNIMPL); + ase_awk_setrunerrnum (run, ASE_AWK_EBFNUSER); return -1; } @@ -1074,10 +1074,10 @@ static int __handle_bfn ( (*env)->ExceptionDescribe (env); (*env)->ExceptionClear (env); (*env)->DeleteLocalRef (env, args); - ase_awk_setrunerrnum (run, ASE_AWK_EBFNFAIL); + ase_awk_setrunerrnum (run, ASE_AWK_EBFNIMPL); // TODO: - //ase_awk_setrunerror (run, ASE_AWK_EBFNFAIL, "EXCEPTION:...."); + //ase_awk_setrunerror (run, ASE_AWK_EBFNIMPL, "EXCEPTION:...."); return -1; } @@ -1195,7 +1195,7 @@ static int __handle_bfn ( else { (*env)->DeleteLocalRef (env, ret); - ase_awk_setrunerrnum (run, ASE_AWK_EBFNIMPL); + ase_awk_setrunerrnum (run, ASE_AWK_EBFNUSER); return -1; } diff --git a/ase/awk/rec.c b/ase/awk/rec.c index a2fe204c..f7aa01d3 100644 --- a/ase/awk/rec.c +++ b/ase/awk/rec.c @@ -1,5 +1,5 @@ /* - * $Id: rec.c,v 1.11 2006-12-13 14:16:12 bacon Exp $ + * $Id: rec.c,v 1.12 2007-01-02 12:25:18 bacon Exp $ */ #include @@ -30,7 +30,8 @@ int ase_awk_setrec ( if (ase_awk_str_ncpy (&run->inrec.line, str, len) == (ase_size_t)-1) { ase_awk_clrrec (run, ase_false); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } } @@ -39,7 +40,7 @@ int ase_awk_setrec ( if (v == ASE_NULL) { ase_awk_clrrec (run, ase_false); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -53,7 +54,7 @@ int ase_awk_setrec ( { errnum = run->errnum; ase_awk_clrrec (run, ase_false); - run->errnum = errnum; + ase_awk_setrunerror (run, errnum, 0, ASE_NULL); return -1; } } @@ -63,7 +64,7 @@ int ase_awk_setrec ( { errnum = run->errnum; ase_awk_clrrec (run, ase_false); - run->errnum = errnum; + ase_awk_setrunerror (run, errnum, 0, ASE_NULL); return -1; } @@ -74,7 +75,7 @@ int ase_awk_setrec ( if (v == ASE_NULL) { ase_awk_clrrec (run, ase_false); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -140,7 +141,7 @@ static int __split_record (ase_awk_run_t* run) { if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free); - run->errnum = errnum; + ase_awk_setrunerror (run, errnum, 0, ASE_NULL); return -1; } } @@ -169,7 +170,7 @@ static int __split_record (ase_awk_run_t* run) if (tmp == ASE_NULL) { if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -198,7 +199,7 @@ static int __split_record (ase_awk_run_t* run) { if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free); - run->errnum = errnum; + ase_awk_setrunerror (run, errnum, 0, ASE_NULL); return -1; } } @@ -214,7 +215,7 @@ static int __split_record (ase_awk_run_t* run) if (run->inrec.flds[run->inrec.nflds].val == ASE_NULL) { if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -231,7 +232,7 @@ static int __split_record (ase_awk_run_t* run) v = ase_awk_makeintval (run, (ase_long_t)nflds); if (v == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -309,7 +310,8 @@ static int __recomp_record_fields ( ASE_SIZEOF(*run->inrec.flds) * max); if (tmp == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } } @@ -319,7 +321,8 @@ static int __recomp_record_fields ( run->awk, ASE_SIZEOF(*run->inrec.flds) * max); if (tmp == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } if (run->inrec.flds != ASE_NULL) @@ -347,7 +350,8 @@ static int __recomp_record_fields ( run->global.ofs.ptr, run->global.ofs.len) == (ase_size_t)-1) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } } @@ -364,14 +368,16 @@ static int __recomp_record_fields ( if (ase_awk_str_ncat ( &run->inrec.line, str, len) == (ase_size_t)-1) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } tmp = ase_awk_makestrval (run, str,len); if (tmp == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -392,7 +398,8 @@ static int __recomp_record_fields ( if (ase_awk_str_cat ( &run->inrec.line, ASE_T("")) == (ase_size_t)-1) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -418,7 +425,8 @@ static int __recomp_record_fields ( if (ase_awk_str_ncat (&run->inrec.line, tmp->buf, tmp->len) == (ase_size_t)-1) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } } @@ -431,7 +439,7 @@ static int __recomp_record_fields ( v = ase_awk_makeintval (run, (ase_long_t)max); if (v == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } diff --git a/ase/awk/run.c b/ase/awk/run.c index 7e3092c9..d440650f 100644 --- a/ase/awk/run.c +++ b/ase/awk/run.c @@ -1,5 +1,5 @@ /* - * $Id: run.c,v 1.315 2007-01-01 15:10:37 bacon Exp $ + * $Id: run.c,v 1.316 2007-01-02 12:24:45 bacon Exp $ */ #include @@ -27,12 +27,6 @@ enum exit_level_t EXIT_ABORT }; -#define PANIC(run,code) \ - do { (run)->errnum = (code); return ASE_NULL; } while (0) - -#define PANIC_I(run,code) \ - do { (run)->errnum = (code); return -1; } while (0) - #define DEFAULT_CONVFMT ASE_T("%.6g") #define DEFAULT_OFMT ASE_T("%.6g") #define DEFAULT_OFS ASE_T(" ") @@ -279,7 +273,7 @@ static int __set_global ( idx != ASE_AWK_GLOBAL_ARGV) { /* TODO: better error code */ - run->errnum = ASE_AWK_ESCALARTOMAP; + ase_awk_setrunerror (run, ASE_AWK_ESCALARTOMAP, 0, ASE_NULL); return -1; } @@ -297,7 +291,7 @@ static int __set_global ( if (convfmt_ptr[i] == ASE_T('\0')) { ASE_AWK_FREE (run->awk, convfmt_ptr); - run->errnum = ASE_AWK_ECONVFMTCHAR; + ase_awk_setrunerror (run, ASE_AWK_ECONVFMTCHAR, 0, ASE_NULL); return -1; } } @@ -397,7 +391,7 @@ static int __set_global ( if (ofmt_ptr[i] == ASE_T('\0')) { ASE_AWK_FREE (run->awk, ofmt_ptr); - run->errnum = ASE_AWK_ECONVFMTCHAR; + ase_awk_setrunerror (run, ASE_AWK_ECONVFMTCHAR, 0, ASE_NULL); return -1; } } @@ -522,7 +516,7 @@ int ase_awk_setfilename ( tmp = ase_awk_makestrval (run, name, len); if (tmp == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } } @@ -548,7 +542,7 @@ int ase_awk_setofilename ( tmp = ase_awk_makestrval (run, name, len); if (tmp == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } } @@ -827,6 +821,8 @@ static int __init_run ( run->fcache_count = 0; run->errnum = ASE_AWK_ENOERR; + run->errlin = 0; + run->errmsg[0] = ASE_T('\0'); run->inrec.buf_pos = 0; run->inrec.buf_len = 0; @@ -1050,7 +1046,7 @@ static int __build_runarg ( v_argv = ase_awk_makemapval (run); if (v_argv == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } ase_awk_refupval (run, v_argv); @@ -1064,7 +1060,7 @@ static int __build_runarg ( if (v_tmp == ASE_NULL) { ase_awk_refdownval (run, v_argv); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -1088,7 +1084,7 @@ static int __build_runarg ( * map will be freeed when v_argv is freed */ ase_awk_refdownval (run, v_argv); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } } @@ -1098,7 +1094,7 @@ static int __build_runarg ( if (v_argc == ASE_NULL) { ase_awk_refdownval (run, v_argv); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -1153,7 +1149,7 @@ static int __update_fnr (ase_awk_run_t* run, ase_size_t fnr) tmp = ase_awk_makeintval (run, fnr); if (tmp == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -1202,7 +1198,7 @@ static int __set_globals_to_default (ase_awk_run_t* run) tmp = ase_awk_makestrval0 (run, gtab[i].str); if (tmp == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } } @@ -1255,7 +1251,8 @@ static int __run_main ( * the successful __raw_push. it is ok because * the values pushed so far are all ase_awk_val_nil */ run->stack_top = saved_stack_top; - PANIC_I (run, ASE_AWK_ENOMEM); + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); + return -1; } } @@ -1328,7 +1325,10 @@ static int __run_main ( } __cleanup_globals (run); run->stack_top = saved_stack_top; - PANIC_I (run, ASE_AWK_ENOMEM); + + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); + return -1; } tmp->type = ASE_AWK_NDE_STR; @@ -1347,7 +1347,10 @@ static int __run_main ( } __cleanup_globals (run); run->stack_top = saved_stack_top; - PANIC_I (run, ASE_AWK_ENOMEM); + + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); + return -1; } tmp->len = runarg[i].len; @@ -1388,7 +1391,10 @@ static int __run_main ( /* pops off global variables in a decent way */ __cleanup_globals (run); __raw_pop_times (run, run->awk->tree.nglobals); - PANIC_I (run, ASE_AWK_ENOMEM); + + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); + return -1; } if (__raw_push(run,(void*)saved_stack_top) == -1) @@ -1396,7 +1402,10 @@ static int __run_main ( run->stack_top = saved_stack_top; __cleanup_globals (run); __raw_pop_times (run, run->awk->tree.nglobals); - PANIC_I (run, ASE_AWK_ENOMEM); + + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); + return -1; } /* secure space for a return value */ @@ -1405,7 +1414,10 @@ static int __run_main ( run->stack_top = saved_stack_top; __cleanup_globals (run); __raw_pop_times (run, run->awk->tree.nglobals); - PANIC_I (run, ASE_AWK_ENOMEM); + + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); + return -1; } /* secure space for nargs */ @@ -1414,7 +1426,10 @@ static int __run_main ( run->stack_top = saved_stack_top; __cleanup_globals (run); __raw_pop_times (run, run->awk->tree.nglobals); - PANIC_I (run, ASE_AWK_ENOMEM); + + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); + return -1; } run->stack_base = saved_stack_top; @@ -1510,8 +1525,7 @@ static int __run_main ( static int __run_pattern_blocks (ase_awk_run_t* run) { -// ase_ssize_t n; - ase_bool_t need_to_close = ase_false; + int n; run->inrec.buf_pos = 0; run->inrec.buf_len = 0; @@ -1521,65 +1535,21 @@ static int __run_pattern_blocks (ase_awk_run_t* run) while (run->exit_level != EXIT_GLOBAL && run->exit_level != EXIT_ABORT) { - int x; - run->exit_level = EXIT_NONE; - x = __read_record (run); - if (x == -1) - { - int saved = run->errnum; - - /* don't care about the result of input close */ -// ase_awk_closeextio_read ( -// run, ASE_AWK_IN_CONSOLE, ASE_T("")); - - run->errnum = saved; - return -1; - } - - need_to_close = ase_true; - if (x == 0) break; /* end of input */ + n = __read_record (run); + if (n == -1) return -1; /* error */ + if (n == 0) break; /* end of input */ __update_fnr (run, run->global.fnr + 1); if (run->awk->tree.chain != ASE_NULL) { if (__run_pattern_block_chain ( - run, run->awk->tree.chain) == -1) - { - int saved = run->errnum; - -// ase_awk_closeextio_read ( -// run, ASE_AWK_IN_CONSOLE, ASE_T("")); - - run->errnum = saved; - return -1; - } + run, run->awk->tree.chain) == -1) return -1; } } - /* In case of getline, the code would make getline return -1, - * and make this function return 0 after having checked - * if closextio has returned -1 and errnum has been set to - * ASE_AWK_EIOHANDLER. But this part of the code ends the input for - * the implicit pattern-block loop, which is totally different - * from getline. so it returns -1 as long as closeextio returns - * -1 regardless of the value of errnum. */ - if (need_to_close) - { -/* TODO: do i have to close exito here... - n = ase_awk_closeextio_read ( - run, ASE_AWK_IN_CONSOLE, ASE_T("")); - if (n == -1) - { - if (run->errnum == ASE_AWK_EIOHANDLER) - PANIC_I (run, ASE_AWK_ECINCL); - else return -1; - } -*/ - } - return 0; } @@ -1705,7 +1675,7 @@ static int __run_block (ase_awk_run_t* run, ase_awk_nde_blk_t* nde) if (run->depth.max.block > 0 && run->depth.cur.block >= run->depth.max.block) { - run->errnum = ASE_AWK_ERECUR; + ase_awk_setrunerror (run, ASE_AWK_ERECUR, nde->line, ASE_NULL); return -1;; } @@ -1738,7 +1708,7 @@ static int __run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde) { ase_awk_refdownval (run, run->inrec.d0); - if (run->errnum == ASE_AWK_EIOHANDLER) + if (run->errnum == ASE_AWK_EIOIMPL) { ase_awk_setrunerror ( run, ASE_AWK_ECOUTDT, nde->line, ASE_NULL); @@ -1753,7 +1723,7 @@ static int __run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde) { ase_awk_refdownval (run, run->inrec.d0); - if (run->errnum == ASE_AWK_EIOHANDLER) + if (run->errnum == ASE_AWK_EIOIMPL) { ase_awk_setrunerror ( run, ASE_AWK_ECOUTDT, nde->line, ASE_NULL); @@ -2308,8 +2278,9 @@ static int __run_nextinfile (ase_awk_run_t* run, ase_awk_nde_nextfile_t* nde) n = ase_awk_nextextio_read (run, ASE_AWK_IN_CONSOLE, ASE_T("")); if (n == -1) { - if (run->errnum == ASE_AWK_EIOHANDLER) + if (run->errnum == ASE_AWK_EIOIMPL) run->errnum = ASE_AWK_ECINNX; + ase_awk_setrunerror ( run, run->errnum, nde->line, ASE_NULL); return -1; @@ -2341,8 +2312,9 @@ static int __run_nextoutfile (ase_awk_run_t* run, ase_awk_nde_nextfile_t* nde) n = ase_awk_nextextio_write (run, ASE_AWK_OUT_CONSOLE, ASE_T("")); if (n == -1) { - if (run->errnum == ASE_AWK_EIOHANDLER) + if (run->errnum == ASE_AWK_EIOIMPL) run->errnum = ASE_AWK_ECOUTNX; + ase_awk_setrunerror ( run, run->errnum, nde->line, ASE_NULL); return -1; @@ -2683,7 +2655,7 @@ static int __run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde) run, nde->out_type, dst, ASE_AWK_STR_BUF(&run->inrec.line), ASE_AWK_STR_LEN(&run->inrec.line)); - if (n < 0 /*&& run->errnum != ASE_AWK_EIOHANDLER*/) + if (n < 0 /*&& run->errnum != ASE_AWK_EIOIMPL*/) { if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); ase_awk_setrunerror ( @@ -2713,7 +2685,7 @@ static int __run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde) run, nde->out_type, dst, run->global.ofs.ptr, run->global.ofs.len); - if (n < 0 /*&& run->errnum != ASE_AWK_EIOHANDLER*/) + if (n < 0 /*&& run->errnum != ASE_AWK_EIOIMPL*/) { if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); ase_awk_setrunerror ( @@ -2733,7 +2705,7 @@ static int __run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde) ase_awk_refupval (run, v); n = ase_awk_writeextio_val (run, nde->out_type, dst, v); - if (n < 0 /*&& run->errnum != ASE_AWK_EIOHANDLER*/) + if (n < 0 /*&& run->errnum != ASE_AWK_EIOIMPL*/) { if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); ase_awk_refdownval (run, v); @@ -2750,7 +2722,7 @@ static int __run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde) n = ase_awk_writeextio_str ( run, nde->out_type, dst, run->global.ors.ptr, run->global.ors.len); - if (n < 0 /*&& run->errnum != ASE_AWK_EIOHANDLER*/) + if (n < 0 /*&& run->errnum != ASE_AWK_EIOIMPL*/) { if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); ase_awk_setrunerror (run, run->errnum, nde->line, ASE_NULL); @@ -2857,7 +2829,7 @@ static int __run_printf (ase_awk_run_t* run, ase_awk_nde_print_t* nde) /* the remaining arguments are ignored as the format cannot * contain any % characters */ n = ase_awk_writeextio_val (run, nde->out_type, dst, v); - if (n < 0 /*&& run->errnum != ASE_AWK_EIOHANDLER*/) + if (n < 0 /*&& run->errnum != ASE_AWK_EIOIMPL*/) { if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); ase_awk_refdownval (run, v); @@ -2903,7 +2875,7 @@ static int __formatted_output ( if (ptr == ASE_NULL) return -1; n = ase_awk_writeextio_str (run, out_type, dst, ptr, len); - if (n < 0 /*&& run->errnum != ASE_AWK_EIOHANDLER*/) return -1; + if (n < 0 /*&& run->errnum != ASE_AWK_EIOIMPL*/) return -1; return 0; } @@ -3280,6 +3252,7 @@ static ase_awk_val_t* __do_assignment_map ( if (ase_awk_setglobal (run, var->id.idxa, tmp) == -1) { ase_awk_refdownval (run, tmp); + ase_awk_setrunerror (run, run->errnum, var->line, ASE_NULL); return ASE_NULL; } ase_awk_refdownval (run, tmp); @@ -3363,7 +3336,12 @@ static ase_awk_val_t* __do_assignment_pos ( { str = ase_awk_valtostr ( run, val, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) return ASE_NULL; + if (str == ASE_NULL) + { + ase_awk_setrunerror ( + run, run->errnum, pos->line, ASE_NULL); + return ASE_NULL; + } } n = ase_awk_setrec (run, (ase_size_t)lv, str, len); @@ -3836,12 +3814,9 @@ static int __cmp_int_str ( } } - str = ase_awk_valtostr (run, left, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) - { - ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); - return CMP_ERROR; - } + str = ase_awk_valtostr ( + run, left, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); + if (str == ASE_NULL) return CMP_ERROR; if (run->global.ignorecase) { @@ -3910,12 +3885,9 @@ static int __cmp_real_str ( return 0; } - str = ase_awk_valtostr (run, left, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) - { - ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); - return CMP_ERROR; - } + str = ase_awk_valtostr ( + run, left, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); + if (str == ASE_NULL) return CMP_ERROR; if (run->global.ignorecase) { @@ -5275,7 +5247,7 @@ static ase_awk_val_t* __eval_afn (ase_awk_run_t* run, ase_awk_nde_t* nde) if (pair == ASE_NULL) { ase_awk_setrunerror ( - run, ASE_AWK_ENOSUCHFN, nde->line, ASE_NULL); + run, ASE_AWK_EFNNONE, nde->line, ASE_NULL); return ASE_NULL; } @@ -6038,13 +6010,15 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde) if (n < 0) { - if (run->errnum != ASE_AWK_EIOHANDLER) + if (run->errnum != ASE_AWK_EIOIMPL) { ase_awk_str_close (&buf); + ase_awk_setrunerror ( + run, run->errnum, nde->line, ASE_NULL); return ASE_NULL; } - /* if run->errnum == ASE_AWK_EIOHANDLER, + /* if run->errnum == ASE_AWK_EIOIMPL, * make getline return -1 */ n = -1; } @@ -6158,11 +6132,10 @@ static int __read_record (ase_awk_run_t* run) run, ASE_AWK_IN_CONSOLE, ASE_T(""), &run->inrec.line); if (n < 0) { - int errnum = run->errnum; + int saved = run->errnum; ase_awk_clrrec (run, ase_false); - run->errnum = - (errnum == ASE_AWK_EIOHANDLER)? - ASE_AWK_ECINDT: errnum; + if (saved == ASE_AWK_EIOIMPL) saved = ASE_AWK_ECINDT; + ase_awk_setrunerror (run, saved, 0, ASE_NULL); return -1; } /* @@ -6221,7 +6194,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds) if (ase_awk_str_open (&tmp, ASE_AWK_STR_LEN(&run->inrec.line), run->awk) == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -6232,7 +6205,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds) if (ofs_free != ASE_NULL) ASE_AWK_FREE (run->awk, ofs_free); if (nflds > 1) ase_awk_refdownval (run, v); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -6243,7 +6216,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds) if (ofs_free != ASE_NULL) ASE_AWK_FREE (run->awk, ofs_free); if (nflds > 1) ase_awk_refdownval (run, v); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } } @@ -6255,7 +6228,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds) run, ASE_AWK_STR_BUF(&tmp), ASE_AWK_STR_LEN(&tmp)); if (v == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; } @@ -6296,6 +6269,8 @@ static ase_char_t* __idxnde_to_str ( if (str == ASE_NULL) { ase_awk_refdownval (run, idx); + ase_awk_setrunerror ( + run, run->errnum, nde->line, ASE_NULL); return ASE_NULL; } @@ -6342,6 +6317,8 @@ static ase_char_t* __idxnde_to_str ( { ase_awk_refdownval (run, idx); ase_awk_str_close (&idxstr); + ase_awk_setrunerror ( + run, run->errnum, nde->line, ASE_NULL); return ASE_NULL; } @@ -6370,7 +6347,7 @@ ase_char_t* ase_awk_format ( do { \ if (ase_awk_str_ccat (out, (c)) == -1) \ { \ - run->errnum = ASE_AWK_ENOMEM; \ + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); \ return ASE_NULL; \ } \ } while (0) @@ -6379,7 +6356,7 @@ ase_char_t* ase_awk_format ( do { \ if (ase_awk_str_ccat (fbu, (c)) == -1) \ { \ - run->errnum = ASE_AWK_ENOMEM; \ + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); \ return ASE_NULL; \ } \ } while (0) @@ -6448,7 +6425,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = ase_awk_getarg (run, stack_arg_idx); @@ -6459,7 +6436,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = val; @@ -6498,7 +6475,7 @@ ase_char_t* ase_awk_format ( GROW (&run->format.tmp); if (run->format.tmp.ptr == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -6551,7 +6528,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = ase_awk_getarg (run, stack_arg_idx); @@ -6562,7 +6539,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = val; @@ -6601,7 +6578,7 @@ ase_char_t* ase_awk_format ( GROW (&run->format.tmp); if (run->format.tmp.ptr == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -6671,7 +6648,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = ase_awk_getarg (run, stack_arg_idx); @@ -6682,7 +6659,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = val; @@ -6723,7 +6700,7 @@ ase_char_t* ase_awk_format ( GROW (&run->format.tmp); if (run->format.tmp.ptr == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -6758,7 +6735,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = ase_awk_getarg (run, stack_arg_idx); @@ -6769,7 +6746,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = val; @@ -6801,7 +6778,7 @@ ase_char_t* ase_awk_format ( GROW (&run->format.tmp); if (run->format.tmp.ptr == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -6829,7 +6806,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = ase_awk_getarg (run, stack_arg_idx); @@ -6840,7 +6817,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = val; @@ -6881,7 +6858,7 @@ ase_char_t* ase_awk_format ( else { ase_awk_refdownval (run, v); - run->errnum = ASE_AWK_EVALTYPE; + ase_awk_setrunerror (run, ASE_AWK_EVALTYPE, 0, ASE_NULL); return ASE_NULL; } @@ -6895,7 +6872,7 @@ ase_char_t* ase_awk_format ( if (ase_awk_str_ccat (out, ASE_T(' ')) == -1) { ase_awk_refdownval (run, v); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } width--; @@ -6907,7 +6884,7 @@ ase_char_t* ase_awk_format ( if (ase_awk_str_ccat (out, ch) == -1) { ase_awk_refdownval (run, v); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } } @@ -6919,7 +6896,7 @@ ase_char_t* ase_awk_format ( if (ase_awk_str_ccat (out, ASE_T(' ')) == -1) { ase_awk_refdownval (run, v); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } width--; @@ -6938,7 +6915,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = ase_awk_getarg (run, stack_arg_idx); @@ -6949,7 +6926,7 @@ ase_char_t* ase_awk_format ( { if (stack_arg_idx >= nargs_on_stack) { - run->errnum = ASE_AWK_EFMTARG; + ase_awk_setrunerror (run, ASE_AWK_EFMTARG, 0, ASE_NULL); return ASE_NULL; } v = val; @@ -6977,7 +6954,7 @@ ase_char_t* ase_awk_format ( if (v == val) { ase_awk_refdownval (run, v); - run->errnum = ASE_AWK_EFMTCONV; + ase_awk_setrunerror (run, ASE_AWK_EFMTCNV, 0, ASE_NULL); return ASE_NULL; } @@ -7004,7 +6981,7 @@ ase_char_t* ase_awk_format ( if (str_free != ASE_NULL) ASE_AWK_FREE (run->awk, str_free); ase_awk_refdownval (run, v); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } width--; @@ -7018,7 +6995,7 @@ ase_char_t* ase_awk_format ( if (str_free != ASE_NULL) ASE_AWK_FREE (run->awk, str_free); ase_awk_refdownval (run, v); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } } @@ -7032,7 +7009,7 @@ ase_char_t* ase_awk_format ( if (ase_awk_str_ccat (out, ASE_T(' ')) == -1) { ase_awk_refdownval (run, v); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } width--; diff --git a/ase/awk/val.c b/ase/awk/val.c index 076e5e64..eedee5a2 100644 --- a/ase/awk/val.c +++ b/ase/awk/val.c @@ -1,5 +1,5 @@ /* - * $Id: val.c,v 1.101 2006-12-24 17:21:24 bacon Exp $ + * $Id: val.c,v 1.102 2007-01-02 12:25:18 bacon Exp $ */ #include @@ -470,7 +470,7 @@ ase_char_t* ase_awk_valtostr ( ASE_T("ERROR: WRONG VALUE TYPE [%d] in ase_awk_valtostr\n"), v->type); - run->errnum = ASE_AWK_EVALTYPE; + ase_awk_setrunerror (run, ASE_AWK_EVALTYPE, 0, ASE_NULL); return ASE_NULL; } @@ -484,7 +484,7 @@ static ase_char_t* __str_to_str ( tmp = ase_awk_strxdup (run->awk, str, str_len); if (tmp == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -499,7 +499,7 @@ static ase_char_t* __str_to_str ( n = ase_awk_str_ncat (buf, str, str_len); if (n == (ase_size_t)-1) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -526,7 +526,8 @@ static ase_char_t* __val_int_to_str ( run->awk, 2 * ASE_SIZEOF(ase_char_t)); if (tmp == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -540,7 +541,8 @@ static ase_char_t* __val_int_to_str ( if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_awk_str_clear (buf); if (ase_awk_str_cat (buf, ASE_T("0")) == (ase_size_t)-1) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror ( + run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -559,7 +561,7 @@ static ase_char_t* __val_int_to_str ( run->awk, (l + 1) * ASE_SIZEOF(ase_char_t)); if (tmp == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -577,7 +579,7 @@ static ase_char_t* __val_int_to_str ( if (ase_awk_str_nccat ( buf, ASE_T(' '), l) == (ase_size_t)-1) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } } @@ -623,14 +625,14 @@ static ase_char_t* __val_real_to_str ( if (ase_awk_str_open (&out, 256, run->awk) == ASE_NULL) { - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } if (ase_awk_str_open (&fbu, 256, run->awk) == ASE_NULL) { ase_awk_str_close (&out); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -657,7 +659,7 @@ static ase_char_t* __val_real_to_str ( { ase_awk_str_close (&fbu); ase_awk_str_close (&out); - run->errnum = ASE_AWK_ENOMEM; + ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -725,7 +727,7 @@ int ase_awk_valtonum ( v->type); #endif - run->errnum = ASE_AWK_EVALTYPE; + ase_awk_setrunerror (run, ASE_AWK_EVALTYPE, 0, ASE_NULL); return -1; /* error */ }