echo: add -e option support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
adaffb5b0c
commit
a9ff0c8e8b
|
@ -118,6 +118,12 @@ config CMD_ECHO
|
|||
default y
|
||||
prompt "echo"
|
||||
|
||||
config CMD_ECHO_E
|
||||
bool
|
||||
depends on CMD_ECHO
|
||||
select PROCESS_ESCAPE_SEQUENCE
|
||||
prompt "support -e option to echo"
|
||||
|
||||
endmenu
|
||||
|
||||
menu "memory "
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <fs.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <libbb.h>
|
||||
|
||||
static int do_echo(struct command *cmdtp, int argc, char *argv[])
|
||||
{
|
||||
|
@ -32,7 +33,10 @@ static int do_echo(struct command *cmdtp, int argc, char *argv[])
|
|||
int fd = stdout, opt, newline = 1;
|
||||
char *file = NULL;
|
||||
int oflags = O_WRONLY | O_CREAT;
|
||||
|
||||
#ifdef CONFIG_CMD_ECHO_E
|
||||
char str[CONFIG_CBSIZE];
|
||||
int process_escape = 0;
|
||||
#endif
|
||||
/* We can't use getopt() here because we want to
|
||||
* echo all things we don't understand.
|
||||
*/
|
||||
|
@ -62,6 +66,11 @@ static int do_echo(struct command *cmdtp, int argc, char *argv[])
|
|||
goto no_optarg_out;
|
||||
optind++;
|
||||
break;
|
||||
#ifdef CONFIG_CMD_ECHO_E
|
||||
case 'e':
|
||||
process_escape = 1;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
goto exit_parse;
|
||||
}
|
||||
|
@ -80,7 +89,13 @@ exit_parse:
|
|||
for (i = optind; i < argc; i++) {
|
||||
if (i > optind)
|
||||
fputc(fd, ' ');
|
||||
fputs(fd, argv[i]);
|
||||
#ifdef CONFIG_CMD_ECHO_E
|
||||
if (process_escape) {
|
||||
process_escape_sequence(argv[i], str, CONFIG_CBSIZE);
|
||||
fputs(fd, str);
|
||||
} else
|
||||
#endif
|
||||
fputs(fd, argv[i]);
|
||||
}
|
||||
|
||||
if (newline)
|
||||
|
|
Loading…
Reference in New Issue