sh: Pass TERM changes to libedit.
I have changed the patch slightly to ignore TERM changes in subshells. PR: bin/146916 Submitted by: Guy Yur Obtained from: NetBSD
This commit is contained in:
parent
cf7d8dea39
commit
580eefdf4f
@ -98,6 +98,8 @@ histedit(void)
|
||||
/*
|
||||
* turn editing on
|
||||
*/
|
||||
char *term;
|
||||
|
||||
INTOFF;
|
||||
if (el_in == NULL)
|
||||
el_in = fdopen(0, "r");
|
||||
@ -107,6 +109,11 @@ histedit(void)
|
||||
el_out = fdopen(2, "w");
|
||||
if (el_in == NULL || el_err == NULL || el_out == NULL)
|
||||
goto bad;
|
||||
term = lookupvar("TERM");
|
||||
if (term)
|
||||
setenv("TERM", term, 1);
|
||||
else
|
||||
unsetenv("TERM");
|
||||
el = el_init(arg0, el_in, el_out, el_err);
|
||||
if (el != NULL) {
|
||||
if (hist)
|
||||
@ -160,6 +167,13 @@ sethistsize(hs)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
setterm(const char *term)
|
||||
{
|
||||
if (rootshell && el != NULL && term != NULL)
|
||||
el_set(el, EL_TERMINAL, term);
|
||||
}
|
||||
|
||||
int
|
||||
histcmd(int argc, char **argv)
|
||||
{
|
||||
|
@ -38,6 +38,7 @@ extern int displayhist;
|
||||
|
||||
void histedit(void);
|
||||
void sethistsize(const char *);
|
||||
void setterm(const char *);
|
||||
int histcmd(int, char **);
|
||||
int not_fcnumber(const char *);
|
||||
int str_to_event(const char *, int);
|
||||
|
@ -80,6 +80,7 @@ struct varinit {
|
||||
|
||||
#ifndef NO_HISTORY
|
||||
struct var vhistsize;
|
||||
struct var vterm;
|
||||
#endif
|
||||
struct var vifs;
|
||||
struct var vmail;
|
||||
@ -114,6 +115,10 @@ STATIC const struct varinit varinit[] = {
|
||||
NULL },
|
||||
{ &vps4, 0, "PS4=+ ",
|
||||
NULL },
|
||||
#ifndef NO_HISTORY
|
||||
{ &vterm, VUNSET, "TERM=",
|
||||
setterm },
|
||||
#endif
|
||||
{ &voptind, 0, "OPTIND=1",
|
||||
getoptsreset },
|
||||
{ NULL, 0, NULL,
|
||||
|
@ -77,6 +77,7 @@ extern struct var vps2;
|
||||
extern struct var vps4;
|
||||
#ifndef NO_HISTORY
|
||||
extern struct var vhistsize;
|
||||
extern struct var vterm;
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -96,6 +97,7 @@ extern struct var vhistsize;
|
||||
#define optindval() (voptind.text + 7)
|
||||
#ifndef NO_HISTORY
|
||||
#define histsizeval() (vhistsize.text + 9)
|
||||
#define termval() (vterm.text + 5)
|
||||
#endif
|
||||
|
||||
#define mpathset() ((vmpath.flags & VUNSET) == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user