|
|
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: * tputs.c ! 27: * ! 28: * $Log: lib_tputs.c,v $ ! 29: * Revision 1.11 93/04/12 14:14:34 bin ! 30: * Udo: third color update ! 31: * ! 32: * Revision 1.5 92/06/02 12:05:41 bin ! 33: * *** empty log message *** ! 34: * ! 35: * Revision 1.2 92/04/13 14:38:41 bin ! 36: * update by vlad ! 37: * ! 38: * Revision 3.2 91/04/20 21:57:22 munk ! 39: * Usage of register variables ! 40: * ! 41: * Revision 3.1 84/12/13 11:21:03 john ! 42: * Revisions by Mark Horton ! 43: * ! 44: * Revision 2.1 82/10/25 14:49:31 pavel ! 45: * Added Copyright Notice ! 46: * ! 47: * Revision 2.0 82/10/24 15:18:06 pavel ! 48: * Beta-one Test Release ! 49: * ! 50: * Revision 1.3 82/08/23 22:30:52 pavel ! 51: * The REAL Alpha-one Release Version ! 52: * ! 53: * Revision 1.2 82/08/19 19:11:38 pavel ! 54: * Alpha Test Release One ! 55: * ! 56: * Revision 1.1 82/08/12 18:46:00 pavel ! 57: * Initial revision ! 58: * ! 59: * ! 60: */ ! 61: ! 62: #ifdef RCSHDR ! 63: static char RCSid[] = ! 64: "$Header: /src386/usr/usr/lib/ncurses/RCS/lib_tputs.c,v 1.11 93/04/12 14:14:34 bin Exp Locker: bin $"; ! 65: #endif ! 66: ! 67: #include <ctype.h> ! 68: #include <stdio.h> ! 69: #include "curses.h" ! 70: #include "curses.priv.h" ! 71: #include "term.h" ! 72: ! 73: ! 74: tputs(string, affcnt, outc) ! 75: register char *string; ! 76: int affcnt; ! 77: int (*outc)(); ! 78: { ! 79: char *index(); ! 80: float number; ! 81: int baud = baudrate(); ! 82: char null = '\0'; ! 83: register int i; ! 84: ! 85: #ifdef TRACE ! 86: if (_tracing) ! 87: _tracef("tputs(%s,%d,%o) called", string, affcnt, outc); ! 88: #endif ! 89: ! 90: if (NULL == string) ! 91: return; ! 92: ! 93: if (pad_char) ! 94: null = pad_char[0]; ! 95: ! 96: while (*string) ! 97: { ! 98: if (*string != '$') ! 99: (*outc)(*string); ! 100: else ! 101: { ! 102: string++; ! 103: if (*string != '<') ! 104: { ! 105: (*outc)('$'); ! 106: (*outc)(*string); ! 107: } ! 108: else ! 109: { ! 110: ! 111: number = 0; ! 112: string++; ! 113: ! 114: if (!isdigit(*string) && ! 115: *string != '.' || (index(string, '>') == NULL)) { ! 116: (*outc)('$'); ! 117: (*outc)('<'); ! 118: continue; ! 119: } ! 120: while (isdigit(*string)) ! 121: { ! 122: number = number * 10 + *string - '0'; ! 123: string++; ! 124: } ! 125: ! 126: if (*string == '.') ! 127: { ! 128: string++; ! 129: if (isdigit(*string)) ! 130: { ! 131: number += (float) (*string - '0') / 10.; ! 132: string++; ! 133: } ! 134: } ! 135: ! 136: if (*string == '*') ! 137: { ! 138: number *= affcnt; ! 139: string++; ! 140: } ! 141: ! 142: if (padding_baud_rate && baud >= padding_baud_rate && !xon_xoff) ! 143: { ! 144: number = ((baud / 10.) * number) / 1000.; ! 145: ! 146: for (i=0; i < number; i++) ! 147: (*outc)(null); ! 148: } ! 149: ! 150: } /* endelse (*string == '<') */ ! 151: } /* endelse (*string == '$') */ ! 152: ! 153: if (*string == '\0') ! 154: break; ! 155: ! 156: string++; ! 157: } ! 158: } ! 159: ! 160: ! 161: _outc(ch) ! 162: { ! 163: putchar(ch); ! 164: } ! 165: ! 166: ! 167: putp(string) ! 168: register char *string; ! 169: { ! 170: #ifdef TRACE ! 171: if (_tracing) ! 172: _tracef("putp(%s) called", string); ! 173: #endif ! 174: tputs(string, 1, _outc); ! 175: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.