summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmdedit.c13
-rw-r--r--lash.c3
-rw-r--r--sh.c3
-rw-r--r--shell/cmdedit.c13
-rw-r--r--shell/lash.c3
5 files changed, 17 insertions, 18 deletions
diff --git a/cmdedit.c b/cmdedit.c
index 6a53c12..6fd80fd 100644
--- a/cmdedit.c
+++ b/cmdedit.c
@@ -30,7 +30,7 @@
*/
-#define TEST
+//#define TEST
#ifndef TEST
@@ -555,6 +555,9 @@ static void clean_up_and_die(int sig)
static void cmdedit_setwidth(int w, int redraw_flg)
{
cmdedit_termw = cmdedit_prmt_len + 2;
+ if (w <= cmdedit_termw) {
+ cmdedit_termw = cmdedit_termw % w;
+ }
if (w > cmdedit_termw) {
cmdedit_termw = w;
@@ -567,10 +570,7 @@ static void cmdedit_setwidth(int w, int redraw_flg)
redraw((new_y >= cmdedit_y ? new_y : cmdedit_y), len - cursor);
fflush(stdout);
}
- } else {
- error_msg("\n*** Error: minimum screen width is %d",
- cmdedit_termw);
- }
+ }
}
extern void cmdedit_init(void)
@@ -1234,9 +1234,10 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
setTermSettings(inputFd, (void *) &new_settings);
handlers_sets |= SET_RESET_TERM;
- cmdedit_init();
/* Print out the command prompt */
parse_prompt(prompt);
+ /* Now initialize things */
+ cmdedit_init();
while (1) {
diff --git a/lash.c b/lash.c
index 9519538..76ef16a 100644
--- a/lash.c
+++ b/lash.c
@@ -854,10 +854,9 @@ static int get_command(FILE * source, char *command)
** atexit() handlers and other unwanted stuff to our
** child processes (rob@sysgo.de)
*/
- cmdedit_init();
cmdedit_read_input(prompt_str, command);
- free(prompt_str);
cmdedit_terminate();
+ free(prompt_str);
return 0;
#else
fputs(prompt_str, stdout);
diff --git a/sh.c b/sh.c
index 9519538..76ef16a 100644
--- a/sh.c
+++ b/sh.c
@@ -854,10 +854,9 @@ static int get_command(FILE * source, char *command)
** atexit() handlers and other unwanted stuff to our
** child processes (rob@sysgo.de)
*/
- cmdedit_init();
cmdedit_read_input(prompt_str, command);
- free(prompt_str);
cmdedit_terminate();
+ free(prompt_str);
return 0;
#else
fputs(prompt_str, stdout);
diff --git a/shell/cmdedit.c b/shell/cmdedit.c
index 6a53c12..6fd80fd 100644
--- a/shell/cmdedit.c
+++ b/shell/cmdedit.c
@@ -30,7 +30,7 @@
*/
-#define TEST
+//#define TEST
#ifndef TEST
@@ -555,6 +555,9 @@ static void clean_up_and_die(int sig)
static void cmdedit_setwidth(int w, int redraw_flg)
{
cmdedit_termw = cmdedit_prmt_len + 2;
+ if (w <= cmdedit_termw) {
+ cmdedit_termw = cmdedit_termw % w;
+ }
if (w > cmdedit_termw) {
cmdedit_termw = w;
@@ -567,10 +570,7 @@ static void cmdedit_setwidth(int w, int redraw_flg)
redraw((new_y >= cmdedit_y ? new_y : cmdedit_y), len - cursor);
fflush(stdout);
}
- } else {
- error_msg("\n*** Error: minimum screen width is %d",
- cmdedit_termw);
- }
+ }
}
extern void cmdedit_init(void)
@@ -1234,9 +1234,10 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
setTermSettings(inputFd, (void *) &new_settings);
handlers_sets |= SET_RESET_TERM;
- cmdedit_init();
/* Print out the command prompt */
parse_prompt(prompt);
+ /* Now initialize things */
+ cmdedit_init();
while (1) {
diff --git a/shell/lash.c b/shell/lash.c
index 9519538..76ef16a 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -854,10 +854,9 @@ static int get_command(FILE * source, char *command)
** atexit() handlers and other unwanted stuff to our
** child processes (rob@sysgo.de)
*/
- cmdedit_init();
cmdedit_read_input(prompt_str, command);
- free(prompt_str);
cmdedit_terminate();
+ free(prompt_str);
return 0;
#else
fputs(prompt_str, stdout);