]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - common/cmd_nvedit.c
cmd_nand: fix crashing bug in nand read/write
[karo-tx-uboot.git] / common / cmd_nvedit.c
index baaa513f6b2856ddc5d41d8735b9afc429b4d79c..271200266c806da241404d585bbc7de8bf37b965 100644 (file)
@@ -61,13 +61,15 @@ DECLARE_GLOBAL_DATA_PTR;
        !defined(CONFIG_ENV_IS_IN_DATAFLASH)    && \
        !defined(CONFIG_ENV_IS_IN_MG_DISK)      && \
        !defined(CONFIG_ENV_IS_IN_MMC)          && \
+       !defined(CONFIG_ENV_IS_IN_FAT)          && \
        !defined(CONFIG_ENV_IS_IN_NAND)         && \
        !defined(CONFIG_ENV_IS_IN_NVRAM)        && \
        !defined(CONFIG_ENV_IS_IN_ONENAND)      && \
        !defined(CONFIG_ENV_IS_IN_SPI_FLASH)    && \
+       !defined(CONFIG_ENV_IS_IN_REMOTE)       && \
        !defined(CONFIG_ENV_IS_NOWHERE)
 # error Define one of CONFIG_ENV_IS_IN_{EEPROM|FLASH|DATAFLASH|ONENAND|\
-SPI_FLASH|MG_DISK|NVRAM|MMC} or CONFIG_ENV_IS_NOWHERE
+SPI_FLASH|MG_DISK|NVRAM|MMC|FAT|REMOTE} or CONFIG_ENV_IS_NOWHERE
 #endif
 
 #define XMK_STR(x)     #x
@@ -173,7 +175,7 @@ static int do_env_grep(cmd_tbl_t *cmdtp, int flag,
        int rcode = 1, arg = 1, idx;
 
        if (argc < 2)
-               return cmd_usage(cmdtp);
+               return CMD_RET_USAGE;
 
        memset(matched, 0, env_htab.size / 8);
 
@@ -202,7 +204,6 @@ static int do_env_grep(cmd_tbl_t *cmdtp, int flag,
  */
 int _do_env_set(int flag, int argc, char * const argv[])
 {
-       bd_t  *bd = gd->bd;
        int   i, len;
        int   console = -1;
        char  *name, *value, *s;
@@ -341,21 +342,7 @@ int _do_env_set(int flag, int argc, char * const argv[])
         * Some variables should be updated when the corresponding
         * entry in the environment is changed
         */
-       if (strcmp(name, "ipaddr") == 0) {
-               char *s = argv[2];      /* always use only one arg */
-               char *e;
-               unsigned long addr;
-               bd->bi_ip_addr = 0;
-               for (addr = 0, i = 0; i < 4; ++i) {
-                       ulong val = s ? simple_strtoul(s, &e, 10) : 0;
-                       addr <<= 8;
-                       addr  |= val & 0xFF;
-                       if (s)
-                               s = *e ? e + 1 : e;
-               }
-               bd->bi_ip_addr = htonl(addr);
-               return 0;
-       } else if (strcmp(argv[1], "loadaddr") == 0) {
+       if (strcmp(argv[1], "loadaddr") == 0) {
                load_addr = simple_strtoul(argv[2], NULL, 16);
                return 0;
        }
@@ -411,7 +398,7 @@ int setenv_addr(const char *varname, const void *addr)
 int do_env_set(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        if (argc < 2)
-               return cmd_usage(cmdtp);
+               return CMD_RET_USAGE;
 
        return _do_env_set(flag, argc, argv);
 }
@@ -435,7 +422,7 @@ int do_env_ask(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        /* Check the syntax */
        switch (argc) {
        case 1:
-               return cmd_usage(cmdtp);
+               return CMD_RET_USAGE;
 
        case 2:         /* env_ask envname */
                sprintf(message, "Please enter '%s':", argv[1]);
@@ -493,7 +480,7 @@ int do_env_edit(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        char *init_val;
 
        if (argc < 2)
-               return cmd_usage(cmdtp);
+               return CMD_RET_USAGE;
 
        /* Set read buffer to initial value or empty sting */
        init_val = getenv(argv[1]);
@@ -502,7 +489,7 @@ int do_env_edit(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        else
                buffer[0] = '\0';
 
-       readline_into_buffer("edit: ", buffer);
+       readline_into_buffer("edit: ", buffer, 0);
 
        return setenv(argv[1], buffer);
 }
@@ -631,7 +618,7 @@ static int do_env_default(cmd_tbl_t *cmdtp, int flag,
                          int argc, char * const argv[])
 {
        if (argc != 2 || strcmp(argv[1], "-f") != 0)
-               return cmd_usage(cmdtp);
+               return CMD_RET_USAGE;
 
        set_default_env("## Resetting to default environment\n");
        return 0;
@@ -730,14 +717,14 @@ static int do_env_export(cmd_tbl_t *cmdtp, int flag,
                                sep = '\n';
                                break;
                        default:
-                               return cmd_usage(cmdtp);
+                               return CMD_RET_USAGE;
                        }
                }
 NXTARG:                ;
        }
 
        if (argc < 1)
-               return cmd_usage(cmdtp);
+               return CMD_RET_USAGE;
 
        addr = (char *)simple_strtoul(argv[0], NULL, 16);
 
@@ -838,13 +825,13 @@ static int do_env_import(cmd_tbl_t *cmdtp, int flag,
                                del = 1;
                                break;
                        default:
-                               return cmd_usage(cmdtp);
+                               return CMD_RET_USAGE;
                        }
                }
        }
 
        if (argc < 1)
-               return cmd_usage(cmdtp);
+               return CMD_RET_USAGE;
 
        if (!fmt)
                printf("## Warning: defaulting to text format\n");
@@ -868,7 +855,7 @@ static int do_env_import(cmd_tbl_t *cmdtp, int flag,
                        printf("## Warning: Input data exceeds %d bytes"
                                " - truncated\n", MAX_ENV_SIZE);
                }
-               ++size;
+               size += 2;
                printf("## Info: input data size = %zu = 0x%zX\n", size, size);
        }
 
@@ -944,7 +931,7 @@ static int do_env(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        cmd_tbl_t *cp;
 
        if (argc < 2)
-               return cmd_usage(cmdtp);
+               return CMD_RET_USAGE;
 
        /* drop initial "env" arg */
        argc--;
@@ -955,7 +942,7 @@ static int do_env(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (cp)
                return cp->cmd(cmdtp, flag, argc, argv);
 
-       return cmd_usage(cmdtp);
+       return CMD_RET_USAGE;
 }
 
 U_BOOT_CMD(