From 035bc48265337e202e7616b6fe4fa988276748b6 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sun, 11 Nov 2007 00:30:00 +0000 Subject: [PATCH] Recovered from cvs revision 2007-11-10 10:28:00 --- ase/awk/extio.c | 42 +++-- ase/awk/func.c | 9 +- ase/awk/jni.c | 162 ++++++++---------- ase/awk/msw-cl.mak | 2 +- ase/awk/parse.c | 57 +++++- ase/awk/parse.h | 3 +- ase/awk/rex.c | 10 +- ase/awk/run.c | 17 +- ase/awk/tree.c | 71 +++++--- ase/awk/val.c | 44 +---- ase/cmn/types.h | 5 +- ase/test/awk/Awk.cpp | 6 +- ase/test/awk/awk.c | 12 +- ase/test/awk/err-001.out | 2 +- ase/test/awk/err-003.out | 2 +- ase/test/awk/err-004.out | 2 +- ase/test/awk/err-005.out | 2 +- ase/test/awk/err-006.out | 2 +- ase/test/awk/err-007.out | 2 +- ase/test/awk/err-008.out | 2 +- ase/test/awk/err-009.out | 2 +- ase/test/awk/err-010.out | 2 +- ase/test/awk/err-011.out | 2 +- ase/test/awk/err-012.out | 2 +- ase/test/awk/err-013.out | 2 +- ase/test/awk/err-014.out | 2 +- ase/test/awk/err-015.out | 2 +- ase/test/awk/err-016.out | 2 +- ase/test/awk/err-017.out | 2 +- ase/test/awk/err-018.out | 2 +- ase/test/awk/err-019.out | 2 +- ase/test/awk/err-020.out | 2 +- ase/test/awk/err-021.out | 2 +- ase/test/awk/err-022.out | 2 +- ase/test/awk/makefile.msw.cl | 43 ----- .../awk/{makefile.msw.bcc => msw-bcc.mak} | 0 ase/test/awk/msw-cl.mak | 80 +++++++++ 37 files changed, 331 insertions(+), 274 deletions(-) delete mode 100644 ase/test/awk/makefile.msw.cl rename ase/test/awk/{makefile.msw.bcc => msw-bcc.mak} (100%) create mode 100644 ase/test/awk/msw-cl.mak diff --git a/ase/awk/extio.c b/ase/awk/extio.c index d4aaea09..41205b93 100644 --- a/ase/awk/extio.c +++ b/ase/awk/extio.c @@ -1,5 +1,5 @@ /* - * $Id: extio.c,v 1.8 2007/10/28 06:12:37 bacon Exp $ + * $Id: extio.c,v 1.9 2007/11/09 07:43:42 bacon Exp $ * * {License} */ @@ -80,7 +80,8 @@ int ase_awk_readextio ( { ase_awk_extio_t* p = run->extio.chain; ase_awk_io_t handler; - int extio_type, extio_mode, extio_mask, n, ret; + int extio_type, extio_mode, extio_mask, ret, n; + ase_ssize_t x; ase_awk_val_t* rs; ase_char_t* rs_ptr; ase_size_t rs_len; @@ -117,8 +118,7 @@ int ase_awk_readextio ( run->awk, ASE_SIZEOF(ase_awk_extio_t)); if (p == ASE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); return -1; } @@ -126,8 +126,7 @@ int ase_awk_readextio ( if (p->name == ASE_NULL) { ASE_AWK_FREE (run->awk, p); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); return -1; } @@ -146,8 +145,8 @@ int ase_awk_readextio ( ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); - n = handler (ASE_AWK_IO_OPEN, p, ASE_NULL, 0); - if (n <= -1) + x = handler (ASE_AWK_IO_OPEN, p, ASE_NULL, 0); + if (x <= -1) { ASE_AWK_FREE (run->awk, p->name); ASE_AWK_FREE (run->awk, p); @@ -166,12 +165,12 @@ int ase_awk_readextio ( p->next = run->extio.chain; run->extio.chain = p; - /* usually, n == 0 indicates that it has reached the end + /* usually, x == 0 indicates that it has reached the end * of the input. the user io handler can return 0 for the * open request if it doesn't have any files to open. One * advantage of doing this would be that you can skip the * entire pattern-block matching and exeuction. */ - if (n == 0) + if (x == 0) { p->in.eos = ase_true; return 0; @@ -429,7 +428,8 @@ int ase_awk_writeextio_str ( { ase_awk_extio_t* p = run->extio.chain; ase_awk_io_t handler; - int extio_type, extio_mode, extio_mask, n; + int extio_type, extio_mode, extio_mask; + ase_ssize_t n; ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map)); ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mode_map)); @@ -569,7 +569,8 @@ int ase_awk_flushextio ( { ase_awk_extio_t* p = run->extio.chain; ase_awk_io_t handler; - int extio_type, /*extio_mode,*/ extio_mask, n; + int extio_type, /*extio_mode,*/ extio_mask; + ase_ssize_t n; ase_bool_t ok = ase_false; ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map)); @@ -623,7 +624,8 @@ int ase_awk_nextextio_read ( { ase_awk_extio_t* p = run->extio.chain; ase_awk_io_t handler; - int extio_type, /*extio_mode,*/ extio_mask, n; + int extio_type, /*extio_mode,*/ extio_mask; + ase_ssize_t n; ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_type_map)); ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mode_map)); @@ -679,6 +681,7 @@ int ase_awk_nextextio_read ( * set the eos flags so that the next call to nextextio_read * will return 0 without executing the handler */ p->in.eos = ase_true; + return 0; } else { @@ -689,9 +692,9 @@ int ase_awk_nextextio_read ( /* also the previous input buffer must be reset */ p->in.pos = 0; p->in.len = 0; - } - return n; + return 1; + } } int ase_awk_nextextio_write ( @@ -699,7 +702,8 @@ int ase_awk_nextextio_write ( { ase_awk_extio_t* p = run->extio.chain; ase_awk_io_t handler; - int extio_type, /*extio_mode,*/ extio_mask, n; + int extio_type, /*extio_mode,*/ extio_mask; + ase_ssize_t n; ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map)); ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mode_map)); @@ -755,15 +759,15 @@ int ase_awk_nextextio_write ( * set the eos flags so that the next call to nextextio_write * will return 0 without executing the handler */ p->out.eos = ase_true; + return 0; } else { /* as the next stream has been opened successfully, * the eof flag should be cleared if set */ p->out.eof = ase_false; + return 1; } - - return n; } int ase_awk_closeextio_read ( @@ -930,7 +934,7 @@ void ase_awk_clearextio (ase_awk_run_t* run) { ase_awk_extio_t* next; ase_awk_io_t handler; - int n; + ase_ssize_t n; while (run->extio.chain != ASE_NULL) { diff --git a/ase/awk/func.c b/ase/awk/func.c index cbdafe25..7888f78c 100644 --- a/ase/awk/func.c +++ b/ase/awk/func.c @@ -1,5 +1,5 @@ /* - * $Id: func.c,v 1.19 2007/11/07 14:40:37 bacon Exp $ + * $Id: func.c,v 1.20 2007/11/09 07:43:42 bacon Exp $ * * {License} */ @@ -560,11 +560,14 @@ static int bfn_substr ( } if (ase_awk_getoption(run->awk) & ASE_AWK_BASEONE) lindex = lindex - 1; - if (lindex >= len) lindex = len; + if (lindex >= (ase_long_t)len) lindex = (ase_long_t)len; else if (lindex < 0) lindex = 0; if (lcount < 0) lcount = 0; - else if (lcount > len - lindex) lcount = len - lindex; + else if (lcount > (ase_long_t)len - lindex) + { + lcount = (ase_long_t)len - lindex; + } r = ase_awk_makestrval (run, &str[lindex], (ase_size_t)lcount); if (r == ASE_NULL) diff --git a/ase/awk/jni.c b/ase/awk/jni.c index f8bda088..59942a48 100644 --- a/ase/awk/jni.c +++ b/ase/awk/jni.c @@ -1,5 +1,5 @@ /* - * $Id: jni.c,v 1.48 2007/11/08 15:08:06 bacon Exp $ + * $Id: jni.c,v 1.50 2007/11/09 15:08:41 bacon Exp $ * * {License} */ @@ -67,6 +67,8 @@ static ase_ssize_t write_source ( static ase_ssize_t process_extio ( int cmd, void* arg, ase_char_t* data, ase_size_t count); +static ase_char_t* dup_str ( + ase_awk_t* awk, const jchar* str, ase_size_t len); static int get_str ( JNIEnv* env, ase_awk_t* awk, jstring str, const jchar** jptr, ase_char_t** aptr, jsize* outlen); @@ -286,6 +288,7 @@ static void throw_exception ( jstring except_msg; jthrowable except_obj; ase_size_t len; + jsize chunk; except_class = (*env)->FindClass (env, CLASS_EXCEPTION); if (except_class == ASE_NULL) @@ -311,14 +314,16 @@ static void throw_exception ( } len = ase_strlen(msg); - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) + chunk = (len > ASE_TYPE_MAX(jsize))? ASE_TYPE_MAX(jsize): (jsize)len; + + if (chunk > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) { - ase_size_t i; + jsize i; #if defined(_WIN32) && defined(__DMC__) - jchar* tmp = (jchar*) GlobalAlloc (GMEM_FIXED, ASE_SIZEOF(jchar)*len); + jchar* tmp = (jchar*) GlobalAlloc (GMEM_FIXED, ASE_SIZEOF(jchar)*chunk); #else - jchar* tmp = (jchar*) malloc (ASE_SIZEOF(jchar)*len); + jchar* tmp = (jchar*) malloc (ASE_SIZEOF(jchar)*chunk); #endif if (tmp == ASE_NULL) { @@ -333,8 +338,8 @@ static void throw_exception ( return; } - for (i = 0; i < len; i++) tmp[i] = (jchar)msg[i]; - except_msg = (*env)->NewString (env, tmp, len); + for (i = 0; i < chunk; i++) tmp[i] = (jchar)msg[i]; + except_msg = (*env)->NewString (env, tmp, chunk); #if defined(_WIN32) && defined(__DMC__) GlobalFree ((HGLOBAL)tmp); #else @@ -343,7 +348,7 @@ static void throw_exception ( } else { - except_msg = (*env)->NewString (env, (jchar*)msg, len); + except_msg = (*env)->NewString (env, (jchar*)msg, chunk); } if (except_msg == ASE_NULL) @@ -389,15 +394,15 @@ static void throw_exception ( throw_exception ( \ env, \ ase_awk_geterrmsg(awk), \ - ase_awk_geterrnum(awk), \ - ase_awk_geterrlin(awk)) + (jint)ase_awk_geterrnum(awk), \ + (jint)ase_awk_geterrlin(awk)) #define THROW_RUN_EXCEPTION(env,run) \ throw_exception ( \ env, \ ase_awk_getrunerrmsg(run), \ - ase_awk_getrunerrnum(run), \ - ase_awk_getrunerrlin(run)) + (jint)ase_awk_getrunerrnum(run), \ + (jint)ase_awk_getrunerrlin(run)) static jboolean is_debug (ase_awk_t* awk) @@ -603,33 +608,6 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_parse (JNIEnv* env, jobject obj, jlong a (*env)->DeleteLocalRef (env, run_data.context_object); \ } while (0) -static ase_char_t* java_strxdup (ase_awk_t* awk, const jchar* str, jint len) -{ - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - ase_char_t* tmp; - ase_size_t i; - - tmp = (ase_char_t*) ase_awk_malloc (awk, (len+1) * ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) return ASE_NULL; - - for (i = 0; i < (ase_size_t)len; i++) tmp[i] = (ase_char_t)str[i]; - tmp[i] = ASE_T('\0'); - - return tmp; - } - else - { - ase_char_t* tmp; - - tmp = (ase_char_t*) ase_awk_malloc (awk, (len+1) * ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) return ASE_NULL; - - ase_strncpy (tmp, (ase_char_t*)str, (ase_size_t)len); - return tmp; - } -} - static void on_run_start (ase_awk_run_t* run, void* custom) { run_data_t* run_data; @@ -689,7 +667,7 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj, jlong awk ase_char_t* mmm; ase_awk_runarg_t* runarg = ASE_NULL; - ase_size_t len, i; + jsize len, i, j; const jchar* ptr; awk = (ase_awk_t*) awkid; @@ -794,8 +772,6 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj, jlong awk if (len > 0) { - ase_size_t i; - ptr = (*env)->GetStringChars (env, mfn, JNI_FALSE); if (ptr == ASE_NULL) { @@ -864,8 +840,6 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj, jlong awk tmp = (*env)->GetStringChars (env, obj, JNI_FALSE); if (tmp == ASE_NULL) { - ase_size_t j; - for (j = 0; j < i; j++) ase_awk_free (awk, runarg[j].ptr); ase_awk_free (awk, runarg); @@ -879,11 +853,9 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj, jlong awk return; } - runarg[i].ptr = java_strxdup (awk, tmp, runarg[i].len); + runarg[i].ptr = dup_str (awk, tmp, runarg[i].len); if (runarg[i].ptr == ASE_NULL) { - ase_size_t j; - for (j = 0; j < i; j++) ase_awk_free (awk, runarg[j].ptr); ase_awk_free (awk, runarg); @@ -923,8 +895,8 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj, jlong awk throw_exception ( env, run_data.errmsg, - run_data.errnum, - run_data.errlin); + (jint)run_data.errnum, + (jint)run_data.errlin); } else THROW_AWK_EXCEPTION (env, awk); return; @@ -1087,9 +1059,8 @@ static ase_ssize_t java_write_source ( jcharArray array; jchar* tmp; jint ret; - ase_size_t i; ase_awk_t* awk; - jsize chunk; + jsize chunk, i; class = (*env)->GetObjectClass(env, obj); handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); @@ -1362,9 +1333,8 @@ static ase_ssize_t java_write_extio ( jcharArray array; jchar* tmp; jint ret; - ase_size_t i; ase_awk_t* awk; - jsize chunk; + jsize chunk, i; class = (*env)->GetObjectClass(env, obj); handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); @@ -1590,15 +1560,19 @@ static int handle_bfn ( jmethodID method; jthrowable throwable; jstring name; - jint i, nargs; + jsize i, nargs; jobjectArray args; jobject arg, ret; ase_awk_val_t* v; jlong vi; - run_data = ase_awk_getruncustomdata (run); - nargs = ase_awk_getnargs (run); + ase_size_t nargs_ase; + awk = ase_awk_getrunawk (run); + run_data = ase_awk_getruncustomdata (run); + + nargs_ase = ase_awk_getnargs (run); + nargs = (nargs_ase > ASE_TYPE_MAX(jsize))? ASE_TYPE_MAX(jsize): (jsize)nargs_ase; env = run_data->env; obj = run_data->obj; @@ -1982,7 +1956,8 @@ JNIEXPORT jstring JNICALL Java_ase_awk_Awk_getword ( { ase_awk_t* awk; const jchar* ojp = ASE_NULL; - jsize olen = 0, nlen; + jsize olen = 0; + ase_size_t nlen; ase_char_t* oap, * nap; jstring ret; @@ -2409,37 +2384,13 @@ JNIEXPORT jstring JNICALL Java_ase_awk_Argument_getstrval (JNIEnv* env, jobject return ret; } - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - jchar* tmp; - ase_size_t i; - - tmp = (jchar*) ase_awk_malloc (awk, ASE_SIZEOF(jchar)*len); - if (tmp == ASE_NULL) - { - ase_awk_free (awk, str); - goto nomem; - } - for (i = 0; i < len; i++) tmp[i] = (jchar)str[i]; - ret = (*env)->NewString (env, tmp, len); - ase_awk_free (awk, tmp); - } - else - { - ret = (*env)->NewString (env, (jchar*)str, len); - } - + ret = new_str (env, awk, str, len); ase_awk_free (awk, str); if (ret == ASE_NULL) { -nomem: - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - } - + if (is_debug(awk)) (*env)->ExceptionDescribe (env); + (*env)->ExceptionClear (env); THROW_NOMEM_EXCEPTION (env); } @@ -2949,6 +2900,33 @@ JNIEXPORT void JNICALL Java_ase_awk_Return_clearval (JNIEnv* env, jobject obj, j (*env)->SetLongField (env, obj, run_data->return_valid, (jlong)0); } +static ase_char_t* dup_str (ase_awk_t* awk, const jchar* str, ase_size_t len) +{ + if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) + { + ase_char_t* tmp; + ase_size_t i; + + tmp = (ase_char_t*) ase_awk_malloc (awk, (len+1) * ASE_SIZEOF(ase_char_t)); + if (tmp == ASE_NULL) return ASE_NULL; + + for (i = 0; i < (ase_size_t)len; i++) tmp[i] = (ase_char_t)str[i]; + tmp[i] = ASE_T('\0'); + + return tmp; + } + else + { + ase_char_t* tmp; + + tmp = (ase_char_t*) ase_awk_malloc (awk, (len+1) * ASE_SIZEOF(ase_char_t)); + if (tmp == ASE_NULL) return ASE_NULL; + + ase_strncpy (tmp, (ase_char_t*)str, len); + return tmp; + } +} + static int get_str ( JNIEnv* env, ase_awk_t* awk, jstring str, const jchar** jptr, ase_char_t** aptr, jsize* outlen) @@ -3005,20 +2983,22 @@ static jstring new_str ( JNIEnv* env, ase_awk_t* awk, const ase_char_t* ptr, ase_size_t len) { jstring ret; - - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) + jsize i, chunk; + + chunk = (len > ASE_TYPE_MAX(jsize))? ASE_TYPE_MAX(jsize): (jsize)len; + if (chunk > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) { - ase_size_t i; - jchar* tmp = (jchar*) ase_awk_malloc (awk, ASE_SIZEOF(jchar)*len); + jchar* tmp = (jchar*) ase_awk_malloc (awk, ASE_SIZEOF(jchar)*chunk); if (tmp == ASE_NULL) return ASE_NULL; - for (i = 0; i < len; i++) tmp[i] = (jchar)ptr[i]; - ret = (*env)->NewString (env, tmp, len); + for (i = 0; i < chunk; i++) tmp[i] = (jchar)ptr[i]; + ret = (*env)->NewString (env, tmp, chunk); ase_awk_free (awk, tmp); } else { - ret = (*env)->NewString (env, (jchar*)ptr, len); + + ret = (*env)->NewString (env, (jchar*)ptr, chunk); } if (ret == ASE_NULL) diff --git a/ase/awk/msw-cl.mak b/ase/awk/msw-cl.mak index 253225d2..1f637030 100644 --- a/ase/awk/msw-cl.mak +++ b/ase/awk/msw-cl.mak @@ -13,7 +13,7 @@ JAVAC = javac JAR = jar CFLAGS = /nologo /W3 -I..\.. -CXXFLAGS = /nologo /W3 -I..\.. +CXXFLAGS = /nologo /W3 -I..\.. JAVACFLAGS = -classpath ..\.. -Xlint:unchecked #LDFLAGS = /subsystem:console diff --git a/ase/awk/parse.c b/ase/awk/parse.c index cc444e10..76e0e7ea 100644 --- a/ase/awk/parse.c +++ b/ase/awk/parse.c @@ -1,5 +1,5 @@ /* - * $Id: parse.c,v 1.29 2007/11/07 15:32:41 bacon Exp $ + * $Id: parse.c,v 1.31 2007/11/09 15:08:41 bacon Exp $ * * {License} */ @@ -528,6 +528,16 @@ int ase_awk_setword (ase_awk_t* awk, return 0; } +const ase_char_t* ase_awk_getkw (ase_awk_t* awk, const ase_char_t* kw) +{ + ase_awk_pair_t* p; + + p = ase_awk_map_get (awk->wtab, kw, ase_strlen(kw)); + if (p != ASE_NULL) return ((ase_cstr_t*)p->val)->ptr; + + return kw; +} + int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios) { int n; @@ -551,7 +561,8 @@ int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios) static int parse (ase_awk_t* awk) { - int n = 0, op; + int n = 0; + ase_ssize_t op; ASE_ASSERT (awk->src.ios.in != ASE_NULL); @@ -3163,6 +3174,26 @@ static ase_awk_nde_t* parse_primary_ident (ase_awk_t* awk, ase_size_t line) return (ase_awk_nde_t*)nde; } +#if 0 +// TODO:... + { + /* check if it is a function name */ + ase_awk_pair_t* pair; + pair = ase_awk_map_get (awk->tree.afns, name_dup, name_len); + + afn = (ase_awk_afn_t*)pair->val; + nde->type = ASE_AWK_NDE_VARAFN; + nde->line = line; + nde->next = ASE_NULL; + /*nde->id.name = ASE_NULL;*/ + nde->id.name = name_dup; + nde->id.name_len = name_len; + nde->id.idxa = idxa; /* pointer... */ + nde->idx = ASE_NULL; + } +// END TODO:... +#endif + if (awk->option & ASE_AWK_IMPLICIT) { if (awk->option & ASE_AWK_UNIQUEFN) @@ -5257,7 +5288,8 @@ static int deparse (ase_awk_t* awk) ase_awk_chain_t* chain; ase_char_t tmp[ASE_SIZEOF(ase_size_t)*8 + 32]; struct deparse_func_t df; - int n = 0, op; + int n = 0; + ase_ssize_t op; ASE_ASSERT (awk->src.ios.out != ASE_NULL); @@ -5297,7 +5329,11 @@ static int deparse (ase_awk_t* awk) ase_size_t i/*, len*/; ASE_ASSERT (awk->tree.nglobals > 0); - if (ase_awk_putsrcstr (awk, ASE_T("global ")) == -1) + if (ase_awk_putsrcstr(awk,ase_awk_getkw(awk,ASE_T("global"))) == -1) + { + EXIT_DEPARSE (); + } + if (ase_awk_putsrcstr (awk, ASE_T(" ")) == -1) { EXIT_DEPARSE (); } @@ -5367,7 +5403,11 @@ static int deparse (ase_awk_t* awk) if (awk->tree.begin != ASE_NULL) { - if (ase_awk_putsrcstr (awk, ASE_T("BEGIN ")) == -1) + if (ase_awk_putsrcstr(awk,ase_awk_getkw(awk,ASE_T("BEGIN"))) == -1) + { + EXIT_DEPARSE (); + } + if (ase_awk_putsrcstr (awk, ASE_T(" ")) == -1) { EXIT_DEPARSE (); } @@ -5429,7 +5469,9 @@ static int deparse (ase_awk_t* awk) if (awk->tree.end != ASE_NULL) { - if (ase_awk_putsrcstr (awk, ASE_T("END ")) == -1) + if (ase_awk_putsrcstr(awk,ase_awk_getkw(awk,ASE_T("END"))) == -1) + EXIT_DEPARSE (); + if (ase_awk_putsrcstr (awk, ASE_T(" ")) == -1) EXIT_DEPARSE (); if (ase_awk_prnpt (awk, awk->tree.end) == -1) EXIT_DEPARSE (); @@ -5460,7 +5502,8 @@ static int deparse_func (ase_awk_pair_t* pair, void* arg) ASE_ASSERT (ase_strxncmp (ASE_AWK_PAIR_KEYPTR(pair), ASE_AWK_PAIR_KEYLEN(pair), afn->name, afn->name_len) == 0); - if (ase_awk_putsrcstr (df->awk, ASE_T("func ")) == -1) return -1; + if (ase_awk_putsrcstr(df->awk,ase_awk_getkw(df->awk,ASE_T("func"))) == -1) + if (ase_awk_putsrcstr (df->awk, ASE_T(" ")) == -1) return -1; if (ase_awk_putsrcstr (df->awk, afn->name) == -1) return -1; if (ase_awk_putsrcstr (df->awk, ASE_T(" (")) == -1) return -1; diff --git a/ase/awk/parse.h b/ase/awk/parse.h index 76b1a86c..3310da4b 100644 --- a/ase/awk/parse.h +++ b/ase/awk/parse.h @@ -1,5 +1,5 @@ /* - * $Id: parse.h,v 1.4 2007/09/23 16:48:55 bacon Exp $ + * $Id: parse.h,v 1.5 2007/11/09 15:08:41 bacon Exp $ * * {License} */ @@ -21,6 +21,7 @@ int ase_awk_putsrcstrx ( const ase_char_t* ase_awk_getglobalname ( ase_awk_t* awk, ase_size_t idx, ase_size_t* len); +const ase_char_t* ase_awk_getkw (ase_awk_t* awk, const ase_char_t* kw); int ase_awk_initglobals (ase_awk_t* awk); diff --git a/ase/awk/rex.c b/ase/awk/rex.c index 463829d2..c1c28799 100644 --- a/ase/awk/rex.c +++ b/ase/awk/rex.c @@ -1,5 +1,5 @@ /* - * $Id: rex.c,v 1.3 2007/04/30 05:47:33 bacon Exp $ + * $Id: rex.c,v 1.4 2007/11/09 07:43:42 bacon Exp $ * * {License} */ @@ -87,8 +87,8 @@ struct builder_t struct { - int max; - int cur; + ase_size_t max; + ase_size_t cur; } depth; int errnum; @@ -109,8 +109,8 @@ struct matcher_t struct { - int max; - int cur; + ase_size_t max; + ase_size_t cur; } depth; int ignorecase; diff --git a/ase/awk/run.c b/ase/awk/run.c index 04a7a4bb..2478ae93 100644 --- a/ase/awk/run.c +++ b/ase/awk/run.c @@ -1,5 +1,5 @@ /* - * $Id: run.c,v 1.22 2007/11/07 14:40:37 bacon Exp $ + * $Id: run.c,v 1.23 2007/11/09 07:43:42 bacon Exp $ * * {License} */ @@ -391,7 +391,7 @@ static int set_global ( if (n == -1) return -1; if (n == 1) lv = (ase_long_t)rv; - if (lv < run->inrec.nflds) + if (lv < (ase_long_t)run->inrec.nflds) { if (shorten_record (run, (ase_size_t)lv) == -1) { @@ -2472,7 +2472,7 @@ static int run_delete (ase_awk_run_t* run, ase_awk_nde_delete_t* nde) var->type == ASE_AWK_NDE_GLOBALIDX) { if (ase_awk_setglobal ( - run, var->id.idxa, tmp) == -1) + run, (int)var->id.idxa, tmp) == -1) { ase_awk_refupval (run, tmp); ase_awk_refdownval (run, tmp); @@ -3315,7 +3315,7 @@ static ase_awk_val_t* do_assignment_map ( else if (var->type == ASE_AWK_NDE_GLOBALIDX) { ase_awk_refupval (run, tmp); - if (ase_awk_setglobal (run, var->id.idxa, tmp) == -1) + if (ase_awk_setglobal (run, (int)var->id.idxa, tmp) == -1) { ase_awk_refdownval (run, tmp); @@ -5936,7 +5936,7 @@ static ase_awk_val_t* eval_pos (ase_awk_run_t* run, ase_awk_nde_t* nde) return ASE_NULL; } if (lv == 0) v = run->inrec.d0; - else if (lv > 0 && lv <= run->inrec.nflds) + else if (lv > 0 && lv <= (ase_long_t)run->inrec.nflds) v = run->inrec.flds[lv-1].val; else v = ase_awk_val_zls; /*ase_awk_val_nil;*/ @@ -6864,7 +6864,7 @@ ase_char_t* ase_awk_format ( return ASE_NULL; } - if (prec == -1 || prec == 0 || prec > ch_len) prec = ch_len; + if (prec == -1 || prec == 0 || prec > (ase_long_t)ch_len) prec = (ase_long_t)ch_len; if (prec > width) width = prec; if (!minus) @@ -6910,7 +6910,8 @@ ase_char_t* ase_awk_format ( else if (fmt[i] == ASE_T('s')) { ase_char_t* str, * str_free = ASE_NULL; - ase_size_t str_len, k; + ase_size_t str_len; + ase_long_t k; ase_awk_val_t* v; if (args == ASE_NULL) @@ -6971,7 +6972,7 @@ ase_char_t* ase_awk_format ( str_free = str; } - if (prec == -1 || prec > str_len ) prec = str_len; + if (prec == -1 || prec > (ase_long_t)str_len ) prec = (ase_long_t)str_len; if (prec > width) width = prec; if (!minus) diff --git a/ase/awk/tree.c b/ase/awk/tree.c index 7ff0b2e2..c24f2f0a 100644 --- a/ase/awk/tree.c +++ b/ase/awk/tree.c @@ -1,5 +1,5 @@ /* - * $Id: tree.c,v 1.6 2007/11/06 09:47:12 bacon Exp $ + * $Id: tree.c,v 1.7 2007/11/09 15:08:41 bacon Exp $ * * {License} */ @@ -524,7 +524,7 @@ static int print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) PUT_SRCSTR (awk, ASE_T(" ")); } - PUT_SRCSTR (awk, ASE_T("getline")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("getline"))); if (px->var != ASE_NULL) { PUT_SRCSTR (awk, ASE_T(" ")); @@ -595,7 +595,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) if (px->nlocals > 0) { PRINT_TABS (awk, depth + 1); - PUT_SRCSTR (awk, ASE_T("local ")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("local"))); + PUT_SRCSTR (awk, ASE_T(" ")); for (i = 0; i < px->nlocals - 1; i++) { @@ -628,7 +629,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) ase_awk_nde_if_t* px = (ase_awk_nde_if_t*)p; PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("if (")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("if"))); + PUT_SRCSTR (awk, ASE_T(" (")); PRINT_EXPRESSION (awk, px->test); PUT_SRCSTR (awk, ASE_T(")")); PUT_NEWLINE (awk); @@ -642,7 +644,7 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) if (px->else_part != ASE_NULL) { PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("else")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("else"))); PUT_NEWLINE (awk); if (px->else_part->type == ASE_AWK_NDE_BLK) PRINT_STATEMENTS (awk, px->else_part, depth); @@ -657,7 +659,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) ase_awk_nde_while_t* px = (ase_awk_nde_while_t*)p; PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("while (")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("while"))); + PUT_SRCSTR (awk, ASE_T(" (")); PRINT_EXPRESSION (awk, px->test); PUT_SRCSTR (awk, ASE_T(")")); PUT_NEWLINE (awk); @@ -677,7 +680,7 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) ase_awk_nde_while_t* px = (ase_awk_nde_while_t*)p; PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("do")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("do"))); PUT_NEWLINE (awk); if (px->body->type == ASE_AWK_NDE_BLK) { @@ -689,7 +692,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) } PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("while (")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("while"))); + PUT_SRCSTR (awk, ASE_T(" (")); PRINT_EXPRESSION (awk, px->test); PUT_SRCSTR (awk, ASE_T(");")); PUT_NEWLINE (awk); @@ -701,7 +705,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) ase_awk_nde_for_t* px = (ase_awk_nde_for_t*)p; PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("for (")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("for"))); + PUT_SRCSTR (awk, ASE_T(" (")); if (px->init != ASE_NULL) { PRINT_EXPRESSION (awk, px->init); @@ -735,7 +740,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) ase_awk_nde_foreach_t* px = (ase_awk_nde_foreach_t*)p; PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("for ")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("for"))); + PUT_SRCSTR (awk, ASE_T(" ")); PRINT_EXPRESSION (awk, px->test); PUT_NEWLINE (awk); if (px->body->type == ASE_AWK_NDE_BLK) @@ -752,7 +758,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) case ASE_AWK_NDE_BREAK: { PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("break;")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("break"))); + PUT_SRCSTR (awk, ASE_T(";")); PUT_NEWLINE (awk); break; } @@ -760,7 +767,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) case ASE_AWK_NDE_CONTINUE: { PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("continue;")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("continue"))); + PUT_SRCSTR (awk, ASE_T(";")); PUT_NEWLINE (awk); break; } @@ -770,12 +778,14 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) PRINT_TABS (awk, depth); if (((ase_awk_nde_return_t*)p)->val == ASE_NULL) { - PUT_SRCSTR (awk, ASE_T("return;")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("return"))); + PUT_SRCSTR (awk, ASE_T(";")); PUT_NEWLINE (awk); } else { - PUT_SRCSTR (awk, ASE_T("return ")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("return"))); + PUT_SRCSTR (awk, ASE_T(" ")); ASE_ASSERT (((ase_awk_nde_return_t*)p)->val->next == ASE_NULL); PRINT_EXPRESSION (awk, ((ase_awk_nde_return_t*)p)->val); @@ -792,12 +802,14 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) if (px->val == ASE_NULL) { - PUT_SRCSTR (awk, ASE_T("exit;")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("exit"))); + PUT_SRCSTR (awk, ASE_T(";")); PUT_NEWLINE (awk); } else { - PUT_SRCSTR (awk, ASE_T("exit ")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("exit"))); + PUT_SRCSTR (awk, ASE_T(" ")); ASE_ASSERT (px->val->next == ASE_NULL); PRINT_EXPRESSION (awk, px->val); PUT_SRCSTR (awk, ASE_T(";")); @@ -809,7 +821,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) case ASE_AWK_NDE_NEXT: { PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("next;")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("next"))); + PUT_SRCSTR (awk, ASE_T(";")); PUT_NEWLINE (awk); break; } @@ -818,9 +831,14 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) { PRINT_TABS (awk, depth); if (((ase_awk_nde_nextfile_t*)p)->out) - PUT_SRCSTR (awk, ASE_T("nextofile;")); + { + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("nextofile"))); + } else - PUT_SRCSTR (awk, ASE_T("nextfile;")); + { + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("nextfile"))); + } + PUT_SRCSTR (awk, ASE_T(";")); PUT_NEWLINE (awk); break; } @@ -828,7 +846,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) case ASE_AWK_NDE_DELETE: { PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("delete ")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("delete"))); + PUT_SRCSTR (awk, ASE_T(" ")); ase_awk_prnpt (awk, ((ase_awk_nde_delete_t*)p)->var); break; } @@ -836,7 +855,8 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) case ASE_AWK_NDE_RESET: { PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("reset ")); + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("reset"))); + PUT_SRCSTR (awk, ASE_T(" ")); ase_awk_prnpt (awk, ((ase_awk_nde_reset_t*)p)->var); break; } @@ -849,8 +869,13 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) PRINT_TABS (awk, depth); if (p->type == ASE_AWK_NDE_PRINT) - PUT_SRCSTR (awk, ASE_T("print")); - else PUT_SRCSTR (awk, ASE_T("printf")); + { + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("print"))); + } + else + { + PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("printf"))); + } if (px->args != ASE_NULL) { diff --git a/ase/awk/val.c b/ase/awk/val.c index 1f0c4c3f..bf4fa18e 100644 --- a/ase/awk/val.c +++ b/ase/awk/val.c @@ -1,5 +1,5 @@ /* - * $Id: val.c,v 1.11 2007/11/02 13:08:58 bacon Exp $ + * $Id: val.c,v 1.13 2007/11/09 15:20:02 bacon Exp $ * * {License} */ @@ -135,27 +135,6 @@ ase_awk_val_t* ase_awk_makestrval ( { ase_awk_val_str_t* val; - /* - val = (ase_awk_val_str_t*) ASE_AWK_MALLOC ( - run->awk, ASE_SIZEOF(ase_awk_val_str_t)); - if (val == ASE_NULL) - { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; - } - - val->type = ASE_AWK_VAL_STR; - val->ref = 0; - val->len = len; - val->buf = ase_strxdup (str, len, &run->awk->prmfns.mmgr); - if (val->buf == ASE_NULL) - { - ASE_AWK_FREE (run->awk, val); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; - } - */ - val = (ase_awk_val_str_t*) ASE_AWK_MALLOC ( run->awk, ASE_SIZEOF(ase_awk_val_str_t) + @@ -206,27 +185,6 @@ ase_awk_val_t* ase_awk_makestrval2 ( { ase_awk_val_str_t* val; - /* - val = (ase_awk_val_str_t*) ASE_AWK_MALLOC ( - run->awk, ASE_SIZEOF(ase_awk_val_str_t)); - if (val == ASE_NULL) - { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; - } - - val->type = ASE_AWK_VAL_STR; - val->ref = 0; - val->len = len1 + len2; - val->buf = ase_strxdup2 (str1, len1, str2, len2, &run->awk->prmfns.mmgr); - if (val->buf == ASE_NULL) - { - ASE_AWK_FREE (run->awk, val); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; - } - */ - val = (ase_awk_val_str_t*) ASE_AWK_MALLOC ( run->awk, ASE_SIZEOF(ase_awk_val_str_t) + diff --git a/ase/cmn/types.h b/ase/cmn/types.h index e2100358..8a39da62 100644 --- a/ase/cmn/types.h +++ b/ase/cmn/types.h @@ -1,5 +1,5 @@ /* - * $Id: types.h,v 1.6 2007/05/06 08:08:22 bacon Exp $ + * $Id: types.h,v 1.7 2007/11/09 07:43:42 bacon Exp $ * * {License} */ @@ -163,8 +163,9 @@ typedef ase_uint_t ase_word_t; typedef char ase_mchar_t; typedef int ase_mcint_t; -#if defined(__cplusplus) && !(defined(_MSC_VER)&&(_MSC_VER<=1200)) +#if defined(__cplusplus) && (!defined(_MSC_VER) || (defined(_MSC_VER)&&defined(_NATIVE_WCHAR_T_DEFINED))) /* C++ */ + typedef wchar_t ase_wchar_t; typedef wchar_t ase_wcint_t; diff --git a/ase/test/awk/Awk.cpp b/ase/test/awk/Awk.cpp index 23f56574..a15acb4a 100644 --- a/ase/test/awk/Awk.cpp +++ b/ase/test/awk/Awk.cpp @@ -1,5 +1,5 @@ /* - * $Id: Awk.cpp,v 1.47 2007/11/08 15:08:06 bacon Exp $ + * $Id: Awk.cpp,v 1.48 2007/11/09 08:09:29 bacon Exp $ */ #include @@ -315,7 +315,7 @@ protected: } else { - int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): left; + int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left; int n = ase_fprintf (fp, ASE_T("%.*s"), chunk, buf); if (n < 0 || n > chunk) return -1; left -= n; buf += n; @@ -458,7 +458,7 @@ protected: } else { - int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): left; + int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left; int n = ase_fprintf (fp, ASE_T("%.*s"), chunk, buf); if (n < 0 || n > chunk) return -1; left -= n; buf += n; diff --git a/ase/test/awk/awk.c b/ase/test/awk/awk.c index 42d8e4ce..754b63e8 100644 --- a/ase/test/awk/awk.c +++ b/ase/test/awk/awk.c @@ -1,5 +1,5 @@ /* - * $Id: awk.c,v 1.23 2007/11/08 15:08:06 bacon Exp $ + * $Id: awk.c,v 1.25 2007/11/09 08:29:49 bacon Exp $ */ #include @@ -321,7 +321,8 @@ static ase_ssize_t awk_extio_pipe ( case ASE_AWK_IO_READ: { - if (ase_fgets (data, size, (FILE*)epa->handle) == ASE_NULL) + int chunk = (size > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)size; + if (ase_fgets (data, chunk, (FILE*)epa->handle) == ASE_NULL) { if (ferror((FILE*)epa->handle)) return -1; return 0; @@ -442,7 +443,8 @@ static ase_ssize_t awk_extio_file ( case ASE_AWK_IO_READ: { - if (ase_fgets (data, size, (FILE*)epa->handle) == ASE_NULL) + int chunk = (size > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)size; + if (ase_fgets (data, chunk, (FILE*)epa->handle) == ASE_NULL) { if (ferror((FILE*)epa->handle)) return -1; return 0; @@ -516,7 +518,9 @@ static ase_ssize_t awk_extio_console ( } else if (cmd == ASE_AWK_IO_READ) { - while (ase_fgets (data, size, (FILE*)epa->handle) == ASE_NULL) + int chunk = (size > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)size; + + while (ase_fgets (data, chunk, (FILE*)epa->handle) == ASE_NULL) { if (ferror((FILE*)epa->handle)) return -1; diff --git a/ase/test/awk/err-001.out b/ase/test/awk/err-001.out index 19507db9..ce6a2e05 100644 --- a/ase/test/awk/err-001.out +++ b/ase/test/awk/err-001.out @@ -1 +1 @@ -PARSE ERROR: CODE [30] LINE [2] invalid character '' +PARSE ERROR: CODE [31] LINE [2] invalid character '' diff --git a/ase/test/awk/err-003.out b/ase/test/awk/err-003.out index 1049a76d..142c6dad 100644 --- a/ase/test/awk/err-003.out +++ b/ase/test/awk/err-003.out @@ -3,4 +3,4 @@ BEGIN { abc = 10; } -RUN ERROR: CODE [97] LINE [3] map 'abc' not assignable with a scalar +RUN ERROR: CODE [98] LINE [3] map 'abc' not assignable with a scalar diff --git a/ase/test/awk/err-004.out b/ase/test/awk/err-004.out index c8bfa774..9b766b92 100644 --- a/ase/test/awk/err-004.out +++ b/ase/test/awk/err-004.out @@ -2,4 +2,4 @@ BEGIN { delete ARGC; } -RUN ERROR: CODE [89] LINE [2] variable 'ARGC' not deletable +RUN ERROR: CODE [90] LINE [2] variable 'ARGC' not deletable diff --git a/ase/test/awk/err-005.out b/ase/test/awk/err-005.out index 5b49daf5..72c4358c 100644 --- a/ase/test/awk/err-005.out +++ b/ase/test/awk/err-005.out @@ -3,4 +3,4 @@ BEGIN { delete iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiix; } -RUN ERROR: CODE [89] LINE [3] variable 'iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii...' not deletable +RUN ERROR: CODE [90] LINE [3] variable 'iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii...' not deletable diff --git a/ase/test/awk/err-006.out b/ase/test/awk/err-006.out index d7696995..3155deb8 100644 --- a/ase/test/awk/err-006.out +++ b/ase/test/awk/err-006.out @@ -2,4 +2,4 @@ BEGIN { helpxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxhelphelp (); } -RUN ERROR: CODE [87] LINE [2] function 'helpxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxhel...' not found +RUN ERROR: CODE [88] LINE [2] function 'helpxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxhel...' not found diff --git a/ase/test/awk/err-007.out b/ase/test/awk/err-007.out index ebd2be89..25455efb 100644 --- a/ase/test/awk/err-007.out +++ b/ase/test/awk/err-007.out @@ -1 +1 @@ -PARSE ERROR: CODE [57] LINE [2] intrinsic function 'substr' redefined +PARSE ERROR: CODE [58] LINE [2] intrinsic function 'substr' redefined diff --git a/ase/test/awk/err-008.out b/ase/test/awk/err-008.out index 9bc77af0..dd1f0b33 100644 --- a/ase/test/awk/err-008.out +++ b/ase/test/awk/err-008.out @@ -1 +1 @@ -PARSE ERROR: CODE [57] LINE [3] intrinsic function 'substr' redefined +PARSE ERROR: CODE [58] LINE [3] intrinsic function 'substr' redefined diff --git a/ase/test/awk/err-009.out b/ase/test/awk/err-009.out index ca90c153..6c73cb05 100644 --- a/ase/test/awk/err-009.out +++ b/ase/test/awk/err-009.out @@ -1 +1 @@ -PARSE ERROR: CODE [58] LINE [9] function 'abc' redefined +PARSE ERROR: CODE [59] LINE [9] function 'abc' redefined diff --git a/ase/test/awk/err-010.out b/ase/test/awk/err-010.out index a9f33866..1ae81ea0 100644 --- a/ase/test/awk/err-010.out +++ b/ase/test/awk/err-010.out @@ -1 +1 @@ -PARSE ERROR: CODE [59] LINE [4] global variable 'abc' redefined +PARSE ERROR: CODE [60] LINE [4] global variable 'abc' redefined diff --git a/ase/test/awk/err-011.out b/ase/test/awk/err-011.out index c542a710..e8cc4df4 100644 --- a/ase/test/awk/err-011.out +++ b/ase/test/awk/err-011.out @@ -1 +1 @@ -PARSE ERROR: CODE [60] LINE [4] parameter 'x' redefined +PARSE ERROR: CODE [61] LINE [4] parameter 'x' redefined diff --git a/ase/test/awk/err-012.out b/ase/test/awk/err-012.out index 21ef080e..bbb3ffc8 100644 --- a/ase/test/awk/err-012.out +++ b/ase/test/awk/err-012.out @@ -1 +1 @@ -PARSE ERROR: CODE [58] LINE [11] function 'abc' redefined +PARSE ERROR: CODE [59] LINE [11] function 'abc' redefined diff --git a/ase/test/awk/err-013.out b/ase/test/awk/err-013.out index 2e22c2dd..328e050c 100644 --- a/ase/test/awk/err-013.out +++ b/ase/test/awk/err-013.out @@ -1 +1 @@ -PARSE ERROR: CODE [58] LINE [1] function 'abc' redefined +PARSE ERROR: CODE [59] LINE [1] function 'abc' redefined diff --git a/ase/test/awk/err-014.out b/ase/test/awk/err-014.out index 83b452cc..81213803 100644 --- a/ase/test/awk/err-014.out +++ b/ase/test/awk/err-014.out @@ -1 +1 @@ -PARSE ERROR: CODE [43] LINE [5] a colon expected in place of ';' +PARSE ERROR: CODE [44] LINE [5] a colon expected in place of ';' diff --git a/ase/test/awk/err-015.out b/ase/test/awk/err-015.out index cca92eee..5ed31c22 100644 --- a/ase/test/awk/err-015.out +++ b/ase/test/awk/err-015.out @@ -1 +1 @@ -PARSE ERROR: CODE [38] LINE [2] a left parenthesis expected in place of '=' +PARSE ERROR: CODE [39] LINE [2] a left parenthesis expected in place of '=' diff --git a/ase/test/awk/err-016.out b/ase/test/awk/err-016.out index 041e3961..c1b682a6 100644 --- a/ase/test/awk/err-016.out +++ b/ase/test/awk/err-016.out @@ -1 +1 @@ -PARSE ERROR: CODE [53] LINE [2] BEGIN not followed by a left bracket on the same line +PARSE ERROR: CODE [54] LINE [2] BEGIN not followed by a left bracket on the same line diff --git a/ase/test/awk/err-017.out b/ase/test/awk/err-017.out index a2a7b1e5..ee6804e4 100644 --- a/ase/test/awk/err-017.out +++ b/ase/test/awk/err-017.out @@ -1 +1 @@ -PARSE ERROR: CODE [64] LINE [1] '+' not a valid parameter name +PARSE ERROR: CODE [65] LINE [1] '+' not a valid parameter name diff --git a/ase/test/awk/err-018.out b/ase/test/awk/err-018.out index 2a4979a9..6a8991c7 100644 --- a/ase/test/awk/err-018.out +++ b/ase/test/awk/err-018.out @@ -1 +1 @@ -PARSE ERROR: CODE [65] LINE [1] '+' not a valid variable name +PARSE ERROR: CODE [66] LINE [1] '+' not a valid variable name diff --git a/ase/test/awk/err-019.out b/ase/test/awk/err-019.out index c437a974..6e7c754e 100644 --- a/ase/test/awk/err-019.out +++ b/ase/test/awk/err-019.out @@ -1 +1 @@ -PARSE ERROR: CODE [65] LINE [3] '+' not a valid variable name +PARSE ERROR: CODE [66] LINE [3] '+' not a valid variable name diff --git a/ase/test/awk/err-020.out b/ase/test/awk/err-020.out index 7330188b..52a0ade1 100644 --- a/ase/test/awk/err-020.out +++ b/ase/test/awk/err-020.out @@ -2,4 +2,4 @@ BEGIN { print abc > "123\0abc"; } -RUN ERROR: CODE [113] LINE [2] i/o name containing a null character +RUN ERROR: CODE [114] LINE [2] i/o name containing a null character diff --git a/ase/test/awk/err-021.out b/ase/test/awk/err-021.out index e99b6bbc..0be3032a 100644 --- a/ase/test/awk/err-021.out +++ b/ase/test/awk/err-021.out @@ -3,4 +3,4 @@ BEGIN { split ("a b c",xx); } -RUN ERROR: CODE [98] LINE [3] cannot change a scalar value to a map +RUN ERROR: CODE [99] LINE [3] cannot change a scalar value to a map diff --git a/ase/test/awk/err-022.out b/ase/test/awk/err-022.out index 424e9288..38c1e945 100644 --- a/ase/test/awk/err-022.out +++ b/ase/test/awk/err-022.out @@ -1 +1 @@ -PARSE ERROR: CODE [62] LINE [1] duplicate global variable 'ARGV' +PARSE ERROR: CODE [63] LINE [1] duplicate global variable 'ARGV' diff --git a/ase/test/awk/makefile.msw.cl b/ase/test/awk/makefile.msw.cl deleted file mode 100644 index 19b7dfc0..00000000 --- a/ase/test/awk/makefile.msw.cl +++ /dev/null @@ -1,43 +0,0 @@ -CC = cl -CFLAGS = /nologo /MT /W3 /GR- -I..\..\.. -LDFLAGS = /libpath:..\..\cmn /libpath:..\..\awk /libpath:..\..\utl -LIBS = asecmn.lib aseawk.lib aseutl.lib kernel32.lib user32.lib - -!if !defined(CPU) || "$(CPU)" == "" -CPU = $(PROCESSOR_ARCHITECTURE) -!endif - -!if "$(CPU)" == "" -CPU = i386 -!endif - -!if "$(CPU)" == "IA64" || "$(CPU)" == "AMD64" -LIBS = $(LIBS) bufferoverflowu.lib -!endif - -all: aseawk - -aseawk: awk.obj - link /nologo /out:$@.exe $(LDFLAGS) $(LIBS) awk.obj - -mini: mini.obj - link /nologo /out:$@.exe $(LDFLAGS) $(LIBS) mini.obj - -java: - javac -classpath ../../.. Awk.java - javac -classpath ../../.. AwkApplet.java - -jrun: - java -classpath ../../.. ase.test.awk.Awk - -cert: - keytool -genkey -keystore ase.store -alias asecert - keytool -export -keystore ase.store -alias asecert -file ase.cer - -clean: - del $(OBJS) *.obj aseawk.exe mini.exe - -.SUFFIXES: .c .obj -.c.obj: - $(CC) /c $(CFLAGS) $< - diff --git a/ase/test/awk/makefile.msw.bcc b/ase/test/awk/msw-bcc.mak similarity index 100% rename from ase/test/awk/makefile.msw.bcc rename to ase/test/awk/msw-bcc.mak diff --git a/ase/test/awk/msw-cl.mak b/ase/test/awk/msw-cl.mak new file mode 100644 index 00000000..c0860df6 --- /dev/null +++ b/ase/test/awk/msw-cl.mak @@ -0,0 +1,80 @@ +NAME = aseawk +MODE = release + +CC = cl +CXX = cl +LD = link + +CFLAGS = /nologo /W3 -I..\..\.. +CXXFLAGS = /nologo /W3 -I..\..\.. + +LDFLAGS = /libpath:..\..\$(MODE)\lib +LIBS = asecmn.lib aseawk.lib aseutl.lib kernel32.lib user32.lib +LIBS_CXX = $(LIBS) aseawk++.lib + +!IF "$(MODE)" == "debug" +CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /MTd +CXXFLAGS = $(CXXFLAGS) -D_DEBUG -DDEBUG /MTd +!ELSEIF "$(MODE)" == "release" +CFLAGS = $(CFLAGS) -DNDEBUG /MT /O2 +CXXFLAGS = $(CXXFLAGS) -DNDEBUG /MT /O2 +!ELSE +CFLAGS = $(CFLAGS) /MT +CXXFLAGS = $(CXXFLAGS) /MT +!ENDIF + +!if !defined(CPU) || "$(CPU)" == "" +CPU = $(PROCESSOR_ARCHITECTURE) +!endif + +!if "$(CPU)" == "" +CPU = i386 +!endif + +!if "$(CPU)" == "IA64" || "$(CPU)" == "AMD64" +# comment out the following line if you encounter this link error. +# LINK : fatal error LNK1181: cannot open input file 'bufferoverflowu.lib' +LIBS = $(LIBS) bufferoverflowu.lib +!endif + +OUT_DIR = ..\..\$(MODE)\bin +OUT_FILE_BIN = $(OUT_DIR)\$(NAME).exe +OUT_FILE_BIN_CXX = $(OUT_DIR)\$(NAME)++.exe + +TMP_DIR = $(MODE) +TMP_DIR_CXX = $(TMP_DIR)\cxx + +OBJ_FILES_BIN = $(TMP_DIR)\awk.obj +OBJ_FILES_BIN_CXX = $(TMP_DIR_CXX)\Awk.obj + +all: bin + +bin: $(OUT_FILE_BIN) $(OUT_FILE_BIN_CXX) + +$(OUT_FILE_BIN): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_BIN) + $(LD) /nologo /out:$@ $(LDFLAGS) $(LIBS) $(OBJ_FILES_BIN) + +$(OUT_FILE_BIN_CXX): $(TMP_DIR_CXX) $(OUT_FILE_BIN) $(OBJ_FILES_BIN_CXX) + $(LD) /nologo /out:$@ $(LDFLAGS) $(LIBS_CXX) $(OBJ_FILES_BIN_CXX) + +$(TMP_DIR)\awk.obj: awk.c + $(CC) $(CFLAGS) /Fo$@ /c awk.c + +$(TMP_DIR_CXX)\Awk.obj: Awk.cpp + $(CC) $(CXXFLAGS) /Fo$@ /c Awk.cpp + +$(OUT_DIR): + -md $(OUT_DIR) + +$(TMP_DIR): + -md $(TMP_DIR) + +$(TMP_DIR_CXX): $(TMP_DIR) + -md $(TMP_DIR_CXX) + +clean: + -del $(OUT_FILE_BIN) + -del $(OUT_FILE_BIN_CXX) + -del $(OBJ_FILES_BIN) + -del $(OBJ_FILES_BIN_CXX) +