|
|
1.1 ! root 1: BEGIN { ! 2: ! 3: FS=":"; ! 4: type["c"] = "char" ! 5: type["c*"] = "char *" ! 6: type["c**"] = "char **" ! 7: type["i"] = "int" ! 8: type["l"] = "long" ! 9: type["s"] = "short" ! 10: type["v"] = "void" ! 11: ! 12: type["B"] = "Bitmap" ! 13: type["B*"] = "Bitmap *" ! 14: type["C"] = "Code" ! 15: type["F"] = "Font" ! 16: type["F*"] = "Font *" ! 17: type["M"] = "Menu" ! 18: type["M*"] = "Menu *" ! 19: type["P"] = "Point" ! 20: type["P*"] = "Point *" ! 21: type["R"] = "Rectangle" ! 22: type["R*"] = "Rectangle *" ! 23: type["T"] = "Texture" ! 24: type["T*"] = "Texture *" ! 25: ! 26: s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz " ! 27: # set upper["A"] = upper["a"] = "A" ! 28: for (i = 1; i <= 27; i++) { ! 29: upper[substr(s,i+27,1)] = substr(s,i,1) ! 30: upper[substr(s,i,1)] = substr(s,i,1) ! 31: } ! 32: ! 33: STUB = "stubs.c" ! 34: printf "#include \"jerq.h\"\n" >STUB ! 35: printf "#include \"commands.h\"\n" >STUB ! 36: printf "#include \"io.h\"\n" >STUB ! 37: printf "\n" >STUB ! 38: ! 39: COM = "commands.h" ! 40: printf "#define CCBALLOC 1\n#define CCBFREE 2\n#define CCEXIT 3\n" >COM ! 41: printf "#define CCFFREE 4\n#define CCGETFONT 5\n" >COM ! 42: printf "#define CCMENUHIT 6\n#define CCMENU 7\n#define CCBSPLINE 8\n" >COM ! 43: printf "#define CCGETMOUSE 9\n#define CCKBDCHAR 20\n" >COM ! 44: printf "#define CCTRACKARC 10\n#define CCTRACKRECT 11\n" >COM ! 45: printf "#define CCTRACKCIRCLE 12\n#define CCTRACKDISC 13\n" >COM ! 46: printf "#define CCTRACKELARC 14\n#define CCTRACKELDISC 15\n" >COM ! 47: printf "#define CCTRACKELLIPSE 16\n#define CCTRACKLINE 17\n" >COM ! 48: printf "#define CCTRACKRECTF 18\n#define CCTRACKSTRING 19\n" >COM ! 49: d = 21 ! 50: } ! 51: ! 52: func doSendRec(s,cmd) { ! 53: printf "\t%s", cmd >STUB ! 54: u = index(s,"u") ! 55: tt = index(s,"**") ! 56: t = index(s,"*") ! 57: f = index(s,"*()") ! 58: if (f>0) { ! 59: printf "Function" >STUB ! 60: s = type[substr(s,u+1,f-u-1)] ! 61: } ! 62: else if (tt>0) { ! 63: printf "ToTo" >STUB ! 64: s = type[substr(s,u+1,tt-u-1)] ! 65: } ! 66: else if (t>0) { ! 67: printf "To" >STUB ! 68: s = type[substr(s,u+1,t-u-1)] ! 69: } ! 70: else if (u>0) { ! 71: printf "Unsigned" >STUB ! 72: s = type[substr(s,u+1,length(s)-u)] ! 73: } ! 74: else s = type[s] ! 75: s2 = substr(s,2,length(s)-1) ! 76: s1 = upper[substr(s,1,1)] ! 77: printf "%s%s", s1, s2 >STUB ! 78: if (cmd == "send") printf "(arg%d);\n", i-2 >STUB ! 79: else printf "();\n" >STUB ! 80: } ! 81: ! 82: { ! 83: printf "%s %s(", type[$1], $2 >STUB ! 84: for (i=3; i<=NF; i++) { ! 85: if (i>3) ! 86: printf ", " >STUB ! 87: printf "arg%d", i-2 >STUB ! 88: } ! 89: printf ")\n" >STUB ! 90: for (i=3; i<=NF; i++) { ! 91: u = index($i, "u") ! 92: f = index($i,"*()") ! 93: t = index($i,"*") ! 94: if (u>0) printf "unsigned " >STUB ! 95: if (f>0) ! 96: printf "%s (*arg%d)();\n", type[substr($i,u+1,f-u-1)], i-2 >STUB ! 97: else { ! 98: printf "%s", type[substr($i,u+1,length($i)-u)] >STUB ! 99: if (t==0) printf " " >STUB ! 100: printf "arg%d;\n", i-2 >STUB ! 101: } ! 102: } ! 103: printf "{\n" >STUB ! 104: printf "\tsendCommand(CC" >STUB ! 105: # printf "\t" >COM ! 106: printf "#define CC" >COM ! 107: for (i=1; i<=length($2); i++) { ! 108: printf "%s", upper[substr($2,i,1)] >STUB ! 109: printf "%s", upper[substr($2,i,1)] >COM ! 110: } ! 111: printf ");\n" >STUB ! 112: # printf ",\n" >COM ! 113: printf " %d\n", d >COM ! 114: d = d+1 ! 115: for (i=3; i<=NF; i++) doSendRec($i,"send") ! 116: if ($1 != "v") doSendRec($1,"flush();\n\treturn rec") ! 117: printf "}\n\n" >STUB ! 118: } ! 119: ! 120: #END { ! 121: # printf "};\n" >COM ! 122: #}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.