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

Last change on this file since 3621 was 3621, checked in by Bruno Cornec, 7 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
Line 
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}
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.