diff --git a/awka/error.c b/awka/error.c
index 910caf8..7549771 100644
--- a/awka/error.c
+++ b/awka/error.c
@@ -110,7 +110,8 @@ static int missing_rparen[] =
static int missing_rbrace[] =
{ EOF, a_BEGIN, a_END , 0 } ;
-static void missing( c, n , ln)
+static void
+missing( c, n , ln)
int c ;
char *n ;
int ln ;
@@ -120,7 +121,7 @@ static void missing( c, n , ln)
{ s0 = pfile_name ; s1 = ": " ; }
else s0 = s1 = "" ;
- errmsg(0, "%s%sline %u: missing %c near %s" ,s0, s1, ln, c, n) ;
+ errmsg(0, "%s%sline %u: missing %c near %s" ,s0, s1, ln, c, n) ;
}
void yyerror(s)
@@ -168,7 +169,7 @@ void yyerror(s)
switch ( current_token )
{
case UNEXPECTED :
- unexpected_char() ;
+ unexpected_char() ;
goto done ;
case BAD_DECIMAL :
@@ -211,9 +212,38 @@ void errmsg VA_ALIST2(int , errnum, char *, format)
fprintf( stderr, "\n") ;
}
+char *
+char_repeat( int n, char c )
+{
+ char * dest = malloc(n+1);
+ memset(dest, c, n);
+ dest[n] = '\0';
+ return dest;
+}
+
+char *
+get_source_line() {
+ FILE *fp = NULL;
+ static int bufferLength = 254;
+ char *buffer = malloc( bufferLength + 1);
+ int linecount = token_lineno - 1;
+
+ buffer[0] = '\0';
+ if ( !pfile_name ) return (buffer);
+ if (!(fp = fopen(pfile_name, "r"))) return (buffer);
+
+ while(fgets(buffer, bufferLength, fp)) {
+ if ( !linecount-- )
+ break;
+ }
+ fclose(fp);
+ return (buffer) ;
+}
+
void compile_error VA_ALIST(char *, format)
va_list args ;
- char *s0, *s1 ;
+ char *lnstr = malloc( 20 );
+ char *s0, *s1, *sc, *fill ;
/* with multiple program files put program name in
error message */
@@ -222,11 +252,19 @@ void compile_error VA_ALIST(char *, format)
else
{ s0 = s1 = "" ; }
- fprintf(stderr, "%s: %s%sline %u: " , progname, s0, s1,token_lineno) ;
+ sprintf(lnstr, "line %d: ",token_lineno);
+ sc = get_source_line();
+
+ fprintf(stderr, "%s: %s%s%s%s" , progname, s0, s1, lnstr, sc) ;
+
+ fill = char_repeat((int) line_pos-1,' ');
+ fprintf(stderr, "%s: %s%s%s%s^ " , progname, s0, s1, lnstr, fill) ;
VA_START(args, char *, format) ;
vfprintf(stderr, format, args) ;
va_end(args) ;
fprintf(stderr, "\n") ;
+ free(sc);
+ free(lnstr);
if ( ++compile_error_count == MAX_COMPILE_ERRORS ) exit(2) ;
}
@@ -245,16 +283,16 @@ void rt_error VA_ALIST( char *, format)
void bozo(s)
char *s ;
-{
- errmsg(0, "bozo: %s" , s) ;
+{
+ errmsg(0, "bozo: %s" , s) ;
exit(3) ;
}
void overflow(s, size)
char *s ; unsigned size ;
-{
+{
errmsg(0 , "program limit exceeded: %s size=%u", s, size) ;
- exit(2) ;
+ exit(2) ;
}
@@ -271,17 +309,36 @@ static void rt_where()
/* run time */
void rt_overflow(s, size)
char *s ; unsigned size ;
-{
+{
errmsg(0 , "program limit exceeded: %s size=%u", s, size) ;
rt_where() ;
exit(2) ;
}
+/* compile time */
void
-unexpected_char()
-{ int c = yylval.ival ;
+unexpected_char( void )
+{
+ int c = yylval.ival ;
+ char *lnstr = malloc( 20 );
+ char *s0, *s1, *sc, *fill;
+
+ if ( pfile_name )
+ { s0 = pfile_name ; s1 = ": " ; }
+ else s0 = s1 = "" ;
+
+ sprintf(lnstr, "line %d: ",token_lineno);
+
+ sc = get_source_line();
+ fprintf(stderr, "%s: %s%s%s%s", progname, s0, s1, lnstr, sc) ;
+ free(sc);
+
+ /* point to error location then show the error message */
+ fill = char_repeat((int) line_pos-1,' ');
+ fprintf(stderr, "%s: %s%s%s%s^ ", progname, s0, s1, lnstr, fill) ;
+ free(fill);
+ free(lnstr);
- fprintf(stderr, "%s: %u: ", progname, token_lineno) ;
if ( c > ' ' && c < 127 )
fprintf(stderr, "unexpected character '%c'\n" , c) ;
else
@@ -320,9 +377,9 @@ void type_error(p)
/* a minimal vfprintf */
int simple_vfprintf( fp, format, argp)
FILE *fp ;
- char *format ;
+ char *format ;
va_list argp ;
-{
+{
char *q , *p, *t ;
int l_flag ;
char xbuff[64] ;
@@ -331,7 +388,7 @@ int simple_vfprintf( fp, format, argp)
xbuff[0] = '%' ;
while ( *q != 0 )
- {
+ {
if ( *q != '%' )
{
putc(*q, fp) ; q++ ; continue ;
@@ -374,7 +431,7 @@ int simple_vfprintf( fp, format, argp)
break ;
default:
- putc('%', fp) ;
+ putc('%', fp) ;
q = p ;
break ;
}
diff --git a/awka/scan.c b/awka/scan.c
index 6bc7a2b..eac5779 100644
--- a/awka/scan.c
+++ b/awka/scan.c
@@ -47,14 +47,16 @@
#include "files.h"
/* static functions */
-static void PROTO(scan_fillbuff, (void)) ;
-static void PROTO(scan_open, (void)) ;
-static int PROTO(slow_next, (void)) ;
-static void PROTO(eat_comment, (void)) ;
-static void PROTO(eat_semi_colon, (void)) ;
+static void PROTO(scan_fillbuff, (void)) ;
+static void PROTO(scan_open, (void)) ;
+static int PROTO(slow_next, (void)) ;
+static unsigned char PROTO(next, (void)) ;
+static void PROTO(un_next, (void)) ;
+static void PROTO(eat_comment, (void)) ;
+static void PROTO(eat_semi_colon, (void)) ;
static double PROTO(collect_decimal, (int, int *)) ;
-static int PROTO(collect_string, (void)) ;
-static int PROTO(collect_RE, (void)) ;
+static int PROTO(collect_string, (void)) ;
+static int PROTO(collect_RE, (void)) ;
/*-----------------------------
@@ -74,6 +76,7 @@ extern char **vardeclare;
extern int vdec_no, vdec_allc;
int _true_re = 0;
+int line_pos = 0 ;
void PROTO(init_extbi, (void));
@@ -144,6 +147,16 @@ scan_cleanup()
scan_code['\r'] = SC_UNEXPECTED ;
}
+static unsigned char
+next()
+{
+ line_pos++;
+ return (*buffp ? *buffp++ : slow_next());
+}
+
+static void
+un_next() { buffp--; line_pos--; }
+
/*--------------------------------
global variables shared by yyparse() and yylex()
and used for error messages too
@@ -157,6 +170,7 @@ int paren_cnt ;
int brace_cnt ;
int print_flag ; /* changes meaning of '>' */
int getline_flag ; /* changes meaning of '<' */
+//int line_pos = 0 ;
/*----------------------------------------
@@ -207,10 +221,12 @@ slow_next()
ZFREE(q) ;
scan_open() ;
token_lineno = lineno = 1 ;
+ line_pos = 0 ;
}
else break /* real eof */ ;
}
+ line_pos++;
return *buffp++ ; /* note can un_next() , eof which is zero */
}
@@ -250,7 +266,7 @@ eat_comment()
{
/* navigate to the next word */
while (c == ' ' || c == '\t') c = next() ;
- if (c == '\n' || c == '\0') return ;
+ if (c == '\n' || c == '\0') { line_pos = 0 ; return ; }
i = 0 ;
while (c != ' ' && c != '\t' && c != '\n' && c != '\0')
@@ -335,7 +351,9 @@ eat_nl() /* eat all space including newlines */
while (scan_code[c = next()] == SC_SPACE) ;
if (c == '\n')
+ {
token_lineno = ++lineno ;
+ }
else if (c == 0)
{
un_next() ;
@@ -356,8 +374,10 @@ eat_nl() /* eat all space including newlines */
default:
un_next() ;
+ line_pos = 0;
return ;
}
+ line_pos = 0;
}
int
@@ -392,6 +412,7 @@ yylex()
if (c == '\n')
{
token_lineno = ++lineno ;
+ line_pos = 0;
goto reswitch ;
}
@@ -451,7 +472,36 @@ yylex()
ct_ret(COMMA) ;
case SC_MUL:
- test1_ret('=', MUL_ASG, MUL) ;
+ // * or *= or **=
+ //test1_ret('=', MUL_ASG, MUL) ;
+ switch (next())
+ {
+ case '*': // **
+ yylval.ival = '*' ;
+ string_buff[0] =
+ string_buff[1] = '*' ;
+ string_buff[2] = 0 ;
+ if (c = next() == '=')
+ {
+ // **=
+ yylval.ival = '=' ;
+ string_buff[2] = '=';
+ string_buff[3] = 0;
+ ct_ret(POW_ASG);
+ }
+ yylval.ival = c ;
+ string_buff[2] = c;
+ string_buff[3] = 0;
+ ct_ret(UNEXPECTED);
+
+ case '=': // *=
+ ct_ret(MUL_ASG) ;
+
+ default: // *
+ un_next() ;
+ ct_ret(MUL) ;
+ }
+
case SC_DIV:
{
@@ -1109,6 +1159,7 @@ collect_string()
{
p-- ;
lineno++ ;
+ line_pos = 0;
}
else if (c == 0) un_next() ;
else
diff --git a/awka/scan.h b/awka/scan.h
index dfe0e66..3aba6f1 100644
--- a/awka/scan.h
+++ b/awka/scan.h
@@ -39,6 +39,7 @@ the GNU General Public License, version 2, 1991.
#include "parse.h"
#endif
+int line_pos;
extern char scan_code[256] ;
@@ -88,9 +89,6 @@ void PROTO( unexpected_char, (void) ) ;
#define ct_ret(x) return current_token = (x)
-#define next() (*buffp ? *buffp++ : slow_next())
-#define un_next() buffp--
-
#define test1_ret(c,x,d) if ( next() == (c) ) ct_ret(x) ;\
else { un_next() ; ct_ret(d) ; }
diff --git a/benchmark/Makefile.in b/benchmark/Makefile.in
index 96a2ce0..8241656 100644
--- a/benchmark/Makefile.in
+++ b/benchmark/Makefile.in
@@ -10,245 +10,108 @@ PERL = perl
PYTHON = python3
TCL = tclsh
-AWKAV = $(AWKA) -v | head -n3
+AWKAV = $(AWKA) -v | head -n2
GAWKV = $(GAWK) -V | head -n1
-MAWKV = $(MAWK) -W Version 2>&1 | head -n1
-PERLV = $(PERL) -v | head -n2
+MAWKV = $(MAWK) -W Version 2>&1 | head -n1
+PERLV = $(PERL) -v | head -n2 | tail -n1
PYTHONV = $(PYTHON) -V
TCLV = echo 'puts [ concat "TCL" " " [info patchlevel]]' | $(TCL) -
TIME = /usr/bin/time
CMP = cmp
-CC = gcc
-CFLAGS = -O2
-EXE =
+CC = gcc -O3
+EXE =
MLIB = -lm
-SLIB =
+SLIB =
MATHLIB = $(MLIB) $(SLIB)
+CFLAGS = -L ../lib -I../lib ../lib/libawka.a $(MATHLIB)
srcdir = .
+# run a number of times to average the result
+SEQCMD = seq 5 | xargs -I{}
+
+srcdir = .
+
+###############
bench: start array array2 array3 array4 array4b array4c array4d io cast expr function loop recurse split parsecsv regexp end
###############
versions::
+ @date
+ @echo "--------- Versions ----------"
@$(AWKAV)
@$(MAWKV)
@$(GAWKV)
@$(PERLV)
@$(PYTHONV)
@$(TCLV)
- @echo "-----------------------------"
+ @echo "--------- Results -----------"
start::
@echo "Generating benchmarks..."
- @date >res.out
- @echo "-----------------------------" >>res.out
-
-array::
- @echo 'ARRAY'
- @echo 'ARRAY:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @$(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
-
-array2::
- @echo 'ARRAY2'
- @echo 'ARRAY2:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @$(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
-
-array3::
- @echo 'ARRAY3'
- @echo 'ARRAY3:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @$(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
-
-array4::
- @echo 'ARRAY4'
- @echo 'ARRAY4:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @$(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
-
-array4b::
- @echo 'ARRAY4b'
- @echo 'ARRAY4b:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @$(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
-
-array4c::
- @echo 'ARRAY4c'
- @echo 'ARRAY4c:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @$(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
-
-array4d::
- @echo 'ARRAY4d'
- @echo 'ARRAY4d:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @$(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
-
-
-io::
- @echo 'IO'
- @echo 'IO:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @$(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
+ @date
+ @echo "-----------------------------"
-cast::
- @echo 'CAST'
- @echo 'CAST:' >>res.out
+array array2 array3 array4 array4b array4c array4d io::
+ @echo $@
@$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @ # $(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
+ @$(CC) x.c $(CFLAGS)
+ @$(SEQCMD) $(TIME) -f "$@\tAWKA\t%e sec" ./a.out 2>>$@ares.out
+ @$(SEQCMD) $(TIME) -f "$@\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>$@mres.out
+ @$(SEQCMD) $(TIME) -f "$@\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>$@gres.out
+ @$(SEQCMD) $(TIME) -f "$@\tPERL\t%e sec" $(PERL) $@.pl 2>>$@plres.out
+ @$(SEQCMD) $(TIME) -f "$@\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>$@pyres.out
+ @$(SEQCMD) $(TIME) -f "$@\tTCL \t%e sec" $(TCL) $@.tcl 2>>$@tres.out
-expr::
- @echo 'EXPR'
- @echo 'EXPR:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @ # $(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
-function::
- @echo 'FUNCTION'
- @echo 'FUNCTION:' >>res.out
+cast expr function recurse split::
+ @echo $@
@$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @ # $(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
+ @$(CC) x.c $(CFLAGS)
+ @$(SEQCMD) $(TIME) -f "$@\tAWKA\t%e sec" ./a.out 2>>$@ares.out
+ @$(SEQCMD) $(TIME) -f "$@\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>$@mres.out
+ @$(SEQCMD) $(TIME) -f "$@\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>$@gres.out
+ @$(SEQCMD) $(TIME) -f "$@\tPERL\t%e sec" $(PERL) $@.pl 2>>$@plres.out
+ @$(SEQCMD) $(TIME) -f "$@\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>$@pyres.out
loop::
- @echo 'LOOP'
- @echo 'LOOP:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @ # $(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
-
-recurse::
- @echo 'RECURSE'
- @echo 'RECURSE:' >>res.out
+ @echo $@
@$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @ # $(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
+ @$(CC) x.c $(CFLAGS)
+ @seq 2 | $(TIME) -f "$@\tAWKA\t%e sec" ./a.out 2>>$@ares.out
+ @seq 2 | $(TIME) -f "$@\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>$@mres.out
+ @seq 2 | $(TIME) -f "$@\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>$@gres.out
+ @seq 2 | $(TIME) -f "$@\tPERL\t%e sec" $(PERL) $@.pl 2>>$@plres.out
+ @seq 2 | $(TIME) -f "$@\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>$@pyres.out
-split::
- @echo 'SPLIT'
- @echo 'SPLIT:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tPERL\t%e sec" $(PERL) $@.pl 2>>res.out
- @$(TIME) -f "\tPYTHON\t%e sec" $(PYTHON) $@.py 2>>res.out
- @ # $(TIME) -f "\tTCL \t%e sec" $(TCL) $@.tcl 2>>res.out
-parsecsv::
- @echo 'PARSECSV'
- @echo 'PARSECSV:' >>res.out
+parsecsv regexp::
+ @echo $@
@$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
+ @$(CC) x.c $(CFLAGS)
+ @$(SEQCMD) $(TIME) -f "$@\tAWKA\t%e sec" ./a.out 2>>$@ares.out
+ @$(SEQCMD) $(TIME) -f "$@\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>$@mres.out
+ @$(SEQCMD) $(TIME) -f "$@\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>$@gres.out
-regexp::
- @echo 'REGEXP'
- @echo 'REGEXP:' >>res.out
- @$(AWKA) -f $@.awk >x.c
- @$(CC) $(CLFAGS) x.c -L ../lib -I../lib ../lib/libawka.a -lm
- @$(TIME) -f "\tAWKA\t%e sec" ./a.out 2>>res.out
- @$(TIME) -f "\tMAWK\t%e sec" $(MAWK) -f $@.awk 2>>res.out
- @$(TIME) -f "\tGAWK\t%e sec" $(GAWK) -f $@.awk 2>>res.out
end::
@echo "Finished benchmarking!"
- @$(GAWK) "/:|sec|--/" res.out
+ @cat *res.out | $(GAWK) -f lib/benchmarksort.awk
###############
-results: res.out versions
- @$(GAWK) "/:|sec|--/" res.out
+results: versions
+ @cat *res.out | $(GAWK) -f lib/benchmarksort.awk
clean:
- rm -fr _* core x.c a.out res.out
+ rm -fr _* core x.c a.out *res.out
distclean: clean
rm -f Makefile
diff --git a/benchmark/README b/benchmark/README
index d54a530..73d2bc1 100644
--- a/benchmark/README
+++ b/benchmark/README
@@ -47,6 +47,20 @@ may not be as efficient as they could/should be. By all means
improve them & forward me a copy. Any takers? Anyone? I also
need perl scripts for the parsecsv, loop & regexp examples.
+#############################################################
+Note:
+the results below are different from running the benchmarking
+scripts now.
+
+The number of loops for each test has been reduced to make
+the benchmarking quicker to run, while each test is run
+multiple times to average the results.
+
+The timing numbers are indicative, and the numbers are not the
+actual time taken to run a test.
+
+#############################################################
+
RESULTS for v0.7.1, 17-8-2000:
CAST
diff --git a/benchmark/array.awk b/benchmark/array.awk
index 02c5109..5f81c28 100644
--- a/benchmark/array.awk
+++ b/benchmark/array.awk
@@ -5,7 +5,7 @@
BEGIN {
if (!base)
- base = 300000
+ base = 3000
for (i=0; i"/dev/stderr"
v3 = "qwerty qwerty qwerty qwerty qwerty qwerty"
@@ -23,8 +23,8 @@ BEGIN {
while (getline<"io.txt">0)
{
x = $3
- if (nr++ < 2)
- print x
+ if (nr++ < 2) {}
+ #print x
}
system("rm -f io.txt");
diff --git a/benchmark/io.pl b/benchmark/io.pl
index ee41877..4eeb5a3 100644
--- a/benchmark/io.pl
+++ b/benchmark/io.pl
@@ -6,7 +6,7 @@
# another example of why Awk should be used for processing
# data! ;-)
-$base = 1500000;
+$base = 15000;
$v3 = "qwerty qwerty qwerty qwerty qwerty qwerty";
$v4 = "quincy quincy quincy quincy quincy quincy";
$nr = 0;
@@ -30,7 +30,7 @@
@fields = split(" ");
$x = $fields[3];
if ($nr++ < 2) {
- print($x, "\n");
+ #print($x, "\n");
}
#$nr = $nr + 1;
}
diff --git a/benchmark/io.py b/benchmark/io.py
index 2cdfbf4..6015582 100644
--- a/benchmark/io.py
+++ b/benchmark/io.py
@@ -7,7 +7,7 @@
# data! ;-)
import os
-base = 1500000
+base = 15000
v3 = "qwerty qwerty qwerty qwerty qwerty qwerty"
v4 = "quincy quincy quincy quincy quincy quincy"
nr = 0
@@ -26,7 +26,8 @@
fields = S.split(" ")
x = fields[3]
if nr < 2:
- print(x)
+ nr = nr
+ #print(x)
nr = nr + 1
f.close()
diff --git a/benchmark/io.tcl b/benchmark/io.tcl
index 6c72444..531a5e3 100644
--- a/benchmark/io.tcl
+++ b/benchmark/io.tcl
@@ -1,6 +1,6 @@
#!/usr/local/bin/tcl
-set base 1500000
+set base 15000
set v3 "qwerty qwerty qwerty qwerty qwerty qwerty"
set v4 "quincy quincy quincy quincy quincy quincy"
@@ -23,7 +23,7 @@ while {[gets $io_txt line]>-1} {
set arr [split $line " "]
set x [lindex $arr 2]
if {$nr < 2} {
- puts $x
+ #puts $x
}
incr nr
}
diff --git a/benchmark/lib/benchmarksort.awk b/benchmark/lib/benchmarksort.awk
new file mode 100644
index 0000000..b199757
--- /dev/null
+++ b/benchmark/lib/benchmarksort.awk
@@ -0,0 +1,41 @@
+# sort
+# type\tname\ttime
+# by type|time
+#
+BEGIN {
+ FS = "\t"
+ OFS = FS
+ OFMT = "%0.02f"
+}
+!/PERL|PYTHON|AWKA|MAWK|GAWK|TCL/ {next}
+{
+ # sum and count the time values for each type,name combination
+ type = $1
+ name = $2
+ time = $3
+ split($3, T, " ")
+ tsum[type","name] += T[1]
+ nr[type","name] += 1
+ typ[type] = type
+}
+END {
+ for(tn in tsum) {
+ split(tn, X, ",")
+ # times array - use asorti to sort indexes by time
+ t[tsum[tn]","X[1]","X[2]] = 1
+ }
+ asort(typ,typsorted)
+ asorti(t, tkeys)
+ for(y in typsorted) {
+ if(y>1) print ""
+ print toupper(typsorted[y])":"
+ j = 1
+ for(x in tkeys) {
+ split(tkeys[x], XX, ",")
+ if(typsorted[y] == XX[2]) {
+ #print XX[2]","t[tkeys[x]]","XX[1]
+ printf("%d: %-10s %*.2f\n", j++, XX[3], 6, 10*XX[1])
+ }
+ }
+ }
+}
diff --git a/benchmark/loop.awk b/benchmark/loop.awk
index 5e450f9..af02279 100644
--- a/benchmark/loop.awk
+++ b/benchmark/loop.awk
@@ -71,6 +71,8 @@ BEGIN {
}
}
}
+
+ exit
print ""
print "and the best World Cup 99 cricket team is..."
diff --git a/benchmark/loop.pl b/benchmark/loop.pl
index 4eac6cf..5db34db 100644
--- a/benchmark/loop.pl
+++ b/benchmark/loop.pl
@@ -126,6 +126,8 @@
}
}
+exit;
+
print '';
print 'and the best World Cup 99 cricket team is...';
print 'POSITION ', 'TEAM', 'PTS', 'PLAYER';
diff --git a/benchmark/loop.py b/benchmark/loop.py
index 2d5b614..19842f8 100644
--- a/benchmark/loop.py
+++ b/benchmark/loop.py
@@ -94,6 +94,8 @@
bbw3 = bw3
bbw4 = bw4
+exit();
+
print('')
print('and the best World Cup 99 cricket team is...')
print('POSITION ', '\t', 'TEAM', '\t', 'PTS', '\t', 'PLAYER')
diff --git a/benchmark/parsecsv.awk b/benchmark/parsecsv.awk
index 85d4fb1..c3da081 100644
--- a/benchmark/parsecsv.awk
+++ b/benchmark/parsecsv.awk
@@ -1,5 +1,5 @@
BEGIN {
- if (!base) base = 50000
+ if (!base) base = 500
FS=","
line[1] = "a,b,c,d"
line[2] = "a,\"b\",c,d"
diff --git a/benchmark/recurse.awk b/benchmark/recurse.awk
index b8dcb8e..fa28286 100644
--- a/benchmark/recurse.awk
+++ b/benchmark/recurse.awk
@@ -6,8 +6,8 @@ function rec(a, b) {
}
BEGIN {
- for (i=1; i<2000; i++)
+ for (i=1; i<20; i++)
x += rec(1,400)
- print x
+ #print x
}
diff --git a/benchmark/recurse.pl b/benchmark/recurse.pl
index c22d0a3..a30d11a 100644
--- a/benchmark/recurse.pl
+++ b/benchmark/recurse.pl
@@ -8,9 +8,9 @@ sub rec {
}
}
-$base = 2000;
+$base = 20;
$x = 0;
for ($i=1; $i<$base; $i++) {
$x += rec(1, 400);
}
-print $x."\n";
+#print $x."\n";
diff --git a/benchmark/recurse.py b/benchmark/recurse.py
index e825632..ebc9f6c 100644
--- a/benchmark/recurse.py
+++ b/benchmark/recurse.py
@@ -6,8 +6,8 @@ def rec(x, y):
else:
return rec(a+1, b)
-base = 2000
+base = 20
x = 0
for i in range(1, base):
x += rec(1, 400)
-print(x, '\n')
+#print(x, '\n')
diff --git a/benchmark/regexp.awk b/benchmark/regexp.awk
index 44e27e3..003e7ea 100644
--- a/benchmark/regexp.awk
+++ b/benchmark/regexp.awk
@@ -1,7 +1,7 @@
# Contributed by Eiso AB
BEGIN {
- if (!base) base = 30000
+ if (!base) base = 300
Switch["123"] = " abc "
Switch["82"] = " def "
diff --git a/benchmark/split.awk b/benchmark/split.awk
index 0dd45e9..7ae84fb 100644
--- a/benchmark/split.awk
+++ b/benchmark/split.awk
@@ -1,5 +1,5 @@
BEGIN {
- if (!base) base = 200000
+ if (!base) base = 2000
str = "Newcastle Knights are the best there is"
diff --git a/benchmark/split.pl b/benchmark/split.pl
index b7112c0..802eb4c 100644
--- a/benchmark/split.pl
+++ b/benchmark/split.pl
@@ -1,4 +1,4 @@
-$base = 200000;
+$base = 2000;
$str = "Newcastle Knights are the best there is";
diff --git a/benchmark/split.py b/benchmark/split.py
index d1ffc22..f68a1cf 100644
--- a/benchmark/split.py
+++ b/benchmark/split.py
@@ -1,6 +1,6 @@
import sys, re, os
-base = 200000
+base = 2000
str = "Newcastle Knights are the best there is"
diff --git a/test/Makefile.in b/test/Makefile.in
index 7823bf0..f7af4df 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -27,18 +27,20 @@
SHELL = /bin/sh
AWK = @AWK@
CMP = @CMP@
-CC = @CC@
+CC = @CC@ -O3
EXE = @EXE@
MLIB = @MATHLIB@
SLIB = @SOCKET_LIBS@
AWKA = ../awka/awka
-MATHLIB = $(MLIB) $(SLIB)
+MATHLIB = $(MLIB) $(SLIB)
# for the brave at heart...
#AWKA = ../awka/awka -d
#MATHLIB = $(MLIB) -L../dfa -I../dfa -ldfa
+CFLAGS = -L../lib -I../lib ../lib/libawka.a $(MATHLIB)
+
srcdir = @srcdir@
VPATH = @srcdir@
@@ -58,7 +60,8 @@ basic: msg swaplns messages a_cat pdb_find_salt argarray longwrds \
nfldstr foronsplit divide parsecsv arraycat argtest2 fw rsre unbuf \
bslash print cox gensub zeroflag getnr2tm getnr2tb \
numindex subslash opasnslf opasnidx arynocls getlnbuf arysubnm \
- nlstrina nextfile next rsnul1nl beginexit mainexit fnrtest
+ nlstrina nextfile next rsnul1nl beginexit mainexit fnrtest \
+ powtest begingetline extendedchars
revive-awka: rslen rsnull scgi
@@ -74,13 +77,13 @@ extra: regtest inftest
next::
@$(AWKA) -f next.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx nextfile.in1 >_$@
$(CMP) $(srcdir)/next.ok _$@ && rm -f _$@
nextfile::
@$(AWKA) -f nextfile.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx nextfile.in1 nextfile.in2 nextfile.in3 >_$@
$(CMP) $(srcdir)/nextfile.ok _$@ && rm -f _$@
@@ -90,55 +93,55 @@ nasty::
@echo '-> order of execution some C compilers decide on, and really its not a'
@echo '-> problem. But if the test works for you, great!'
@$(AWKA) -f nasty.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/nasty.ok _$@ && rm -f _$@
zeroflag::
@$(AWKA) -f zeroflag.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/zeroflag.ok _$@ && rm -f _$@
rsnul1nl::
@$(AWKA) -f rsnul1nl.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx rsnul1nl.in >_$@
$(CMP) $(srcdir)/rsnul1nl.ok _$@ && rm -f _$@
rsnull::
@ $(AWKA) -f $@.awk > x.c
- @ $(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @ $(CC) x.c $(CFLAGS) -o xx
@/bin/echo -n -e "abc\0def\0hij" | ./xx > _$@
$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
rslen::
@ $(AWKA) -f $@.awk > $@.c
- @ $(CC) -g $@.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o $@.exe
+ @ $(CC) $@.c $(CFLAGS) -o $@.exe
@/bin/echo -n -e "123456789" | ./$@.exe > _$@
$(CMP) $(srcdir)/$@.ok _$@ && rm -f $@.exe $@.c _$@
scgi::
@ $(AWKA) -f $@.awk > $@.c
- @ $(CC) -g $@.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o $@.exe
+ @ $(CC) $@.c $(CFLAGS) -o $@.exe
@ ./$@.exe $@.in > $@.out
$(CMP) $(srcdir)/$@.ok $@.out && rm -f $@.exe $@.c $@.out
getnr2tm::
@$(AWKA) -f getnr2tm.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx getnr2tm.in >_$@
$(CMP) $(srcdir)/getnr2tm.ok _$@ && rm -f _$@
getnr2tb::
@$(AWKA) -f getnr2tb.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx getnr2tb.in >_$@
$(CMP) $(srcdir)/getnr2tb.ok _$@ && rm -f _$@
asort::
@$(AWKA) -f asort.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/asort.ok _$@ && rm -f _$@
@@ -148,64 +151,64 @@ printf1::
@echo '-> for reasons known only to itself. If you can provide telnet access'
@echo '-> to a machine exhibiting this problem do let me know. -andrew'
@$(AWKA) -f printf1.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/printf1.ok _$@ && rm -f _$@
numindex::
@$(AWKA) -f numindex.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx <$(srcdir)/numindex.in >_$@
$(CMP) $(srcdir)/numindex.ok _$@ && rm -f _$@
subslash::
@$(AWKA) -f subslash.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/subslash.ok _$@ && rm -f _$@
opasnslf::
@$(AWKA) -f opasnslf.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/opasnslf.ok _$@ && rm -f _$@
opasnidx::
@$(AWKA) -f opasnidx.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/opasnidx.ok _$@ && rm -f _$@
arynocls::
@$(AWKA) -f arynocls.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx arynocls.in >_$@
$(CMP) $(srcdir)/arynocls.ok _$@ && rm -f _$@
getlnbuf::
@$(AWKA) -f getlnbuf.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx getlnbuf.in >_$@
@$(AWKA) -f gtlnbufv.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx getlnbuf.in >_2$@
$(CMP) $(srcdir)/getlnbuf.ok _$@ && $(CMP) $(srcdir)/getlnbuf.ok _2$@ && rm -f _$@ _2$@
arysubnm::
@$(AWKA) -f arysubnm.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/arysubnm.ok _$@ && rm -f _$@
nlstrina::
@$(AWKA) -f nlstrina.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/nlstrina.ok _$@ && rm -f _$@
poundbang::
@$(AWKA) -f poundbang >x.c;
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx poundbang >_`basename $@`
$(CMP) $(srcdir)/poundbang.ok _`basename $@` && rm -f _`basename $@`
@@ -214,16 +217,17 @@ msg::
@echo 'in floating point values are probably benign -- in particular,'
@echo 'some systems may omit a leading zero and the floating point'
@echo 'precision may lead to slightly different output in a few cases.'
+ @echo ''
swaplns::
@$(AWKA) -f $(srcdir)/swaplns.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/swaplns.in >_$@
$(CMP) $(srcdir)/swaplns.ok _$@ && rm -f _$@
messages::
@$(AWKA) -f $(srcdir)/messages.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >out2 2>out3
{ $(CMP) $(srcdir)/out1.ok out1 && $(CMP) $(srcdir)/out2.ok out2 && \
$(CMP) $(srcdir)/out3.ok out3 && rm -f out1 out2 out3; } || \
@@ -236,223 +240,223 @@ argarray::
*) cp $(srcdir)/argarray.in . ;; \
esac
@$(AWKA) -f $(srcdir)/argarray.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@TEST=test echo just a test | ./xx -v EXE=$(EXE) ./argarray.in - >_$@
$(CMP) $(srcdir)/argarray.ok _$@ && rm -f _$@
argtest2::
@$(AWKA) -f $(srcdir)/argtest2.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
@$(AWKA) -f $(srcdir)/argtest2.awk -a "-v var=value" >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >>_$@
@$(AWKA) -f $(srcdir)/argtest2.awk -a "-We -v var=value" >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >>_$@
$(CMP) $(srcdir)/argtest2.ok _$@ && rm -f _$@
fstabplus::
@$(AWKA) -f $(srcdir)/fstabplus.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@echo '1 2' | ./xx >_$@
$(CMP) $(srcdir)/fstabplus.ok _$@ && rm -f _$@
pdb_find_salt::
@$(AWKA) -f $(srcdir)/pdb_find_salt.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx pdb_find_salt.in >_$@
$(CMP) $(srcdir)/pdb_find_salt.ok _$@ && rm -f _$@
print::
@$(AWKA) -f $(srcdir)/print.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/print.ok _$@ && rm -f _$@
gensub::
@$(AWKA) -f $(srcdir)/gensub.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/gensub.ok _$@ && rm -f _$@
cox::
@$(AWKA) -f $(srcdir)/cox.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/cox.ok _$@ && rm -f _$@
hh::
@$(AWKA) -f $(srcdir)/hh.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx -v scalefile=hh.in >_$@
$(CMP) $(srcdir)/hh.ok _$@ && rm -f _$@
retest::
@$(AWKA) -f $(srcdir)/retest.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/retest.ok _$@ && rm -f _$@
bslash::
@$(AWKA) -f $(srcdir)/bslash.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/bslash.ok _$@ && rm -f _$@
fw::
@$(AWKA) -f $(srcdir)/fw.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx fw.in >_$@
$(CMP) $(srcdir)/fw.ok _$@ && rm -f _$@
rsre::
@$(AWKA) -f $(srcdir)/rsre.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx rsre.awk >_$@
$(CMP) $(srcdir)/rsre.ok _$@ && rm -f _$@
unbuf::
@$(AWKA) -f $(srcdir)/unbuf.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@cat $(srcdir)/unbuf.awk | ./xx -vINFILE="$(srcdir)/unbuf.awk" unbuf.awk >_$@
$(CMP) $(srcdir)/unbuf.ok _$@ && rm -f _$@
a_cat::
@$(AWKA) -f $(srcdir)/a_cat.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/a_cat.ok _$@ && rm -f _$@
bil::
@$(AWKA) -f $(srcdir)/bil.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx bil.in >_$@
$(CMP) $(srcdir)/bil.ok _$@ && rm -f _$@
bil2::
@$(AWKA) -f $(srcdir)/bil2.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx bil2.in1 >_$@
$(CMP) $(srcdir)/bil2.ok _$@ && rm -f _$@
eiso::
@$(AWKA) -f $(srcdir)/eiso.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx eiso.in >_$@
$(CMP) $(srcdir)/eiso.ok _$@ && rm -f _$@
eiso2::
@$(AWKA) -f $(srcdir)/eiso2.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx eiso2.in >_$@
$(CMP) $(srcdir)/eiso2.ok _$@ && rm -f _$@
eiso3::
@$(AWKA) -f $(srcdir)/eiso3.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/eiso3.ok _$@ && rm -f _$@
eiso4::
@$(AWKA) -f $(srcdir)/eiso4.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx eiso4.in >_$@
$(CMP) $(srcdir)/eiso4.ok _$@ && rm -f _$@
divide::
@$(AWKA) -f $(srcdir)/divide.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/divide.ok _$@ && rm -f _$@
parsecsv::
@$(AWKA) -f $(srcdir)/parsecsv.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx parsecsv.in >_$@
$(CMP) $(srcdir)/parsecsv.ok _$@ && rm -f _$@
range::
@$(AWKA) -f $(srcdir)/range.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx range.in >_$@
$(CMP) $(srcdir)/range.ok _$@ && rm -f _$@
conflict::
@$(AWKA) -f $(srcdir)/conflict.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/conflict.ok _$@ && rm -f _$@
aloop::
@$(AWKA) -f $(srcdir)/aloop.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/aloop.ok _$@ && rm -f _$@
dubois::
@$(AWKA) -f $(srcdir)/dubois.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/dubois.ok _$@ && rm -f _$@
splitrem::
@$(AWKA) -f $(srcdir)/splitrem.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/splitrem.ok _$@ && rm -f _$@
fun::
@$(AWKA) -f $(srcdir)/fun.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/fun.ok _$@ && rm -f _$@
fsrs::
@$(AWKA) -f $(srcdir)/fsrs.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/fsrs.in >_$@
$(CMP) $(srcdir)/fsrs.ok _$@ && rm -f _$@
amsal::
@$(AWKA) -f $(srcdir)/amsal.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/amsal.in >_$@
$(CMP) $(srcdir)/amsal.ok _$@ && rm -f _$@
amsal2::
@$(AWKA) -f $(srcdir)/amsal2.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/amsal2.awk >_$@
$(CMP) $(srcdir)/amsal2.ok _$@ && rm -f _$@
amsal3::
@$(AWKA) -f $(srcdir)/amsal3.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/amsal3.in >_$@
$(CMP) $(srcdir)/amsal3.ok _$@ && rm -f _$@
amsal4::
@$(AWKA) -f $(srcdir)/amsal4.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/amsal4-1.in $(srcdir)/amsal4-2.in >_$@
$(CMP) $(srcdir)/amsal4.ok _$@ && rm -f _$@
amsal5::
@$(AWKA) -f $(srcdir)/amsal5.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/amsal5.in >_$@
$(CMP) $(srcdir)/amsal5.ok _$@ && rm -f _$@
arraycat::
@$(AWKA) -f $(srcdir)/arraycat.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/arraycat.ok _$@ && rm -f _$@
longwrds::
@$(AWKA) -f $(srcdir)/longwrds.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/manpage >_$@
$(CMP) $(srcdir)/longwrds.ok _$@ && rm -f _$@
@@ -464,13 +468,13 @@ regtest::
posix::
@$(AWKA) -f $(srcdir)/posix.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@echo '1:2,3 4' | ./xx >_$@
$(CMP) $(srcdir)/posix.ok _$@ && rm -f _$@
posix2::
@$(AWKA) -f $(srcdir)/posix2.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx posix2.in >_$@
$(CMP) $(srcdir)/posix2.ok _$@ && rm -f _$@
@@ -479,7 +483,7 @@ manyfiles::
@mkdir junk
@$(AWK) 'BEGIN { for (i = 1; i <= 32; i++) print i, i}' >_$@
@$(AWKA) -f $(srcdir)/manyfiles.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx _$@ _$@
@echo "This number better be 1 -> " | tr -d '\012\015'
@wc -l junk/* | $(AWK) '$$1 != 2' | wc -l
@@ -487,152 +491,152 @@ manyfiles::
compare::
@$(AWKA) -f $(srcdir)/compare.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx 0 1 $(srcdir)/compare.in >_$@
$(CMP) $(srcdir)/compare.ok _$@ && rm -f _$@
arrayref::
@$(AWKA) -f $(srcdir)/arrayref.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/arrayref.ok _$@ && rm -f _$@
rs::
@$(AWKA) '{ print $$1, $$2}' >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx -v RS="" $(srcdir)/rs.in >_$@
$(CMP) $(srcdir)/rs.ok _$@ && rm -f _$@
fsbs::
@$(AWKA) '{ print $$1, $$2 }' >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx -v FS='\' $(srcdir)/fsbs.in >_$@
$(CMP) $(srcdir)/fsbs.ok _$@ && rm -f _$@
inftest::
@echo This test is very machine specific...
@$(AWKA) -f $(srcdir)/inftest.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/inftest.ok _$@ && rm -f _$@
getline::
@$(AWKA) -f $(srcdir)/getline.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/getline.awk $(srcdir)/getline.awk >_$@
$(CMP) $(srcdir)/getline.ok _$@ && rm -f _$@
getline2::
@$(AWKA) -f $(srcdir)/getline2.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/getline2.in >_$@
$(CMP) $(srcdir)/getline2.ok _$@ && rm -f _$@
rand::
@$(AWKA) -f $(srcdir)/rand.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/rand.ok _$@ && rm -f _$@
negexp::
@$(AWKA) 'BEGIN { a = -2; print 10^a }' >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/negexp.ok _$@ && rm -f _$@
asgext::
@$(AWKA) -f $(srcdir)/asgext.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/asgext.in >_$@
$(CMP) $(srcdir)/asgext.ok _$@ && rm -f _$@
anchgsub::
@$(AWKA) -f $(srcdir)/anchgsub.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/anchgsub.in >_$@
$(CMP) $(srcdir)/anchgsub.ok _$@ && rm -f _$@
splitargv::
@$(AWKA) -f $(srcdir)/splitargv.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/splitargv.in >_$@
$(CMP) $(srcdir)/splitargv.ok _$@ && rm -f _$@
nfset::
@$(AWKA) -f $(srcdir)/nfset.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/nfset.in >_$@
$(CMP) $(srcdir)/nfset.ok _$@ && rm -f _$@
reparse::
@$(AWKA) -f $(srcdir)/reparse.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/reparse.in >_$@
$(CMP) $(srcdir)/reparse.ok _$@ && rm -f _$@
convfmt::
@$(AWKA) -f $(srcdir)/convfmt.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/convfmt.ok _$@ && rm -f _$@
litoct::
@$(AWKA) -f $(srcdir)/litoct.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@echo ab | ./xx >_$@
$(CMP) $(srcdir)/litoct.ok _$@ && rm -f _$@
resplit::
@$(AWKA) '{ FS = ":"; $$0 = $$0; print $$2 }' >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@echo a:b:c d:e:f | ./xx > _$@
$(CMP) $(srcdir)/resplit.ok _$@ && rm -f _$@
rswhite::
@$(AWKA) -f $(srcdir)/rswhite.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/rswhite.in > _$@
$(CMP) $(srcdir)/rswhite.ok _$@ && rm -f _$@
intprec::
@-$(AWKA) -f $(srcdir)/intprec.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx > _$@ 2>&1
$(CMP) $(srcdir)/intprec.ok _$@ && rm -f _$@
childin::
@$(AWKA) 'BEGIN { "cat" | getline; print; close("cat") }' >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@echo hi | ./xx > _$@
$(CMP) $(srcdir)/childin.ok _$@ && rm -f _$@
numsubstr::
@$(AWKA) -f numsubstr.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@-AWKPATH=$(srcdir) ./xx $(srcdir)/numsubstr.in >_$@
$(CMP) $(srcdir)/numsubstr.ok _$@ && rm -f _$@
gnureops::
@$(AWKA) -f $(srcdir)/gnureops.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/gnureops.ok _$@ && rm -f _$@
pcntplus::
@$(AWKA) -f $(srcdir)/pcntplus.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/pcntplus.ok _$@ && rm -f _$@
prmreuse::
@$(AWKA) -f $(srcdir)/prmreuse.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/prmreuse.ok _$@ && rm -f _$@
math::
@$(AWKA) -f $(srcdir)/math.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/math.ok _$@ && rm -f _$@
@@ -642,140 +646,140 @@ fflush::
fldchg::
@$(AWKA) -f $(srcdir)/fldchg.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/fldchg.in >_$@
$(CMP) $(srcdir)/fldchg.ok _$@ && rm -f _$@
fldchgnf::
@$(AWKA) -f $(srcdir)/fldchgnf.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/fldchgnf.in >_$@
$(CMP) $(srcdir)/fldchgnf.ok _$@ && rm -f _$@
reindops::
@$(AWKA) -f $(srcdir)/reindops.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/reindops.in >_$@
$(CMP) $(srcdir)/reindops.ok _$@ && rm -f _$@
sprintfc::
@$(AWKA) -f $(srcdir)/sprintfc.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/sprintfc.in >_$@
$(CMP) $(srcdir)/sprintfc.ok _$@ && rm -f _$@
getlnhd::
@$(AWKA) -f $(srcdir)/getlnhd.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/getlnhd.ok _$@ && rm -f _$@
backgsub::
@$(AWKA) -f $(srcdir)/backgsub.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/backgsub.in >_$@
$(CMP) $(srcdir)/backgsub.ok _$@ && rm -f _$@
tweakfld::
@$(AWKA) -f $(srcdir)/tweakfld.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/tweakfld.in >_$@
@rm -f errors.cleanup
$(CMP) $(srcdir)/tweakfld.ok _$@ && rm -f _$@
clsflnam::
@$(AWKA) -f $(srcdir)/clsflnam.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/clsflnam.in >_$@
$(CMP) $(srcdir)/clsflnam.ok _$@ && rm -f _$@
mmap8k::
@$(AWKA) '{ print }' >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/mmap8k.in >_$@
$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@
dynlj::
@$(AWKA) -f $(srcdir)/dynlj.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/dynlj.ok _$@ && rm -f _$@
substr::
@$(AWKA) -f $(srcdir)/substr.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/substr.ok _$@ && rm -f _$@
eofsplit::
@$(AWKA) -f $(srcdir)/eofsplit.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/eofsplit.ok _$@ && rm -f _$@
prt1eval::
@$(AWKA) -f $(srcdir)/prt1eval.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/prt1eval.ok _$@ && rm -f _$@
prtoeval::
@$(AWKA) -f $(srcdir)/prtoeval.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/prtoeval.ok _$@ && rm -f _$@
gsubtest::
@$(AWKA) -f $(srcdir)/gsubtest.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/gsubtest.ok _$@ && rm -f _$@
splitwht::
@$(AWKA) -f $(srcdir)/splitwht.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/splitwht.ok _$@ && rm -f _$@
back89::
@$(AWKA) '/a\8b/' >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/back89.in >_$@
$(CMP) $(srcdir)/back89.ok _$@ && rm -f _$@
tradanch::
@$(AWKA) -f $(srcdir)/tradanch.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/tradanch.in >_$@
$(CMP) $(srcdir)/tradanch.ok _$@ && rm -f _$@
nlfldsep::
@$(AWKA) -f $(srcdir)/nlfldsep.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/nlfldsep.in > _$@
$(CMP) $(srcdir)/nlfldsep.ok _$@ && rm -f _$@
splitvar::
@$(AWKA) -f $(srcdir)/splitvar.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/splitvar.in >_$@
$(CMP) $(srcdir)/splitvar.ok _$@ && rm -f _$@
foronsplit::
@$(AWKA) -f $(srcdir)/foronsplit.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/foronsplit.ok _$@ && rm -f _$@
intest::
@$(AWKA) -f $(srcdir)/intest.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/intest.ok _$@ && rm -f _$@
strftlng::
@$(AWKA) -f $(srcdir)/strftlng.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@TZ=UTC; export TZ; ./xx >_$@
@if $(CMP) -s $(srcdir)/strftlng.ok _$@ ; then : ; else \
TZ=UTC0; export TZ; ./xx >_$@ ; \
@@ -784,57 +788,57 @@ strftlng::
nfldstr::
@$(AWKA) '$$1 == 0 { print "bug" }' >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@echo | ./xx > _$@
$(CMP) $(srcdir)/nfldstr.ok _$@ && rm -f _$@
nors::
@$(AWKA) '{ print $$NF }' >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@echo A B C D E | tr -d '\012\015' | ./xx - $(srcdir)/nors.in > _$@
$(CMP) $(srcdir)/nors.ok _$@ && rm -f _$@
fnarydel::
@$(AWKA) -f $(srcdir)/fnarydel.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/fnarydel.ok _$@ && rm -f _$@
pipeio1::
@$(AWKA) -f $(srcdir)/pipeio1.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
@rm -f test1 test2
$(CMP) $(srcdir)/pipeio1.ok _$@ && rm -f _$@
pipeio2::
@$(AWKA) -f $(srcdir)/pipeio2.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx -v SRCDIR=$(srcdir) >_$@
$(CMP) $(srcdir)/pipeio2.ok _$@ && rm -f _$@
funstack::
@$(AWKA) -f $(srcdir)/funstack.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/funstack.in >_$@
$(CMP) $(srcdir)/funstack.ok _$@ && rm -f _$@
clobber::
@$(AWKA) -f $(srcdir)/clobber.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/clobber.ok seq && $(CMP) $(srcdir)/clobber.ok _$@ && rm -f _$@
@rm -f seq
delarprm::
@$(AWKA) -f $(srcdir)/delarprm.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/delarprm.ok _$@ && rm -f _$@
prdupval::
@$(AWKA) -f $(srcdir)/prdupval.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $(srcdir)/prdupval.in >_$@
$(CMP) $(srcdir)/prdupval.ok _$@ && rm -f _$@
@@ -842,7 +846,7 @@ nondec::
@if grep BITOP ../config.h | grep define > /dev/null; \
then \
$(AWKA) -f $(srcdir)/nondec.awk >x.c; \
- $(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx \
+ $(CC) x.c $(CFLAGS) -o xx \
./xx >_$@; \
else \
cp $(srcdir)/nondec.ok _$@; \
@@ -851,25 +855,43 @@ nondec::
beginexit::
@$(AWKA) -f $(srcdir)/$@.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
mainexit::
@$(AWKA) -f $(srcdir)/$@.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@(./xx $@.in ; echo $$?) >_$@
$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fnrtest::
@$(AWKA) -f $(srcdir)/$@.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx $@.in $@.in $@.in >_$@
$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+powtest::
+ @$(AWKA) -f $(srcdir)/$@.awk >x.c
+ @$(CC) x.c $(CFLAGS) -o xx
+ @./xx >_$@
+ $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+begingetline::
+ @$(AWKA) -f $(srcdir)/$@.awk >x.c
+ @$(CC) x.c $(CFLAGS) -o xx
+ @./xx >_$@
+ $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+extendedchars::
+ @$(AWKA) -f $(srcdir)/$@.awk >x.c
+ @$(CC) x.c $(CFLAGS) -o xx
+ @./xx >_$@
+ $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
mathxtra::
@$(AWKA) -f $(srcdir)/math_extra.awk >x.c
- @$(CC) -g x.c -L../lib -I../lib ../lib/libawka.a $(MATHLIB) -o xx
+ @$(CC) x.c $(CFLAGS) -o xx
@./xx >_$@
$(CMP) $(srcdir)/math_extra.ok _$@ && rm -f _$@
diff --git a/test/arynocls.awk b/test/arynocls.awk
index 724c9ac..8e3c9ce 100644
--- a/test/arynocls.awk
+++ b/test/arynocls.awk
@@ -34,16 +34,16 @@
# The program bug is to not close the file in sub2.
function sub1(x) {
-# while (getline < "a" == 1) i++
+# while (getline < "a" == 1) i++
while (getline < INPUT == 1) i++
-# close("a")
+# close("a")
close(INPUT)
}
function sub2(x) {
i=0
delete y
-# while (getline < "a" == 1) z[++i] = $1
+# while (getline < "a" == 1) z[++i] = $1
while (getline < INPUT == 1) z[++i] = $1
for(i in z) y[i] = x[i] + z[i]
}
@@ -53,7 +53,8 @@ function sub3(x, y, z) {
for(i=1; i<=4; i++) z[i] = y[i]
}
-BEGIN {
+BEGIN {
+ INPUT = "a"
sub1(x)
sub2(x)
sub3(x, y, z)
diff --git a/test/begingetline.awk b/test/begingetline.awk
new file mode 100644
index 0000000..824fd61
--- /dev/null
+++ b/test/begingetline.awk
@@ -0,0 +1,9 @@
+# Test using getline reading in the BEGIN section
+# Reading one value results in ++c being run twice
+# and the output is "2"
+
+BEGIN {
+ system("echo 1 > _f.out")
+ while ((getline a[++c] < "_f.out") > 0) { }
+ print c
+}
diff --git a/test/begingetline.ok b/test/begingetline.ok
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/test/begingetline.ok
@@ -0,0 +1 @@
+2
diff --git a/test/extendedchars.awk b/test/extendedchars.awk
new file mode 100644
index 0000000..f5f044b
--- /dev/null
+++ b/test/extendedchars.awk
@@ -0,0 +1,4 @@
+# test the reading of extended chars (unsigned char)
+BEGIN {
+ print "ján Jón"
+}
\ No newline at end of file
diff --git a/test/extendedchars.ok b/test/extendedchars.ok
new file mode 100644
index 0000000..0fb94b1
--- /dev/null
+++ b/test/extendedchars.ok
@@ -0,0 +1 @@
+ján Jón
diff --git a/test/powtest.awk b/test/powtest.awk
new file mode 100644
index 0000000..1aa3315
--- /dev/null
+++ b/test/powtest.awk
@@ -0,0 +1,9 @@
+# test **= in addition to ^=
+BEGIN {
+x = y = 2;
+x ^= 3;
+y **= 3;
+print "8 <==> "x" <==> "y
+#z %_= 3;
+#w = 45@789
+}
diff --git a/test/powtest.ok b/test/powtest.ok
new file mode 100644
index 0000000..2c6dee2
--- /dev/null
+++ b/test/powtest.ok
@@ -0,0 +1 @@
+8 <==> 8 <==> 8
diff --git a/x.c b/x.c
new file mode 100644
index 0000000..e69de29