fix regression wrt. pdksh (introduced between R40e and R40f)
about how and when the display is redrawn by reverting one bool back to an int, as it’s used as a counter (hm, should be an unsigned I guess but…) on the other hand, xlp_valid should’ve been a bool, make it so
This commit is contained in:
parent
9f15657f7b
commit
b58d7b8053
16
edit.c
16
edit.c
@ -28,7 +28,7 @@
|
||||
|
||||
#ifndef MKSH_NO_CMDLINE_EDITING
|
||||
|
||||
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.255 2012/10/21 18:33:46 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.256 2012/11/26 22:39:14 tg Exp $");
|
||||
|
||||
/*
|
||||
* in later versions we might use libtermcap for this, but since external
|
||||
@ -931,14 +931,14 @@ static bool x_adj_ok;
|
||||
* we use x_adj_done so that functions can tell
|
||||
* whether x_adjust() has been called while they are active.
|
||||
*/
|
||||
static bool x_adj_done;
|
||||
static int x_adj_done; /* is incremented by x_adjust() */
|
||||
|
||||
static int x_col;
|
||||
static int x_displen;
|
||||
static int x_arg; /* general purpose arg */
|
||||
static bool x_arg_defaulted; /* x_arg not explicitly set; defaulted to 1 */
|
||||
|
||||
static int xlp_valid;
|
||||
static bool xlp_valid; /* lastvis pointer was recalculated */
|
||||
|
||||
static char **x_histp; /* history position */
|
||||
static int x_nextcmd; /* for newline-and-next */
|
||||
@ -1191,7 +1191,7 @@ x_init_prompt(void)
|
||||
if (x_col >= xx_cols)
|
||||
x_col %= xx_cols;
|
||||
x_displen = xx_cols - 2 - x_col;
|
||||
x_adj_done = false;
|
||||
x_adj_done = 0;
|
||||
|
||||
pprompt(prompt, 0);
|
||||
if (x_displen < 1) {
|
||||
@ -1364,7 +1364,7 @@ static int
|
||||
x_ins(const char *s)
|
||||
{
|
||||
char *cp = xcp;
|
||||
bool adj = x_adj_done;
|
||||
int adj = x_adj_done;
|
||||
|
||||
if (x_do_ins(s, strlen(s)) < 0)
|
||||
return (-1);
|
||||
@ -1641,7 +1641,7 @@ x_size2(char *cp, char **dcp)
|
||||
static void
|
||||
x_zots(char *str)
|
||||
{
|
||||
bool adj = x_adj_done;
|
||||
int adj = x_adj_done;
|
||||
|
||||
x_lastcp();
|
||||
while (*str && str < xlp && adj == x_adj_done)
|
||||
@ -2860,7 +2860,7 @@ static void
|
||||
x_adjust(void)
|
||||
{
|
||||
/* flag the fact that we were called. */
|
||||
x_adj_done = true;
|
||||
x_adj_done++;
|
||||
/*
|
||||
* we had a problem if the prompt length > xx_cols / 2
|
||||
*/
|
||||
@ -2982,7 +2982,7 @@ x_e_putc3(const char **cp)
|
||||
static void
|
||||
x_e_puts(const char *s)
|
||||
{
|
||||
bool adj = x_adj_done;
|
||||
int adj = x_adj_done;
|
||||
|
||||
while (*s && adj == x_adj_done)
|
||||
x_e_putc3(&s);
|
||||
|
Loading…
Reference in New Issue
Block a user