On 31.5.2018 11:40, Siva Durga Prasad Paladugu wrote:
> This patch modifies the arguments parsing code by parsing
> based on requested operation for fpga loadfs and then
> parses the most common/basic args for other fpga load
> commands. This makes it easy for new command extensions
> or additions especially the commands with more args.
> 
> Signed-off-by: Siva Durga Prasad Paladugu <[email protected]>
> ---
> Changes for v2:
> - Correct the argc check as per comment.
> ---
>  cmd/fpga.c | 31 +++++++++++++++++++------------
>  1 file changed, 19 insertions(+), 12 deletions(-)
> 
> diff --git a/cmd/fpga.c b/cmd/fpga.c
> index 14ad4e5..3f09d42 100644
> --- a/cmd/fpga.c
> +++ b/cmd/fpga.c
> @@ -60,15 +60,31 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char 
> *const argv[])
>       if (datastr)
>               fpga_data = (void *)simple_strtoul(datastr, NULL, 16);
>  
> -     switch (argc) {
> +     if (argc > 9 || argc < 2) {
> +             debug("%s: Too many or too few args (%d)\n", __func__, argc);
> +             return CMD_RET_USAGE;
> +     }
> +
> +     op = (int)fpga_get_op(argv[1]);
> +
> +     switch (op) {
>  #if defined(CONFIG_CMD_FPGA_LOADFS)
> -     case 9:
> +     case FPGA_LOADFS:
> +             if (argc < 9)
> +                     return CMD_RET_USAGE;
>               fpga_fsinfo.blocksize = (unsigned int)
> -                                          simple_strtoul(argv[5], NULL, 16);
> +                                     simple_strtoul(argv[5], NULL, 16);
>               fpga_fsinfo.interface = argv[6];
>               fpga_fsinfo.dev_part = argv[7];
>               fpga_fsinfo.filename = argv[8];
> +             argc = 5;
> +             break;
>  #endif
> +     default:
> +             break;
> +     }
> +
> +     switch (argc) {
>       case 5:         /* fpga <op> <dev> <data> <datasize> */
>               data_size = simple_strtoul(argv[4], NULL, 16);
>  
> @@ -117,15 +133,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char 
> *const argv[])
>                             __func__, (ulong)fpga_data);
>                       dev = FPGA_INVALID_DEVICE;      /* reset device num */
>               }
> -
> -     case 2:         /* fpga <op> */
> -             op = (int)fpga_get_op(argv[1]);
> -             break;
> -
> -     default:
> -             debug("%s: Too many or too few args (%d)\n", __func__, argc);
> -             op = FPGA_NONE; /* force usage display */
> -             break;
>       }
>  
>       if (dev == FPGA_INVALID_DEVICE) {
> 


Applied all.

Thanks,
Michal

_______________________________________________
U-Boot mailing list
[email protected]
https://lists.denx.de/listinfo/u-boot

Reply via email to