diff options
author | jilles <jilles@FreeBSD.org> | 2010-06-02 19:16:58 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2010-06-02 19:16:58 +0000 |
commit | e5f96a4e051e13725fc9c904fa4b2d2214e48eb7 (patch) | |
tree | abe0a29df5a319ce831fc93ef7d6b9bbfc7f34ff /bin/sh/histedit.c | |
parent | bf334bd4a759559e589a8fe20eebf8c48effbca1 (diff) | |
download | FreeBSD-src-e5f96a4e051e13725fc9c904fa4b2d2214e48eb7.zip FreeBSD-src-e5f96a4e051e13725fc9c904fa4b2d2214e48eb7.tar.gz |
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
Diffstat (limited to 'bin/sh/histedit.c')
-rw-r--r-- | bin/sh/histedit.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/bin/sh/histedit.c b/bin/sh/histedit.c index cdde09a..521c6f7 100644 --- a/bin/sh/histedit.c +++ b/bin/sh/histedit.c @@ -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) { |