Recovered from cvs revision 2007-05-25 03:08:00
This commit is contained in:
		@ -1,5 +1,5 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Id: Awk.java,v 1.4 2007/05/05 16:32:46 bacon Exp $
 | 
					 * $Id: Awk.java,v 1.6 2007/05/24 06:53:21 bacon Exp $
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * {License}
 | 
					 * {License}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -82,6 +82,9 @@ public abstract class Awk
 | 
				
			|||||||
	private native String valtostr (
 | 
						private native String valtostr (
 | 
				
			||||||
		long runid, Object obj) throws Exception;
 | 
							long runid, Object obj) throws Exception;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						protected native String strftime (String fmt, long sec);
 | 
				
			||||||
 | 
						protected native String strfgmtime (String fmt, long sec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* == simpler run methods == */
 | 
						/* == simpler run methods == */
 | 
				
			||||||
	public void run (String main) throws Exception
 | 
						public void run (String main) throws Exception
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Id: StdAwk.java,v 1.5 2007/05/11 16:25:38 bacon Exp $
 | 
					 * $Id: StdAwk.java,v 1.7 2007/05/24 06:53:21 bacon Exp $
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * {License}
 | 
					 * {License}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -64,6 +64,7 @@ public abstract class StdAwk extends Awk
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		addFunction ("systime", 0, 0);
 | 
							addFunction ("systime", 0, 0);
 | 
				
			||||||
		addFunction ("strftime", 0, 2);
 | 
							addFunction ("strftime", 0, 2);
 | 
				
			||||||
 | 
							addFunction ("strfgmtime", 0, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		addFunction ("system", 1, 1); 
 | 
							addFunction ("system", 1, 1); 
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -799,10 +800,18 @@ public abstract class StdAwk extends Awk
 | 
				
			|||||||
		return new Long (msec / 1000);
 | 
							return new Long (msec / 1000);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public Object bfn_strftime (long runid, Object[] args)
 | 
						public Object bfn_strftime (long runid, Object[] args) throws Exception
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		// TODO: implement this...
 | 
							String fmt = (args.length<1)? "%c": builtinFunctionArgumentToString (runid, args[0]);
 | 
				
			||||||
		return null;
 | 
							long t = (args.length<2)? (System.currentTimeMillis()/1000): builtinFunctionArgumentToLong (runid, args[1]);
 | 
				
			||||||
 | 
							return strftime (fmt, t);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public Object bfn_strfgmtime (long runid, Object[] args) throws Exception
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							String fmt = (args.length<1)? "%c": builtinFunctionArgumentToString (runid, args[0]);
 | 
				
			||||||
 | 
							long t = (args.length<2)? (System.currentTimeMillis()/1000): builtinFunctionArgumentToLong (runid, args[1]);
 | 
				
			||||||
 | 
							return strfgmtime (fmt, t);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* miscellaneous built-in functions */
 | 
						/* miscellaneous built-in functions */
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										166
									
								
								ase/awk/jni.c
									
									
									
									
									
								
							
							
						
						
									
										166
									
								
								ase/awk/jni.c
									
									
									
									
									
								
							@ -1,5 +1,5 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Id: jni.c,v 1.6 2007/05/10 16:08:37 bacon Exp $
 | 
					 * $Id: jni.c,v 1.8 2007/05/24 06:53:21 bacon Exp $
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * {License}
 | 
					 * {License}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -12,6 +12,7 @@
 | 
				
			|||||||
#include <wchar.h>
 | 
					#include <wchar.h>
 | 
				
			||||||
#include <stdarg.h>
 | 
					#include <stdarg.h>
 | 
				
			||||||
#include <math.h>
 | 
					#include <math.h>
 | 
				
			||||||
 | 
					#include <time.h>
 | 
				
			||||||
#include <ase/awk/jni.h>
 | 
					#include <ase/awk/jni.h>
 | 
				
			||||||
#include <ase/awk/awk.h>
 | 
					#include <ase/awk/awk.h>
 | 
				
			||||||
#include <ase/awk/val.h>
 | 
					#include <ase/awk/val.h>
 | 
				
			||||||
@ -2348,3 +2349,166 @@ JNIEXPORT jstring JNICALL Java_ase_awk_Awk_valtostr (
 | 
				
			|||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static jstring JNICALL call_strftime (
 | 
				
			||||||
 | 
						JNIEnv* env, jobject obj, jstring fmt, struct tm* tm)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						ase_char_t buf[128]; 
 | 
				
			||||||
 | 
						ase_size_t len, i;
 | 
				
			||||||
 | 
						const jchar* ptr;
 | 
				
			||||||
 | 
						ase_char_t* tmp;
 | 
				
			||||||
 | 
						jstring ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						len = (*env)->GetStringLength (env, fmt);
 | 
				
			||||||
 | 
						ptr = (*env)->GetStringChars (env, fmt, JNI_FALSE);
 | 
				
			||||||
 | 
						if (ptr == NULL)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							(*env)->ExceptionClear (env);
 | 
				
			||||||
 | 
							throw_exception (
 | 
				
			||||||
 | 
								env, 
 | 
				
			||||||
 | 
								ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM), 
 | 
				
			||||||
 | 
								ASE_AWK_ENOMEM,
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tmp = (jchar*) malloc (ASE_SIZEOF(ase_char_t)*(len+1));
 | 
				
			||||||
 | 
						if (tmp == NULL)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							(*env)->ReleaseStringChars (env, fmt, ptr);
 | 
				
			||||||
 | 
							throw_exception (
 | 
				
			||||||
 | 
								env, 
 | 
				
			||||||
 | 
								ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
 | 
				
			||||||
 | 
								ASE_AWK_ENOMEM, 
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < len; i++) tmp[i] = (ase_char_t)ptr[i];
 | 
				
			||||||
 | 
						tmp[i] = ASE_T('\0');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						len = wcsftime (buf, ASE_COUNTOF(buf), tmp, tm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						free (tmp);
 | 
				
			||||||
 | 
						(*env)->ReleaseStringChars (env, fmt, ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							tmp = (jchar*) malloc (ASE_SIZEOF(jchar)*len);
 | 
				
			||||||
 | 
							if (tmp == NULL)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								throw_exception (
 | 
				
			||||||
 | 
									env, 
 | 
				
			||||||
 | 
									ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
 | 
				
			||||||
 | 
									ASE_AWK_ENOMEM, 
 | 
				
			||||||
 | 
									0);
 | 
				
			||||||
 | 
								return NULL;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							for (i = 0; i < len; i++) tmp[i] = (jchar)buf[i];
 | 
				
			||||||
 | 
							ret = (*env)->NewString (env, tmp, len);
 | 
				
			||||||
 | 
							free (tmp);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ret = (*env)->NewString (env, (jchar*)buf, len);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (ret == NULL)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							(*env)->ExceptionClear (env);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							throw_exception (
 | 
				
			||||||
 | 
								env, 
 | 
				
			||||||
 | 
								ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
 | 
				
			||||||
 | 
								ASE_AWK_ENOMEM, 
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return ret;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					JNIEXPORT jstring JNICALL Java_ase_awk_Awk_strftime (
 | 
				
			||||||
 | 
						JNIEnv* env, jobject obj, jstring fmt, jlong sec)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct tm* tm;
 | 
				
			||||||
 | 
						time_t t = (time_t)sec;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
						tm = localtime (&t);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						struct tm tmb;
 | 
				
			||||||
 | 
						tm = localtime_r (&t, &tmb);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return call_strftime (env, obj, fmt, tm);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					JNIEXPORT jstring JNICALL Java_ase_awk_Awk_strfgmtime (
 | 
				
			||||||
 | 
						JNIEnv* env, jobject obj, jstring fmt, jlong sec)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct tm* tm;
 | 
				
			||||||
 | 
						time_t t = (time_t)sec;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
						tm = gmtime (&t);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						struct tm tmb;
 | 
				
			||||||
 | 
						tm = gmtime_r (&t, &tmb);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return call_strftime (env, obj, fmt, tm);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					JNIEXPORT jint JNICALL Java_ase_awk_Awk_system (
 | 
				
			||||||
 | 
						JNIEnv* env, jobject obj, jstring cmd)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						ase_size_t len, i;
 | 
				
			||||||
 | 
						const jchar* ptr;
 | 
				
			||||||
 | 
						ase_char_t* tmp;
 | 
				
			||||||
 | 
						jint ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						len = (*env)->GetStringLength (env, fmt);
 | 
				
			||||||
 | 
						ptr = (*env)->GetStringChars (env, fmt, JNI_FALSE);
 | 
				
			||||||
 | 
						if (ptr == NULL)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							(*env)->ExceptionClear (env);
 | 
				
			||||||
 | 
							throw_exception (
 | 
				
			||||||
 | 
								env, 
 | 
				
			||||||
 | 
								ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM), 
 | 
				
			||||||
 | 
								ASE_AWK_ENOMEM,
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tmp = (jchar*) malloc (ASE_SIZEOF(ase_char_t)*(len+1));
 | 
				
			||||||
 | 
						if (tmp == NULL)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							(*env)->ReleaseStringChars (env, fmt, ptr);
 | 
				
			||||||
 | 
							throw_exception (
 | 
				
			||||||
 | 
								env, 
 | 
				
			||||||
 | 
								ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
 | 
				
			||||||
 | 
								ASE_AWK_ENOMEM, 
 | 
				
			||||||
 | 
								0);
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < len; i++) tmp[i] = (ase_char_t)ptr[i];
 | 
				
			||||||
 | 
						tmp[i] = ASE_T('\0');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
						ret = _tsystem(ptr);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						char* mbs = (char*)malloc (awk, len*5+1);
 | 
				
			||||||
 | 
						if (mbs == ASE_NULL) return -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						size_t mbl = wcstombs (mbs, ptr, len*5);
 | 
				
			||||||
 | 
						if (mbl == (size_t)-1) return -1;
 | 
				
			||||||
 | 
						mbs[mbl] = '\0';
 | 
				
			||||||
 | 
						ret = system(mbs);
 | 
				
			||||||
 | 
						free (awk, mbs);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return ret;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Id: Awk.cpp,v 1.18 2007/05/23 14:15:16 bacon Exp $
 | 
					 * $Id: Awk.cpp,v 1.20 2007/05/24 04:17:42 bacon Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <ase/awk/StdAwk.hpp>
 | 
					#include <ase/awk/StdAwk.hpp>
 | 
				
			||||||
@ -73,10 +73,10 @@ public:
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
	#ifdef _WIN32
 | 
						#ifdef _WIN32
 | 
				
			||||||
		::Sleep (args[0].toInt() * 1000);
 | 
							::Sleep (args[0].toInt() * 1000);
 | 
				
			||||||
 | 
							return ret->set (0);
 | 
				
			||||||
	#else
 | 
						#else
 | 
				
			||||||
		::sleep (args[0].toInt());
 | 
							return ret->set ((long_t)::sleep (args[0].toInt()));
 | 
				
			||||||
	#endif
 | 
						#endif
 | 
				
			||||||
		return 0;
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int addConsoleInput (const char_t* file)
 | 
						int addConsoleInput (const char_t* file)
 | 
				
			||||||
@ -464,7 +464,22 @@ static void print_error (const ase_char_t* msg)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void print_usage (const ase_char_t* argv0)
 | 
					static void print_usage (const ase_char_t* argv0)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	ase_printf (ASE_T("Usage: %s [-m main-function] [-si source-in-file] [-so source-out-file] [-ci console-in-file]* [-co console-out-file]* [-a argument]*\n"), argv0);
 | 
						const ase_char_t* base;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						base = ase_strrchr(argv0, ASE_T('/'));
 | 
				
			||||||
 | 
						if (base == ASE_NULL)
 | 
				
			||||||
 | 
							base = ase_strrchr(argv0, ASE_T('\\'));
 | 
				
			||||||
 | 
						if (base == ASE_NULL) base = argv0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ase_printf (ASE_T("Usage: %s [-m main] [-si file]? [-so file]? [-ci file]* [-co file]* [-a arg]*\n"), base);
 | 
				
			||||||
 | 
						ase_printf (ASE_T("    -m  main  Specify the main function name\n"));
 | 
				
			||||||
 | 
						ase_printf (ASE_T("    -si file  Specify the input source file\n"));
 | 
				
			||||||
 | 
						ase_printf (ASE_T("              The source code is read from stdin when it is not specified\n"));
 | 
				
			||||||
 | 
						ase_printf (ASE_T("    -so file  Specify the output source file\n"));
 | 
				
			||||||
 | 
						ase_printf (ASE_T("              The deparsed code is not output when is it not specified\n"));
 | 
				
			||||||
 | 
						ase_printf (ASE_T("    -ci file  Specify the input console file\n"));
 | 
				
			||||||
 | 
						ase_printf (ASE_T("    -co file  Specify the output console file\n"));
 | 
				
			||||||
 | 
						ase_printf (ASE_T("    -a  str   Specify an argument\n"));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int awk_main (int argc, ase_char_t* argv[])
 | 
					int awk_main (int argc, ase_char_t* argv[])
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Id: awk.c,v 1.8 2007/05/16 09:15:14 bacon Exp $
 | 
					 * $Id: awk.c,v 1.9 2007/05/24 04:04:44 bacon Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <ase/awk/awk.h>
 | 
					#include <ase/awk/awk.h>
 | 
				
			||||||
@ -846,6 +846,43 @@ static unsigned int __stdcall run_awk_thr (void* arg)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int bfn_sleep (
 | 
				
			||||||
 | 
						ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						ase_size_t nargs;
 | 
				
			||||||
 | 
						ase_awk_val_t* a0;
 | 
				
			||||||
 | 
						ase_long_t lv;
 | 
				
			||||||
 | 
						ase_real_t rv;
 | 
				
			||||||
 | 
						ase_awk_val_t* r;
 | 
				
			||||||
 | 
						int n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						nargs = ase_awk_getnargs (run);
 | 
				
			||||||
 | 
						ASE_ASSERT (nargs == 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						a0 = ase_awk_getarg (run, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						n = ase_awk_valtonum (run, a0, &lv, &rv);
 | 
				
			||||||
 | 
						if (n == -1) return -1;
 | 
				
			||||||
 | 
						if (n == 1) lv = (ase_long_t)rv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
						Sleep (lv * 1000);
 | 
				
			||||||
 | 
						n = 0;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						n = sleep (lv);	
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						r = ase_awk_makeintval (run, n);
 | 
				
			||||||
 | 
						if (r == ASE_NULL)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ase_awk_setretval (run, r);
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int awk_main (int argc, ase_char_t* argv[])
 | 
					static int awk_main (int argc, ase_char_t* argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	ase_awk_t* awk;
 | 
						ase_awk_t* awk;
 | 
				
			||||||
@ -1016,6 +1053,17 @@ static int awk_main (int argc, ase_char_t* argv[])
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	app_awk = awk;
 | 
						app_awk = awk;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (ase_awk_addbfn (awk, 
 | 
				
			||||||
 | 
							ASE_T("sleep"), 5, 0,
 | 
				
			||||||
 | 
							1, 1, ASE_NULL, bfn_sleep) == ASE_NULL)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ase_awk_close (awk);
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
							HeapDestroy (mmgr_data.heap);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ase_awk_setoption (awk, opt);
 | 
						ase_awk_setoption (awk, opt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
@ -1040,6 +1088,9 @@ static int awk_main (int argc, ase_char_t* argv[])
 | 
				
			|||||||
			(unsigned int)ase_awk_geterrlin(awk), 
 | 
								(unsigned int)ase_awk_geterrlin(awk), 
 | 
				
			||||||
			ase_awk_geterrmsg(awk));
 | 
								ase_awk_geterrmsg(awk));
 | 
				
			||||||
		ase_awk_close (awk);
 | 
							ase_awk_close (awk);
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
							HeapDestroy (mmgr_data.heap);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1078,6 +1129,9 @@ static int awk_main (int argc, ase_char_t* argv[])
 | 
				
			|||||||
	if (run_awk (awk, mfn, runarg) == -1)
 | 
						if (run_awk (awk, mfn, runarg) == -1)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		ase_awk_close (awk);
 | 
							ase_awk_close (awk);
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
							HeapDestroy (mmgr_data.heap);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
@ -9,6 +9,8 @@ BEGIN {
 | 
				
			|||||||
END {
 | 
					END {
 | 
				
			||||||
	for (c in pop)
 | 
						for (c in pop)
 | 
				
			||||||
		printf ("%15s	%6d\n",c,pop[c]) | "sort -t'	' +1rn";
 | 
							printf ("%15s	%6d\n",c,pop[c]) | "sort -t'	' +1rn";
 | 
				
			||||||
 | 
						close ("sort -t'	' +1rn");
 | 
				
			||||||
 | 
						sleep (1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
           Asia	  2173
 | 
					           Asia	  2173
 | 
				
			||||||
  North America	   340
 | 
					  North America	   340
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user