blob: 42a5feafd689b8f37250a99ab7732db0ad4dd722 [file] [log] [blame]
Denis Vlasenko1c660b42007-03-05 00:27:50 +00001/*
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 it under
14 the terms of the GNU General Public License as published by the Free
15 Software Foundation; either version 2, or (at your option) any later
16 version.
17
18 Bash is distributed in the hope that it will be useful, but WITHOUT ANY
19 WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License along
24 with Bash; see the file COPYING. If not, write to the Free Software
25 Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
26
27#include <stdio.h>
28#include <stdlib.h>
29
30void strprint();
31
Denys Vlasenkofb132e42010-10-29 11:46:52 +020032int main(int argc, char **argv)
Denis Vlasenko1c660b42007-03-05 00:27:50 +000033{
Denys Vlasenkofb132e42010-10-29 11:46:52 +020034 int i;
Denis Vlasenko1c660b42007-03-05 00:27:50 +000035
36 for (i = 1; i < argc; i++) {
37 printf("argv[%d] = <", i);
38 strprint(argv[i]);
39 printf(">\n");
40 }
Bernhard Reutner-Fischer636a1f82008-05-19 09:29:47 +000041 exit(EXIT_SUCCESS);
Denis Vlasenko1c660b42007-03-05 00:27:50 +000042}
43
Denys Vlasenkofb132e42010-10-29 11:46:52 +020044void strprint(char *str)
Denis Vlasenko1c660b42007-03-05 00:27:50 +000045{
Denys Vlasenkofb132e42010-10-29 11:46:52 +020046 unsigned char *s;
Denis Vlasenko1c660b42007-03-05 00:27:50 +000047
48 for (s = (unsigned char *)str; s && *s; s++) {
49 if (*s < ' ') {
50 putchar('^');
51 putchar(*s+64);
52 } else if (*s == 127) {
53 putchar('^');
54 putchar('?');
55 } else
56 putchar(*s);
57 }
58}