Merge branch 'master' of git://git.denx.de/u-boot-sh
[platform/kernel/u-boot.git] / common / cmd_echo.c
1 /*
2  * Copyright 2000-2009
3  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 #include <common.h>
9 #include <command.h>
10
11 static int do_echo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
12 {
13         int i;
14         int putnl = 1;
15
16         for (i = 1; i < argc; i++) {
17                 char *p = argv[i];
18                 char *nls; /* new-line suppression */
19
20                 if (i > 1)
21                         putc(' ');
22
23                 nls = strstr(p, "\\c");
24                 if (nls) {
25                         char *prenls = p;
26
27                         putnl = 0;
28                         /*
29                          * be paranoid and guess that someone might
30                          * say \c more than once
31                          */
32                         while (nls) {
33                                 *nls = '\0';
34                                 puts(prenls);
35                                 *nls = '\\';
36                                 prenls = nls + 2;
37                                 nls = strstr(prenls, "\\c");
38                         }
39                         puts(prenls);
40                 } else {
41                         puts(p);
42                 }
43         }
44
45         if (putnl)
46                 putc('\n');
47
48         return 0;
49 }
50
51 U_BOOT_CMD(
52         echo,   CONFIG_SYS_MAXARGS,     1,      do_echo,
53         "echo args to console",
54         "[args..]\n"
55         "    - echo args to console; \\c suppresses newline"
56 );