|
|
1.1 ! root 1: /********************************************************************* ! 2: * COPYRIGHT NOTICE * ! 3: ********************************************************************** ! 4: * This software is copyright (C) 1982 by Pavel Curtis * ! 5: * * ! 6: * Permission is granted to reproduce and distribute * ! 7: * this file by any means so long as no fee is charged * ! 8: * above a nominal handling fee and so long as this * ! 9: * notice is always included in the copies. * ! 10: * * ! 11: * Other rights are reserved except as explicitly granted * ! 12: * by written permission of the author. * ! 13: * Pavel Curtis * ! 14: * Computer Science Dept. * ! 15: * 405 Upson Hall * ! 16: * Cornell University * ! 17: * Ithaca, NY 14853 * ! 18: * * ! 19: * Ph- (607) 256-4934 * ! 20: * * ! 21: * Pavel.Cornell@Udel-Relay (ARPAnet) * ! 22: * decvax!cornell!pavel (UUCPnet) * ! 23: *********************************************************************/ ! 24: ! 25: /* ! 26: * lib_trace.c - Tracing/Debugging routines ! 27: * ! 28: * $Log: lib_trace.c,v $ ! 29: * Revision 1.8 93/04/12 14:14:36 bin ! 30: * Udo: third color update ! 31: * ! 32: * Revision 1.2 92/04/13 14:38:45 bin ! 33: * update by vlad ! 34: * ! 35: * Revision 2.2 91/04/20 22:00:18 munk ! 36: * Usage of register variables ! 37: * Made the large arrays static ! 38: * ! 39: * Revision 2.1 82/10/25 14:49:35 pavel ! 40: * Added Copyright Notice ! 41: * ! 42: * Revision 2.0 82/10/24 15:18:09 pavel ! 43: * Beta-one Test Release ! 44: * ! 45: * Revision 1.3 82/08/23 22:30:57 pavel ! 46: * The REAL Alpha-one Release Version ! 47: * ! 48: * Revision 1.2 82/08/19 19:11:41 pavel ! 49: * Alpha Test Release One ! 50: * ! 51: * Revision 1.1 82/08/15 17:59:45 pavel ! 52: * Initial revision ! 53: * ! 54: * ! 55: */ ! 56: ! 57: #ifdef RCSHDR ! 58: static char RCSid[] = ! 59: "$Header: /src386/usr/lib/ncurses/RCS/lib_trace.c,v 1.8 93/04/12 14:14:36 bin Exp Locker: bin $"; ! 60: #endif ! 61: ! 62: #include "term.h" ! 63: #include "curses.h" ! 64: #include "curses.priv.h" ! 65: ! 66: static int tracefd; ! 67: ! 68: ! 69: _init_trace() ! 70: { ! 71: static int been_here = 0; ! 72: extern int errno; ! 73: extern char *sys_errlist[]; ! 74: ! 75: if (! been_here) ! 76: { ! 77: _tracing = been_here = 1; ! 78: ! 79: if ((tracefd = creat("trace", 0644)) < 0) ! 80: { ! 81: write(2, "curses: Can't open 'trace' file: ", 33); ! 82: write(2, sys_errlist[errno], strlen(sys_errlist[errno])); ! 83: write(2, "\n", 1); ! 84: exit(1); ! 85: } ! 86: ! 87: _tracef("_init_trace() called"); ! 88: } ! 89: } ! 90: ! 91: ! 92: traceon() ! 93: { ! 94: _tracef("traceon() called"); ! 95: ! 96: _tracing = 1; ! 97: } ! 98: ! 99: ! 100: traceoff() ! 101: { ! 102: _tracef("traceoff() called"); ! 103: ! 104: _tracing = 0; ! 105: } ! 106: ! 107: ! 108: _tracef(fmt, args) ! 109: register char *fmt; ! 110: int args; ! 111: { ! 112: char *strcpy(); ! 113: int *parm = &args; ! 114: static char buffer[256]; ! 115: char *bufp = buffer; ! 116: ! 117: while (*fmt) ! 118: { ! 119: if (*fmt == '%') ! 120: { ! 121: fmt++; ! 122: switch (*fmt) ! 123: { ! 124: case 'd': ! 125: addnum(&bufp, *(parm++), 10); ! 126: break; ! 127: ! 128: case 'o': ! 129: addnum(&bufp, *(parm++), 8); ! 130: break; ! 131: ! 132: case 'c': ! 133: *(bufp++) = *(parm++); ! 134: break; ! 135: ! 136: case 's': ! 137: if (*parm) ! 138: { ! 139: *(bufp++) = '"'; ! 140: strcpy(bufp, *parm); ! 141: bufp += strlen(*parm); ! 142: *(bufp++) = '"'; ! 143: } ! 144: else ! 145: { ! 146: strcpy(bufp, "NULL"); ! 147: bufp += 4; ! 148: } ! 149: parm++; ! 150: break; ! 151: } ! 152: } ! 153: else ! 154: *(bufp++) = *fmt; ! 155: ! 156: fmt++; ! 157: } ! 158: ! 159: *(bufp++) = '\n'; ! 160: *bufp = '\0'; ! 161: write(tracefd, buffer, strlen(buffer)); ! 162: } ! 163: ! 164: ! 165: static addnum(bufp, num, base) ! 166: char **bufp; ! 167: register int num, base; ! 168: { ! 169: int a; ! 170: ! 171: if (num < 0) ! 172: { ! 173: num = -num; ! 174: *((*bufp)++) = '-'; ! 175: } ! 176: ! 177: if ((a = num / base) != 0) ! 178: addnum(bufp, a, base); ! 179: *((*bufp)++) = '0' + (num % base); ! 180: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.