|
|
1.1 root 1: /*
2: * Copyright (c) 1989 The Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that: (1) source distributions retain this entire copyright
7: * notice and comment, and (2) distributions including binaries display
8: * the following acknowledgement: ``This product includes software
9: * developed by the University of California, Berkeley and its contributors''
10: * in the documentation or other materials provided with the distribution
11: * and in all advertising materials mentioning features or use of this
12: * software. Neither the name of the University nor the names of its
13: * contributors may be used to endorse or promote products derived
14: * from this software without specific prior written permission.
15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18: */
19:
20: #ifndef lint
21: static char sccsid[] = "@(#)conv.c 5.4 (Berkeley) 6/1/90";
22: #endif /* not lint */
23:
24: #include <sys/types.h>
25: #include <ctype.h>
26: #include "hexdump.h"
27:
28: conv_c(pr, p)
29: PR *pr;
30: u_char *p;
31: {
32: extern int deprecated;
33: char buf[10], *str;
34:
35: switch(*p) {
36: case '\0':
37: str = "\\0";
38: goto strpr;
39: /* case '\a': */
40: case '\007':
41: if (deprecated) /* od didn't know about \a */
42: break;
43: str = "\\a";
44: goto strpr;
45: case '\b':
46: str = "\\b";
47: goto strpr;
48: case '\f':
49: str = "\\f";
50: goto strpr;
51: case '\n':
52: str = "\\n";
53: goto strpr;
54: case '\r':
55: str = "\\r";
56: goto strpr;
57: case '\t':
58: str = "\\t";
59: goto strpr;
60: case '\v':
61: if (deprecated)
62: break;
63: str = "\\v";
64: goto strpr;
65: default:
66: break;
67: }
68: if (isprint(*p)) {
69: *pr->cchar = 'c';
70: (void)printf(pr->fmt, *p);
71: } else {
72: (void)sprintf(str = buf, "%03o", (int)*p);
73: strpr: *pr->cchar = 's';
74: (void)printf(pr->fmt, str);
75: }
76: }
77:
78: conv_u(pr, p)
79: PR *pr;
80: u_char *p;
81: {
82: extern int deprecated;
83: static char *list[] = {
84: "nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel",
85: "bs", "ht", "lf", "vt", "ff", "cr", "so", "si",
86: "dle", "dcl", "dc2", "dc3", "dc4", "nak", "syn", "etb",
87: "can", "em", "sub", "esc", "fs", "gs", "rs", "us",
88: };
89:
90: /* od used nl, not lf */
91: if (*p <= 0x1f) {
92: *pr->cchar = 's';
93: if (deprecated && *p == 0x0a)
94: (void)printf(pr->fmt, "nl");
95: else
96: (void)printf(pr->fmt, list[*p]);
97: } else if (*p == 0x7f) {
98: *pr->cchar = 's';
99: (void)printf(pr->fmt, "del");
100: } else if (deprecated && *p == 0x20) { /* od replace space with sp */
101: *pr->cchar = 's';
102: (void)printf(pr->fmt, " sp");
103: } else if (isprint(*p)) {
104: *pr->cchar = 'c';
105: (void)printf(pr->fmt, *p);
106: } else {
107: *pr->cchar = 'x';
108: (void)printf(pr->fmt, (int)*p);
109: }
110: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.