[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:02977] kterm TERMCAP bug-fix patch



小島基靖と申します.

kterm-6.2.0 で -lncurses でコンパイルした時
おかしな TERMCAP が 設定される件の修正 patch です.
  xfree86_3.3.orig.tar.gz
での xterm のソースを参考に修正してます.

動作確認後 反映していただきたく.>  Yoshiaki Yanagihara <yochi@xxxxxxxxxxx> 様.

kterm-6.2.0.orig.tar.gz に当ててください.
============  ここから  ==========================================

--- main.c.orig	Fri Jul 12 14:01:38 1996
+++ main.c	Sun Nov 23 22:04:08 1997
@@ -2253,14 +2253,17 @@
 #ifndef KTERM_NOTEK
 	}
 #endif /* !KTERM_NOTEK */
+
+	*ptr = 0;
 	TermName = NULL;
 	if (resource.term_name) {
 	    if (tgetent (ptr, resource.term_name) == 1) {
 		TermName = resource.term_name;
+		if (*ptr) 
 #ifndef KTERM_NOTEK
-		if (!screen->TekEmu)
+		    if (!screen->TekEmu)
 #endif /* !KTERM_NOTEK */
-		    resize (screen, TermName, termcap, newtc);
+		        resize (screen, TermName, termcap, newtc);
 	    } else {
 		fprintf (stderr, "%s:  invalid termcap entry \"%s\".\n",
 			 ProgramName, resource.term_name);
@@ -2270,10 +2273,11 @@
 	    while (*envnew != NULL) {
 		if(tgetent(ptr, *envnew) == 1) {
 			TermName = *envnew;
+			if (*ptr) 
 #ifndef KTERM_NOTEK
-			if(!screen->TekEmu)
+			    if(!screen->TekEmu)
 #endif /* !KTERM_NOTEK */
-			    resize(screen, TermName, termcap, newtc);
+			        resize(screen, TermName, termcap, newtc);
 			break;
 		}
 		envnew++;
@@ -3149,8 +3153,10 @@
 # ifndef KTERM_NOTEK
 		if(!screen->TekEmu) {
 # endif /* !KTERM_NOTEK */
-		    strcpy (termcap, newtc);
-		    resize (screen, TermName, termcap, newtc);
+		    if(*newtc) {
+		        strcpy (termcap, newtc);
+		        resize (screen, TermName, termcap, newtc);
+		    }
 # ifndef KTERM_NOTEK
 		}
 # endif /* !KTERM_NOTEK */
@@ -3166,9 +3172,11 @@
 		    remove_termcap_entry (newtc, ":im=");
 		    remove_termcap_entry (newtc, ":ei=");
 		    remove_termcap_entry (newtc, ":mi");
-		    strcat (newtc, ":im=\\E[4h:ei=\\E[4l:mi:");
+		    if (*newtc)
+		        strcat (newtc, ":im=\\E[4h:ei=\\E[4l:mi:");
 		}
-		Setenv ("TERMCAP=", newtc);
+                if (*newtc)
+		    Setenv ("TERMCAP=", newtc);
 # ifdef sony
 		switch (jmode & KM_KANJI) {
 		case KM_JIS:

============  ここまで  ==========================================

以前
>From: mkojima@xxxxxxxxxxxx
>Subject: [debian-users:02867] Re: [Q] lynx on kterm
>Date: Sun, 16 Nov 1997 04:58:43 +0900
>Message-ID: <199711152007.FAA06004@xxxxxxxxxxxxxxxxx>
>
>> 小島基靖と申します.

で,出した patch は,できがよくないので破棄してください.

今度はちゃんと patchの動作を把握しているので大丈夫ですが,
オリジナルのbug もしっかり残ってます.

Known bug : 
Q1) 環境変数 TERMCAP=co#80:li#24:
    が設定された ターミナルから,kterm を起動すると
    TERMCAP=co#80:li#24: 
    が引き継がれ,画面サイズを変更しても更新されない.
A1) XFree86 3.3 付属の xterm でも直っておらず,対処してません.
    正常な TERMCAP entry を設定するか,又は 環境変数 TERMCAP を消
    すことで 正常に動作します.
  

> あと,初歩的な質問ですが,最新の xterm のソースってどこにあるのでしょう?

結局 以下の URLを見付けて
http://ring.nacsis.ac.jp/archives/unix/XFree86/3.3/untarred/xc/programs/xterm/

展開済のものをもらって来ました.
# これで,やっと一段落.
-----
    小島基靖    Private E-mail: mkojima@xxxxxxxxxxxx