]> cloudbase.mooo.com Git - z180-stamp.git/commitdiff
aval_arg() for all commands
authorLeo C <erbl259-lmu@yahoo.de>
Tue, 21 Jun 2016 13:10:40 +0000 (15:10 +0200)
committerLeo C <erbl259-lmu@yahoo.de>
Tue, 21 Jun 2016 15:14:07 +0000 (17:14 +0200)
avr/cmd_boot.c
avr/cmd_fat.c
avr/cmd_loadcpm3.c
avr/cmd_misc.c
avr/cmd_sd.c
avr/debug.c

index 14fbab34b20bf8462fe024514eba5e4607b4e9bb..a83968f3ee4be7da08982cb4e406849a31240044 100644 (file)
@@ -11,7 +11,6 @@
  * Misc boot support
  */
 #include "common.h"
-#include <stdlib.h>
 #include <ctype.h>
 #include <util/atomic.h>
 
@@ -19,6 +18,7 @@
 #include "cli_readline.h"      /* console_buffer[] */
 #include "cli.h"                       /* run_command() */
 #include "env.h"
+#include "eval_arg.h"
 #include "con-utils.h"
 #include "getopt-min.h"
 #include "z80-if.h"
@@ -156,7 +156,7 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
                                boot_param.stages--;
                        break;
                case 'a':
