diff options
author | Wolfgang Denk <wd@denx.de> | 2011-10-21 23:35:12 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2011-10-21 23:35:12 +0200 |
commit | 1b81f017b04b5a176f5f9230ec979f0f3c55ba5b (patch) | |
tree | e13192c738bcb50238f6a60ef0448b1e2eec516a /common/main.c | |
parent | d639a8ccb0aa3c8c9d4ba0b642951f5534dcbdf1 (diff) | |
parent | 3a8653b3ac11b5ee56ce2b8f795826b8bf01eff2 (diff) | |
download | u-boot-imx-1b81f017b04b5a176f5f9230ec979f0f3c55ba5b.zip u-boot-imx-1b81f017b04b5a176f5f9230ec979f0f3c55ba5b.tar.gz u-boot-imx-1b81f017b04b5a176f5f9230ec979f0f3c55ba5b.tar.bz2 |
Merge branch 'master' of /home/wd/git/u-boot/master
* 'master' of /home/wd/git/u-boot/master:
cosmetic: Fixup fixup_silent_linux() for checkpatch
Correct dependency rule to fix SPL build
Move timestamp and version files into 'generated' subdir
sandbox: Makefile changes to build sandbox architecture
Add generic gpio.h in asm-generic
Adjust dependency rules to permit per-file flags
sandbox: Use uintptr_t for 32/64-bit compatibility
sandbox: Add basic config file
sandbox: Add serial uart
sandbox: Add main program
sandbox: Add OS dependent layer
sandbox: Force command sections to be 4-byte aligned
sandbox: Disable standalone/API support
sandbox: Disable built-in malloc
sandbox: Add bootm support
sandbox: Add board info for architecture
sandbox: Add sandbox board
sandbox: Add architecture lib files
sandbox: Add cpu files
sandbox: Add compiler defines to support a 64-bit x86_64 platform
sandbox: Add architecture image support
Fix use of int as pointer in image.c
sandbox: Add architecture header files
arm: ca9x4_ct_vxp: enable PXE BOOTP options support
arm: ca9x4_ct_vxp: enable pxe command support
Convert ca9x4_ct_vxp to standard env variables
net: bootp: add PXE/RFC 4578 DHCP options support
Add pxe command
lib: add uuid_str_to_bin for use with bootp and PXE uuid
README: document standard image variables
Replace space and tab checks with isblank
cosmetic: remove unneeded curly braces
Add isblank
common: add run_command2 for running simple or hush commands
common, menu: use abortboot for menu timeout
Add generic, reusable menu code
DM9000:Add a byte swap macro for dm9000 io operation.
kw_gpio: fix error in kw_gpio_direction_input
Blackfin: bfin_spi: fix build error when DEBUG is defined
Blackfin: define CONFIG_SYS_CACHELINE_SIZE
video: Moving mx3fb.c to CONFIG_VIDEO
mx31: make HSP clock for mx3fb driver available
MX5: Make IPU display output and pixel format configurable
VIDEO: MX5: export pix format
VIDEO: MX5: Switch MX5 to CONFIG_VIDEO
video: update the Freescale DIU driver to use linux/fb.h
powerpc: cpm2 boards: update fcc register logic
Diffstat (limited to 'common/main.c')
-rw-r--r-- | common/main.c | 75 |
1 files changed, 40 insertions, 35 deletions
diff --git a/common/main.c b/common/main.c index 3324d9d..e96c95a 100644 --- a/common/main.c +++ b/common/main.c @@ -40,6 +40,7 @@ #endif #include <post.h> +#include <linux/ctype.h> #if defined(CONFIG_SILENT_CONSOLE) || defined(CONFIG_POST) || defined(CONFIG_CMDLINE_EDITING) DECLARE_GLOBAL_DATA_PTR; @@ -83,12 +84,14 @@ extern void mdm_init(void); /* defined in board.c */ /*************************************************************************** * Watch for 'delay' seconds for autoboot stop or autoboot delay string. - * returns: 0 - no key string, allow autoboot - * 1 - got key string, abort + * returns: 0 - no key string, allow autoboot 1 - got key string, abort */ #if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0) # if defined(CONFIG_AUTOBOOT_KEYED) -static inline int abortboot(int bootdelay) +#ifndef CONFIG_MENU +static inline +#endif +int abortboot(int bootdelay) { int abort = 0; uint64_t etime = endtick(bootdelay); @@ -202,7 +205,10 @@ static inline int abortboot(int bootdelay) static int menukey = 0; #endif -static inline int abortboot(int bootdelay) +#ifndef CONFIG_MENU +static inline +#endif +int abortboot(int bootdelay) { int abort = 0; @@ -260,6 +266,28 @@ static inline int abortboot(int bootdelay) # endif /* CONFIG_AUTOBOOT_KEYED */ #endif /* CONFIG_BOOTDELAY >= 0 */ +/* + * Return 0 on success, or != 0 on error. + */ +#ifndef CONFIG_CMD_PXE +static inline +#endif +int run_command2(const char *cmd, int flag) +{ +#ifndef CONFIG_SYS_HUSH_PARSER + /* + * run_command can return 0 or 1 for success, so clean up its result. + */ + if (run_command(cmd, flag) == -1) + return 1; + + return 0; +#else + return parse_string_outer(cmd, + FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP); +#endif +} + /****************************************************************************/ void main_loop (void) @@ -326,12 +354,7 @@ void main_loop (void) int prev = disable_ctrlc(1); /* disable Control C checking */ # endif -# ifndef CONFIG_SYS_HUSH_PARSER - run_command (p, 0); -# else - parse_string_outer(p, FLAG_PARSE_SEMICOLON | - FLAG_EXIT_FROM_LOOP); -# endif + run_command2(p, 0); # ifdef CONFIG_AUTOBOOT_KEYED disable_ctrlc(prev); /* restore Control C checking */ @@ -376,12 +399,7 @@ void main_loop (void) int prev = disable_ctrlc(1); /* disable Control C checking */ # endif -# ifndef CONFIG_SYS_HUSH_PARSER - run_command (s, 0); -# else - parse_string_outer(s, FLAG_PARSE_SEMICOLON | - FLAG_EXIT_FROM_LOOP); -# endif + run_command2(s, 0); # ifdef CONFIG_AUTOBOOT_KEYED disable_ctrlc(prev); /* restore Control C checking */ @@ -391,14 +409,8 @@ void main_loop (void) # ifdef CONFIG_MENUKEY if (menukey == CONFIG_MENUKEY) { s = getenv("menucmd"); - if (s) { -# ifndef CONFIG_SYS_HUSH_PARSER - run_command(s, 0); -# else - parse_string_outer(s, FLAG_PARSE_SEMICOLON | - FLAG_EXIT_FROM_LOOP); -# endif - } + if (s) + run_command2(s, 0); } #endif /* CONFIG_MENUKEY */ #endif /* CONFIG_BOOTDELAY */ @@ -1088,9 +1100,8 @@ int parse_line (char *line, char *argv[]) while (nargs < CONFIG_SYS_MAXARGS) { /* skip any white space */ - while ((*line == ' ') || (*line == '\t')) { + while (isblank(*line)) ++line; - } if (*line == '\0') { /* end of line, no more args */ argv[nargs] = NULL; @@ -1103,9 +1114,8 @@ int parse_line (char *line, char *argv[]) argv[nargs++] = line; /* begin of argument string */ /* find end of string */ - while (*line && (*line != ' ') && (*line != '\t')) { + while (*line && !isblank(*line)) ++line; - } if (*line == '\0') { /* end of line, no more args */ argv[nargs] = NULL; @@ -1397,14 +1407,9 @@ int do_run (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) printf ("## Error: \"%s\" not defined\n", argv[i]); return 1; } -#ifndef CONFIG_SYS_HUSH_PARSER - if (run_command (arg, flag) == -1) - return 1; -#else - if (parse_string_outer(arg, - FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP) != 0) + + if (run_command2(arg, flag) != 0) return 1; -#endif } return 0; } |