mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-24 14:25:56 +00:00
common: add run_command2 for running simple or hush commands
Signed-off-by: Jason Hobbs <jason.hobbs@calxeda.com> Cc: Mike Frysinger <vapier@gentoo.org> Acked-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
b41bc5a82d
commit
c8a2079e49
3 changed files with 29 additions and 31 deletions
|
@ -3217,7 +3217,7 @@ int parse_stream_outer(struct in_str *inp, int flag)
|
||||||
#ifndef __U_BOOT__
|
#ifndef __U_BOOT__
|
||||||
static int parse_string_outer(const char *s, int flag)
|
static int parse_string_outer(const char *s, int flag)
|
||||||
#else
|
#else
|
||||||
int parse_string_outer(char *s, int flag)
|
int parse_string_outer(const char *s, int flag)
|
||||||
#endif /* __U_BOOT__ */
|
#endif /* __U_BOOT__ */
|
||||||
{
|
{
|
||||||
struct in_str input;
|
struct in_str input;
|
||||||
|
|
|
@ -83,8 +83,7 @@ extern void mdm_init(void); /* defined in board.c */
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Watch for 'delay' seconds for autoboot stop or autoboot delay string.
|
* Watch for 'delay' seconds for autoboot stop or autoboot delay string.
|
||||||
* returns: 0 - no key string, allow autoboot
|
* returns: 0 - no key string, allow autoboot 1 - got key string, abort
|
||||||
* 1 - got key string, abort
|
|
||||||
*/
|
*/
|
||||||
#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
|
#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
|
||||||
# if defined(CONFIG_AUTOBOOT_KEYED)
|
# if defined(CONFIG_AUTOBOOT_KEYED)
|
||||||
|
@ -266,6 +265,26 @@ int abortboot(int bootdelay)
|
||||||
# endif /* CONFIG_AUTOBOOT_KEYED */
|
# endif /* CONFIG_AUTOBOOT_KEYED */
|
||||||
#endif /* CONFIG_BOOTDELAY >= 0 */
|
#endif /* CONFIG_BOOTDELAY >= 0 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return 0 on success, or != 0 on error.
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
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)
|
void main_loop (void)
|
||||||
|
@ -332,12 +351,7 @@ void main_loop (void)
|
||||||
int prev = disable_ctrlc(1); /* disable Control C checking */
|
int prev = disable_ctrlc(1); /* disable Control C checking */
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifndef CONFIG_SYS_HUSH_PARSER
|
run_command2(p, 0);
|
||||||
run_command (p, 0);
|
|
||||||
# else
|
|
||||||
parse_string_outer(p, FLAG_PARSE_SEMICOLON |
|
|
||||||
FLAG_EXIT_FROM_LOOP);
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# ifdef CONFIG_AUTOBOOT_KEYED
|
# ifdef CONFIG_AUTOBOOT_KEYED
|
||||||
disable_ctrlc(prev); /* restore Control C checking */
|
disable_ctrlc(prev); /* restore Control C checking */
|
||||||
|
@ -382,12 +396,7 @@ void main_loop (void)
|
||||||
int prev = disable_ctrlc(1); /* disable Control C checking */
|
int prev = disable_ctrlc(1); /* disable Control C checking */
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifndef CONFIG_SYS_HUSH_PARSER
|
run_command2(s, 0);
|
||||||
run_command (s, 0);
|
|
||||||
# else
|
|
||||||
parse_string_outer(s, FLAG_PARSE_SEMICOLON |
|
|
||||||
FLAG_EXIT_FROM_LOOP);
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# ifdef CONFIG_AUTOBOOT_KEYED
|
# ifdef CONFIG_AUTOBOOT_KEYED
|
||||||
disable_ctrlc(prev); /* restore Control C checking */
|
disable_ctrlc(prev); /* restore Control C checking */
|
||||||
|
@ -397,14 +406,8 @@ void main_loop (void)
|
||||||
# ifdef CONFIG_MENUKEY
|
# ifdef CONFIG_MENUKEY
|
||||||
if (menukey == CONFIG_MENUKEY) {
|
if (menukey == CONFIG_MENUKEY) {
|
||||||
s = getenv("menucmd");
|
s = getenv("menucmd");
|
||||||
if (s) {
|
if (s)
|
||||||
# ifndef CONFIG_SYS_HUSH_PARSER
|
run_command2(s, 0);
|
||||||
run_command(s, 0);
|
|
||||||
# else
|
|
||||||
parse_string_outer(s, FLAG_PARSE_SEMICOLON |
|
|
||||||
FLAG_EXIT_FROM_LOOP);
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_MENUKEY */
|
#endif /* CONFIG_MENUKEY */
|
||||||
#endif /* CONFIG_BOOTDELAY */
|
#endif /* CONFIG_BOOTDELAY */
|
||||||
|
@ -1403,14 +1406,9 @@ int do_run (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
|
||||||
printf ("## Error: \"%s\" not defined\n", argv[i]);
|
printf ("## Error: \"%s\" not defined\n", argv[i]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#ifndef CONFIG_SYS_HUSH_PARSER
|
|
||||||
if (run_command (arg, flag) == -1)
|
if (run_command2(arg, flag) != 0)
|
||||||
return 1;
|
return 1;
|
||||||
#else
|
|
||||||
if (parse_string_outer(arg,
|
|
||||||
FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP) != 0)
|
|
||||||
return 1;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#define FLAG_REPARSING (1 << 2) /* >=2nd pass */
|
#define FLAG_REPARSING (1 << 2) /* >=2nd pass */
|
||||||
|
|
||||||
extern int u_boot_hush_start(void);
|
extern int u_boot_hush_start(void);
|
||||||
extern int parse_string_outer(char *, int);
|
extern int parse_string_outer(const char *, int);
|
||||||
extern int parse_file_outer(void);
|
extern int parse_file_outer(void);
|
||||||
|
|
||||||
int set_local_var(const char *s, int flg_export);
|
int set_local_var(const char *s, int flg_export);
|
||||||
|
|
Loading…
Add table
Reference in a new issue