]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - avr/cmd_misc.c
commandtable, flags: int --> uint8_t/uint_fast8_t. Macro UNUSED for Parameters/Variables
[z180-stamp.git] / avr / cmd_misc.c
index 315b959bcebd97b1665373a003b5ff4804a182bf..a0ee26e7afedafd9e91b59f3a273d072bc66007f 100644 (file)
@@ -1,59 +1,58 @@
 /*
+ * (C) Copyright 2014,2016 Leo C. <erbl259-lmu@yahoo.de>
+ *
  * Copyright 2000-2009
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
- * SPDX-License-Identifier:    GPL-2.0+
+ * SPDX-License-Identifier:    GPL-2.0
  */
 
 #include "common.h"
-#include <stdlib.h>
+#include "eval_arg.h"
+#include <stdbool.h>
 
 #include "command.h"
 #include "timer.h"
 #include "con-utils.h"
+#include "getopt-min.h"
 
 
-command_ret_t do_echo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_echo(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
 {
-       uint_fast8_t putnl = 1;
+       bool put_newline = true;
 
        (void) cmdtp; (void) flag;
 
-       for (uint_fast8_t i = 1; i < argc; i++) {
+       /* reset getopt() */
+       optind = 0;
+
+       int opt;
+       while ((opt = getopt(argc, argv, PSTR("n"))) != -1) {
+               switch (opt) {
+               case 'n':
+                       put_newline = false;
+                       break;
+               default: /* '?' */
+                       return CMD_RET_USAGE;
+               }
+       }
 
-               uint_fast8_t backslash = 0;
-               char *p = argv[i];
-               char c;
+       for (uint_fast8_t i = optind; i < argc; i++) {
 
-               if (i != 1)
+               if (i != optind)
                        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);
-               }
+
+               my_puts(argv[i]);
        }
 
-       if (putnl)
+       if (put_newline)
                putchar('\n');
 
        return CMD_RET_SUCCESS;
 }
 
 
-command_ret_t do_sleep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+command_ret_t do_sleep(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
 {
        unsigned long start = get_timer(0);
        unsigned long delay;
@@ -65,7 +64,7 @@ command_ret_t do_sleep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
        if (argc != 2)
                return CMD_RET_USAGE;
 
-       delay = strtoul(argv[1], &sp, 10);
+       delay = eval_arg(argv[1], &sp);
 
        if (*sp == 'm') {
                millisec = 1;
@@ -88,4 +87,3 @@ command_ret_t do_sleep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
 
        return CMD_RET_SUCCESS;
 }
-