15 Oct, 2013

1 commit


24 Jul, 2013

1 commit


02 May, 2013

2 commits

  • Add "setexpr name gsub r s [t]" and "setexpr name sub r s [t]"
    commands which implement substring matching for the regular
    expression in the string , and substitution of the string .
    The result is assigned to the environment variable . If is
    not supplied, the previous value of is used instead. "gsub"
    performs global substitution, while "sub" will replace only the first
    substring.

    Both commands are closely modeled after the gawk functions with the
    same names.

    Examples:

    - Generate broadcast address by substituting the last two numbers of
    the IP address by "255.255":

    => print ipaddr
    ipaddr=192.168.1.104
    => setexpr broadcast sub "(.*\\.).*\\..*" "\\1255.255" $ipaddr
    broadcast=192.168.255.255

    - Depending on keyboard configuration (German vs. US keyboard) a
    barcode scanner may initialize the MAC address as C0:E5:4E:02:06:DC
    or as C0>E5>4E>02>06>DC. Make sure we always have a correct value:

    => print ethaddr
    ethaddr=C0>E5>4E>02>06>DC
    => setexpr ethaddr gsub > :
    ethaddr=C0:E5:4E:02:06:DC

    - Do the same, but substitute one step at a time in a loop until no
    futher matches:

    => setenv ethaddr C0>E5>4E>02>06>DC
    => while setexpr ethaddr sub > :
    > do
    > echo -----
    > done
    ethaddr=C0:E5>4E>02>06>DC
    -----
    ethaddr=C0:E5:4E>02>06>DC
    -----
    ethaddr=C0:E5:4E:02>06>DC
    -----
    ethaddr=C0:E5:4E:02:06>DC
    -----
    ethaddr=C0:E5:4E:02:06:DC
    -----
    C0:E5:4E:02:06:DC: No match
    => print ethaddr
    ethaddr=C0:E5:4E:02:06:DC

    etc.

    To enable this feature, the CONFIG_REGEX option has to be defined in
    the board config file.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     
  • Simplify the argument checking for the "setexpr" command. This is
    done mainly to make future extensions easier.

    Also improve the help message for the one argument version of the
    command - this does not "load an address", but a value, which in
    this context may be a plain number or a pointer dereference.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     

01 Mar, 2013

1 commit


20 Dec, 2012

1 commit


05 Nov, 2012

