From owner-svn-src-all@FreeBSD.ORG Wed Jun 2 19:16:58 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CCAC6106568C; Wed, 2 Jun 2010 19:16:58 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B1AF58FC19; Wed, 2 Jun 2010 19:16:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o52JGwnT044071; Wed, 2 Jun 2010 19:16:58 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o52JGwkU044066; Wed, 2 Jun 2010 19:16:58 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201006021916.o52JGwkU044066@svn.freebsd.org> From: Jilles Tjoelker Date: Wed, 2 Jun 2010 19:16:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208755 - head/bin/sh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Jun 2010 19:16:59 -0000 Author: jilles Date: Wed Jun 2 19:16:58 2010 New Revision: 208755 URL: http://svn.freebsd.org/changeset/base/208755 Log: 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 Modified: head/bin/sh/histedit.c head/bin/sh/myhistedit.h head/bin/sh/var.c head/bin/sh/var.h Modified: head/bin/sh/histedit.c ============================================================================== --- head/bin/sh/histedit.c Wed Jun 2 18:46:12 2010 (r208754) +++ head/bin/sh/histedit.c Wed Jun 2 19:16:58 2010 (r208755) @@ -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) { Modified: head/bin/sh/myhistedit.h ============================================================================== --- head/bin/sh/myhistedit.h Wed Jun 2 18:46:12 2010 (r208754) +++ head/bin/sh/myhistedit.h Wed Jun 2 19:16:58 2010 (r208755) @@ -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); Modified: head/bin/sh/var.c ============================================================================== --- head/bin/sh/var.c Wed Jun 2 18:46:12 2010 (r208754) +++ head/bin/sh/var.c Wed Jun 2 19:16:58 2010 (r208755) @@ -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, Modified: head/bin/sh/var.h ============================================================================== --- head/bin/sh/var.h Wed Jun 2 18:46:12 2010 (r208754) +++ head/bin/sh/var.h Wed Jun 2 19:16:58 2010 (r208755) @@ -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)