diff options
author | wdenk <wdenk> | 2003-01-11 09:48:40 +0000 |
---|---|---|
committer | wdenk <wdenk> | 2003-01-11 09:48:40 +0000 |
commit | d0fb80c3021e15853895e9ae45ab9368d0fb52fa (patch) | |
tree | a4e65529732e8058b15a0cef175f65312ec3eedd /common/hush.c | |
parent | a25f862ba8b9d8440973d0204c19fec859f953f3 (diff) |
* Restrict baudrate settings on LWMON to higher speeds
when watchdog is on
* Update baudrate in bd_info when it gets changed
* Add watchdog trigger points while waiting for serial port
(so far only 8xx -- needed on LWMON with 100ms watchdog)
* Improve command line tool to access the U-Boot's environment
(figuration of the utility, using a config file)
Diffstat (limited to 'common/hush.c')
-rw-r--r-- | common/hush.c | 52 |
1 files changed, 34 insertions, 18 deletions
diff --git a/common/hush.c b/common/hush.c index 925474332b..fcc3559235 100644 --- a/common/hush.c +++ b/common/hush.c @@ -117,14 +117,15 @@ /* #include <dmalloc.h> */ /* #define DEBUG_SHELL */ -#ifdef BB_VER +#if 1 #include "busybox.h" #include "cmdedit.h" #else #define applet_name "hush" #include "standalone.h" #define hush_main main -#undef BB_FEATURE_SH_FANCY_PROMPT +#undef CONFIG_FEATURE_SH_FANCY_PROMPT +#define BB_BANNER #endif #endif #define SPECIAL_VAR_SYMBOL 03 @@ -430,7 +431,7 @@ static void setup_string_in_str(struct in_str *i, const char *s); /* close_me manipulations: */ static void mark_open(int fd); static void mark_closed(int fd); -static void close_all(); +static void close_all(void); #endif /* "run" the final data structures: */ static char *indenter(int i); @@ -902,7 +903,7 @@ static void b_reset(o_string *o) static void b_free(o_string *o) { b_reset(o); - if (o->data != NULL) free(o->data); + free(o->data); o->data = NULL; o->maxlen = 0; } @@ -958,7 +959,7 @@ static int static_peek(struct in_str *i) #ifndef __U_BOOT__ static inline void cmdedit_set_initial_prompt(void) { -#ifndef BB_FEATURE_SH_FANCY_PROMPT +#ifndef CONFIG_FEATURE_SH_FANCY_PROMPT PS1 = NULL; #else PS1 = getenv("PS1"); @@ -970,11 +971,10 @@ static inline void cmdedit_set_initial_prompt(void) static inline void setup_prompt_string(int promptmode, char **prompt_str) { debug_printf("setup_prompt_string %d ",promptmode); -#ifndef BB_FEATURE_SH_FANCY_PROMPT +#ifndef CONFIG_FEATURE_SH_FANCY_PROMPT /* Set up the prompt */ if (promptmode == 1) { - if (PS1) - free(PS1); + free(PS1); PS1=xmalloc(strlen(cwd)+4); sprintf(PS1, "%s %s", cwd, ( geteuid() != 0 ) ? "$ ":"# "); *prompt_str = PS1; @@ -995,7 +995,7 @@ static void get_user_input(struct in_str *i) static char the_command[BUFSIZ]; setup_prompt_string(i->promptmode, &prompt_str); -#ifdef BB_FEATURE_COMMAND_EDITING +#ifdef CONFIG_FEATURE_COMMAND_EDITING /* ** enable command line editing only while a command line ** is actually being read; otherwise, we'll end up bequeathing @@ -1176,7 +1176,7 @@ static void mark_closed(int fd) free(tmp); } -static void close_all() +static void close_all(void) { struct close_me *c; for (c=close_me_head; c; c=c->next) { @@ -1290,18 +1290,18 @@ static void pseudo_exec(struct child_prog *child) * really dislike relying on /proc for things. We could exec ourself * from global_argv[0], but if we are in a chroot, we may not be able * to find ourself... */ -#ifdef BB_FEATURE_SH_STANDALONE_SHELL +#ifdef CONFIG_FEATURE_SH_STANDALONE_SHELL { int argc_l; char** argv_l=child->argv; char *name = child->argv[0]; -#ifdef BB_FEATURE_SH_APPLETS_ALWAYS_WIN +#ifdef CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN /* Following discussions from November 2000 on the busybox mailing * list, the default configuration, (without * get_last_path_component()) lets the user force use of an * external command by specifying the full (with slashes) filename. - * If you enable BB_FEATURE_SH_APPLETS_ALWAYS_WIN, then applets + * If you enable CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN then applets * _aways_ override external commands, so if you want to run * /bin/cat, it will use BusyBox cat even if /bin/cat exists on the * filesystem and is _not_ busybox. Some systems may want this, @@ -1524,13 +1524,26 @@ static int run_pipe_real(struct pipe *pi) struct child_prog *child; struct built_in_command *x; char *p; +# if __GNUC__ + /* Avoid longjmp clobbering */ + (void) &i; + (void) &nextin; + (void) &nextout; + (void) &child; +# endif #else int nextin; int flag = do_repeat ? CMD_FLAG_REPEAT : 0; struct child_prog *child; cmd_tbl_t *cmdtp; char *p; -#endif +# if __GNUC__ + /* Avoid longjmp clobbering */ + (void) &i; + (void) &nextin; + (void) &child; +# endif +#endif /* __U_BOOT__ */ nextin = 0; #ifndef __U_BOOT__ @@ -3194,7 +3207,7 @@ static void *xrealloc(void *ptr, size_t size) /* Make sure we have a controlling tty. If we get started under a job * aware app (like bash for example), make sure we are now in charge so * we don't fight over who gets the foreground */ -static void setup_job_control() +static void setup_job_control(void) { static pid_t shell_pgrp; /* Loop until we are in the foreground. */ @@ -3243,7 +3256,7 @@ int hush_main(int argc, char **argv) /* Initialize some more globals to non-zero values */ set_cwd(); -#ifdef BB_FEATURE_COMMAND_EDITING +#ifdef CONFIG_FEATURE_COMMAND_EDITING cmdedit_set_initial_prompt(); #else PS1 = NULL; @@ -3312,7 +3325,10 @@ int hush_main(int argc, char **argv) debug_printf("\ninteractive=%d\n", interactive); if (interactive) { /* Looks like they want an interactive shell */ - fprintf(stdout, "\nhush -- the humble shell v0.01 (testing)\n\n"); +#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET + printf( "\n\n" BB_BANNER " hush - the humble shell v0.01 (testing)\n"); + printf( "Enter 'help' for a list of built-in commands.\n\n"); +#endif setup_job_control(); } @@ -3327,7 +3343,7 @@ int hush_main(int argc, char **argv) input = xfopen(argv[optind], "r"); opt = parse_file_outer(input); -#ifdef BB_FEATURE_CLEAN_UP +#ifdef CONFIG_FEATURE_CLEAN_UP fclose(input); if (cwd && cwd != unknown) free((char*)cwd); |