source: MondoRescue/branches/3.3/mindi-busybox/libbb/printable.c@ 3865

Last change on this file since 3865 was 3621, checked in by Bruno Cornec, 10 years ago

New 3?3 banch for incorporation of latest busybox 1.25. Changing minor version to handle potential incompatibilities.

  • Property svn:eol-style set to native
File size: 1000 bytes
RevLine 
[2725]1/* vi: set sw=4 ts=4: */
2/*
3 * Utility routines.
4 *
5 * Copyright (C) 2007 Denys Vlasenko
6 *
7 * Licensed under GPLv2, see file LICENSE in this source tree.
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}
[3621]35
36void FAST_FUNC visible(unsigned ch, char *buf, int flags)
37{
38 if (ch == '\t' && !(flags & VISIBLE_SHOW_TABS)) {
39 goto raw;
40 }
41 if (ch == '\n') {
42 if (flags & VISIBLE_ENDLINE)
43 *buf++ = '$';
44 } else {
45 if (ch >= 128) {
46 ch -= 128;
47 *buf++ = 'M';
48 *buf++ = '-';
49 }
50 if (ch < 32 || ch == 127) {
51 *buf++ = '^';
52 ch ^= 0x40;
53 }
54 }
55 raw:
56 *buf++ = ch;
57 *buf = '\0';
58}
Note: See TracBrowser for help on using the repository browser.