No specific user configuration
[platform/upstream/bash.git] / support / recho.c
1 /*
2    recho -- really echo args, bracketed with <> and with invisible chars
3             made visible.
4
5    Chet Ramey
6    chet@po.cwru.edu
7 */
8
9 /* Copyright (C) 2002-2005 Free Software Foundation, Inc.
10
11    This file is part of GNU Bash, the Bourne Again SHell.
12
13    Bash is free software: you can redistribute it and/or modify
14    it under the terms of the GNU General Public License as published by
15    the Free Software Foundation, either version 3 of the License, or
16    (at your option) any later version.
17
18    Bash is distributed in the hope that it will be useful,
19    but WITHOUT ANY WARRANTY; without even the implied warranty of
20    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21    GNU General Public License for more details.
22
23    You should have received a copy of the GNU General Public License
24    along with Bash.  If not, see <http://www.gnu.org/licenses/>.
25 */
26
27 #if defined (HAVE_CONFIG_H)
28 #  include  <config.h>
29 #endif
30
31 #include "bashansi.h"
32 #include <stdio.h>
33
34 void strprint();
35
36 int
37 main(argc, argv)
38 int     argc;
39 char    **argv;
40 {
41         register int    i;
42
43         for (i = 1; i < argc; i++) {
44                 printf("argv[%d] = <", i);
45                 strprint(argv[i]);
46                 printf(">\n");
47         }
48         exit(0);
49 }
50
51 void
52 strprint(str)
53 char    *str;
54 {
55         register unsigned char *s;
56
57         for (s = (unsigned char *)str; s && *s; s++) {
58                 if (*s < ' ') {
59                         putchar('^');
60                         putchar(*s+64);
61                 } else if (*s == 127) {
62                         putchar('^');
63                         putchar('?');
64                 } else
65                         putchar(*s);
66         }
67 }