-                       val = strtoul(optarg, NULL, 16);
+                       val = eval_arg(optarg, NULL);
                        if (val < 0x100 || val > 0xFE00) {
                                printf_P(PSTR("Address out of range: 0x%.4lX\n"), val);
                                return CMD_RET_FAILURE;
@@ -164,7 +164,7 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
                        boot_param.loadaddr = val;
                        break;
                case 's':
-                       val = strtoul(optarg, NULL, 16);
+                       val = eval_arg(optarg, NULL);
                        if (val > 255) {
                                printf_P(PSTR("Start sector out of range: 0x%lX\n"), val);
                                return CMD_RET_FAILURE;
@@ -172,7 +172,7 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
                        boot_param.sec_start = val;
                        break;
                case 'c':
-                       val = strtoul(optarg, NULL, 16);
+                       val = eval_arg(optarg, NULL);
                        if (val > 127) {
                                printf_P(PSTR("Sector count out of range: 0x%lX\n"), val);
                                return CMD_RET_FAILURE;
@@ -180,7 +180,7 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
                        boot_param.sec_cnt = val;
                        break;
                case 't':
-                       val = strtoul(optarg, NULL, 10);
+                       val = eval_arg(optarg, NULL);
                        if (val < 0x1 || val > 0xFFFF) {
                                printf_P(PSTR("Timeout value out of range: 0x%lX\n"), val);
                                return CMD_RET_FAILURE;
@@ -188,7 +188,7 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
                        boot_param.timeout = val;
                        break;
                case 'i':
-                       val = strtoul(optarg, NULL, 16);
+                       val = eval_arg(optarg, NULL);
                        if (val < 0x01 || val > 0xFF) {
                                printf_P(PSTR("Partition id out of range: 0x%lX\n"), val);
                                return CMD_RET_FAILURE;
@@ -286,7 +286,7 @@ command_ret_t do_busreq_pulse(cmd_tbl_t *cmdtp, int flag, int argc, char * const
        }
 
        if (argc > 1)
-               count = (uint16_t) strtoul(argv[1], NULL, 16);
+               count = (uint16_t) eval_arg(argv[1], NULL);
 
        z80_bus_cmd(Request);
        while (count--)
@@ -304,7 +304,7 @@ command_ret_t do_go(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        if (argc < 2)
                return CMD_RET_USAGE;
-       addr = strtoul(argv[1], NULL, 16);
+       addr = eval_arg(argv[1], NULL);
        if (addr >= (1UL<<16)) {
                printf_P(PSTR("## Startaddress 0x%05lx too high.\n"
                        "   (Out of logical address space (0x00000-0x0ffff))\n"),
index af2f77253092198d04dfe74b0b0267a9937158bf..26362b214a1b62c1263406e15a9fa1e2b15ec992 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * (C) Copyright 2014 Leo C. <erbl259-lmu@yahoo.de>
+ * (C) Copyright 2014,2016 Leo C. <erbl259-lmu@yahoo.de>
  *
- * SPDX-License-Identifier:    GPL-2.0+
+ * SPDX-License-Identifier:    GPL-2.0
  */
 
 /*
@@ -9,13 +9,13 @@
  */
 
 #include "common.h"
-#include <stdlib.h>
 #include <string.h>
 #include <stdbool.h>
 
 #include "command.h"
 #include "ff.h"
 #include "z80-if.h"
+#include "eval_arg.h"
 #include "con-utils.h"
 #include "print-utils.h"
 #include "time.h"
@@ -349,17 +349,17 @@ command_ret_t do_fat_rw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
        if (argc < (dowrite ? 4 : 3))
                return CMD_RET_USAGE;
 
-       addr = strtoul(argv[2], 0, 16);
+       addr = eval_arg(argv[2], NULL);
        if (addr >= MAX_MEMORY) {
                printf_P(PSTR("address too high: 0x%0lx\n"), addr);
                return CMD_RET_FAILURE;
        }
        if (argc > 3)
-               bytes = strtoul(argv[3], 0, 16);
+               bytes = eval_arg(argv[3], NULL);
        else
                bytes = MAX_MEMORY;
        if (argc > 4)
-               pos = strtoul(argv[4], 0, 16);
+               pos = eval_arg(argv[4], NULL);
        else
                pos = 0;
 
index 02ec47fcf69e8eea6283b8a07a4991313289b44f..e6e2cdce0a1f90f9a76a427ada3d2104d7445dda 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2015 Leo C. <erbl259-lmu@yahoo.de>
+ * (C) Copyright 2015,2016 Leo C. <erbl259-lmu@yahoo.de>
  *
  * SPDX-License-Identifier:    GPL-2.0
  */
@@ -9,7 +9,6 @@
  */
 
 #include "common.h"
-#include <stdlib.h>
 #include <ctype.h>
 #include <string.h>
 #include <stdbool.h>
@@ -17,6 +16,7 @@
 #include "command.h"
 #include "env.h"
 #include "ff.h"
+#include "eval_arg.h"
 #include "con-utils.h"
 #include "z80-if.h"
 #include "debug.h"
@@ -88,9 +88,9 @@ command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, int flag, int argc, char * const arg
                                                CONFIG_CPM3_BANKED_BASE);
 
        if (argc > 3)
-               banked_base = strtoul(argv[3], NULL, 16);
+               banked_base = eval_arg(argv[3], NULL);
        if (argc > 2)
-               common_base = strtoul(argv[2], NULL, 16);
+               common_base = eval_arg(argv[2], NULL);
 
        fname = getenv_str(PSTR(ENV_CPM3_SYSFILE));
        if (argc > 1) {
index 1ff6f5d2a34e6c6622140c79a90a79207eccb82b..9061b5ad0d95cd7520093bf769352bd594142bb0 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * (C) Copyright 2014 Leo C. <erbl259-lmu@yahoo.de>
+ * (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"
@@ -64,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;
index 6b75d6ed51afab2e354fd7e1eaa7fb4a4d8b697e..b84c4be758ec94b0d6797479c92ad56062dd7fc6 100644 (file)
@@ -5,13 +5,14 @@
  */
 
 #include "common.h"
-#include <stdlib.h>
+//#include <stdlib.h>
 
 #include "command.h"
 #include "diskio.h"
 #include "ff.h"
-#include "z80-if.h"
+#include "eval_arg.h"
 #include "print-utils.h"
+#include "z80-if.h"
 
 
 /*
@@ -29,7 +30,7 @@ command_ret_t do_status(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
        if (argc < 2)
                return CMD_RET_USAGE;
 
-       dev = (BYTE) strtoul(argv[1], 0, 10);
+       dev = (BYTE) eval_arg(argv[1], NULL);
        res = disk_status(dev);
        printf_P(PSTR("Socket status: %02x\n"), res);
 
@@ -51,7 +52,7 @@ command_ret_t do_init(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (argc < 2)
                return CMD_RET_USAGE;
 
-       dev = (BYTE) strtoul(argv[1], 0, 10);
+       dev = (BYTE) eval_arg(argv[1], NULL);
 
        if (disk_status(dev) & STA_NODISK) {
                printf_P(PSTR("No Disk\n"));
@@ -88,7 +89,7 @@ command_ret_t do_info(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (argc < 2)
                return CMD_RET_USAGE;
 
-       dev = (BYTE) strtoul(argv[1], 0, 10);
+       dev = (BYTE) eval_arg(argv[1], NULL);
 
        res = disk_status(dev);
        if (res & (STA_NODISK | STA_NOINIT)) {
@@ -138,7 +139,7 @@ command_ret_t do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (argc < 2)
                return CMD_RET_USAGE;
 
-       dev = (BYTE) strtoul(argv[1], NULL, 10);
+       dev = (BYTE) eval_arg(argv[1], NULL);
        if (dev != dev_last)
                sec_last = 0;
        sec = sec_last;
@@ -147,9 +148,9 @@ command_ret_t do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if ((flag & CMD_FLAG_REPEAT) == 0) {
                /* If another parameter, it is the sector to dump. */
                if (argc > 2)
-                       sec = strtoul(argv[2], 0, 10);
+                       sec = eval_arg(argv[2], NULL);
                if (argc > 3)
-                       count = (UINT) strtoul(argv[3], 0, 10);
+                       count = (UINT) eval_arg(argv[3], NULL);
        }
 
        for ( ; count; count--, sec++) {
@@ -191,7 +192,7 @@ command_ret_t do_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (argc < 2)
                return CMD_RET_USAGE;
 
-       dev = (BYTE) strtoul(argv[1], NULL, 10);
+       dev = (BYTE) eval_arg(argv[1], NULL);
        sec = sec_last;
        count = 1;
        addr = addr_last;
@@ -199,11 +200,11 @@ command_ret_t do_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if ((flag & CMD_FLAG_REPEAT) == 0) {
                /* If another parameter, it is the sector to dump. */
                if (argc > 2)
-                       sec = strtoul(argv[2], 0, 10);
+                       sec = eval_arg(argv[2], NULL);
                if (argc > 3)
-                       count = strtoul(argv[3], 0, 10);
+                       count = eval_arg(argv[3], NULL);
                if (argc > 4)
-                       addr = strtoul(argv[4], 0, 16);
+                       addr = eval_arg(argv[4], NULL);
        }
 
        for (nr = 0; nr < count;) {
@@ -253,7 +254,7 @@ command_ret_t do_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
        if (argc < 2)
                return CMD_RET_USAGE;
 
-       dev = (BYTE) strtoul(argv[1], NULL, 10);
+       dev = (BYTE) eval_arg(argv[1], NULL);
        sec = sec_last;
        addr = addr_last;
        count = 1;
@@ -261,11 +262,11 @@ command_ret_t do_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
        if ((flag & CMD_FLAG_REPEAT) == 0) {
                /* If another parameter, it is the sector to dump. */
                if (argc > 2)
-                       sec = strtoul(argv[2], 0, 10);
+                       sec = eval_arg(argv[2], NULL);
                if (argc > 3)
-                       count = strtoul(argv[3], 0, 10);
+                       count = eval_arg(argv[3], NULL);
                if (argc > 4)
-                       addr = strtoul(argv[4], 0, 16);
+                       addr = eval_arg(argv[4], NULL);
        }
 
        for (nr = 0; nr < count;) {
@@ -308,7 +309,7 @@ command_ret_t do_ioctl_sync(cmd_tbl_t *cmdtp, int flag, int argc, char * const a
        if (argc < 2)
                return CMD_RET_USAGE;
 
-       dev = (BYTE) strtoul(argv[1], 0, 10);
+       dev = (BYTE) eval_arg(argv[1], NULL);
        printf_P(PSTR("rc=%.2x\n"), disk_ioctl(dev, CTRL_SYNC, 0));
 
        return CMD_RET_SUCCESS;
@@ -322,37 +323,37 @@ cmd_tbl_t cmd_sd_sub[] = {
 CMD_TBL_ITEM(
        status, 2,                      1,      do_status,
        "Socket staus",
-       ""
+       "drive"
 ),
 CMD_TBL_ITEM(
        init,   2,                      1,      do_init,
        "Initialize disk",
-       ""
+       "drive"
 ),
 CMD_TBL_ITEM(
        info,   2,                      1,      do_info,
        "Disk info",
-       ""
+       "drive"
 ),
 CMD_TBL_ITEM(
        dump,   CONFIG_SYS_MAXARGS,     1,      do_dump,
        "Dump sector(s)",
-       "<drive> [sector [count ]]"
+       "drive [sector [count ]]"
 ),
 CMD_TBL_ITEM(
        read,   2,                      1,      do_read,
        "Read disk sector(s) into meomory",
-       "<drive> [sector [count [memaddr]]]"
+       "drive [sector [count [memaddr]]]"
 ),
 CMD_TBL_ITEM(
        write,  2,                      1,      do_write,
        "Write sector(s) from meomory to disk",
-       "<drive> [sector [count [memaddr]]]"
+       "drive [sector [count [memaddr]]]"
 ),
 CMD_TBL_ITEM(
        sync,   2,                      1,      do_ioctl_sync,
        "Device control: SYNC",
-       ""
+       "drive"
 ),
 
 CMD_TBL_ITEM(
index e38ccb2f27d86d063d2efdfa5e6de7bf30d299b5..1b4ecc2a60bb7930fffabdaa8c3a1323d576f235 100644 (file)
@@ -1,18 +1,19 @@
 /*
- * (C) Copyright 2014 Leo C. <erbl259-lmu@yahoo.de>
+ * (C) Copyright 2014,2016 Leo C. <erbl259-lmu@yahoo.de>
  *
  * SPDX-License-Identifier:    GPL-2.0
  */
 
 #include "debug.h"
 #include "common.h"
-#include <stdlib.h>
+#include <stdlib.h>                    /* __malloc_margin */
 #include <string.h>
 #include <ctype.h>
 #include <avr/eeprom.h>
 
 #include "command.h"
 #include "cli_readline.h"
+#include "eval_arg.h"
 #include "print-utils.h"
 
 /*
@@ -65,11 +66,11 @@ command_ret_t do_dump_mem(cmd_tbl_t *cmdtp, int flag, int argc, char * const arg
        }
 
        /* Address is specified since argc > 1 */
-       addr =  strtoul(argv[1], NULL, 16);
+       addr =  eval_arg(argv[1], NULL);
 
        /* If another parameter, it is the length to display. */
        if (argc > 2)
-               length = (uint16_t) strtoul(argv[2], NULL, 16);
+               length = (uint16_t) eval_arg(argv[2], NULL);
 
        /* Print the lines. */
        dump_mem(addr, addr, length, readwhat, NULL);
@@ -88,9 +89,9 @@ command_ret_t do_eep_cp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
        if (argc != 4)
                return CMD_RET_USAGE;
 
-       src = (size_t) strtoul(argv[1], NULL, 16);
-       dest = (size_t) strtoul(argv[2], NULL, 16);
-       count = (size_t) strtoul(argv[3], NULL, 16);
+       src   = (size_t) eval_arg(argv[1], NULL);
+       dest  = (size_t) eval_arg(argv[2], NULL);
+       count = (size_t) eval_arg(argv[3], NULL);
 
        if (src > E2END) {
                debug("src > EEPROM size: 0x%04x\n", src);
@@ -160,7 +161,7 @@ mod_mem_avr(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const arg
 
                /* Address is specified since argc > 1
                */
-               addr = (uint8_t *) (size_t) strtoul(argv[1], NULL, 16);
+               addr = (uint8_t *) (size_t) eval_arg(argv[1], NULL);
        }
 
        /* Print the address, followed by value.  Then accept input for
@@ -181,7 +182,7 @@ mod_mem_avr(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const arg
 
                } else {
                        char *endp;
-                       data = strtoul(console_buffer, &endp, 16);
+                       data = eval_arg(console_buffer, &endp);
                        nbytes = endp - console_buffer;
                        if (nbytes) {
                                *addr = data;