BEGIN { file=ARGV[1]; #print "File=" file while (getline fname < file > 0) { printf ("Working on %s...\n", fname); while (getline line < fname > 0) { #print "\"" line "\"" if (line == " NAME */") { header=1; #print "header" } if (match(line,"__AROS_LH")) { if(header) { match(line,",[ \t]*[A-Za-z_][A-Za-z_0-9]*[ \t]*,[ \t]*$"); name=substr(line,RSTART,RLENGTH); match(name,"[A-Za-z_][A-Za-z_0-9]*"); name=substr(name,RSTART,RLENGTH); #print "Name=" name } } if (line == "/* LOCATION */") { #print "Location" if (header) { getline line < fname; match(line,",[ \t]*[0-9]*[ \t]*,"); offset=int(substr(line,RSTART+1,RLENGTH-2)); lvo[name]=offset; header=0; } #print "LVO=" offset } } print fname close (fname); } close (file); } END { # print "/* Only for tests */" # for (x in lvo) # { # printf ("extern void Exec_%s (void);\n", x); # } print "struct\n{\n LONG it_Offset;\n APTR it_Func;\n}" print "InitTable[] =\n{" for (x in lvo) { printf(" %3d, Exec_%s,\n", lvo[x],x); } print "};" }