cmdedit is not a 'command' editing anymore, it's just editing (generic),
so rename stuff accordingly.
This commit is contained in:
parent
253ce00296
commit
38f6319421
@ -583,10 +583,10 @@ extern unsigned long long bb_makedev(unsigned int major, unsigned int minor);
|
||||
#endif
|
||||
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
/* It's NOT just ENABLEd or disabled. It's a number: */
|
||||
#ifdef CONFIG_FEATURE_COMMAND_HISTORY
|
||||
#define MAX_HISTORY (CONFIG_FEATURE_COMMAND_HISTORY + 0)
|
||||
#ifdef CONFIG_FEATURE_EDITING_HISTORY
|
||||
#define MAX_HISTORY (CONFIG_FEATURE_EDITING_HISTORY + 0)
|
||||
#else
|
||||
#define MAX_HISTORY 0
|
||||
#endif
|
||||
@ -596,16 +596,16 @@ struct line_input_t {
|
||||
#if MAX_HISTORY
|
||||
int cnt_history;
|
||||
int cur_history;
|
||||
USE_FEATURE_COMMAND_SAVEHISTORY(const char *hist_file;)
|
||||
USE_FEATURE_EDITING_SAVEHISTORY(const char *hist_file;)
|
||||
char *history[MAX_HISTORY + 1];
|
||||
#endif
|
||||
};
|
||||
enum {
|
||||
DO_HISTORY = 1 * (MAX_HISTORY > 0),
|
||||
SAVE_HISTORY = 2 * (MAX_HISTORY > 0) * ENABLE_FEATURE_COMMAND_SAVEHISTORY,
|
||||
TAB_COMPLETION = 4 * ENABLE_FEATURE_COMMAND_TAB_COMPLETION,
|
||||
USERNAME_COMPLETION = 8 * ENABLE_FEATURE_COMMAND_USERNAME_COMPLETION,
|
||||
VI_MODE = 0x10 * ENABLE_FEATURE_COMMAND_EDITING_VI,
|
||||
SAVE_HISTORY = 2 * (MAX_HISTORY > 0) * ENABLE_FEATURE_EDITING_SAVEHISTORY,
|
||||
TAB_COMPLETION = 4 * ENABLE_FEATURE_TAB_COMPLETION,
|
||||
USERNAME_COMPLETION = 8 * ENABLE_FEATURE_USERNAME_COMPLETION,
|
||||
VI_MODE = 0x10 * ENABLE_FEATURE_EDITING_VI,
|
||||
WITH_PATH_LOOKUP = 0x20,
|
||||
FOR_SHELL = DO_HISTORY | SAVE_HISTORY | TAB_COMPLETION | USERNAME_COMPLETION,
|
||||
};
|
||||
|
@ -26,4 +26,63 @@ config MD5_SIZE_VS_SPEED
|
||||
2 3.0 5088
|
||||
3 (smallest) 5.1 4912
|
||||
|
||||
config FEATURE_EDITING
|
||||
bool "Command line editing"
|
||||
default n
|
||||
help
|
||||
Enable command editing (mainly for shell).
|
||||
|
||||
config FEATURE_EDITING_FANCY_KEYS
|
||||
bool "Additional editing keys"
|
||||
default n
|
||||
depends on FEATURE_EDITING
|
||||
help
|
||||
Enable additonal editing keys (Ctrl-E, Ctrl-U etc).
|
||||
Arrow keys, Home/End/Delete and Ctrl-W work even without this option.
|
||||
|
||||
config FEATURE_EDITING_VI
|
||||
bool "vi-style line editing commands"
|
||||
default n
|
||||
depends on FEATURE_EDITING
|
||||
help
|
||||
Enable vi-style line editing. In shells, this mode can be
|
||||
turned on and off with "set -o vi" and "set +o vi".
|
||||
|
||||
config FEATURE_EDITING_HISTORY
|
||||
int "History size"
|
||||
range 0 99999
|
||||
default 15
|
||||
depends on FEATURE_EDITING
|
||||
help
|
||||
Specify command history size.
|
||||
|
||||
config FEATURE_EDITING_SAVEHISTORY
|
||||
bool "History saving"
|
||||
default n
|
||||
depends on ASH && FEATURE_EDITING
|
||||
help
|
||||
Enable history saving in ash shell.
|
||||
|
||||
config FEATURE_TAB_COMPLETION
|
||||
bool "Tab completion"
|
||||
default n
|
||||
depends on FEATURE_EDITING
|
||||
help
|
||||
Enable tab completion.
|
||||
|
||||
config FEATURE_USERNAME_COMPLETION
|
||||
bool "Username completion"
|
||||
default n
|
||||
depends on FEATURE_TAB_COMPLETION
|
||||
help
|
||||
Enable username completion.
|
||||
|
||||
config FEATURE_EDITING_FANCY_PROMPT
|
||||
bool "Fancy shell prompts"
|
||||
default n
|
||||
depends on FEATURE_EDITING
|
||||
help
|
||||
Setting this option allows for prompts to use things like \w and
|
||||
\$ and escape codes.
|
||||
|
||||
endmenu
|
||||
|
@ -46,6 +46,7 @@ lib-y += inode_hash.o
|
||||
lib-y += isdirectory.o
|
||||
lib-y += kernel_version.o
|
||||
lib-y += last_char_is.o
|
||||
lib-y += lineedit.o
|
||||
lib-y += llist.o
|
||||
lib-y += login.o
|
||||
lib-y += make_directory.o
|
||||
|
@ -631,14 +631,14 @@ CONFIG_FEATURE_SH_IS_NONE=y
|
||||
# CONFIG_MSH is not set
|
||||
# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
|
||||
# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
|
||||
# CONFIG_FEATURE_COMMAND_EDITING is not set
|
||||
CONFIG_FEATURE_EDITING=y
|
||||
# CONFIG_FEATURE_EDITING_FANCY_KEYS is not set
|
||||
# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
|
||||
CONFIG_FEATURE_COMMAND_HISTORY=
|
||||
# CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set
|
||||
# CONFIG_FEATURE_COMMAND_TAB_COMPLETION is not set
|
||||
# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
|
||||
# CONFIG_FEATURE_SH_FANCY_PROMPT is not set
|
||||
# CONFIG_FEATURE_EDITING_VI is not set
|
||||
CONFIG_FEATURE_EDITING_HISTORY=15
|
||||
# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
|
||||
# CONFIG_FEATURE_TAB_COMPLETION is not set
|
||||
# CONFIG_FEATURE_USERNAME_COMPLETION is not set
|
||||
# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
|
||||
|
||||
#
|
||||
# System Logging Utilities
|
||||
|
@ -240,64 +240,4 @@ config FEATURE_SH_STANDALONE_SHELL
|
||||
that exact location with that exact name, this option will not work at
|
||||
all.
|
||||
|
||||
config FEATURE_COMMAND_EDITING
|
||||
bool "Command line editing"
|
||||
default n
|
||||
depends on MSH || LASH || HUSH || ASH
|
||||
help
|
||||
Enable command editing in shell.
|
||||
|
||||
config FEATURE_EDITING_FANCY_KEYS
|
||||
bool "Additional editing keys"
|
||||
default n
|
||||
depends on FEATURE_COMMAND_EDITING
|
||||
help
|
||||
Enable additonal editing keys (Ctrl-E, Ctrl-U etc).
|
||||
Arrow keys, Home/End/Delete and Ctrl-W work even without this option.
|
||||
|
||||
config FEATURE_COMMAND_EDITING_VI
|
||||
bool "vi-style line editing commands"
|
||||
default n
|
||||
depends on FEATURE_COMMAND_EDITING
|
||||
help
|
||||
Enable vi-style line editing in the shell. This mode can be
|
||||
turned on and off with "set -o vi" and "set +o vi".
|
||||
|
||||
config FEATURE_COMMAND_HISTORY
|
||||
int "History size"
|
||||
range 0 99999
|
||||
default 15
|
||||
depends on FEATURE_COMMAND_EDITING
|
||||
help
|
||||
Specify command history size in shell.
|
||||
|
||||
config FEATURE_COMMAND_SAVEHISTORY
|
||||
bool "History saving"
|
||||
default n
|
||||
depends on ASH && FEATURE_COMMAND_EDITING
|
||||
help
|
||||
Enable history saving in ash shell.
|
||||
|
||||
config FEATURE_COMMAND_TAB_COMPLETION
|
||||
bool "Tab completion"
|
||||
default n
|
||||
depends on FEATURE_COMMAND_EDITING
|
||||
help
|
||||
Enable tab completion in shell.
|
||||
|
||||
config FEATURE_COMMAND_USERNAME_COMPLETION
|
||||
bool "Username completion"
|
||||
default n
|
||||
depends on FEATURE_COMMAND_TAB_COMPLETION
|
||||
help
|
||||
Enable username completion in shell.
|
||||
|
||||
config FEATURE_SH_FANCY_PROMPT
|
||||
bool "Fancy shell prompts"
|
||||
default n
|
||||
depends on FEATURE_COMMAND_EDITING
|
||||
help
|
||||
Setting this option allows for prompts to use things like \w and
|
||||
\$ and also using escape codes.
|
||||
|
||||
endmenu
|
||||
|
@ -5,7 +5,6 @@
|
||||
# Licensed under the GPL v2, see the file LICENSE in this tarball.
|
||||
|
||||
lib-y:=
|
||||
lib-y += cmdedit.o
|
||||
lib-$(CONFIG_ASH) += ash.o
|
||||
lib-$(CONFIG_HUSH) += hush.o
|
||||
lib-$(CONFIG_LASH) += lash.o
|
||||
|
18
shell/ash.c
18
shell/ash.c
@ -1528,7 +1528,7 @@ static struct var varinit[] = {
|
||||
{0, VSTRFIXED | VTEXTFIXED | VUNSET, "LC_ALL\0", change_lc_all },
|
||||
{0, VSTRFIXED | VTEXTFIXED | VUNSET, "LC_CTYPE\0", change_lc_ctype },
|
||||
#endif
|
||||
#if ENABLE_FEATURE_COMMAND_SAVEHISTORY
|
||||
#if ENABLE_FEATURE_EDITING_SAVEHISTORY
|
||||
{0, VSTRFIXED | VTEXTFIXED | VUNSET, "HISTFILE\0", NULL },
|
||||
#endif
|
||||
};
|
||||
@ -1654,7 +1654,7 @@ static void initvar(void)
|
||||
/*
|
||||
* PS1 depends on uid
|
||||
*/
|
||||
#if defined(CONFIG_FEATURE_COMMAND_EDITING) && defined(CONFIG_FEATURE_SH_FANCY_PROMPT)
|
||||
#if ENABLE_FEATURE_EDITING && ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
vps1.text = "PS1=\\w \\$ ";
|
||||
#else
|
||||
if (!geteuid())
|
||||
@ -6040,7 +6040,7 @@ static char * pfgets(char *line, int len)
|
||||
}
|
||||
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
static line_input_t *line_input_state;
|
||||
//static SKIP_ASH_EXPAND_PRMT(const) char *cmdedit_prompt;
|
||||
static const char *cmdedit_prompt;
|
||||
@ -6060,7 +6060,7 @@ static void putprompt(const char *s)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING_VI
|
||||
#if ENABLE_FEATURE_EDITING_VI
|
||||
#define setvimode(on) do { \
|
||||
if (on) line_input_state->flags |= VI_MODE; \
|
||||
else line_input_state->flags &= ~VI_MODE; \
|
||||
@ -6077,11 +6077,11 @@ static int preadfd(void)
|
||||
parsenextc = buf;
|
||||
|
||||
retry:
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
if (!iflag || parsefile->fd)
|
||||
nr = safe_read(parsefile->fd, buf, BUFSIZ - 1);
|
||||
else {
|
||||
#if ENABLE_FEATURE_COMMAND_TAB_COMPLETION
|
||||
#if ENABLE_FEATURE_TAB_COMPLETION
|
||||
line_input_state->path_lookup = pathval();
|
||||
#endif
|
||||
nr = read_line_input(cmdedit_prompt, buf, BUFSIZ, line_input_state);
|
||||
@ -7916,7 +7916,7 @@ ash_main(int argc, char **argv)
|
||||
monitor(4, etext, profile_buf, sizeof profile_buf, 50);
|
||||
#endif
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
line_input_state = new_line_input_t(FOR_SHELL | WITH_PATH_LOOKUP);
|
||||
#endif
|
||||
state = 0;
|
||||
@ -7960,7 +7960,7 @@ ash_main(int argc, char **argv)
|
||||
init();
|
||||
setstackmark(&smark);
|
||||
procargs(argc, argv);
|
||||
#if ENABLE_FEATURE_COMMAND_SAVEHISTORY
|
||||
#if ENABLE_FEATURE_EDITING_SAVEHISTORY
|
||||
if (iflag) {
|
||||
const char *hp = lookupvar("HISTFILE");
|
||||
|
||||
@ -8001,7 +8001,7 @@ state3:
|
||||
evalstring(minusc, 0);
|
||||
|
||||
if (sflag || minusc == NULL) {
|
||||
#if ENABLE_FEATURE_COMMAND_SAVEHISTORY
|
||||
#if ENABLE_FEATURE_EDITING_SAVEHISTORY
|
||||
if ( iflag ) {
|
||||
const char *hp = lookupvar("HISTFILE");
|
||||
|
||||
|
@ -38,9 +38,9 @@
|
||||
|
||||
#ifdef TEST
|
||||
|
||||
#define ENABLE_FEATURE_COMMAND_EDITING 0
|
||||
#define ENABLE_FEATURE_COMMAND_TAB_COMPLETION 0
|
||||
#define ENABLE_FEATURE_COMMAND_USERNAME_COMPLETION 0
|
||||
#define ENABLE_FEATURE_EDITING 0
|
||||
#define ENABLE_FEATURE_TAB_COMPLETION 0
|
||||
#define ENABLE_FEATURE_USERNAME_COMPLETION 0
|
||||
#define ENABLE_FEATURE_NONPRINTABLE_INVERSE_PUT 0
|
||||
#define ENABLE_FEATURE_CLEAN_UP 0
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
|
||||
|
||||
/* Entire file (except TESTing part) sits inside this #if */
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
|
||||
#if ENABLE_LOCALE_SUPPORT
|
||||
#define Isprint(c) isprint(c)
|
||||
@ -57,7 +57,7 @@
|
||||
#endif
|
||||
|
||||
#define ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR \
|
||||
(ENABLE_FEATURE_COMMAND_USERNAME_COMPLETION || ENABLE_FEATURE_SH_FANCY_PROMPT)
|
||||
(ENABLE_FEATURE_USERNAME_COMPLETION || ENABLE_FEATURE_EDITING_FANCY_PROMPT)
|
||||
|
||||
|
||||
static line_input_t *state;
|
||||
@ -75,7 +75,7 @@ static unsigned command_len;
|
||||
static char *command_ps;
|
||||
static const char *cmdedit_prompt;
|
||||
|
||||
#if ENABLE_FEATURE_SH_FANCY_PROMPT
|
||||
#if ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
static char *hostname_buf;
|
||||
static int num_ok_lines = 1;
|
||||
#endif
|
||||
@ -85,7 +85,7 @@ static char *user_buf = "";
|
||||
static char *home_pwd_buf = "";
|
||||
#endif
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_TAB_COMPLETION
|
||||
#if ENABLE_FEATURE_TAB_COMPLETION
|
||||
static int my_uid;
|
||||
static int my_gid;
|
||||
#endif
|
||||
@ -208,7 +208,7 @@ static void redraw(int y, int back_cursor)
|
||||
input_backward(back_cursor);
|
||||
}
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING_VI
|
||||
#if ENABLE_FEATURE_EDITING_VI
|
||||
#define DELBUFSIZ 128
|
||||
static char *delbuf; /* a (malloced) place to store deleted characters */
|
||||
static char *delp;
|
||||
@ -224,7 +224,7 @@ static void input_delete(int save)
|
||||
if (j == command_len)
|
||||
return;
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING_VI
|
||||
#if ENABLE_FEATURE_EDITING_VI
|
||||
if (save) {
|
||||
if (newdelflag) {
|
||||
if (!delbuf)
|
||||
@ -245,7 +245,7 @@ static void input_delete(int save)
|
||||
input_backward(cursor - j); /* back to old pos cursor */
|
||||
}
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING_VI
|
||||
#if ENABLE_FEATURE_EDITING_VI
|
||||
static void put(void)
|
||||
{
|
||||
int ocursor;
|
||||
@ -280,7 +280,7 @@ static void input_forward(void)
|
||||
}
|
||||
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_TAB_COMPLETION
|
||||
#if ENABLE_FEATURE_TAB_COMPLETION
|
||||
|
||||
static char **matches;
|
||||
static unsigned num_matches;
|
||||
@ -305,7 +305,7 @@ static void add_match(char *matched)
|
||||
num_matches++;
|
||||
}
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_USERNAME_COMPLETION
|
||||
#if ENABLE_FEATURE_USERNAME_COMPLETION
|
||||
static void username_tab_completion(char *ud, char *with_shash_flg)
|
||||
{
|
||||
struct passwd *entry;
|
||||
@ -431,7 +431,7 @@ static void exe_n_cwd_tab_completion(char *command, int type)
|
||||
} else {
|
||||
/* dirbuf = ".../.../.../" */
|
||||
safe_strncpy(dirbuf, command, (pfind - command) + 2);
|
||||
#if ENABLE_FEATURE_COMMAND_USERNAME_COMPLETION
|
||||
#if ENABLE_FEATURE_USERNAME_COMPLETION
|
||||
if (dirbuf[0] == '~') /* ~/... or ~user/... */
|
||||
username_tab_completion(dirbuf, dirbuf);
|
||||
#endif
|
||||
@ -749,7 +749,7 @@ static void input_tab(int *lastWasTab)
|
||||
/* Free up any memory already allocated */
|
||||
free_tab_completion_data();
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_USERNAME_COMPLETION
|
||||
#if ENABLE_FEATURE_USERNAME_COMPLETION
|
||||
/* If the word starts with `~' and there is no slash in the word,
|
||||
* then try completing this word as a username. */
|
||||
if (state->flags & USERNAME_COMPLETION)
|
||||
@ -874,7 +874,7 @@ static int get_next_history(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_SAVEHISTORY
|
||||
#if ENABLE_FEATURE_EDITING_SAVEHISTORY
|
||||
/* state->flags is already checked to be nonzero */
|
||||
void load_history(const char *fromfile)
|
||||
{
|
||||
@ -952,7 +952,7 @@ static void remember_in_history(const char *str)
|
||||
state->cnt_history = i;
|
||||
if (state->flags & SAVE_HISTORY)
|
||||
save_history(state->hist_file);
|
||||
USE_FEATURE_SH_FANCY_PROMPT(num_ok_lines++;)
|
||||
USE_FEATURE_EDITING_FANCY_PROMPT(num_ok_lines++;)
|
||||
}
|
||||
|
||||
#else /* MAX_HISTORY == 0 */
|
||||
@ -977,7 +977,7 @@ static void remember_in_history(const char *str)
|
||||
* vi mode implemented 2005 by Paul Fox <pgf@foxharp.boston.ma.us>
|
||||
*/
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING_VI
|
||||
#if ENABLE_FEATURE_EDITING_VI
|
||||
static void
|
||||
vi_Word_motion(char *command, int eat)
|
||||
{
|
||||
@ -1076,7 +1076,7 @@ vi_back_motion(char *command)
|
||||
* read_line_input and its helpers
|
||||
*/
|
||||
|
||||
#if !ENABLE_FEATURE_SH_FANCY_PROMPT
|
||||
#if !ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
static void parse_prompt(const char *prmt_ptr)
|
||||
{
|
||||
cmdedit_prompt = prmt_ptr;
|
||||
@ -1246,7 +1246,7 @@ static void win_changed(int nsig)
|
||||
|
||||
/* leave out the "vi-mode"-only case labels if vi editing isn't
|
||||
* configured. */
|
||||
#define vi_case(caselabel) USE_FEATURE_COMMAND_EDITING(case caselabel)
|
||||
#define vi_case(caselabel) USE_FEATURE_EDITING(case caselabel)
|
||||
|
||||
/* convert uppercase ascii to equivalent control char, for readability */
|
||||
#undef CTRL
|
||||
@ -1260,7 +1260,7 @@ int read_line_input(const char* prompt, char* command, int maxsize, line_input_t
|
||||
unsigned int ic;
|
||||
unsigned char c;
|
||||
smallint break_out = 0;
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING_VI
|
||||
#if ENABLE_FEATURE_EDITING_VI
|
||||
smallint vi_cmdmode = 0;
|
||||
smalluint prevc;
|
||||
#endif
|
||||
@ -1309,7 +1309,7 @@ int read_line_input(const char* prompt, char* command, int maxsize, line_input_t
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if ENABLE_FEATURE_COMMAND_TAB_COMPLETION
|
||||
#if ENABLE_FEATURE_TAB_COMPLETION
|
||||
my_uid = getuid();
|
||||
my_gid = getgid();
|
||||
#endif
|
||||
@ -1326,7 +1326,7 @@ int read_line_input(const char* prompt, char* command, int maxsize, line_input_t
|
||||
|
||||
ic = c;
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING_VI
|
||||
#if ENABLE_FEATURE_EDITING_VI
|
||||
newdelflag = 1;
|
||||
if (vi_cmdmode)
|
||||
ic |= vbit;
|
||||
@ -1453,7 +1453,7 @@ int read_line_input(const char* prompt, char* command, int maxsize, line_input_t
|
||||
input_backspace();
|
||||
break;
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING_VI
|
||||
#if ENABLE_FEATURE_EDITING_VI
|
||||
case 'i'|vbit:
|
||||
vi_cmdmode = 0;
|
||||
break;
|
||||
@ -1584,7 +1584,7 @@ int read_line_input(const char* prompt, char* command, int maxsize, line_input_t
|
||||
|
||||
case '\x1b': /* ESC */
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING_VI
|
||||
#if ENABLE_FEATURE_EDITING_VI
|
||||
if (state->flags & VI_MODE) {
|
||||
/* ESC: insert mode --> command mode */
|
||||
vi_cmdmode = 1;
|
||||
@ -1612,7 +1612,7 @@ int read_line_input(const char* prompt, char* command, int maxsize, line_input_t
|
||||
}
|
||||
|
||||
switch (c) {
|
||||
#if ENABLE_FEATURE_COMMAND_TAB_COMPLETION
|
||||
#if ENABLE_FEATURE_TAB_COMPLETION
|
||||
case '\t': /* Alt-Tab */
|
||||
input_tab(&lastWasTab);
|
||||
break;
|
||||
@ -1679,7 +1679,7 @@ int read_line_input(const char* prompt, char* command, int maxsize, line_input_t
|
||||
} else
|
||||
#endif
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING_VI
|
||||
#if ENABLE_FEATURE_EDITING_VI
|
||||
if (vi_cmdmode) /* Don't self-insert */
|
||||
break;
|
||||
#endif
|
||||
@ -1722,11 +1722,11 @@ int read_line_input(const char* prompt, char* command, int maxsize, line_input_t
|
||||
command[command_len] = '\0';
|
||||
}
|
||||
|
||||
#if ENABLE_FEATURE_CLEAN_UP && ENABLE_FEATURE_COMMAND_TAB_COMPLETION
|
||||
#if ENABLE_FEATURE_CLEAN_UP && ENABLE_FEATURE_TAB_COMPLETION
|
||||
free_tab_completion_data();
|
||||
#endif
|
||||
|
||||
#if ENABLE_FEATURE_SH_FANCY_PROMPT
|
||||
#if ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
free((char*)cmdedit_prompt);
|
||||
#endif
|
||||
/* restore initial_settings */
|
||||
@ -1772,7 +1772,7 @@ int main(int argc, char **argv)
|
||||
{
|
||||
char buff[BUFSIZ];
|
||||
char *prompt =
|
||||
#if ENABLE_FEATURE_SH_FANCY_PROMPT
|
||||
#if ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
"\\[\\033[32;1m\\]\\u@\\[\\x1b[33;1m\\]\\h:"
|
||||
"\\[\\033[34;1m\\]\\w\\[\\033[35;1m\\] "
|
||||
"\\!\\[\\e[36;1m\\]\\$ \\[\\E[0m\\]";
|
||||
|
19
shell/hush.c
19
shell/hush.c
@ -854,7 +854,7 @@ static int static_peek(struct in_str *i)
|
||||
|
||||
static void cmdedit_set_initial_prompt(void)
|
||||
{
|
||||
#ifndef CONFIG_FEATURE_SH_FANCY_PROMPT
|
||||
#if !ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
PS1 = NULL;
|
||||
#else
|
||||
PS1 = getenv("PS1");
|
||||
@ -866,7 +866,7 @@ static void cmdedit_set_initial_prompt(void)
|
||||
static void setup_prompt_string(int promptmode, char **prompt_str)
|
||||
{
|
||||
debug_printf("setup_prompt_string %d ",promptmode);
|
||||
#ifndef CONFIG_FEATURE_SH_FANCY_PROMPT
|
||||
#if !ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
/* Set up the prompt */
|
||||
if (promptmode == 1) {
|
||||
free(PS1);
|
||||
@ -882,7 +882,7 @@ static void setup_prompt_string(int promptmode, char **prompt_str)
|
||||
debug_printf("result %s\n",*prompt_str);
|
||||
}
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
static line_input_t *line_input_state;
|
||||
#endif
|
||||
|
||||
@ -892,7 +892,7 @@ static void get_user_input(struct in_str *i)
|
||||
static char the_command[BUFSIZ];
|
||||
|
||||
setup_prompt_string(i->promptmode, &prompt_str);
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
/*
|
||||
** enable command line editing only while a command line
|
||||
** is actually being read; otherwise, we'll end up bequeathing
|
||||
@ -1109,7 +1109,7 @@ 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 CONFIG_FEATURE_SH_STANDALONE_SHELL
|
||||
#if ENABLE_FEATURE_SH_STANDALONE_SHELL
|
||||
{
|
||||
int argc_l;
|
||||
char** argv_l=child->argv;
|
||||
@ -2650,7 +2650,7 @@ int hush_main(int argc, char **argv)
|
||||
FILE *input;
|
||||
char **e = environ;
|
||||
|
||||
#ifdef CONFIG_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
line_input_state = new_line_input_t(FOR_SHELL);
|
||||
#endif
|
||||
|
||||
@ -2672,7 +2672,8 @@ int hush_main(int argc, char **argv)
|
||||
|
||||
/* Initialize some more globals to non-zero values */
|
||||
set_cwd();
|
||||
if (ENABLE_FEATURE_COMMAND_EDITING) cmdedit_set_initial_prompt();
|
||||
if (ENABLE_FEATURE_EDITING)
|
||||
cmdedit_set_initial_prompt();
|
||||
else PS1 = NULL;
|
||||
PS2 = "> ";
|
||||
|
||||
@ -2738,7 +2739,7 @@ int hush_main(int argc, char **argv)
|
||||
debug_printf("\ninteractive=%d\n", interactive);
|
||||
if (interactive) {
|
||||
/* Looks like they want an interactive shell */
|
||||
#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET
|
||||
#if !ENABLE_FEATURE_SH_EXTRA_QUIET
|
||||
printf( "\n\n%s hush - the humble shell v0.01 (testing)\n",
|
||||
BB_BANNER);
|
||||
printf( "Enter 'help' for a list of built-in commands.\n\n");
|
||||
@ -2757,7 +2758,7 @@ int hush_main(int argc, char **argv)
|
||||
input = xfopen(argv[optind], "r");
|
||||
opt = parse_file_outer(input);
|
||||
|
||||
#ifdef CONFIG_FEATURE_CLEAN_UP
|
||||
#if ENABLE_FEATURE_CLEAN_UP
|
||||
fclose(input);
|
||||
if (cwd && cwd != bb_msg_unknown)
|
||||
free((char*)cwd);
|
||||
|
14
shell/lash.c
14
shell/lash.c
@ -365,7 +365,7 @@ static int builtin_export(struct child_prog *child)
|
||||
res = putenv(v);
|
||||
if (res)
|
||||
bb_perror_msg("export");
|
||||
#ifdef CONFIG_FEATURE_SH_FANCY_PROMPT
|
||||
#ifdef CONFIG_FEATURE_EDITING_FANCY_PROMPT
|
||||
if (strncmp(v, "PS1=", 4)==0)
|
||||
PS1 = getenv("PS1");
|
||||
#endif
|
||||
@ -613,7 +613,7 @@ static inline void restore_redirects(int squirrel[])
|
||||
|
||||
static inline void cmdedit_set_initial_prompt(void)
|
||||
{
|
||||
#ifndef CONFIG_FEATURE_SH_FANCY_PROMPT
|
||||
#if !ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
PS1 = NULL;
|
||||
#else
|
||||
PS1 = getenv("PS1");
|
||||
@ -624,7 +624,7 @@ static inline void cmdedit_set_initial_prompt(void)
|
||||
|
||||
static inline void setup_prompt_string(char **prompt_str)
|
||||
{
|
||||
#ifndef CONFIG_FEATURE_SH_FANCY_PROMPT
|
||||
#if !ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
/* Set up the prompt */
|
||||
if (shell_context == 0) {
|
||||
free(PS1);
|
||||
@ -639,7 +639,7 @@ static inline void setup_prompt_string(char **prompt_str)
|
||||
#endif
|
||||
}
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
static line_input_t *line_input_state;
|
||||
#endif
|
||||
|
||||
@ -661,7 +661,7 @@ static int get_command(FILE * source, char *command)
|
||||
if (source == stdin) {
|
||||
setup_prompt_string(&prompt_str);
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
/*
|
||||
** enable command line editing only while a command line
|
||||
** is actually being read; otherwise, we'll end up bequeathing
|
||||
@ -1507,7 +1507,7 @@ int lash_main(int argc_l, char **argv_l)
|
||||
argc = argc_l;
|
||||
argv = argv_l;
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
line_input_state = new_line_input_t(FOR_SHELL);
|
||||
#endif
|
||||
|
||||
@ -1572,7 +1572,7 @@ int lash_main(int argc_l, char **argv_l)
|
||||
|
||||
if (ENABLE_FEATURE_CLEAN_UP) atexit(free_memory);
|
||||
|
||||
if (ENABLE_FEATURE_COMMAND_EDITING) cmdedit_set_initial_prompt();
|
||||
if (ENABLE_FEATURE_EDITING) cmdedit_set_initial_prompt();
|
||||
else PS1 = NULL;
|
||||
|
||||
return (busy_loop(input));
|
||||
|
28
shell/msh.c
28
shell/msh.c
@ -58,7 +58,7 @@ int mshdbg_rc = 0;
|
||||
#endif /* MSHDEBUG */
|
||||
|
||||
|
||||
#ifdef CONFIG_FEATURE_SH_FANCY_PROMPT
|
||||
#if ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
# define DEFAULT_ROOT_PROMPT "\\u:\\w> "
|
||||
# define DEFAULT_USER_PROMPT "\\u:\\w$ "
|
||||
#else
|
||||
@ -776,7 +776,7 @@ void print_tree(struct op *head)
|
||||
#endif /* MSHDEBUG */
|
||||
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
static char *current_prompt;
|
||||
#endif
|
||||
|
||||
@ -786,7 +786,7 @@ static char *current_prompt;
|
||||
*/
|
||||
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
static line_input_t *line_input_state;
|
||||
#endif
|
||||
|
||||
@ -798,7 +798,7 @@ int msh_main(int argc, char **argv)
|
||||
char *name, **ap;
|
||||
int (*iof) (struct ioarg *);
|
||||
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
line_input_state = new_line_input_t(FOR_SHELL);
|
||||
#endif
|
||||
|
||||
@ -847,7 +847,7 @@ int msh_main(int argc, char **argv)
|
||||
#endif
|
||||
|
||||
prompt = lookup("PS1");
|
||||
#ifdef CONFIG_FEATURE_SH_FANCY_PROMPT
|
||||
#if ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
if (prompt->value == null)
|
||||
#endif
|
||||
setval(prompt, DEFAULT_USER_PROMPT);
|
||||
@ -856,7 +856,7 @@ int msh_main(int argc, char **argv)
|
||||
prompt->status &= ~EXPORT;
|
||||
}
|
||||
cprompt = lookup("PS2");
|
||||
#ifdef CONFIG_FEATURE_SH_FANCY_PROMPT
|
||||
#if ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
if (cprompt->value == null)
|
||||
#endif
|
||||
setval(cprompt, "> ");
|
||||
@ -929,7 +929,7 @@ int msh_main(int argc, char **argv)
|
||||
PUSHIO(afile, 0, iof);
|
||||
if (isatty(0) && isatty(1) && !cflag) {
|
||||
interactive++;
|
||||
#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET
|
||||
#if !ENABLE_FEATURE_SH_EXTRA_QUIET
|
||||
#ifdef MSHDEBUG
|
||||
printf("\n\n%s Built-in shell (msh with debug)\n", BB_BANNER);
|
||||
#else
|
||||
@ -971,7 +971,7 @@ int msh_main(int argc, char **argv)
|
||||
|
||||
for (;;) {
|
||||
if (interactive && e.iop <= iostack) {
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
current_prompt = prompt->value;
|
||||
#else
|
||||
prs(prompt->value);
|
||||
@ -2378,7 +2378,7 @@ static int yylex(int cf)
|
||||
startl = 1;
|
||||
if (multiline || cf & CONTIN) {
|
||||
if (interactive && e.iop <= iostack) {
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
current_prompt = cprompt->value;
|
||||
#else
|
||||
prs(cprompt->value);
|
||||
@ -2439,7 +2439,7 @@ static int collect(int c, int c1)
|
||||
return YYERRCODE;
|
||||
}
|
||||
if (interactive && c == '\n' && e.iop <= iostack) {
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
current_prompt = cprompt->value;
|
||||
#else
|
||||
prs(cprompt->value);
|
||||
@ -3289,7 +3289,7 @@ static int dohelp(struct op *t)
|
||||
col = 0;
|
||||
}
|
||||
}
|
||||
#ifdef CONFIG_FEATURE_SH_STANDALONE_SHELL
|
||||
#if ENABLE_FEATURE_SH_STANDALONE_SHELL
|
||||
{
|
||||
int i;
|
||||
const struct BB_applet *applet;
|
||||
@ -4673,7 +4673,7 @@ static int readc(void)
|
||||
return e.iop->prev = 0;
|
||||
}
|
||||
if (interactive && e.iop == iostack + 1) {
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
current_prompt = prompt->value;
|
||||
#else
|
||||
prs(prompt->value);
|
||||
@ -4905,7 +4905,7 @@ static int filechar(struct ioarg *ap)
|
||||
ap->afpos++;
|
||||
return *bp->bufp++ & 0177;
|
||||
}
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
if (interactive && isatty(ap->afile)) {
|
||||
static char mycommand[BUFSIZ];
|
||||
static int position = 0, size = 0;
|
||||
@ -5156,7 +5156,7 @@ static void readhere(char **name, char *s, int ec)
|
||||
e.iobase = e.iop;
|
||||
for (;;) {
|
||||
if (interactive && e.iop <= iostack) {
|
||||
#if ENABLE_FEATURE_COMMAND_EDITING
|
||||
#if ENABLE_FEATURE_EDITING
|
||||
current_prompt = cprompt->value;
|
||||
#else
|
||||
prs(cprompt->value);
|
||||
|
Loading…
Reference in New Issue
Block a user