/* * Copyright 2000-2009 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * SPDX-License-Identifier: GPL-2.0+ */ #include "common.h" #include #include "command.h" #include "timer.h" #include "con-utils.h" command_ret_t do_echo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { uint_fast8_t putnl = 1; (void) cmdtp; (void) flag; for (uint_fast8_t i = 1; i < argc; i++) { uint_fast8_t backslash = 0; char *p = argv[i]; char c; if (i != 1) putchar(' '); while ((c = *p++) != '\0') { if(backslash) { backslash = 0; if (c == 'c') { putnl = 0; continue; } else putchar('\\'); } else { if (c == '\\') { backslash = 1; continue; } } putchar(c); } } if (putnl) putchar('\n'); return CMD_RET_SUCCESS; } command_ret_t do_sleep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { unsigned long start = get_timer(0); unsigned long delay; char *sp; uint_fast8_t millisec = 0; (void) cmdtp; (void) flag; if (argc != 2) return CMD_RET_USAGE; delay = strtoul(argv[1], &sp, 10); if (*sp == 'm') { millisec = 1; sp++; } if (*sp == 's') sp++; if (*sp != '\0') return CMD_RET_USAGE; if (!millisec) delay *= 1000; while (get_timer(start) < delay) { if (ctrlc()) return CMD_RET_FAILURE; udelay(100); } return CMD_RET_SUCCESS; }