1/* vi: set sw=4 ts=4: */ 2/* 3 * Utility routines. 4 * 5 * Copyright (C) 2007 Denys Vlasenko 6 * 7 * Licensed under GPL version 2, see file LICENSE in this tarball for details. 8 */ 9 10#include "libbb.h" 11 12void FAST_FUNC fputc_printable(int ch, FILE *file) 13{ 14 if ((ch & (0x80 + PRINTABLE_META)) == (0x80 + PRINTABLE_META)) { 15 fputs("M-", file); 16 ch &= 0x7f; 17 } 18 ch = (unsigned char) ch; 19 if (ch == 0x9b) { 20 /* VT100's CSI, aka Meta-ESC, is not printable on vt-100 */ 21 ch = '{'; 22 goto print_caret; 23 } 24 if (ch < ' ') { 25 ch += '@'; 26 goto print_caret; 27 } 28 if (ch == 0x7f) { 29 ch = '?'; 30 print_caret: 31 fputc('^', file); 32 } 33 fputc(ch, file); 34} 35