1: /* 2: ** PUT CHARACTER 3: ** 4: ** This routine just calls putchar normally, unless the character 5: ** to be printed is a control character, in which case the octal 6: ** equivalent is printed out. Note that tab, newline, and so 7: ** forth are considered to be control characters. 8: ** 9: ** Parameters: 10: ** ch -- the character to print. 11: ** 12: ** Returns: 13: ** nothing. 14: ** 15: ** Side Effects: 16: ** none 17: ** 18: ** Requires: 19: ** putchar 20: ** 21: ** Called by: 22: ** printatt 23: ** prargs 24: ** (maybe others?) 25: ** 26: ** Trace Flags: 27: ** none 28: ** 29: ** Diagnostics: 30: ** none 31: ** 32: ** Syserrs: 33: ** none 34: ** 35: ** History: 36: ** 2/27/78 (eric) -- adapted from old xputchar in 6.0. 37: */ 38: 39: 40: 41: xputchar(ch) 42: char ch; 43: { 44: register int c; 45: 46: c = ch; 47: if (c < 040 || c >= 0177) 48: { 49: putchar('\\'); 50: putchar(((c >> 6) & 03) | '0'); 51: putchar(((c >> 3) & 07) | '0'); 52: putchar((c & 07) | '0'); 53: } 54: else 55: putchar(c); 56: }