summaryrefslogtreecommitdiff
path: root/common/main.c
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2011-10-21 23:35:12 +0200
committerWolfgang Denk <wd@denx.de>2011-10-21 23:35:12 +0200
commit1b81f017b04b5a176f5f9230ec979f0f3c55ba5b (patch)
treee13192c738bcb50238f6a60ef0448b1e2eec516a /common/main.c
parentd639a8ccb0aa3c8c9d4ba0b642951f5534dcbdf1 (diff)
parent3a8653b3ac11b5ee56ce2b8f795826b8bf01eff2 (diff)
downloadu-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.c75
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;
}