1 commit

  • cmd_boot.c:40:5: warning: symbol 'do_go' was not declared. Should it be static?
    cmd_bootm.c:164:6: warning: symbol '__arch_preboot_os' was not declared. Should it be static?
    cmd_bootm.c:477:5: warning: symbol 'do_bootm_subcommand' was not declared. Should it be static?
    cmd_bootm.c:1022:1: error: directive in argument list
    cmd_bootm.c:1028:1: error: directive in argument list
    cmd_bootm.c:1029:1: error: directive in argument list
    cmd_bootm.c:1036:1: error: directive in argument list
    cmd_bootm.c:1042:1: error: directive in argument list
    cmd_bootm.c:1044:1: error: directive in argument list
    cmd_bootm.c:1045:1: error: directive in argument list
    cmd_bootm.c:1047:1: error: directive in argument list
    cmd_bootm.c:1089:5: warning: symbol 'do_iminfo' was not declared. Should it be static?
    cmd_bootm.c:1176:5: warning: symbol 'do_imls' was not declared. Should it be static?
    cmd_bootm.c:1654:1: error: directive in argument list
    cmd_bootm.c:1660:1: error: directive in argument list
    cmd_console.c:32:5: warning: symbol 'do_coninfo' was not declared. Should it be s
    cmd_date.c:46:5: warning: symbol 'do_date' was not declared. Should it be static?
    cmd_echo.c:27:5: warning: symbol 'do_echo' was not declared. Should it be static?
    cmd_exit.c:27:5: warning: symbol 'do_exit' was not declared. Should it be static?
    cmd_fat.c:97:5: warning: symbol 'do_fat_ls' was not declared. Should it be static?
    cmd_fat.c:136:5: warning: symbol 'do_fat_fsinfo' was not declared. Should it be s
    cmd_fdt.c:66:5: warning: symbol 'do_fdt' was not declared. Should it be static?
    cmd_fdt.c:542:43: warning: incorrect type in assignment (different base types)
    cmd_fdt.c:542:43: expected unsigned int [unsigned] [usertype]
    cmd_fdt.c:542:43: got restricted __be32 [usertype]
    cmd_fdt.c:679:42: warning: cast to restricted __be32
    cmd_fdt.c:820:1: error: directive in argument list
    cmd_fdt.c:822:1: error: directive in argument list
    cmd_flash.c:292:5: warning: symbol 'do_flinfo' was not declared. Should it be static?
    cmd_flash.c:324:5: warning: symbol 'do_flerase' was not declared. Should it be static?
    cmd_flash.c:457:5: warning: symbol 'do_protect' was not declared. Should it be st
    cmd_help.c:27:5: warning: symbol 'do_help' was not declared. Should it be static?
    cmd_i2c.c:136:6: warning: symbol '__def_i2c_init_board' was not declared. Should it be static?
    cmd_i2c.c:144:14: warning: symbol '__def_i2c_get_bus_speed' was not declared. Should it be static?
    cmd_i2c.c:151:5: warning: symbol '__def_i2c_set_bus_speed' was not declared. Should it be static?
    cmd_i2c.c:1322:1: error: directive in argument list
    cmd_i2c.c:1324:1: error: directive in argument list
    cmd_i2c.c:1326:1: error: directive in argument list
    cmd_i2c.c:1328:1: error: directive in argument list
    cmd_i2c.c:1337:1: error: directive in argument list
    cmd_i2c.c:1339:1: error: directive in argument list
    cmd_irq.c:27:5: warning: symbol 'do_interrupts' was not declared. Should it be static?
    cmd_itest.c:133:5: warning: symbol 'binary_test' was not declared. Should it be static?
    cmd_itest.c:158:5: warning: symbol 'do_itest' was not declared. Should it be stat
    cmd_load.c:54:5: warning: symbol 'do_load_serial' was not declared. Should it be static?
    cmd_load.c:431:6: warning: symbol 'his_eol' was not declared. Should it be static?
    cmd_load.c:432:6: warning: symbol 'his_pad_count' was not declared. Should it be static?
    cmd_load.c:433:6: warning: symbol 'his_pad_char' was not declared. Should it be static?
    cmd_load.c:434:6: warning: symbol 'his_quote' was not declared. Should it be static?
    cmd_load.c:436:5: warning: symbol 'do_load_serial_bin' was not declared. Should it be static?
    cmd_load.c:549:6: warning: symbol 'send_pad' was not declared. Should it be static?
    cmd_load.c:558:6: warning: symbol 'ktrans' was not declared. Should it be static?
    cmd_load.c:568:5: warning: symbol 'chk1' was not declared. Should it be static?
    cmd_load.c:578:6: warning: symbol 's1_sendpacket' was not declared. Should it be static?
    cmd_load.c:587:6: warning: symbol 'send_ack' was not declared. Should it be static?
    cmd_load.c:600:6: warning: symbol 'send_nack' was not declared. Should it be static?
    cmd_load.c:614:6: warning: symbol 'os_data_init' was not declared. Should it be static?
    cmd_load.c:615:6: warning: symbol 'os_data_char' was not declared. Should it be static?
    cmd_load.c:657:6: warning: symbol 'k_data_init' was not declared. Should it be static?
    cmd_load.c:663:6: warning: symbol 'k_data_save' was not declared. Should it be static?
    cmd_load.c:669:6: warning: symbol 'k_data_restore' was not declared. Should it be static?
    cmd_load.c:675:6: warning: symbol 'k_data_char' was not declared. Should it be static?
    cmd_load.c:693:6: warning: symbol 'send_parms' was not declared. Should it be static?
    cmd_load.c:694:6: warning: symbol 'send_ptr' was not declared. Should it be static?
    cmd_load.c:698:6: warning: symbol 'handle_send_packet' was not declared. Should i
    cmd_mdio.c:60:5: warning: symbol 'mdio_write_ranges' was not declared. Should it be static?
    cmd_mdio.c:82:5: warning: symbol 'mdio_read_ranges' was not declared. Should it be static?
    cmd_mdio.c:115:5: warning: symbol 'extract_reg_range' was not declared. Should it be static?
    cmd_mdio.c:144:5: warning: symbol 'extract_phy_range' was not declared. Should it
    cmd_mem.c:54:5: warning: symbol 'do_mem_md' was not declared. Should it be static?
    cmd_mem.c:150:5: warning: symbol 'do_mem_mm' was not declared. Should it be static?
    cmd_mem.c:154:5: warning: symbol 'do_mem_nm' was not declared. Should it be static?
    cmd_mem.c:159:5: warning: symbol 'do_mem_mw' was not declared. Should it be static?
    cmd_mem.c:256:5: warning: symbol 'do_mem_cmp' was not declared. Should it be static?
    cmd_mem.c:326:5: warning: symbol 'do_mem_cp' was not declared. Should it be static?
    cmd_mem.c:436:5: warning: symbol 'do_mem_base' was not declared. Should it be static?
    cmd_mem.c:449:5: warning: symbol 'do_mem_loop' was not declared. Should it be static?
    cmd_mem.c:595:5: warning: symbol 'do_mem_mtest' was not declared. Should it be static?
    cmd_mem.c:618:26: warning: Using plain integer as NULL pointer
    cmd_mem.c:1057:5: warning: symbol 'do_mem_crc' was not declared. Should it be static?
    cmd_misc.c:30:5: warning: symbol 'do_sleep' was not declared. Should it be static
    cmd_mmc.c:118:5: warning: symbol 'do_mmcinfo' was not declared. Should it be static?
    cmd_mmc.c:272:32: warning: Using plain integer as NULL pointer
    cmd_mmc.c:150:5: warning: symbol 'do_mmcops' was not declared. Should it be stati
    cmd_mp.c:27:1: warning: symbol 'cpu_cmd' was not declared. Should it be static?
    cmd_mp.c:85:1: error: directive in argument list
    cmd_mp.c:88:1: error: directive in argument list
    cmd_mtdparts.c:150:18: warning: symbol 'mtdids' was not declared. Should it be static?
    cmd_mtdparts.c:153:18: warning: symbol 'devices' was not declared. Should it be static?
    cmd_mtdparts.c:713:5: warning: symbol 'mtd_device_validate' was not declared. Should it be static?
    cmd_mtdparts.c:1887:5: warning: symbol 'do_chpart' was not declared. Should it be static?
    cmd_mtdparts.c:1925:5: warning: symbol 'do_mtdparts' was not declared. Should it be static?
    cmd_mtdparts.c:2060:1: error: directive in argument list
    cmd_mtdparts.c:2063:1: error: directive in argument list
    cmd_mtdparts.c:2066:1: error: directive in argument list
    cmd_mtdparts.c:2071:1: error: directive in argument list
    cmd_mtdparts.c:2073:1: error: directive in argument list
    cmd_nand.c:377:18: error: bad constant expression
    cmd_nand.c:431:5: warning: symbol 'do_nand' was not declared. Should it be static?
    cmd_nand.c:796:1: error: directive in argument list
    cmd_nand.c:801:1: error: directive in argument list
    cmd_nand.c:802:1: error: directive in argument list
    cmd_nand.c:806:1: error: directive in argument list
    cmd_nand.c:819:1: error: directive in argument list
    cmd_nand.c:824:1: error: directive in argument list
    cmd_nand.c:825:1: error: directive in argument list
    cmd_nand.c:831:1: error: directive in argument list
    cmd_nand.c:918:5: warning: symbol 'do_nandboot' was not declared. Should it be static?
    cmd_net.c:33:5: warning: symbol 'do_bootp' was not declared. Should it be static?
    cmd_net.c:107:5: warning: symbol 'do_dhcp' was not declared. Should it be static?
    cmd_net.c:120:5: warning: symbol 'do_nfs' was not declared. Should it be static?
    cmd_nvedit.c:138:5: warning: symbol 'do_env_print' was not declared. Should it be static?
    cmd_nvedit.c:323:5: warning: symbol '_do_env_set' was not declared. Should it be static?
    cmd_nvedit.c:435:5: warning: symbol 'do_env_set' was not declared. Should it be static?
    cmd_nvedit.c:514:5: warning: symbol 'do_env_edit' was not declared. Should it be static?
    cmd_nvedit.c:620:5: warning: symbol 'do_env_save' was not declared. Should it be static?
    cmd_nvedit.c:1016:1: error: directive in argument list
    cmd_nvedit.c:1018:1: error: directive in argument list
    cmd_nvedit.c:1021:1: error: directive in argument list
    cmd_nvedit.c:1023:1: error: directive in argument list
    cmd_nvedit.c:1024:1: error: directive in argument list
    cmd_nvedit.c:1026:1: error: directive in argument list
    cmd_nvedit.c:1027:1: error: directive in argument list
    cmd_nvedit.c:1029:1: error: directive in argument list
    cmd_nvedit.c:1030:1: error: directive in argument list
    cmd_nvedit.c:1032:1: error: directive in argument list
    cmd_nvedit.c:1034:1: error: directive in argument list
    cmd_nvedit.c:1036:1: error: directive in argument list
    cmd_nvedit.c:1037:1: error: directive in argument list
    cmd_nvedit.c:1039:1: error: directive in argument list
    cmd_pci.c:38:17: warning: symbol 'ShortPCIListing' was not declared. Should it be static?
    cmd_pci.c:38:22: warning: 'ShortPCIListing' defined but not used [-Wunused-variable]
    cmd_pci.c:411:5: warning: symbol 'do_pci' was not declared. Should it be static?
    cmd_pci.c:494:1: error: directive in argument list
    cmd_pci.c:497:1: error: directive in argument list
    cmd_reginfo.c:40:5: warning: symbol 'do_reginfo' was not declared. Should it be static?
    cmd_sata.c:31:5: warning: symbol 'sata_curr_device' was not declared. Should it be static?
    note -> ata_piix.c doesn't seem to use 'sata_curr_device'; deleted.
    cmd_sata.c:32:18: warning: symbol 'sata_dev_desc' was not declared. Should it be static?
    cmd_sata.c:70:5: warning: symbol 'do_sata' was not declared. Should it be static?
    cmd_setexpr.c:53:5: warning: symbol 'do_setexpr' was not declared. Should it be static?
    cmd_source.c:186:1: error: directive in argument list
    cmd_source.c:190:1: error: directive in argument list
    cmd_test.c:27:5: warning: symbol 'do_test' was not declared. Should it be static?
    cmd_test.c:153:5: warning: symbol 'do_false' was not declared. Should it be static?
    cmd_test.c:164:5: warning: symbol 'do_true' was not declared. Should it be static
    cmd_usb.c:43:6: warning: symbol 'usb_get_class_desc' was not declared. Should it be static?
    cmd_usb.c:69:6: warning: symbol 'usb_display_class_sub' was not declared. Should it be static?
    cmd_usb.c:151:6: warning: symbol 'usb_display_string' was not declared. Should it be static?
    cmd_usb.c:161:6: warning: symbol 'usb_display_desc' was not declared. Should it be static?
    cmd_usb.c:195:6: warning: symbol 'usb_display_conf_desc' was not declared. Should it be static?
    cmd_usb.c:210:6: warning: symbol 'usb_display_if_desc' was not declared. Should it be static?
    cmd_usb.c:227:6: warning: symbol 'usb_display_ep_desc' was not declared. Should it be static?
    cmd_usb.c:252:6: warning: symbol 'usb_display_config' was not declared. Should it be static?
    cmd_usb.c:283:6: warning: symbol 'usb_show_tree_graph' was not declared. Should it be static?
    cmd_usb.c:343:6: warning: symbol 'usb_show_tree' was not declared. Should it be static?
    cmd_usb.c:356:5: warning: symbol 'do_usbboot' was not declared. Should it be static?
    cmd_usb.c:366:5: warning: symbol 'do_usb' was not declared. Should it be static?
    cmd_version.c:31:5: warning: symbol 'do_version' was not declared. Should it be s
    cmd_ximg.c:46:1: warning: symbol 'do_imgextract' was not declared. Should it be static?
    cmd_ximg.c:272:1: error: directive in argument list
    cmd_ximg.c:276:1: error: directive in argument list

    Signed-off-by: Kim Phillips

    Kim Phillips
     

