1: # define tTNFUNC 100 2: # define tTNCUTOFF 70 3: 4: int tT[tTNFUNC]; 5: char *tTp, tTsav, tTany; 6: char tTbuffer[100]; 7: 8: tTrace(argc, argv, flag) 9: int *argc; 10: char **argv; 11: char flag; 12: { 13: register int fno; 14: int f; 15: register char **ps, **pd; 16: int cnt; 17: 18: ps = pd = argv; 19: for (cnt = *argc; cnt > 0; cnt--) 20: { 21: if ((*ps)[0] != '-' || (*ps)[1] != flag) 22: { 23: *pd++ = *ps++; 24: continue; 25: } 26: tTany++; 27: tTp = tTbuffer; 28: smove((*ps)+2, tTbuffer); 29: (*argc)--; 30: ps++; 31: if (!*tTp) 32: { 33: for (fno = 0; fno < tTNCUTOFF; fno++) 34: tTon(fno, -1); 35: continue; 36: } 37: do 38: { 39: fno = tTnext(); 40: tTurn(fno); 41: 42: if (tTsav == '/') 43: { 44: f = fno + 1; 45: fno = tTnext(); 46: while (f < fno) 47: tTon(f++, -1); 48: tTurn(fno); 49: } 50: } while(tTsav); 51: } 52: *pd = 0; 53: } 54: 55: tTnext() 56: { 57: register char *c; 58: int i; 59: 60: c = tTp; 61: while (*tTp >= '0' && *tTp <= '9') 62: tTp++; 63: tTsav = *tTp; 64: *tTp++ = '\0'; 65: atoi(c, &i); 66: return (i); 67: } 68: 69: tTurn(fno1) 70: int fno1; 71: { 72: register int pt; 73: register int fno; 74: 75: fno = fno1; 76: if (tTsav == '.') 77: { 78: while (tTsav == '.') 79: { 80: pt = tTnext(); 81: tTon(fno, pt); 82: } 83: } 84: else 85: tTon(fno, -1); 86: } 87: 88: 89: tTon(fun1, pt1) 90: int fun1; 91: int pt1; 92: { 93: register int i; 94: register int fun; 95: register int pt; 96: 97: fun = fun1; 98: pt = pt1; 99: if (pt >= 0) 100: tT[fun] |= (1<<pt%16); 101: else 102: tT[fun] = 0177777; 103: } 104: 105: 106: /* 107: ** CHECK TRACE FLAG AND PRINT INFORMATION 108: ** 109: ** This routine is equivalent to 110: ** if (tTf(m, n)) 111: ** printf(a1, a2, a3, a4, a5, a6); 112: ** 113: ** and can be called to reduce process space. The return value 114: ** is the value of the flag. 115: */ 116: 117: tTfp(m, n, a1, a2, a3, a4, a5, a6) 118: int m; 119: int n; 120: char *a1, *a2, *a3, *a4, *a5, *a6; 121: { 122: register int rtval; 123: 124: if (rtval = tTf(m, n)) 125: printf(a1, a2, a3, a4, a5, a6); 126: return (rtval); 127: }