xterm: Changes to 'debian-unstable'
INSTALL | 24
MANIFEST | 2
Tekproc.c | 192 +++--
VTPrsTbl.c | 4
VTparse.def | 4
VTparse.h | 4
XTerm.ad | 8
aclocal.m4 | 42 -
charproc.c | 385 +++++++----
configure | 1244 ++++++++++++++++++++------------------
configure.in | 19
ctlseqs.ms | 10
ctlseqs.txt | 4
debian/changelog | 14
debian/patches/902_windowops.diff | 2
doublechr.c | 4
fontutils.c | 22
fontutils.h | 4
input.c | 8
main.c | 21
main.h | 10
menu.c | 140 ++--
misc.c | 85 +-
os2main.c | 17
plink.sh | 6
print.c | 4
ptydata.c | 17
ptyx.h | 24
screen.c | 9
scrollbar.c | 14
trace.c | 4
trace.h | 4
util.c | 4
uxterm.desktop | 4
version.h | 4
vms.c | 4
xterm.desktop | 4
xterm.h | 20
xterm.log.html | 47 +
xterm.man | 127 +++
xtermcap.c | 6
41 files changed, 1520 insertions(+), 1051 deletions(-)
New commits:
commit 43798791b4903e496e1e8960c999437d9308f061
Author: Julien Cristau <jcristau@debian.org>
Date: Wed Jun 23 15:55:43 2010 +0100
Refresh 902_windowops.diff
diff --git a/debian/patches/902_windowops.diff b/debian/patches/902_windowops.diff
index 52ff570..0681ce6 100644
--- a/debian/patches/902_windowops.diff
+++ b/debian/patches/902_windowops.diff
@@ -2,7 +2,7 @@ Index: xterm/xterm.man
===================================================================
--- xterm.orig/xterm.man
+++ xterm/xterm.man
-@@ -2115,8 +2115,9 @@
+@@ -2165,8 +2165,9 @@
from \fIdtterm\fP the operation number).
The default value is
.RS
commit 61b946f36774bef658a11f69ae5e6a07aeb3f948
Author: Julien Cristau <jcristau@debian.org>
Date: Wed Jun 23 15:21:54 2010 +0100
Bump changelog
diff --git a/debian/changelog b/debian/changelog
index 04b950f..1196b20 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+xterm (260-1) UNRELEASED; urgency=low
+
+ * New upstream release
+ + extend renderFont resource to allow deferred switch to TrueType fonts
+ without affecting existing resource settings (closes: #585620)
+ + change configure script default for --enable-broken-st (i.e., the
+ brokenStringTerm feature) to normally enable it. If the corresponding
+ resource is enabled, this feature eliminates an apparent freeze of xterm
+ when sending mis-encoded data to the screen (closes: #584801)
+ + undo a change to limit-check in ScrnRefresh in patch #257, which broke
+ fastScroll feature (closes: #584841)
+
+ -- Julien Cristau <jcristau@debian.org> Wed, 23 Jun 2010 15:19:03 +0100
+
xterm (259-1) unstable; urgency=low
* README.Debian: drop obsolete content, including a link to the old Debian X
commit 17deb5faec7299f1fe7d849319dfe64f9a1ed05e
Author: Julien Cristau <jcristau@debian.org>
Date: Wed Jun 23 15:18:55 2010 +0100
Imported Upstream version 260
diff --git a/INSTALL b/INSTALL
index d2afa33..4f1cd8c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,4 +1,4 @@
--- $XTermId: INSTALL,v 1.122 2010/04/14 10:56:29 tom Exp $
+-- $XTermId: INSTALL,v 1.123 2010/06/14 08:57:22 tom Exp $
-------------------------------------------------------------------------------
-- Copyright 1997-2009,2010 by Thomas E. Dickey
--
@@ -105,6 +105,19 @@ The options (in alphabetic order):
e.g., to make boxes. When xterm loads a font, it checks if those
characters are present, and draws its own if they are missing.
+ --disable-broken-st disallow broken string-terminators],
+
+ Do not compile-in code that works around a bug in some ISDN routers
+ (and possibly other applications written by the same people): they
+ send an unterminated control string in their banner text, making xterm
+ freeze.
+
+ The workaround tells xterm to stop processing the control string when
+ it receives one of the whitespace control characters such as newline.
+ That was the behavior before patch #171.
+
+ See also --enable-broken-osc
+
--disable-c1-print disallow -k8 option for printable 128-159],
Use this option to suppress support for nonstandard use of codes
@@ -344,15 +357,6 @@ The options (in alphabetic order):
appear to freeze. This workaround makes xterm ignore the strings,
and is compiled-in by default for Linux.
- --enable-broken-st allow broken string-terminators],
-
- Compile-in code that works around a bug in some ISDN routers (and
- possibly other applications written by the same people): they send an
- unterminated control string in their banner text, making xterm freeze.
- The workaround tells xterm to stop processing the control string when
- it receives one of the whitespace control characters such as newline.
- That was the behavior before patch #171.
-
--enable-dabbrev enable dynamic-abbreviation support
Compile-in support for "dabbrev-expand()" action and related key
diff --git a/MANIFEST b/MANIFEST
index f56b8fd..e956b9a 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-259, version xterm-259
+MANIFEST for xterm-260, version xterm-260
--------------------------------------------------------------------------------
MANIFEST this file
256colres.h resource-definitions for 256-color mode
diff --git a/Tekproc.c b/Tekproc.c
index f12aa5c..920d1c3 100644
--- a/Tekproc.c
+++ b/Tekproc.c
@@ -1,61 +1,57 @@
-/* $XTermId: Tekproc.c,v 1.178 2010/06/04 09:39:15 tom Exp $ */
+/* $XTermId: Tekproc.c,v 1.182 2010/06/20 21:34:37 tom Exp $ */
/*
- * Warning, there be crufty dragons here.
- */
-
-/*
-
-Copyright 2001-2008,2009 by Thomas E. Dickey
-
- All Rights Reserved
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization.
-
-Copyright 1988 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
+ *
+ * Copyright 2001-2009,2010 by Thomas E. Dickey
+ *
+ * All Rights Reserved
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name(s) of the above copyright
+ * holders shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization.
+ *
+ * Copyright 1988 The Open Group
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of The Open Group shall not be
+ * used in advertising or otherwise to promote the sale, use or other dealings
+ * in this Software without prior written authorization from The Open Group.
+ *
* Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
*
* All Rights Reserved
@@ -103,6 +99,7 @@ in this Software without prior written authorization from The Open Group.
#endif /* OPT_TOOLBAR */
+#include <assert.h>
#include <stdio.h>
#include <ctype.h>
#include <signal.h>
@@ -413,7 +410,8 @@ TekPtyData(void)
static void
Tekparse(TekWidget tw)
{
- TScreen *screen = TScreenOf(term);
+ XtermWidget xw = term;
+ TScreen *screen = TScreenOf(xw);
TekScreen *tekscr = TekScreenOf(tw);
int x, y;
IChar c = 0;
@@ -457,7 +455,7 @@ Tekparse(TekWidget tw)
TRACE(("case: special return to vt102 mode\n"));
Tparsestate = curstate;
TekRecord->ptr[-1] = ANSI_NAK; /* remove from recording */
- FlushLog(TScreenOf(term));
+ FlushLog(xw);
return;
case CASE_SPT_STATE:
@@ -486,7 +484,7 @@ Tekparse(TekWidget tw)
if (tekscr->TekGIN)
TekGINoff(tw);
if (!tekRefreshList)
- Bell(XkbBI_TerminalBell, 0);
+ Bell(xw, XkbBI_TerminalBell, 0);
Tparsestate = curstate; /* clear bypass condition */
break;
@@ -763,7 +761,7 @@ Tekparse(TekWidget tw)
buf2[len] = 0;
if (!nested++) {
if (c2 == ANSI_BEL)
- do_osc(term, buf2, len, ANSI_BEL);
+ do_osc(xw, buf2, len, ANSI_BEL);
}
--nested;
}
@@ -780,8 +778,9 @@ static PtySelect Tselect_mask;
static IChar
Tinput(TekWidget tw)
{
+ XtermWidget xw = term;
TekScreen *tekscr = TekScreenOf(tw);
- TScreen *screen = TScreenOf(term);
+ TScreen *screen = TScreenOf(xw);
TekLink *tek;
if (Tpushback > Tpushb)
@@ -819,7 +818,7 @@ Tinput(TekWidget tw)
&Tselect_mask, NULL, NULL,
&crocktimeout);
#endif
- if (readPtyData(screen, &Tselect_mask, VTbuffer)) {
+ if (readPtyData(xw, &Tselect_mask, VTbuffer)) {
break;
}
if (Ttoggled && curstate == Talptable) {
@@ -899,8 +898,9 @@ TekConfigure(Widget w)
{
TekWidget tw = getTekWidget(w);
if (tw != 0) {
+ XtermWidget xw = term;
TekScreen *tekscr = TekScreenOf(tw);
- TScreen *screen = TScreenOf(term);
+ TScreen *screen = TScreenOf(xw);
int border = 2 * screen->border;
double d;
@@ -960,8 +960,9 @@ void
TekRefresh(TekWidget tw)
{
if (tw != 0) {
+ XtermWidget xw = term;
+ TScreen *screen = TScreenOf(xw);
TekScreen *tekscr = TekScreenOf(tw);
- TScreen *screen = TScreenOf(term);
static Cursor wait_cursor = None;
if (wait_cursor == None)
@@ -1155,8 +1156,9 @@ TCursorDown(TekWidget tw)
static void
AddToDraw(TekWidget tw, int x1, int y1, int x2, int y2)
{
+ XtermWidget xw = term;
+ TScreen *screen = TScreenOf(xw);
TekScreen *tekscr = TekScreenOf(tw);
- TScreen *screen = TScreenOf(term);
XSegment *lp;
TRACE(("AddToDraw (%d,%d) (%d,%d)\n", x1, y1, x2, y2));
@@ -1226,8 +1228,9 @@ TekGINoff(TekWidget tw)
void
TekEnqMouse(TekWidget tw, int c) /* character pressed */
{
+ XtermWidget xw = term;
+ TScreen *screen = TScreenOf(xw);
TekScreen *tekscr = TekScreenOf(tw);
- TScreen *screen = TScreenOf(term);
int mousex, mousey, rootx, rooty;
unsigned int mask; /* XQueryPointer */
Window root, subw;
@@ -1257,8 +1260,9 @@ TekEnq(TekWidget tw,
int x,
int y)
{
+ XtermWidget xw = term;
+ TScreen *screen = TScreenOf(xw);
TekScreen *tekscr = TekScreenOf(tw);
- TScreen *screen = TScreenOf(term);
Char cplot[7];
int len = 5;
int adj = (status != 0) ? 0 : 1;
@@ -1285,13 +1289,16 @@ TekEnq(TekWidget tw,
void
TekRun(void)
{
+ XtermWidget xw = term;
+
+ assert(xw != 0);
if (tekWidget == 0) {
TekInit();
}
if (tekWidget != 0) {
TRACE(("TekRun ...\n"));
- if (!TEK4014_SHOWN(term)) {
+ if (!TEK4014_SHOWN(xw)) {
set_tek_visibility(True);
}
update_vttekmode();
@@ -1307,10 +1314,10 @@ TekRun(void)
TCursorToggle(tekWidget, TOGGLE);
Ttoggled = True;
}
- TEK4014_ACTIVE(term) = False;
+ TEK4014_ACTIVE(xw) = False;
} else {
- TEK4014_ACTIVE(term) = False;
- if (VWindow(TScreenOf(term)) == 0) {
+ TEK4014_ACTIVE(xw) = False;
+ if (VWindow(TScreenOf(xw)) == 0) {
Exit(ERROR_TINIT);
}
}
@@ -1386,9 +1393,10 @@ TekRealize(Widget gw,
XtValueMask * valuemaskp,
XSetWindowAttributes * values)
{
+ XtermWidget xw = term;
+ TScreen *screen = TScreenOf(xw);
TekWidget tw = (TekWidget) gw;
TekScreen *tekscr = TekScreenOf(tw);
- TScreen *screen = TScreenOf(term);
int i;
TekLink *tek;
double d;
@@ -1407,7 +1415,7 @@ TekRealize(Widget gw,
tekscr->whichTwin = &tekscr->fullTwin;
#endif /* NO_ACTIVE_ICON */
- BorderPixel(tw) = BorderPixel(term);
+ BorderPixel(tw) = BorderPixel(xw);
tekscr->arrow = make_colored_cursor(XC_left_ptr,
T_COLOR(screen, MOUSE_FG),
@@ -1428,10 +1436,10 @@ TekRealize(Widget gw,
if (!TekPtyData())
return;
- if (term->misc.T_geometry == NULL) {
+ if (xw->misc.T_geometry == NULL) {
int defwidth, defheight;
- if (term->misc.tekSmall) {
+ if (xw->misc.tekSmall) {
defwidth = TEKMINWIDTH;
defheight = TEKMINHEIGHT;
} else {
@@ -1439,7 +1447,7 @@ TekRealize(Widget gw,
defheight = TEKDEFHEIGHT;
}
sprintf(Tdefault, "=%dx%d", defwidth + border, defheight + border);
- term->misc.T_geometry = Tdefault;
+ xw->misc.T_geometry = Tdefault;
}
winX = 1;
@@ -1447,8 +1455,8 @@ TekRealize(Widget gw,
width = (unsigned) (TEKDEFWIDTH + border);
height = (unsigned) (TEKDEFHEIGHT + border);
- TRACE(("parsing T_geometry %s\n", NonNull(term->misc.T_geometry)));
- pr = XParseGeometry(term->misc.T_geometry,
+ TRACE(("parsing T_geometry %s\n", NonNull(xw->misc.T_geometry)));
+ pr = XParseGeometry(xw->misc.T_geometry,
&winX,
&winY,
&width,
@@ -1456,10 +1464,10 @@ TekRealize(Widget gw,
TRACE(("... position %d,%d size %dx%d\n", winY, winX, height, width));
if ((pr & XValue) && (pr & XNegative))
winX += DisplayWidth(XtDisplay(tw), DefaultScreen(XtDisplay(tw)))
- - (int) width - (BorderWidth(SHELL_OF(term)) * 2);
+ - (int) width - (BorderWidth(SHELL_OF(xw)) * 2);
if ((pr & YValue) && (pr & YNegative))
winY += DisplayHeight(XtDisplay(tw), DefaultScreen(XtDisplay(tw)))
- - (int) height - (BorderWidth(SHELL_OF(term)) * 2);
+ - (int) height - (BorderWidth(SHELL_OF(xw)) * 2);
/* set up size hints */
tw->hints.min_width = TEKMINWIDTH + border;
@@ -1656,6 +1664,7 @@ void
TekSetFontSize(TekWidget tw, Bool fromMenu, int newitem)
{
if (tw != 0) {
+ XtermWidget xw = term;
TekScreen *tekscr = TekScreenOf(tw);
int oldsize = tekscr->cur.fontsize;
int newsize = MI2FS(newitem);
@@ -1663,7 +1672,7 @@ TekSetFontSize(TekWidget tw, Bool fromMenu, int newitem)
TRACE(("TekSetFontSize(%d) size %d ->%d\n", newitem, oldsize, newsize));
if (newsize < 0 || newsize >= TEKNUMFONTS) {
- Bell(XkbBI_MinorError, 0);
+ Bell(xw, XkbBI_MinorError, 0);
} else if (oldsize != newsize) {
if (!Ttoggled)
TCursorToggle(tw, TOGGLE);
@@ -1752,7 +1761,8 @@ ChangeTekColors(TekWidget tw, TScreen * screen, ScrnColors * pNew)
void
TekReverseVideo(TekWidget tw)
{
- TScreen *screen = TScreenOf(term);
+ XtermWidget xw = term;
+ TScreen *screen = TScreenOf(xw);
TekScreen *tekscr = TekScreenOf(tw);
int i;
Pixel tmp;
@@ -1803,12 +1813,13 @@ TekBackground(TekWidget tw, TScreen * screen)
void
TCursorToggle(TekWidget tw, int toggle) /* TOGGLE or CLEAR */
{
+ XtermWidget xw = term;
TekScreen *tekscr = TekScreenOf(tw);
- TScreen *screen = TScreenOf(term);
+ TScreen *screen = TScreenOf(xw);
int c, x, y;
unsigned int cellwidth, cellheight;
- if (!TEK4014_SHOWN(term))
+ if (!TEK4014_SHOWN(xw))
return;
TRACE(("TCursorToggle %s\n", (toggle == TOGGLE) ? "toggle" : "clear"));
@@ -1865,8 +1876,9 @@ void
TekCopy(TekWidget tw)
{
if (tw != 0) {
+ XtermWidget xw = term;
TekScreen *tekscr = TekScreenOf(tw);
- TScreen *screen = TScreenOf(term);
+ TScreen *screen = TScreenOf(xw);
TekLink *Tp;
char buf[32];
@@ -1876,12 +1888,12 @@ TekCopy(TekWidget tw)
timestamp_filename(buf, "COPY");
if (access(buf, F_OK) >= 0
&& access(buf, W_OK) < 0) {
- Bell(XkbBI_MinorError, 0);
+ Bell(xw, XkbBI_MinorError, 0);
return;
}
#ifndef VMS
if (access(".", W_OK) < 0) { /* can't write in directory */
- Bell(XkbBI_MinorError, 0);
+ Bell(xw, XkbBI_MinorError, 0);
return;
}
#endif
@@ -1909,7 +1921,9 @@ HandleGINInput(Widget w,
String * param_list,
Cardinal *nparamsp)
{
+ XtermWidget xw = term;
TekWidget tw = getTekWidget(w);
+
if (tw != 0) {
TekScreen *tekscr = TekScreenOf(tw);
@@ -1924,13 +1938,13 @@ HandleGINInput(Widget w,
case 'R':
break;
default:
- Bell(XkbBI_MinorError, 0); /* let them know they goofed */
+ Bell(xw, XkbBI_MinorError, 0); /* let them know they goofed */
c = 'l'; /* provide a default */
}
TekEnqMouse(tw, c | 0x80);
TekGINoff(tw);
} else {
- Bell(XkbBI_MinorError, 0);
+ Bell(xw, XkbBI_MinorError, 0);
}
}
}
diff --git a/VTPrsTbl.c b/VTPrsTbl.c
index 095b3c1..4ab9701 100644
--- a/VTPrsTbl.c
+++ b/VTPrsTbl.c
@@ -1,8 +1,8 @@
-/* $XTermId: VTPrsTbl.c,v 1.57 2010/04/10 00:19:56 tom Exp $ */
+/* $XTermId: VTPrsTbl.c,v 1.58 2010/06/15 10:58:13 tom Exp $ */
/*
*
- * Copyright 1999-2008,2009 by Thomas E. Dickey
+ * Copyright 1999-2009,2010 by Thomas E. Dickey
*
* All Rights Reserved
*
diff --git a/VTparse.def b/VTparse.def
index 8e8d629..a62f153 100644
--- a/VTparse.def
+++ b/VTparse.def
@@ -1,10 +1,10 @@
-# $XTermId: VTparse.def,v 1.38 2010/04/09 10:47:24 tom Exp $
+# $XTermId: VTparse.def,v 1.39 2010/06/15 10:58:13 tom Exp $
#
# vile:confmode rs=lf
# -----------------------------------------------------------------------------
# this file is part of xterm
#
-# Copyright 1996-2008,2009 by Thomas E. Dickey
+# Copyright 1996-2009,2010 by Thomas E. Dickey
#
# All Rights Reserved
#
diff --git a/VTparse.h b/VTparse.h
index 0fd5110..162d13c 100644
--- a/VTparse.h
+++ b/VTparse.h
@@ -1,7 +1,7 @@
-/* $XTermId: VTparse.h,v 1.51 2010/04/09 22:29:17 tom Exp $ */
+/* $XTermId: VTparse.h,v 1.52 2010/06/15 10:58:13 tom Exp $ */
/*
- * Copyright 2002-2008,2009 by Thomas E. Dickey
+ * Copyright 2002-2009,2010 by Thomas E. Dickey
*
* All Rights Reserved
*
diff --git a/XTerm.ad b/XTerm.ad
index 5f74416..975f7cd 100644
--- a/XTerm.ad
+++ b/XTerm.ad
@@ -1,4 +1,4 @@
-! $XTermId: XTerm.ad,v 1.92 2010/01/04 22:16:17 tom Exp $
+! $XTermId: XTerm.ad,v 1.93 2010/06/15 10:55:59 tom Exp $
! -----------------------------------------------------------------------------
! this file is part of xterm
!
@@ -220,6 +220,12 @@
! vt100 widget:
*SimpleMenu*borderWidth: 2
+! xterm can switch at runtime between bitmap (default) and TrueType fonts.
+! The "faceSize" resource controls the size of the latter. However, it was
+! originally given with a size that makes the two types of fonts different
+! sizes. Uncomment this line to use the same size as "fixed".
+!*faceSize: 8
+
! Here is a pattern that is useful for double-clicking on a URL:
!*charClass: 33:48,35:48,37-38:48,43-47:48,58:48,61:48,63-64:48,95:48,126:48
!
diff --git a/aclocal.m4 b/aclocal.m4
index f9efe05..0a05548 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-dnl $XTermId: aclocal.m4,v 1.284 2010/06/05 15:31:37 tom Exp $
+dnl $XTermId: aclocal.m4,v 1.285 2010/06/14 21:44:02 tom Exp $
dnl
dnl ---------------------------------------------------------------------------
dnl
@@ -31,6 +31,9 @@ dnl sale, use or other dealings in this Software without prior written
dnl authorization.
dnl
dnl ---------------------------------------------------------------------------
+dnl See
+dnl http://invisible-island.net/autoconf/autoconf.html
+dnl ---------------------------------------------------------------------------
dnl ---------------------------------------------------------------------------
dnl AM_LANGINFO_CODESET version: 3 updated: 2002/10/27 23:21:42
dnl -------------------
@@ -2053,7 +2056,7 @@ foo.c_ospeed = B9600;
test "$cf_cv_termio_c_ispeed" = yes && AC_DEFINE(HAVE_TERMIO_C_ISPEED)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_TRY_PKG_CONFIG version: 3 updated: 2010/06/02 05:03:05
+dnl CF_TRY_PKG_CONFIG version: 4 updated: 2010/06/14 17:42:30
dnl -----------------
dnl This is a simple wrapper to use for pkg-config, for libraries which may be
dnl available in that form.
@@ -2068,6 +2071,8 @@ if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists $1; then
CF_VERBOSE(found package $1)
cf_pkgconfig_incs="`$PKG_CONFIG --cflags $1 2>/dev/null`"
cf_pkgconfig_libs="`$PKG_CONFIG --libs $1 2>/dev/null`"
+ CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs)
+ CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs)
CF_ADD_CFLAGS($cf_pkgconfig_incs)
CF_ADD_LIBS($cf_pkgconfig_libs)
ifelse([$2],,:,[$2])
@@ -2817,7 +2822,7 @@ if test -n "$cf_xopen_source" ; then
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_X_ATHENA version: 15 updated: 2010/06/02 05:03:05
+dnl CF_X_ATHENA version: 16 updated: 2010/06/14 17:42:30
dnl -----------
dnl Check for Xaw (Athena) libraries
dnl
@@ -2871,17 +2876,11 @@ if test "$PKG_CONFIG" != none ; then
lib${cf_x_athena} \
lib${cf_x_athena}-devel
do
- if "$PKG_CONFIG" --exists $cf_athena_pkg; then
- CF_VERBOSE(found package $cf_athena_pkg)
- cf_x_athena_inc="`$PKG_CONFIG --cflags $cf_athena_pkg 2>/dev/null`"
- cf_x_athena_lib="`$PKG_CONFIG --libs $cf_athena_pkg 2>/dev/null`"
- CF_ADD_CFLAGS($cf_x_athena_inc)
- CF_ADD_LIBS($cf_x_athena_lib)
-
+ CF_TRY_PKG_CONFIG($cf_athena_pkg,[
+ cf_x_athena_lib="$cf_pkgconfig_libs"
CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
- break
- fi
+ break])
done
fi
@@ -3120,7 +3119,7 @@ AC_SUBST(HAVE_TYPE_FCCHAR32)
AC_SUBST(HAVE_TYPE_XFTCHARSPEC)
])
dnl ---------------------------------------------------------------------------
-dnl CF_X_TOOLKIT version: 14 updated: 2010/06/02 05:03:05
+dnl CF_X_TOOLKIT version: 15 updated: 2010/06/14 17:42:30
dnl ------------
dnl Check for X Toolkit libraries
dnl
@@ -3132,6 +3131,23 @@ AC_REQUIRE([CF_CHECK_CACHE])
cf_have_X_LIBS=no
CF_TRY_PKG_CONFIG(xt,[
+
+ # workaround for broken ".pc" files used for X Toolkit.
+ case "x$X_PRE_LIBS" in #(vi
+ *-lICE*)
+ case "x$LIBS" in #(vi
+ *-lICE*) #(vi
+ ;;
+ *)
+ CF_VERBOSE(work around broken package)
+ CF_VERBOSE(...before $LIBS)
+ LIBS=`echo "$LIBS" | sed -e "s/[[ ]][[ ]]*/ /g" -e "s,-lXt ,-lXt $X_PRE_LIBS ," -e 's/ / /g'`
+ CF_VERBOSE(...after $LIBS)
+ ;;
+ esac
+ ;;
+ esac
+
cf_have_X_LIBS=yes
],[
diff --git a/charproc.c b/charproc.c
index b0a6b3a..a0b2d7f 100644
--- a/charproc.c
+++ b/charproc.c
@@ -1,4 +1,4 @@
-/* $XTermId: charproc.c,v 1.1061 2010/06/04 09:29:09 tom Exp $ */
+/* $XTermId: charproc.c,v 1.1070 2010/06/20 21:39:59 tom Exp $ */
/*
@@ -216,7 +216,7 @@ static void HandleStructNotify PROTO_XT_EV_HANDLER_ARGS;
#endif
#endif
-static char *_Font_Selected_ = "yes"; /* string is arbitrary */
+static String _Font_Selected_ = "yes"; /* string is arbitrary */
static char defaultTranslations[] =
"\
@@ -752,7 +752,7 @@ static XtResource xterm_resources[] =
Dres(XtNfaceSize, XtCFaceSize, misc.face_size[0], DEFFACESIZE),
Sres(XtNfaceName, XtCFaceName, misc.face_name, DEFFACENAME),
Sres(XtNfaceNameDoublesize, XtCFaceNameDoublesize, misc.face_wide_name, DEFFACENAME),
- Bres(XtNrenderFont, XtCRenderFont, misc.render_font, True),
+ Sres(XtNrenderFont, XtCRenderFont, misc.render_font_s, "default"),
#endif
};
@@ -1347,6 +1347,22 @@ one_if_default(int which)
return result;
}
+#if OPT_C1_PRINT || OPT_WIDE_CHARS
+#define ParseSOS(screen) ((screen)->c1_printable == 0)
+#else
+#define ParseSOS(screen) 0
+#endif
+
+#define ResetState(sp) (sp)->parsestate = (sp)->groundtable
+
+static void
+illegal_parse(XtermWidget xw, unsigned c, struct ParseState *sp)
+{
+ ResetState(sp);
+ sp->nextstate = sp->parsestate[E2A(c)];
+ Bell(xw, XkbBI_MinorError, 0);
+}
+
static Boolean
doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
{
@@ -1487,8 +1503,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
break;
/* FALLTHRU */
case 'R':
- sp->parsestate = sp->groundtable;
- sp->nextstate = sp->parsestate[E2A(c)];
+ illegal_parse(xw, c, sp);
TRACE(("Reset to ground state (brokenLinuxOSC)\n"));
break;
}
@@ -1507,18 +1522,18 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
&& sp->parsestate == sos_table
&& c < 32) {
switch (c) {
- case 5: /* FALLTHRU */
- case 8: /* FALLTHRU */
- case 9: /* FALLTHRU */
- case 10: /* FALLTHRU */
- case 11: /* FALLTHRU */
- case 12: /* FALLTHRU */
- case 13: /* FALLTHRU */
- case 14: /* FALLTHRU */
- case 15: /* FALLTHRU */
- case 24:
- sp->parsestate = sp->groundtable;
- sp->nextstate = sp->parsestate[E2A(c)];
+ case ANSI_EOT: /* FALLTHRU */
+ case ANSI_BS: /* FALLTHRU */
+ case ANSI_HT: /* FALLTHRU */
+ case ANSI_LF: /* FALLTHRU */
+ case ANSI_VT: /* FALLTHRU */
+ case ANSI_FF: /* FALLTHRU */
+ case ANSI_CR: /* FALLTHRU */
+ case ANSI_SO: /* FALLTHRU */
+ case ANSI_SI: /* FALLTHRU */
+ case ANSI_XON: /* FALLTHRU */
+ case ANSI_CAN:
+ illegal_parse(xw, c, sp);
TRACE(("Reset to ground state (brokenStringTerm)\n"));
break;
}
@@ -1645,7 +1660,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case CASE_GROUND_STATE:
TRACE(("CASE_GROUND_STATE - exit ignore mode\n"));
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_IGNORE:
@@ -1665,10 +1680,10 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
if (sp->string_used)
sp->string_area[--(sp->string_used)] = '\0';
do_osc(xw, sp->string_area, sp->string_used, (int) c);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
} else {
/* bell */
- Bell(XkbBI_TerminalBell, 0);
+ Bell(xw, XkbBI_TerminalBell, 0);
}
break;
@@ -1721,7 +1736,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
count = 1;
while ((count-- > 0)
&& (TabToPrevStop(xw))) ;
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_CHT:
@@ -1730,7 +1745,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
count = 1;
while ((count-- > 0)
&& (TabToNextStop(xw))) ;
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_TAB:
@@ -1741,30 +1756,30 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case CASE_SI:
screen->curgl = 0;
if_OPT_VT52_MODE(screen, {
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
});
break;
case CASE_SO:
screen->curgl = 1;
if_OPT_VT52_MODE(screen, {
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
});
break;
case CASE_DECDHL:
xterm_DECDHL(xw, c == '3');
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_DECSWL:
xterm_DECSWL(xw);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_DECDWL:
xterm_DECDWL(xw);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_SCR_STATE:
@@ -1853,7 +1868,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
if ((row = param[0]) < 1)
row = 1;
InsertChar(xw, (unsigned) row);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_CUU:
@@ -1861,7 +1876,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
if ((row = param[0]) < 1)
row = 1;
CursorUp(screen, row);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_CUD:
@@ -1869,7 +1884,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
if ((row = param[0]) < 1)
row = 1;
CursorDown(screen, row);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_CUF:
@@ -1877,7 +1892,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
if ((col = param[0]) < 1)
col = 1;
CursorForward(screen, col);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_CUB:
@@ -1885,7 +1900,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
if ((col = param[0]) < 1)
col = 1;
CursorBack(xw, col);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_CUP:
@@ -1898,7 +1913,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
if (nparam < 2 || (col = param[1]) < 1)
col = 1;
CursorSet(screen, row - 1, col - 1, xw->flags);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_VPA:
@@ -1906,7 +1921,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
if ((row = param[0]) < 1)
row = 1;
CursorSet(screen, row - 1, screen->cur_col, xw->flags);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_HPA:
@@ -1914,7 +1929,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
if ((col = param[0]) < 1)
col = 1;
CursorSet(screen, screen->cur_row, col - 1, xw->flags);
- sp->parsestate = sp->groundtable;
+ ResetState(sp);
break;
case CASE_HP_BUGGY_LL:
@@ -1924,26 +1939,26 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
the screen, regardless of what terminfo says. */
if (screen->hp_ll_bc)
Reply to: