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

xterm: Changes to 'upstream-unstable'



 INSTALL                  |   50 +-
 MANIFEST                 |    2 
 THANKS                   |    4 
 VTPrsTbl.c               |  342 ++++++++++++++++++-
 VTparse.def              |    6 
 VTparse.h                |    7 
 button.c                 |  291 ++++++++++------
 charproc.c               |  297 +++++++++++++---
 charsets.c               |  825 +++++++++++++++++++++++++++++------------------
 configure                |  138 +++----
 configure.in             |   52 +-
 ctlseqs.ms               |   28 +
 ctlseqs.txt              |   29 +
 cursor.c                 |    4 
 doublechr.c              |    6 
 fontutils.c              |   68 +--
 fontutils.h              |   20 -
 graphics.c               |   18 -
 input.c                  |   19 -
 misc.c                   |   87 ++--
 package/debian/changelog |    6 
 package/freebsd/Makefile |    2 
 package/xterm.spec       |    4 
 ptyx.h                   |   64 +++
 screen.c                 |   12 
 trace.c                  |  110 +++---
 trace.h                  |    9 
 util.c                   |   90 +++--
 version.h                |    6 
 xterm.h                  |   10 
 xterm.log.html           |   97 +++++
 xterm.man                |    7 
 32 files changed, 1848 insertions(+), 862 deletions(-)

New commits:
commit 109db94a827306c71c63fd8e3314e21509bde184
Author: Sven Joachim <svenjoac@gmx.de>
Date:   Wed Sep 11 17:33:32 2013 +0200

    Imported Upstream version 297

diff --git a/INSTALL b/INSTALL
index 9d555fc..2554ca2 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,4 +1,4 @@
--- $XTermId: INSTALL,v 1.148 2013/06/23 20:22:46 tom Exp $
+-- $XTermId: INSTALL,v 1.149 2013/08/04 19:33:14 tom Exp $
 -------------------------------------------------------------------------------
 -- Copyright 1997-2012,2013 by Thomas E. Dickey
 --
@@ -30,23 +30,12 @@
 -------------------------------------------------------------------------------
 
 Xterm was originally built as part of the X Window System source tree, using
-imake to generate a Makefile from Imakefile.  You can also use the configure
-script to generate a Makefile from Makefile.in:
+imake to generate a Makefile from Imakefile.
 
-	+ If you have imake (or xmkmf), then you can use those directly,
-	  or use the configure script, which normally uses those tools
-	  to obtain the special definitions needed to build xterm.
+An example Imakefile is provided for legacy use.
 
-	  Ultimately, imake will not be necessary, since it is possible
-	  to add configure tests that derive the information that imake
-	  would supply.
-
-	+ You need the Athena widgets (or a clone, such as Xaw3d or
-	  neXtaw), to provide the popup menus.
-
-Even if you have imake, the configure script is still convenient because
-it allows you to build different configurations more easily than with
-imake, simply by specifying options to the configure script.
+The preferred method uses the configure script to generate a Makefile from
+Makefile.in
 
 Options:
 -------
@@ -221,6 +210,15 @@ The options (in alphabetic order):
 	tool.  Normally these chunks of memory are retained as long as xterm
 	is running.
 
+  --disable-luit          disable support for luit filter (Unicode translation)
+
+	Luit is a filter that can be run between an arbitrary application and a
+	UTF-8 terminal emulator.  It will convert application output from the
+	locale's encoding into UTF-8, and convert terminal input from UTF-8
+	into the locale's encoding.
+
+	This is normally enabled, relying upon "--enable-wide-chars".
+
   --disable-maximize      disable actions for iconify/deiconify/maximize/restore
 
 	Do not compile-in code that implements runtime 'actions' for
@@ -341,6 +339,12 @@ The options (in alphabetic order):
 
 	A genuine vt100 emulates a vt52.
 
+  --disable-wide-chars    disable wide-character support
+
+  	The wide-character code supports Unicode and UTF-8.
+
+	This is normally enabled.
+
   --disable-ziconbeep     disable -ziconbeep option
 
 	Do not compile-in code that modifies the icon's title and sounds a
@@ -436,15 +440,6 @@ The options (in alphabetic order):
 	Logging was disabled in X11R5 xterm because of security problems.
 	They were addressed in X11R6, but the feature was not reinstated.
 
-  --enable-luit           enable support for luit filter (Unicode translation)
-
-	Luit is a filter that can be run between an arbitrary application and a
-	UTF-8 terminal emulator.  It will convert application output from the
-	locale's encoding into UTF-8, and convert terminal input from UTF-8
-	into the locale's encoding.
-
-	This sets "--enable-wide-chars" as a side-effect.
-
   --enable-meta-sends-esc set default metaSendsEscape resource (default: no)
 
 	This sets the default resource value, which is shown in the manpage.
@@ -523,11 +518,6 @@ The options (in alphabetic order):
 	I use this option regularly, and correct all but a few (difficult)
 	problems.
 
-  --enable-wide-chars     enable wide-character support
-
-  	Compile-in code that supports 16-bit characters.  Includes support
-	for UTF-8.
-
   --enable-xmc-glitch     test: enable xmc magic-cookie emulation
 
   	Compile-in code that simulates the terminfo "magic cookie" glitch.
diff --git a/MANIFEST b/MANIFEST
index 5675bd8..08d673c 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-296, version xterm-296
+MANIFEST for xterm-297, version xterm-297
 --------------------------------------------------------------------------------
 MANIFEST                        this file
 256colres.h                     resource-definitions for 256-color mode
diff --git a/THANKS b/THANKS
index dbcc4af..a38ebf9 100644
--- a/THANKS
+++ b/THANKS
@@ -1,4 +1,4 @@
--- $XTermId: THANKS,v 1.9 2013/07/04 23:04:24 tom Exp $
+-- $XTermId: THANKS,v 1.11 2013/08/08 08:24:07 tom Exp $
 -- vile:txtmode fk=8bit
 There's no AUTHORS file in this distribution; it would be redundant since
 I (Thomas E. Dickey) have done more than 80% of the work on xterm since 1996.
@@ -81,6 +81,7 @@ H Merijn Brand
 Hasso Tepper
 Holger Veit
 Ilya Zakharevich
+Iwamoto Kouichi
 James Armstrong
 Jason Bacon
 Jason Vas Dias
@@ -149,6 +150,7 @@ Peter Berg Larsen
 Pierre Lombard
 Richard Braakman
 Richard Griswold
+Richard Tollerton
 Rob Braun
 Robert Brady
 Robert Earl
diff --git a/VTPrsTbl.c b/VTPrsTbl.c
index 7414ee9..34accc3 100644
--- a/VTPrsTbl.c
+++ b/VTPrsTbl.c
@@ -1,4 +1,4 @@
-/* $XTermId: VTPrsTbl.c,v 1.69 2012/09/10 23:28:14 tom Exp $ */
+/* $XTermId: VTPrsTbl.c,v 1.72 2013/08/21 23:50:44 tom Exp $ */
 
 /*
  * Copyright 1999-2011,2012 by Thomas E. Dickey
@@ -5971,7 +5971,7 @@ CASE_ESC_IGNORE,
 CASE_ESC_IGNORE,
 /*	$		%		&		'	*/
 CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
+CASE_SCS_PERCENT,
 CASE_ESC_IGNORE,
 CASE_ESC_IGNORE,
 /*	(		)		*		+	*/
@@ -6000,9 +6000,9 @@ CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 /*	<		=		>		?	*/
-CASE_GROUND_STATE,
 CASE_GSETS,
-CASE_GROUND_STATE,
+CASE_GSETS,
+CASE_GSETS,
 CASE_GROUND_STATE,
 /*	@		A		B		C	*/
 CASE_GROUND_STATE,
@@ -6045,7 +6045,7 @@ CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 /*	`		a		b		c	*/
-CASE_GROUND_STATE,
+CASE_GSETS,
 CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 CASE_GROUND_STATE,
@@ -6131,7 +6131,7 @@ CASE_ESC_IGNORE,
 CASE_ESC_IGNORE,
 /*      currency        yen             brokenbar       section         */
 CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
+CASE_SCS_PERCENT,
 CASE_ESC_IGNORE,
 CASE_ESC_IGNORE,
 /*      diaeresis       copyright       ordfeminine     guillemotleft   */
@@ -6160,9 +6160,9 @@ CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 /*      onequarter      onehalf         threequarters   questiondown    */
-CASE_GROUND_STATE,
 CASE_GSETS,
-CASE_GROUND_STATE,
+CASE_GSETS,
+CASE_GSETS,
 CASE_GROUND_STATE,
 /*      Agrave          Aacute          Acircumflex     Atilde          */
 CASE_GROUND_STATE,
@@ -6205,7 +6205,7 @@ CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 /*      agrave          aacute          acircumflex     atilde          */
-CASE_GROUND_STATE,
+CASE_GSETS,
 CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 CASE_GROUND_STATE,
@@ -7222,6 +7222,330 @@ CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 CASE_IGNORE,
 };
+
+Const PARSE_T scs_pct_table[] =		/* SCS % */
+{
+/*	NUL		SOH		STX		ETX	*/
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*	EOT		ENQ		ACK		BEL	*/
+CASE_IGNORE,
+CASE_ENQ,
+CASE_IGNORE,
+CASE_BELL,
+/*	BS		HT		NL		VT	*/
+CASE_BS,
+CASE_TAB,
+CASE_VMOT,
+CASE_VMOT,
+/*	FF		CR		SO		SI	*/
+CASE_VMOT,
+CASE_CR,
+CASE_SO,
+CASE_SI,
+/*	DLE		DC1		DC2		DC3	*/
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*	DC4		NAK		SYN		ETB	*/
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*	CAN		EM		SUB		ESC	*/
+CASE_GROUND_STATE,
+CASE_IGNORE,
+CASE_GROUND_STATE,
+CASE_ESC,
+/*	FS		GS		RS		US	*/
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*	SP		!		"		#	*/
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*	$		%		&		'	*/
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*	(		)		*		+	*/
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*	,		-		.		/	*/
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*	0		1		2		3	*/
+CASE_GSETS_PERCENT,
+CASE_GROUND_STATE,
+CASE_GSETS_PERCENT,
+CASE_GSETS_PERCENT,
+/*	4		5		6		7	*/
+CASE_GROUND_STATE,
+CASE_GSETS_PERCENT,
+CASE_GSETS_PERCENT,
+CASE_GROUND_STATE,
+/*	8		9		:		;	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	<		=		>		?	*/
+CASE_GROUND_STATE,
+CASE_GSETS_PERCENT,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	@		A		B		C	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	D		E		F		G	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	H		I		J		K	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	L		M		N		O	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	P		Q		R		S	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	T		U		V		W	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	X		Y		Z		[	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	\		]		^		_	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	`		a		b		c	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	d		e		f		g	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	h		i		j		k	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	l		m		n		o	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	p		q		r		s	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	t		u		v		w	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	x		y		z		{	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*	|		}		~		DEL	*/
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_IGNORE,
+/*      0x80            0x81            0x82            0x83    */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      0x84            0x85            0x86            0x87    */
+CASE_IND,
+CASE_NEL,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      0x88            0x89            0x8a            0x8b    */
+CASE_HTS,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      0x8c            0x8d            0x8e            0x8f    */
+CASE_GROUND_STATE,
+CASE_RI,
+CASE_SS2,
+CASE_SS3,
+/*      0x90            0x91            0x92            0x93    */
+CASE_DCS,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      0x94            0x95            0x96            0x97    */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_SPA,
+CASE_EPA,
+/*      0x98            0x99            0x9a            0x9b    */
+CASE_SOS,
+CASE_GROUND_STATE,
+CASE_DECID,
+CASE_CSI_STATE,
+/*      0x9c            0x9d            0x9e            0x9f    */
+CASE_ST,
+CASE_OSC,
+CASE_PM,
+CASE_APC,
+/*      nobreakspace    exclamdown      cent            sterling        */
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*      currency        yen             brokenbar       section         */
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*      diaeresis       copyright       ordfeminine     guillemotleft   */
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*      notsign         hyphen          registered      macron          */
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*      degree          plusminus       twosuperior     threesuperior   */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      acute           mu              paragraph       periodcentered  */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      cedilla         onesuperior     masculine       guillemotright  */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      onequarter      onehalf         threequarters   questiondown    */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      Agrave          Aacute          Acircumflex     Atilde          */
+CASE_GSETS_PERCENT,
+CASE_GROUND_STATE,
+CASE_GSETS_PERCENT,
+CASE_GROUND_STATE,
+/*      Adiaeresis      Aring           AE              Ccedilla        */
+CASE_GROUND_STATE,
+CASE_GSETS_PERCENT,
+CASE_GSETS_PERCENT,
+CASE_GROUND_STATE,
+/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
+CASE_GROUND_STATE,
+CASE_GSETS_PERCENT,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      Eth             Ntilde          Ograve          Oacute          */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      Udiaeresis      Yacute          Thorn           ssharp          */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      agrave          aacute          acircumflex     atilde          */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      adiaeresis      aring           ae              ccedilla        */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      egrave          eacute          ecircumflex     ediaeresis      */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      igrave          iacute          icircumflex     idiaeresis      */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      eth             ntilde          ograve          oacute          */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      ocircumflex     otilde          odiaeresis      division        */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      oslash          ugrave          uacute          ucircumflex     */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*      udiaeresis      yacute          thorn           ydiaeresis      */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_IGNORE,
+};
 #endif /* OPT_WIDE_CHARS */
 
 #if OPT_VT52_MODE
diff --git a/VTparse.def b/VTparse.def
index 0c09173..820c6b4 100644
--- a/VTparse.def
+++ b/VTparse.def
@@ -1,10 +1,10 @@
-# $XTermId: VTparse.def,v 1.46 2012/09/10 23:26:44 tom Exp $
+# $XTermId: VTparse.def,v 1.47 2013/08/19 00:39:14 tom Exp $
 #
 # vile:confmode rs=lf
 # -----------------------------------------------------------------------------
 # this file is part of xterm
 #
-# Copyright 1996-2011,2012 by Thomas E. Dickey
+# Copyright 1996-2012,2013 by Thomas E. Dickey
 # 
 #                         All Rights Reserved
 # 
@@ -197,3 +197,5 @@ CASE_VPR
 CASE_ANSI_SC
 CASE_ANSI_RC
 CASE_ESC_COLON
+CASE_SCS_PERCENT
+CASE_GSETS_PERCENT
diff --git a/VTparse.h b/VTparse.h
index 464c623..5ee7a8e 100644
--- a/VTparse.h
+++ b/VTparse.h
@@ -1,7 +1,7 @@
-/* $XTermId: VTparse.h,v 1.61 2013/06/23 21:12:13 tom Exp $ */
+/* $XTermId: VTparse.h,v 1.62 2013/08/19 00:39:54 tom Exp $ */
 
 /*
- * Copyright 2002-2011,2012 by Thomas E. Dickey
+ * Copyright 2002-2012,2013 by Thomas E. Dickey
  *
  *                         All Rights Reserved
  *
@@ -106,6 +106,7 @@ extern Const PARSE_T vt52_ignore_table[];
 
 #if OPT_WIDE_CHARS
 extern Const PARSE_T esc_pct_table[];
+extern Const PARSE_T scs_pct_table[];
 #endif
 
 /*
@@ -278,5 +279,7 @@ extern Const PARSE_T esc_pct_table[];
 #define CASE_ANSI_SC 156
 #define CASE_ANSI_RC 157
 #define CASE_ESC_COLON 158
+#define CASE_SCS_PERCENT 159
+#define CASE_GSETS_PERCENT 160
 
 #endif /* included_VTparse_h */
diff --git a/button.c b/button.c
index 79ec8bd..a4b28a1 100644
--- a/button.c
+++ b/button.c
@@ -1,4 +1,4 @@
-/* $XTermId: button.c,v 1.458 2013/07/01 00:50:20 tom Exp $ */
+/* $XTermId: button.c,v 1.464 2013/09/10 17:27:38 tom Exp $ */
 
 /*
  * Copyright 1999-2012,2013 by Thomas E. Dickey
@@ -147,24 +147,24 @@ static Time lastButton3DoubleDownTime = 0;
 static CELL lastButton3;	/* At the release time */
 #endif /* OPT_READLINE */
 
-static Char *SaveText(TScreen * screen, int row, int scol, int ecol,
-		      Char * lp, int *eol);
-static int Length(TScreen * screen, int row, int scol, int ecol);
-static void ComputeSelect(XtermWidget xw, CELL * startc, CELL * endc, Bool extend);
+static Char *SaveText(TScreen *screen, int row, int scol, int ecol,
+		      Char *lp, int *eol);
+static int Length(TScreen *screen, int row, int scol, int ecol);
+static void ComputeSelect(XtermWidget xw, CELL *startc, CELL *endc, Bool extend);
 static void EditorButton(XtermWidget xw, XButtonEvent * event);
-static void EndExtend(XtermWidget w, XEvent * event, String * params, Cardinal
+static void EndExtend(XtermWidget w, XEvent * event, String *params, Cardinal
 		      num_params, Bool use_cursor_loc);
-static void ExtendExtend(XtermWidget xw, const CELL * cell);
-static void PointToCELL(TScreen * screen, int y, int x, CELL * cell);
-static void ReHiliteText(XtermWidget xw, CELL * first, CELL * last);
-static void SaltTextAway(XtermWidget xw, CELL * cellc, CELL * cell);
-static void SelectSet(XtermWidget xw, XEvent * event, String * params, Cardinal num_params);
+static void ExtendExtend(XtermWidget xw, const CELL *cell);
+static void PointToCELL(TScreen *screen, int y, int x, CELL *cell);
+static void ReHiliteText(XtermWidget xw, CELL *first, CELL *last);
+static void SaltTextAway(XtermWidget xw, CELL *cellc, CELL *cell);
+static void SelectSet(XtermWidget xw, XEvent * event, String *params, Cardinal num_params);
 static void SelectionReceived PROTO_XT_SEL_CB_ARGS;
-static void StartSelect(XtermWidget xw, const CELL * cell);
+static void StartSelect(XtermWidget xw, const CELL *cell);
 static void TrackDown(XtermWidget xw, XButtonEvent * event);
-static void TrackText(XtermWidget xw, const CELL * first, const CELL * last);
-static void _OwnSelection(XtermWidget xw, String * selections, Cardinal count);
-static void do_select_end(XtermWidget xw, XEvent * event, String * params,
+static void TrackText(XtermWidget xw, const CELL *first, const CELL *last);
+static void _OwnSelection(XtermWidget xw, String *selections, Cardinal count);
+static void do_select_end(XtermWidget xw, XEvent * event, String *params,
 			  Cardinal *num_params, Bool use_cursor_loc);
 
 #define MOUSE_LIMIT (255 - 32)
@@ -174,7 +174,7 @@ static void do_select_end(XtermWidget xw, XEvent * event, String * params,
 #define EXT_MOUSE_START (127 - 32)
 
 static int
-MouseLimit(TScreen * screen)
+MouseLimit(TScreen *screen)
 {
     int mouse_limit;
 
@@ -194,7 +194,7 @@ MouseLimit(TScreen * screen)
 }
 
 static unsigned
-EmitMousePosition(TScreen * screen, Char line[], unsigned count, int value)
+EmitMousePosition(TScreen *screen, Char line[], unsigned count, int value)
 {
     int mouse_limit = MouseLimit(screen);
 
@@ -237,7 +237,7 @@ EmitMousePosition(TScreen * screen, Char line[], unsigned count, int value)
 }
 
 static unsigned
-EmitMousePositionSeparator(TScreen * screen, Char line[], unsigned count)
+EmitMousePositionSeparator(TScreen *screen, Char line[], unsigned count)
 {
     switch (screen->extend_coords) {
     case SET_SGR_EXT_MODE_MOUSE:
@@ -726,7 +726,7 @@ CheckLocatorPosition(XtermWidget xw, XButtonEvent * event)
 
 #if OPT_READLINE
 static int
-isClick1_clean(TScreen * screen, XButtonEvent * event)
+isClick1_clean(TScreen *screen, XButtonEvent * event)
 {
     int delta;
 
@@ -755,7 +755,7 @@ isClick1_clean(TScreen * screen, XButtonEvent * event)
 }
 
 static int
-isDoubleClick3(TScreen * screen, XButtonEvent * event)
+isDoubleClick3(TScreen *screen, XButtonEvent * event)
 {
     int delta;
 
@@ -794,7 +794,7 @@ isDoubleClick3(TScreen * screen, XButtonEvent * event)
 }
 
 static int
-CheckSecondPress3(TScreen * screen, XEvent * event)
+CheckSecondPress3(TScreen *screen, XEvent * event)
 {
     int delta;
 
@@ -833,7 +833,7 @@ CheckSecondPress3(TScreen * screen, XEvent * event)
 }
 
 static int
-rowOnCurrentLine(TScreen * screen,
+rowOnCurrentLine(TScreen *screen,
 		 int line,
 		 int *deltap)	/* must be XButtonEvent */
 {
@@ -863,13 +863,13 @@ rowOnCurrentLine(TScreen * screen,
 }
 
 static int
-eventRow(TScreen * screen, XEvent * event)	/* must be XButtonEvent */
+eventRow(TScreen *screen, XEvent * event)	/* must be XButtonEvent */
 {
     return (event->xbutton.y - screen->border) / FontHeight(screen);
 }
 
 static int
-eventColBetween(TScreen * screen, XEvent * event)	/* must be XButtonEvent */
+eventColBetween(TScreen *screen, XEvent * event)	/* must be XButtonEvent */
 {
     /* Correct by half a width - we are acting on a boundary, not on a cell. */
     return ((event->xbutton.x - OriginX(screen) + (FontWidth(screen) - 1) / 2)
@@ -877,7 +877,7 @@ eventColBetween(TScreen * screen, XEvent * event)	/* must be XButtonEvent */
 }
 
 static int
-ReadLineMovePoint(TScreen * screen, int col, int ldelta)
+ReadLineMovePoint(TScreen *screen, int col, int ldelta)
 {
     Char line[6];
     unsigned count = 0;
@@ -900,7 +900,7 @@ ReadLineMovePoint(TScreen * screen, int col, int ldelta)
 }
 
 static int
-ReadLineDelete(TScreen * screen, CELL * cell1, CELL * cell2)
+ReadLineDelete(TScreen *screen, CELL *cell1, CELL *cell2)
 {
     int del;
 
@@ -913,7 +913,7 @@ ReadLineDelete(TScreen * screen, CELL * cell1, CELL * cell2)
 }
 
 static void
-readlineExtend(TScreen * screen, XEvent * event)
+readlineExtend(TScreen *screen, XEvent * event)
 {
     int ldelta1, ldelta2;
 
@@ -940,7 +940,7 @@ readlineExtend(TScreen * screen, XEvent * event)
 void
 DiredButton(Widget w,
 	    XEvent * event,	/* must be XButtonEvent */
-	    String * params GCC_UNUSED,		/* selections */
+	    String *params GCC_UNUSED,	/* selections */
 	    Cardinal *num_params GCC_UNUSED)
 {
     XtermWidget xw;
@@ -971,7 +971,7 @@ DiredButton(Widget w,
 void
 ReadLineButton(Widget w,
 	       XEvent * event,	/* must be XButtonEvent */
-	       String * params GCC_UNUSED,	/* selections */
+	       String *params GCC_UNUSED,	/* selections */
 	       Cardinal *num_params GCC_UNUSED)
 {
     XtermWidget xw;
@@ -1028,7 +1028,7 @@ ReadLineButton(Widget w,
 void
 ViButton(Widget w,
 	 XEvent * event,	/* must be XButtonEvent */
-	 String * params GCC_UNUSED,	/* selections */
+	 String *params GCC_UNUSED,	/* selections */
 	 Cardinal *num_params GCC_UNUSED)
 {
     XtermWidget xw;
@@ -1067,7 +1067,7 @@ ViButton(Widget w,
 void
 HandleSelectExtend(Widget w,
 		   XEvent * event,	/* must be XMotionEvent */
-		   String * params GCC_UNUSED,
+		   String *params GCC_UNUSED,
 		   Cardinal *num_params GCC_UNUSED)
 {
     XtermWidget xw;
@@ -1076,7 +1076,7 @@ HandleSelectExtend(Widget w,
 	TScreen *screen = TScreenOf(xw);
 	CELL cell;
 
-	TRACE(("HandleSelectExtend\n"));
+	TRACE(("HandleSelectExtend @%ld\n", event->xmotion.time));
 
 	screen->selection_time = event->xmotion.time;
 	switch (screen->eventMode) {
@@ -1103,7 +1103,7 @@ HandleSelectExtend(Widget w,
 void
 HandleKeyboardSelectExtend(Widget w,
 			   XEvent * event GCC_UNUSED,	/* must be XButtonEvent */
-			   String * params GCC_UNUSED,
+			   String *params GCC_UNUSED,
 			   Cardinal *num_params GCC_UNUSED)
 {
     XtermWidget xw;
@@ -1119,13 +1119,14 @@ HandleKeyboardSelectExtend(Widget w,
 static void
 do_select_end(XtermWidget xw,
 	      XEvent * event,	/* must be XButtonEvent */
-	      String * params,	/* selections */
+	      String *params,	/* selections */
 	      Cardinal *num_params,
 	      Bool use_cursor_loc)
 {
     TScreen *screen = TScreenOf(xw);
 
     screen->selection_time = event->xbutton.time;
+    TRACE(("do_select_end @%ld\n", screen->selection_time));
     switch (screen->eventMode) {
     case NORMAL:
 	(void) SendMousePosition(xw, event);
@@ -1143,7 +1144,7 @@ do_select_end(XtermWidget xw,
 void
 HandleSelectEnd(Widget w,
 		XEvent * event,	/* must be XButtonEvent */
-		String * params,	/* selections */
+		String *params,	/* selections */
 		Cardinal *num_params)
 {
     XtermWidget xw;
@@ -1157,7 +1158,7 @@ HandleSelectEnd(Widget w,
 void
 HandleKeyboardSelectEnd(Widget w,
 			XEvent * event,		/* must be XButtonEvent */
-			String * params,	/* selections */
+			String *params,		/* selections */
 			Cardinal *num_params)
 {
     XtermWidget xw;
@@ -1174,7 +1175,7 @@ HandleKeyboardSelectEnd(Widget w,
 void
 HandleCopySelection(Widget w,
 		    XEvent * event,
-		    String * params,	/* list of targets */
+		    String *params,	/* list of targets */
 		    Cardinal *num_params)
 {
     XtermWidget xw;
@@ -1204,7 +1205,7 @@ DECtoASCII(unsigned ch)
 
 #if OPT_WIDE_CHARS
 static Cardinal
-addXtermChar(Char ** buffer, Cardinal *used, Cardinal offset, unsigned value)
+addXtermChar(Char **buffer, Cardinal *used, Cardinal offset, unsigned value)
 {
     if (offset + 1 >= *used) {
 	*used = 1 + (2 * (offset + 1));
@@ -1221,7 +1222,7 @@ addXtermChar(Char ** buffer, Cardinal *used, Cardinal offset, unsigned value)
  * or ASCII/Latin-1 equivalents for special cases.
  */
 static Char *
-UTF8toLatin1(TScreen * screen, Char * s, unsigned long len, unsigned long *result)
+UTF8toLatin1(TScreen *screen, Char *s, unsigned long len, unsigned long *result)
 {
     static Char *buffer;
     static Cardinal used;
@@ -1449,7 +1450,7 @@ overrideTargets(Widget w, String value, Atom ** resultp)
 
 #if OPT_WIDE_CHARS
 static Atom *
-allocUtf8Targets(Widget w, TScreen * screen)
+allocUtf8Targets(Widget w, TScreen *screen)
 {
     Atom **resultp = &(screen->selection_targets_utf8);
 
@@ -1485,7 +1486,7 @@ allocUtf8Targets(Widget w, TScreen * screen)
 #endif
 
 static Atom *
-alloc8bitTargets(Widget w, TScreen * screen)
+alloc8bitTargets(Widget w, TScreen *screen)
 {
     Atom **resultp = &(screen->selection_targets_8bit);
 
@@ -1569,7 +1570,7 @@ UnmapSelections(XtermWidget xw)
  * call to XmuInternStrings().
  */
 static String *
-MapSelections(XtermWidget xw, String * params, Cardinal num_params)
+MapSelections(XtermWidget xw, String *params, Cardinal num_params)
 {
     String *result = params;
 
@@ -1676,7 +1677,7 @@ static
 void
 xtermGetSelection(Widget w,
 		  Time ev_time,
-		  String * params,	/* selections in precedence order */
+		  String *params,	/* selections in precedence order */
 		  Cardinal num_params,
 		  Atom * targets)
 {
@@ -1691,7 +1692,7 @@ xtermGetSelection(Widget w,
     if ((xw = getXtermWidget(w)) == 0)
 	return;
 
-    TRACE(("xtermGetSelection num_params %d\n", num_params));
+    TRACE(("xtermGetSelection num_params %d @%ld\n", num_params, ev_time));
     params = MapSelections(xw, params, num_params);
 
     XmuInternStrings(XtDisplay(w), params, (Cardinal) 1, &selection);
@@ -1765,7 +1766,7 @@ xtermGetSelection(Widget w,
 
 #if OPT_TRACE && OPT_WIDE_CHARS
 static void
-GettingSelection(Display * dpy, Atom type, Char * line, unsigned long len)
+GettingSelection(Display *dpy, Atom type, Char *line, unsigned long len)
 {
     Char *cp;
     char *name;
@@ -1799,7 +1800,7 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ\
 abcdefghijklmnopqrstuvwxyz\
 0123456789+/";
 static void
-base64_flush(TScreen * screen)
+base64_flush(TScreen *screen)
 {
     Char x;
     switch (screen->base64_count) {
@@ -1824,11 +1825,75 @@ base64_flush(TScreen * screen)
 }
 #endif /* OPT_PASTE64 */
 
+/*
+ * Translate ISO-8859-1 or UTF-8 data to NRCS.
+ */
 static void
-_qWriteSelectionData(XtermWidget xw, Char * lag, unsigned length)
+ToNational(TScreen *screen, Char *buffer, unsigned *length)
+{
+    int gsetL = screen->gsets[screen->curgl];
+    int gsetR = screen->gsets[screen->curgr];
+    unsigned chr, out, gl, gr;
+    Char *p;
+
+#if OPT_WIDE_CHARS
+    if ((screen->utf8_nrc_mode | screen->utf8_mode) != uFalse) {
+	PtyData *data = TypeXtMallocX(PtyData, *length);
+
+	memset(data, 0, sizeof(*data));
+	data->next = data->buffer;
+	data->last = data->buffer + *length;
+	memcpy(data->buffer, buffer, (size_t) *length);
+	p = buffer;
+	while (data->next < data->last) {
+	    if (!decodeUtf8(data)) {
+		data->utf_size = 1;
+		data->utf_data = data->next[0];
+	    }
+	    data->next += data->utf_size;
+	    chr = data->utf_data;
+	    out = chr;
+	    if ((gl = xtermCharSetIn(screen, chr, gsetL)) != chr) {
+		out = gl;
+	    } else if ((gr = xtermCharSetIn(screen, chr, gsetR)) != chr) {
+		out = gr;
+	    }
+	    *p++ = (Char) ((out < 256) ? out : ' ');
+	}
+	*length = (unsigned) (p - buffer);


Reply to: