home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / aros / source / exec / geninittab.awk < prev    next >
Encoding:
AWK Script  |  1996-07-16  |  1.1 KB  |  58 lines

  1. BEGIN {
  2.     file=ARGV[1];
  3.  
  4. #print "File=" file
  5.  
  6.     while (getline fname < file > 0) {
  7. printf ("Working on %s...\n", fname);
  8.  
  9.     while (getline line < fname > 0) {
  10. #print "\"" line "\""
  11.         if (line == "    NAME */") {
  12.         header=1;
  13. #print "header"
  14.         }
  15.         if (match(line,"__AROS_LH")) {
  16.         if(header)
  17.         {
  18.             match(line,",[ \t]*[A-Za-z_][A-Za-z_0-9]*[ \t]*,[ \t]*$");
  19.             name=substr(line,RSTART,RLENGTH);
  20.             match(name,"[A-Za-z_][A-Za-z_0-9]*");
  21.             name=substr(name,RSTART,RLENGTH);
  22. #print "Name=" name
  23.         }
  24.         }
  25.         if (line == "/*  LOCATION */") {
  26. #print "Location"
  27.         if (header) {
  28.             getline line < fname;
  29.             match(line,",[ \t]*[0-9]*[ \t]*,");
  30.             offset=int(substr(line,RSTART+1,RLENGTH-2));
  31.             lvo[name]=offset; header=0;
  32.         }
  33. #print "LVO=" offset
  34.         }
  35.     }
  36.  
  37. print fname
  38.     close (fname);
  39.     }
  40.  
  41.     close (file);
  42. }
  43. END {
  44.  
  45. #    print "/* Only for tests */"
  46. #    for (x in lvo)
  47. #    {
  48. #     printf ("extern void Exec_%s (void);\n", x);
  49. #    }
  50.     print "struct\n{\n    LONG it_Offset;\n    APTR it_Func;\n}"
  51.     print "InitTable[] =\n{"
  52.     for (x in lvo)
  53.     {
  54.     printf("    %3d, Exec_%s,\n", lvo[x],x);
  55.     }
  56.     print "};"
  57. }
  58.