diff options
author | Eric Andersen <andersen@codepoet.org> | 2001-02-16 20:09:17 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2001-02-16 20:09:17 +0000 |
commit | 6faae7deb4b88dccffb7dbbf267315cb7bbc0af9 (patch) | |
tree | 550531e0e4027c69a6cca27fde31574c75e26104 /shell | |
parent | 361ee514c636b371a50554ab73a3bfd54a49804d (diff) | |
download | busybox-w32-6faae7deb4b88dccffb7dbbf267315cb7bbc0af9.tar.gz busybox-w32-6faae7deb4b88dccffb7dbbf267315cb7bbc0af9.tar.bz2 busybox-w32-6faae7deb4b88dccffb7dbbf267315cb7bbc0af9.zip |
Commit Vladimir's latest cmdedit. I modified it slightly to ensure
parse_prompt() would be called before cmdedit_init(), since cmdedit_init()
calls cmdedit_setwidth() which uses cmdedit_prmt_len, which is set by
parse_prompt(). Also, added a mod, so very narrow terminals should now wrap
properly... This is working very nicely for me -- Vladimir has done some
very good work.
Diffstat (limited to 'shell')
-rw-r--r-- | shell/cmdedit.c | 13 | ||||
-rw-r--r-- | shell/lash.c | 3 |
2 files changed, 8 insertions, 8 deletions
diff --git a/shell/cmdedit.c b/shell/cmdedit.c index 6a53c12f6..6fd80fd21 100644 --- a/shell/cmdedit.c +++ b/shell/cmdedit.c | |||
@@ -30,7 +30,7 @@ | |||
30 | */ | 30 | */ |
31 | 31 | ||
32 | 32 | ||
33 | #define TEST | 33 | //#define TEST |
34 | 34 | ||
35 | 35 | ||
36 | #ifndef TEST | 36 | #ifndef TEST |
@@ -555,6 +555,9 @@ static void clean_up_and_die(int sig) | |||
555 | static void cmdedit_setwidth(int w, int redraw_flg) | 555 | static void cmdedit_setwidth(int w, int redraw_flg) |
556 | { | 556 | { |
557 | cmdedit_termw = cmdedit_prmt_len + 2; | 557 | cmdedit_termw = cmdedit_prmt_len + 2; |
558 | if (w <= cmdedit_termw) { | ||
559 | cmdedit_termw = cmdedit_termw % w; | ||
560 | } | ||
558 | if (w > cmdedit_termw) { | 561 | if (w > cmdedit_termw) { |
559 | 562 | ||
560 | cmdedit_termw = w; | 563 | cmdedit_termw = w; |
@@ -567,10 +570,7 @@ static void cmdedit_setwidth(int w, int redraw_flg) | |||
567 | redraw((new_y >= cmdedit_y ? new_y : cmdedit_y), len - cursor); | 570 | redraw((new_y >= cmdedit_y ? new_y : cmdedit_y), len - cursor); |
568 | fflush(stdout); | 571 | fflush(stdout); |
569 | } | 572 | } |
570 | } else { | 573 | } |
571 | error_msg("\n*** Error: minimum screen width is %d", | ||
572 | cmdedit_termw); | ||
573 | } | ||
574 | } | 574 | } |
575 | 575 | ||
576 | extern void cmdedit_init(void) | 576 | extern void cmdedit_init(void) |
@@ -1234,9 +1234,10 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ]) | |||
1234 | setTermSettings(inputFd, (void *) &new_settings); | 1234 | setTermSettings(inputFd, (void *) &new_settings); |
1235 | handlers_sets |= SET_RESET_TERM; | 1235 | handlers_sets |= SET_RESET_TERM; |
1236 | 1236 | ||
1237 | cmdedit_init(); | ||
1238 | /* Print out the command prompt */ | 1237 | /* Print out the command prompt */ |
1239 | parse_prompt(prompt); | 1238 | parse_prompt(prompt); |
1239 | /* Now initialize things */ | ||
1240 | cmdedit_init(); | ||
1240 | 1241 | ||
1241 | while (1) { | 1242 | while (1) { |
1242 | 1243 | ||
diff --git a/shell/lash.c b/shell/lash.c index 9519538dc..76ef16a55 100644 --- a/shell/lash.c +++ b/shell/lash.c | |||
@@ -854,10 +854,9 @@ static int get_command(FILE * source, char *command) | |||
854 | ** atexit() handlers and other unwanted stuff to our | 854 | ** atexit() handlers and other unwanted stuff to our |
855 | ** child processes (rob@sysgo.de) | 855 | ** child processes (rob@sysgo.de) |
856 | */ | 856 | */ |
857 | cmdedit_init(); | ||
858 | cmdedit_read_input(prompt_str, command); | 857 | cmdedit_read_input(prompt_str, command); |
859 | free(prompt_str); | ||
860 | cmdedit_terminate(); | 858 | cmdedit_terminate(); |
859 | free(prompt_str); | ||
861 | return 0; | 860 | return 0; |
862 | #else | 861 | #else |
863 | fputs(prompt_str, stdout); | 862 | fputs(prompt_str, stdout); |