07 Mar, 2012

1 commit


25 Jul, 2010

1 commit

  • Lots of code use this construct:

    cmd_usage(cmdtp);
    return 1;

    Change cmd_usage() let it return 1 - then we can replace all these
    ocurrances by

    return cmd_usage(cmdtp);

    This fixes a few places with incorrect return code handling, too.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     

05 Jul, 2010

1 commit

  • The hush shell dynamically allocates (and re-allocates) memory for the
    argument strings in the "char *argv[]" argument vector passed to
    commands. Any code that modifies these pointers will cause serious
    corruption of the malloc data structures and crash U-Boot, so make
    sure the compiler can check that no such modifications are being done
    by changing the code into "char * const argv[]".

    This modification is the result of debugging a strange crash caused
    after adding a new command, which used the following argument
    processing code which has been working perfectly fine in all Unix
    systems since version 6 - but not so in U-Boot:

    int main (int argc, char **argv)
    {
    while (--argc > 0 && **++argv == '-') {
    /* ====> */ while (*++*argv) {
    switch (**argv) {
    case 'd':
    debug++;
    break;
    ...
    default:
    usage ();
    }
    }
    }
    ...
    }

    The line marked "====>" will corrupt the malloc data structures and
    usually cause U-Boot to crash when the next command gets executed by
    the shell. With the modification, the compiler will prevent this with
    an
    error: increment of read-only location '*argv'

    N.B.: The code above can be trivially rewritten like this:

    while (--argc > 0 && **++argv == '-') {
    char *arg = *argv;
    while (*++arg) {
    switch (*arg) {
    ...

    Signed-off-by: Wolfgang Denk
    Acked-by: Mike Frysinger

    Wolfgang Denk
     

24 Jun, 2010

1 commit


22 Mar, 2010

1 commit

  • This patch add functionality to use memory addresses in expressions.
    This increases the power of expressions substantially

    It adheres to the standard convemtions: memory addresses can be given
    in the format *address (e.g. *1000)

    Rationale for this change is that it allows masking off bits from a
    byte that is obtained by reading data from e.g. i2c.

    Signed-off-by: Frans Meulenbroeks

    Fix warning: control reaches end of non-void function
    Signed-off-by: Wolfgang Denk

    Frans Meulenbroeks
     

13 Jun, 2009

1 commit

  • Many of the help messages were not really helpful; for example, many
    commands that take no arguments would not print a correct synopsis
    line, but "No additional help available." which is not exactly wrong,
    but not helpful either.

    Commit ``Make "usage" messages more helpful.'' changed this
    partially. But it also became clear that lots of "Usage" and "Help"
    messages (fields "usage" and "help" in struct cmd_tbl_s respective)
    were actually redundant.

    This patch cleans this up - for example:

    Before:
    => help dtt
    dtt - Digital Thermometer and Thermostat

    Usage:
    dtt - Read temperature from digital thermometer and thermostat.

    After:
    => help dtt
    dtt - Read temperature from Digital Thermometer and Thermostat

    Usage:
    dtt

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     

28 Jan, 2009

2 commits


26 Mar, 2008

1 commit

  • Add a simple expr style command that will set an env variable as the result
    of the command. This allows us to do simple math in shell. The following
    operations are supported: &, |, ^, +, -, *, /.

    Signed-off-by: Kumar Gala

    Kumar Gala