summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--programs/xterm/MANIFEST4
-rw-r--r--programs/xterm/Tekproc.c4
-rw-r--r--programs/xterm/XTerm.ad6
-rw-r--r--programs/xterm/button.c247
-rw-r--r--programs/xterm/charproc.c21
-rw-r--r--programs/xterm/input.c5
-rw-r--r--programs/xterm/main.c124
-rw-r--r--programs/xterm/menu.c22
-rw-r--r--programs/xterm/misc.c66
-rw-r--r--programs/xterm/os2main.c20
-rw-r--r--programs/xterm/ptyx.h7
-rw-r--r--programs/xterm/scrollbar.c6
-rw-r--r--programs/xterm/trace.c6
-rw-r--r--programs/xterm/version.h6
-rw-r--r--programs/xterm/vttests/16colors.sh4
-rw-r--r--programs/xterm/vttests/8colors.sh4
-rwxr-xr-xprograms/xterm/vttests/acolors.sh58
-rw-r--r--programs/xterm/vttests/doublechars.sh4
-rw-r--r--programs/xterm/vttests/dynamic.sh4
-rw-r--r--programs/xterm/vttests/fonts.sh4
-rw-r--r--programs/xterm/vttests/resize.sh4
-rw-r--r--programs/xterm/vttests/title.sh4
-rw-r--r--programs/xterm/wcwidth.c4
-rw-r--r--programs/xterm/wcwidth.h7
-rw-r--r--programs/xterm/xterm.dat7
-rw-r--r--programs/xterm/xterm.h13
-rw-r--r--programs/xterm/xterm.log.html76
-rw-r--r--programs/xterm/xterm.man33
28 files changed, 522 insertions, 248 deletions
diff --git a/programs/xterm/MANIFEST b/programs/xterm/MANIFEST
index 5db9606e6..6a4e1c195 100644
--- a/programs/xterm/MANIFEST
+++ b/programs/xterm/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm, version xterm-159
+MANIFEST for xterm, version xterm-168
--------------------------------------------------------------------------------
MANIFEST this file
256colres.h resource-definitions for 256-color mode
@@ -74,6 +74,7 @@ trace.c debugging trace functions for 'xterm'
trace.h interface of trace.c
ttysvr.c simple tty server for AMOEBA port of 'xterm'
util.c miscellaneous utility functions for 'xterm'
+uxterm wrapper script to make unicode-xterm
version.h version of xterm
vms.c VMS version of xterm's spawn(), etc.
vms.h system headers and definitions for vms.c
@@ -112,6 +113,7 @@ vttests/256colors2.pl fancy test-script for 256-colors
vttests/88colors.pl sample script showing 88-colors
vttests/88colors2.pl sample script showing 88-colors
vttests/8colors.sh test-script to illustrate 8-colors
+vttests/acolors.sh test-script to illustrate ANSI color set/query
vttests/doublechars.sh test script to demonstrate doublesize chars
vttests/dynamic.sh script to illustrate the dynamic colors control sequence
vttests/fonts.sh script to demonstrate font-switching sequences
diff --git a/programs/xterm/Tekproc.c b/programs/xterm/Tekproc.c
index 36a24ce15..ccc8c55b6 100644
--- a/programs/xterm/Tekproc.c
+++ b/programs/xterm/Tekproc.c
@@ -3,7 +3,7 @@
*
* Warning, there be crufty dragons here.
*/
-/* $XFree86: xc/programs/xterm/Tekproc.c,v 3.36 2002/03/26 01:46:39 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/Tekproc.c,v 3.37 2002/04/28 19:04:19 dickey Exp $ */
/*
@@ -390,7 +390,7 @@ TekInit(void)
XtNright, XawChainRight,
XtNbottom, XawChainBottom,
#endif
- 0);
+ (XtPointer) 0);
}
return (!Tfailed);
}
diff --git a/programs/xterm/XTerm.ad b/programs/xterm/XTerm.ad
index faa59f195..bbd94fd36 100644
--- a/programs/xterm/XTerm.ad
+++ b/programs/xterm/XTerm.ad
@@ -3,9 +3,11 @@
!
!
!
-! $XFree86: xc/programs/xterm/XTerm.ad,v 3.22 2002/01/05 22:05:02 dickey Exp $
+! $XFree86: xc/programs/xterm/XTerm.ad,v 3.23 2002/08/12 00:36:32 dickey Exp $
-XTerm.JoinSession:False
+! This is nonsense: if the xterm has no session management capabilities,
+! it is useless, and if it does, it is harmful.
+!XTerm.JoinSession:False
*SimpleMenu*BackingStore: NotUseful
*SimpleMenu*menuLabel.font: -adobe-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-*
diff --git a/programs/xterm/button.c b/programs/xterm/button.c
index 313d924cb..791060d86 100644
--- a/programs/xterm/button.c
+++ b/programs/xterm/button.c
@@ -50,7 +50,7 @@
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
*/
-/* $XFree86: xc/programs/xterm/button.c,v 3.68 2002/08/12 00:36:32 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/button.c,v 3.69 2002/08/24 18:54:38 dickey Exp $ */
/*
button.c Handles button events in the terminal emulator.
@@ -314,9 +314,9 @@ SendLocatorPosition(Widget w, XEvent * event)
LocatorCoords(row, col, event->xbutton.x, event->xbutton.y, oor);
/*
- * DECterm mouse:
- *
- * ESCAPE '[' event ; mask ; row ; column '&' 'w'
+ * DECterm mouse:
+ *
+ * ESCAPE '[' event ; mask ; row ; column '&' 'w'
*/
reply.a_type = CSI;
@@ -592,12 +592,62 @@ InitLocatorFilter(XtermWidget w)
MotionOn(screen, term);
}
+void
+CheckLocatorPosition(Widget w, XEvent * event)
+{
+ TScreen *screen = &((XtermWidget) w)->screen;
+ int row, col;
+ Boolean oor;
+ int state;
+
+ LocatorCoords(row, col, event->xbutton.x, event->xbutton.y, oor);
+
+ /*
+ * Send report if the pointer left the filter rectangle, if
+ * the pointer left the window, or if the filter rectangle
+ * had no coordinates and the pointer re-entered the window.
+ */
+ if (oor || (screen->loc_filter_top == LOC_FILTER_POS) ||
+ (col < screen->loc_filter_left) ||
+ (col > screen->loc_filter_right) ||
+ (row < screen->loc_filter_top) ||
+ (row > screen->loc_filter_bottom)) {
+ /* Filter triggered - disable it */
+ screen->loc_filter = FALSE;
+ MotionOff(screen, term);
+
+ reply.a_type = CSI;
+ if (oor) {
+ reply.a_nparam = 1;
+ reply.a_param[0] = 0; /* Event - 0 = locator unavailable */
+ } else {
+ ButtonState(state, event->xbutton.state);
+
+ reply.a_nparam = 4;
+ reply.a_param[0] = 10; /* Event - 10 = locator outside filter */
+ reply.a_param[1] = state;
+ reply.a_param[2] = row;
+ reply.a_param[3] = col;
+ }
+
+ reply.a_inters = '&';
+ reply.a_final = 'w';
+ unparseseq(&reply, screen->respond);
+
+ if (screen->locator_reset) {
+ MotionOff(screen, term);
+ screen->send_mouse_pos = MOUSE_OFF;
+ }
+ }
+}
+#endif /* OPT_DEC_LOCATOR */
+
#if OPT_READLINE
static int
isClick1_clean(XEvent * event)
{
- register TScreen *screen = &term->screen;
- register int delta;
+ TScreen *screen = &term->screen;
+ int delta;
if (!(event->type == ButtonPress || event->type == ButtonRelease)
/* Disable on Shift-Click-1, including the application-mouse modes */
@@ -691,8 +741,8 @@ CheckSecondPress3(XEvent * event)
static int
rowOnCurrentLine(int line, int *deltap) /* must be XButtonEvent */
{
- register TScreen *screen = &term->screen;
- register int l1, l2;
+ TScreen *screen = &term->screen;
+ int l1, l2;
*deltap = 0;
if (line == screen->cur_row)
@@ -714,7 +764,7 @@ rowOnCurrentLine(int line, int *deltap) /* must be XButtonEvent */
static int
eventRow(XEvent * event) /* must be XButtonEvent */
{
- register TScreen *screen = &term->screen;
+ TScreen *screen = &term->screen;
return (event->xbutton.y - screen->border) / FontHeight(screen);
}
@@ -722,7 +772,7 @@ eventRow(XEvent * event) /* must be XButtonEvent */
static int
eventColBetween(XEvent * event) /* must be XButtonEvent */
{
- register TScreen *screen = &term->screen;
+ TScreen *screen = &term->screen;
/* 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)
@@ -732,9 +782,9 @@ eventColBetween(XEvent * event) /* must be XButtonEvent */
static int
ReadLineMovePoint(int col, int ldelta)
{
- register TScreen *screen = &term->screen;
+ TScreen *screen = &term->screen;
Char line[6];
- register int count = 0;
+ int count = 0;
col += ldelta * (screen->max_col + 1) - screen->cur_col;
if (col == 0)
@@ -756,7 +806,7 @@ ReadLineMovePoint(int col, int ldelta)
static int
ReadLineDelete(int r1, int c1, int r2, int c2)
{
- register TScreen *screen = &term->screen;
+ TScreen *screen = &term->screen;
int del;
del = c2 - c1 + (r2 - r1) * (screen->max_col + 1);
@@ -768,56 +818,6 @@ ReadLineDelete(int r1, int c1, int r2, int c2)
}
#endif /* OPT_READLINE */
-void
-CheckLocatorPosition(Widget w, XEvent * event)
-{
- TScreen *screen = &((XtermWidget) w)->screen;
- int row, col;
- Boolean oor;
- int state;
-
- LocatorCoords(row, col, event->xbutton.x, event->xbutton.y, oor);
-
- /*
- * Send report if the pointer left the filter rectangle, if
- * the pointer left the window, or if the filter rectangle
- * had no coordinates and the pointer re-entered the window.
- */
- if (oor || (screen->loc_filter_top == LOC_FILTER_POS) ||
- (col < screen->loc_filter_left) ||
- (col > screen->loc_filter_right) ||
- (row < screen->loc_filter_top) ||
- (row > screen->loc_filter_bottom)) {
- /* Filter triggered - disable it */
- screen->loc_filter = FALSE;
- MotionOff(screen, term);
-
- reply.a_type = CSI;
- if (oor) {
- reply.a_nparam = 1;
- reply.a_param[0] = 0; /* Event - 0 = locator unavailable */
- } else {
- ButtonState(state, event->xbutton.state);
-
- reply.a_nparam = 4;
- reply.a_param[0] = 10; /* Event - 10 = locator outside filter */
- reply.a_param[1] = state;
- reply.a_param[2] = row;
- reply.a_param[3] = col;
- }
-
- reply.a_inters = '&';
- reply.a_final = 'w';
- unparseseq(&reply, screen->respond);
-
- if (screen->locator_reset) {
- MotionOff(screen, term);
- screen->send_mouse_pos = MOUSE_OFF;
- }
- }
-}
-#endif /* OPT_DEC_LOCATOR */
-
/* ^XM-G<line+' '><col+' '> */
void
DiredButton(Widget w GCC_UNUSED,
@@ -825,9 +825,9 @@ DiredButton(Widget w GCC_UNUSED,
String * params GCC_UNUSED, /* selections */
Cardinal * num_params GCC_UNUSED)
{
- register TScreen *screen = &term->screen;
+ TScreen *screen = &term->screen;
Char Line[6];
- register unsigned line, col;
+ unsigned line, col;
if (event->type == ButtonPress || event->type == ButtonRelease) {
line = (event->xbutton.y - screen->border) / FontHeight(screen);
@@ -848,9 +848,9 @@ ReadLineButton(Widget w GCC_UNUSED,
String * params GCC_UNUSED, /* selections */
Cardinal * num_params GCC_UNUSED)
{
- register TScreen *screen = &term->screen;
+ TScreen *screen = &term->screen;
Char Line[6];
- register int line, col, ldelta = 0;
+ int line, col, ldelta = 0;
if (!(event->type == ButtonPress || event->type == ButtonRelease)
|| (screen->send_mouse_pos != MOUSE_OFF) || ExtendingSelection)
@@ -908,10 +908,10 @@ ViButton(Widget w GCC_UNUSED,
String * params GCC_UNUSED, /* selections */
Cardinal * num_params GCC_UNUSED)
{
- register TScreen *screen = &term->screen;
+ TScreen *screen = &term->screen;
int pty = screen->respond;
Char Line[6];
- register int line;
+ int line;
if (event->type == ButtonPress || event->type == ButtonRelease) {
@@ -943,7 +943,7 @@ HandleSelectExtend(Widget w,
String * params GCC_UNUSED,
Cardinal * num_params GCC_UNUSED)
{
- register TScreen *screen;
+ TScreen *screen;
int row, col;
if (!IsXtermWidget(w))
@@ -1349,7 +1349,7 @@ _WriteSelectionData(TScreen * screen, Char * line, int length)
/* Doing this one line at a time may no longer be necessary
because v_write has been re-written. */
- register Char *lag, *cp, *end;
+ Char *lag, *cp, *end;
/* in the VMS version, if tt_pasting isn't set to TRUE then qio
reads aren't blocked and an infinite loop is entered, where the
@@ -1520,7 +1520,7 @@ HandleInsertSelection(Widget w,
{
#if OPT_READLINE
int ldelta;
- register TScreen *screen = &((XtermWidget) w)->screen;
+ TScreen *screen = &((XtermWidget) w)->screen;
#endif
if (SendMousePosition(w, event))
@@ -1585,7 +1585,7 @@ HandleSelectStart(Widget w,
String * params GCC_UNUSED,
Cardinal * num_params GCC_UNUSED)
{
- register TScreen *screen;
+ TScreen *screen;
int startrow, startcol;
if (!IsXtermWidget(w))
@@ -1610,7 +1610,7 @@ HandleKeyboardSelectStart(Widget w,
String * params GCC_UNUSED,
Cardinal * num_params GCC_UNUSED)
{
- register TScreen *screen;
+ TScreen *screen;
if (!IsXtermWidget(w))
return;
@@ -1620,7 +1620,7 @@ HandleKeyboardSelectStart(Widget w,
}
static void
-TrackDown(register XButtonEvent * event)
+TrackDown(XButtonEvent * event)
{
int startrow, startcol;
@@ -1882,11 +1882,10 @@ ExtendExtend(int row, int col)
}
void
-HandleStartExtend(
- Widget w,
- XEvent * event, /* must be XButtonEvent* */
- String * params, /* unused */
- Cardinal * num_params) /* unused */
+HandleStartExtend(Widget w,
+ XEvent * event, /* must be XButtonEvent* */
+ String * params, /* unused */
+ Cardinal * num_params) /* unused */
{
do_start_extend(w, event, params, num_params, False);
}
@@ -1901,11 +1900,11 @@ HandleKeyboardStartExtend(Widget w,
}
void
-ScrollSelection(register TScreen * screen, register int amount)
+ScrollSelection(TScreen * screen, int amount)
{
- register int minrow = -screen->savedlines - screen->topline;
- register int maxrow = screen->max_row - screen->topline;
- register int maxcol = screen->max_col;
+ int minrow = -screen->savedlines - screen->topline;
+ int maxrow = screen->max_row - screen->topline;
+ int maxcol = screen->max_col;
#define scroll_update_one(row, col) \
row += amount; \
@@ -1971,8 +1970,8 @@ iswide(int i)
#endif
static void
-PointToRowCol(register int y,
- register int x,
+PointToRowCol(int y,
+ int x,
int *r,
int *c)
/* Convert pixel coordinates to character coordinates.
@@ -1980,8 +1979,8 @@ PointToRowCol(register int y,
Columns are clipped between to be 0 or greater, but are not clipped to some
maximum value. */
{
- register TScreen *screen = &term->screen;
- register int row, col;
+ TScreen *screen = &term->screen;
+ int row, col;
row = (y - screen->border) / FontHeight(screen);
if (row < firstValidRow)
@@ -2010,11 +2009,11 @@ PointToRowCol(register int y,
}
static int
-LastTextCol(register int row)
+LastTextCol(int row)
{
- register TScreen *screen = &term->screen;
- register int i;
- register Char *ch;
+ TScreen *screen = &term->screen;
+ int i;
+ Char *ch;
if ((row += screen->topline) + screen->savedlines >= 0) {
for (i = screen->max_col,
@@ -2113,10 +2112,9 @@ static int charClass[256] =
/* *INDENT-ON* */
int
-SetCharacterClassRange(
- register int low, /* in range of [0..255] */
- register int high,
- register int value) /* arbitrary */
+SetCharacterClassRange(int low, /* in range of [0..255] */
+ int high,
+ int value) /* arbitrary */
{
if (low < 0 || high > 255 || high < low)
@@ -2158,7 +2156,6 @@ class_of(TScreen * screen, int row, int col)
* sets startSRow startSCol endSRow endSCol
* ensuring that they have legal values
*/
-
static void
ComputeSelect(int startRow,
int startCol,
@@ -2166,9 +2163,9 @@ ComputeSelect(int startRow,
int endCol,
Bool extend)
{
- register TScreen *screen = &term->screen;
- register int length;
- register int cclass;
+ TScreen *screen = &term->screen;
+ int length;
+ int cclass;
TRACE(("ComputeSelect(startRow=%d, startCol=%d, endRow=%d, endCol=%d, %sextend)\n",
startRow, startCol, endRow, endCol, extend ? "" : "no"));
@@ -2309,14 +2306,14 @@ ComputeSelect(int startRow,
}
void
-TrackText(register int frow,
- register int fcol,
- register int trow,
- register int tcol)
+TrackText(int frow,
+ int fcol,
+ int trow,
+ int tcol)
/* Guaranteed (frow, fcol) <= (trow, tcol) */
{
- register int from, to;
- register TScreen *screen = &term->screen;
+ int from, to;
+ TScreen *screen = &term->screen;
int old_startrow, old_startcol, old_endrow, old_endcol;
TRACE(("TrackText(frow=%d, fcol=%d, trow=%d, tcol=%d)\n",
@@ -2360,14 +2357,14 @@ TrackText(register int frow,
}
static void
-ReHiliteText(register int frow,
- register int fcol,
- register int trow,
- register int tcol)
+ReHiliteText(int frow,
+ int fcol,
+ int trow,
+ int tcol)
/* Guaranteed that (frow, fcol) <= (trow, tcol) */
{
- register TScreen *screen = &term->screen;
- register int i;
+ TScreen *screen = &term->screen;
+ int i;
if (frow < 0)
frow = fcol = 0;
@@ -2405,8 +2402,8 @@ SaltTextAway(int crow, int ccol, int row, int col,
/* Guaranteed that (crow, ccol) <= (row, col), and that both points are valid
(may have row = screen->max_row+1, col = 0) */
{
- register TScreen *screen = &term->screen;
- register int i, j = 0;
+ TScreen *screen = &term->screen;
+ int i, j = 0;
int eol;
char *line;
Char *lp;
@@ -2665,8 +2662,8 @@ ConvertSelection(Widget w,
static void
LoseSelection(Widget w, Atom * selection)
{
- register TScreen *screen;
- register Atom *atomP;
+ TScreen *screen;
+ Atom *atomP;
Cardinal i;
if (!IsXtermWidget(w))
@@ -2717,7 +2714,7 @@ SelectionDone(Widget w GCC_UNUSED,
}
static void
-_OwnSelection(register XtermWidget termw,
+_OwnSelection(XtermWidget termw,
String * selections,
Cardinal count)
{
@@ -2799,7 +2796,7 @@ _OwnSelection(register XtermWidget termw,
}
void
-DisownSelection(register XtermWidget termw)
+DisownSelection(XtermWidget termw)
{
Atom *atoms = termw->screen.selection_atoms;
Cardinal count = termw->screen.selection_count;
@@ -2847,12 +2844,12 @@ DisownSelection(register XtermWidget termw)
/* returns number of chars in line from scol to ecol out */
/* ARGSUSED */
static int
-Length(register TScreen * screen GCC_UNUSED,
- register int row,
- register int scol,
- register int ecol)
+Length(TScreen * screen GCC_UNUSED,
+ int row,
+ int scol,
+ int ecol)
{
- register int lastcol = LastTextCol(row);
+ int lastcol = LastTextCol(row);
if (ecol > lastcol)
ecol = lastcol;
@@ -2865,7 +2862,7 @@ SaveText(TScreen * screen,
int row,
int scol,
int ecol,
- register Char * lp, /* pointer to where to put the text */
+ Char * lp, /* pointer to where to put the text */
int *eol)
{
int i = 0;
@@ -2964,7 +2961,7 @@ BtnCode(XButtonEvent * event, int button)
#define MOUSE_LIMIT (255 - 32)
static void
-EditorButton(register XButtonEvent * event)
+EditorButton(XButtonEvent * event)
{
TScreen *screen = &term->screen;
int pty = screen->respond;
diff --git a/programs/xterm/charproc.c b/programs/xterm/charproc.c
index 0a1de82ed..f61611ee2 100644
--- a/programs/xterm/charproc.c
+++ b/programs/xterm/charproc.c
@@ -2,7 +2,7 @@
* $Xorg: charproc.c,v 1.6 2001/02/09 02:06:02 xorgcvs Exp $
*/
-/* $XFree86: xc/programs/xterm/charproc.c,v 3.132 2002/08/17 19:52:25 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/charproc.c,v 3.133 2002/08/24 18:54:38 dickey Exp $ */
/*
@@ -590,6 +590,7 @@ static XtResource resources[] =
#if OPT_WIDE_CHARS
Ires(XtNutf8, XtCUtf8, screen.utf8_mode, 3),
Bres(XtNwideChars, XtCWideChars, screen.wide_chars, FALSE),
+ Bres(XtNcjkWidth, XtCCjkWidth, misc.cjk_width, FALSE),
Bres(XtNvt100Graphics, XtCVT100Graphics, screen.vt100_graphics, TRUE),
Sres(XtNwideBoldFont, XtCWideBoldFont, misc.f_wb, DEFWIDEBOLDFONT),
Sres(XtNwideFont, XtCWideFont, misc.f_w, DEFWIDEFONT),
@@ -3145,7 +3146,7 @@ HandleStructNotify(Widget w GCC_UNUSED,
if (Vwin->menu_bar) {
XtVaGetValues(Vwin->menu_bar,
XtNheight, &Vwin->menu_height,
- NULL);
+ (XtPointer) 0);
TRACE(("...menu_height %d\n", Vwin->menu_height));
}
}
@@ -3764,7 +3765,6 @@ window_ops(XtermWidget termw)
XWindowAttributes win_attrs;
XTextProperty text;
unsigned int value_mask;
- Position x, y;
unsigned root_width, root_height;
switch (param[0]) {
@@ -3831,13 +3831,15 @@ window_ops(XtermWidget termw)
break;
case 13: /* Report the window's position */
- XtTranslateCoords(toplevel, 0, 0, &x, &y);
+ XGetWindowAttributes(screen->display,
+ WMFrameWindow(termw),
+ &win_attrs);
reply.a_type = CSI;
reply.a_pintro = 0;
reply.a_nparam = 3;
reply.a_param[0] = 3;
- reply.a_param[1] = x;
- reply.a_param[2] = y;
+ reply.a_param[1] = win_attrs.x;
+ reply.a_param[2] = win_attrs.y;
reply.a_inters = 0;
reply.a_final = 't';
unparseseq(&reply, screen->respond);
@@ -4795,6 +4797,7 @@ VTInitialize(Widget wrequest,
init_Bres(screen.vt100_graphics);
init_Bres(screen.wide_chars);
+ init_Bres(misc.cjk_width);
if (request->screen.utf8_mode) {
wnew->screen.wide_chars = True;
wnew->screen.utf8_mode = 2; /* disable further change */
@@ -5065,7 +5068,7 @@ VTRealize(Widget w,
unsigned long mask;
XGCValues xgcv;
- XtVaGetValues(shell, XtNiconX, &iconX, XtNiconY, &iconY, NULL);
+ XtVaGetValues(shell, XtNiconX, &iconX, XtNiconY, &iconY, (XtPointer) 0);
xtermComputeFontInfo(screen, &(screen->iconVwin), screen->fnt_icon, 0);
/* since only one client is permitted to select for Button
@@ -5085,7 +5088,9 @@ VTRealize(Widget w,
InputOutput, CopyFromParent,
*valuemask | CWBitGravity | CWBorderPixel,
values);
- XtVaSetValues(shell, XtNiconWindow, screen->iconVwin.window, NULL);
+ XtVaSetValues(shell,
+ XtNiconWindow, screen->iconVwin.window,
+ (XtPointer) 0);
XtRegisterDrawable(XtDisplay(term), screen->iconVwin.window, w);
mask = (GCFont | GCForeground | GCBackground |
diff --git a/programs/xterm/input.c b/programs/xterm/input.c
index 41121c727..c6b0f4746 100644
--- a/programs/xterm/input.c
+++ b/programs/xterm/input.c
@@ -2,7 +2,7 @@
* $Xorg: input.c,v 1.3 2000/08/17 19:55:08 cpqbld Exp $
*/
-/* $XFree86: xc/programs/xterm/input.c,v 3.57 2002/04/28 19:04:20 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/input.c,v 3.58 2002/08/24 18:54:38 dickey Exp $ */
/*
* Copyright 1999-2001,2002 by Thomas E. Dickey
@@ -707,8 +707,7 @@ Input(TKeyboard * keyboard,
* metaSendsEcape is true. Like eightBitInput, except
* that it is not associated with terminal settings.
*/
- if (eightbit
- && screen->meta_sends_esc
+ if (screen->meta_sends_esc
&& ((event->state & term->misc.meta_left) != 0
|| (event->state & term->misc.meta_right)) != 0) {
TRACE(("...input-char is modified by META\n"));
diff --git a/programs/xterm/main.c b/programs/xterm/main.c
index 88519b74c..c8f6fc55f 100644
--- a/programs/xterm/main.c
+++ b/programs/xterm/main.c
@@ -89,7 +89,7 @@ SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/xterm/main.c,v 3.156tsi Exp $ */
+/* $XFree86: xc/programs/xterm/main.c,v 3.156 2002/08/24 18:54:38 dickey Exp $ */
/* main.c */
@@ -125,6 +125,7 @@ SOFTWARE.
#if OPT_WIDE_CHARS
#include <charclass.h>
+#include <wcwidth.h>
#endif
#ifdef AMOEBA
@@ -357,6 +358,12 @@ ttyslot()
#define ttyslot() 1
#endif /* apollo */
+#if defined(UTMPX_FOR_UTMP)
+#define UTMP_STR utmpx
+#else
+#define UTMP_STR utmp
+#endif
+
#if defined(USE_UTEMPTER)
#include <utempter.h>
@@ -444,14 +451,14 @@ extern char *ttyname();
extern char *ptsname(int);
#endif
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" {
#endif
extern int tgetent(char *ptr, char *name);
extern char *tgetstr(char *name, char **ptr);
-#ifdef __cplusplus
+#ifdef __cplusplus
}
#endif
#ifndef VMS
@@ -941,6 +948,8 @@ static XrmOptionDescRec optionDescList[] = {
#if OPT_WIDE_CHARS
{"-wc", "*wideChars", XrmoptionNoArg, (caddr_t) "on"},
{"+wc", "*wideChars", XrmoptionNoArg, (caddr_t) "off"},
+{"-cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "on"},
+{"+cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "off"},
#endif
{"-wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "on"},
{"+wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "off"},
@@ -956,8 +965,9 @@ static XrmOptionDescRec optionDescList[] = {
{"-version", NULL, XrmoptionSkipNArgs, (caddr_t) NULL},
{"-class", NULL, XrmoptionSkipArg, (caddr_t) NULL},
{"-e", NULL, XrmoptionSkipLine, (caddr_t) NULL},
+{"-into", NULL, XrmoptionSkipArg, (caddr_t) NULL},
/* bogus old compatibility stuff for which there are
- standard XtAppInitialize options now */
+ standard XtOpenApplication options now */
{"%", "*tekGeometry", XrmoptionStickyArg, (caddr_t) NULL},
{"#", ".iconGeometry",XrmoptionStickyArg, (caddr_t) NULL},
{"-T", ".title", XrmoptionSepArg, (caddr_t) NULL},
@@ -1083,6 +1093,7 @@ static OptionHelp options[] = {
{ "-/+pob", "turn on/off pop on bell" },
#if OPT_WIDE_CHARS
{ "-/+wc", "turn on/off wide-character mode" },
+{ "-/+cjk_width", "turn on/off legacy CJK width convention" },
#endif
{ "-/+wf", "turn on/off wait for map before command exec" },
{ "-e command args ...", "command to execute" },
@@ -1098,6 +1109,7 @@ static OptionHelp options[] = {
{ "-C", "intercept console messages (not supported)" },
#endif
{ "-Sccn", "slave mode on \"ttycc\", file descriptor \"n\"" },
+{ "-into windowId", "use the window id given to -into as the parent window rather than the default root window" },
#if OPT_ZICONBEEP
{ "-ziconbeep percent", "beep and flag icon of window having hidden output" },
#endif
@@ -1287,6 +1299,28 @@ int number_ourTopLevelShellArgs = 2;
Bool waiting_for_initial_map;
+static void
+die_callback(Widget w GCC_UNUSED,
+ XtPointer client_data GCC_UNUSED,
+ XtPointer call_data GCC_UNUSED)
+{
+ Cleanup(0);
+}
+
+static void
+save_callback(Widget w GCC_UNUSED,
+ XtPointer client_data GCC_UNUSED,
+ XtPointer call_data)
+{
+ XtCheckpointToken token = (XtCheckpointToken) call_data;
+ /* we have nothing to save */
+ token->save_success = True;
+}
+
+#if OPT_WIDE_CHARS
+int (*my_wcwidth) (wchar_t);
+#endif
+
/*
* DeleteWindow(): Action proc to implement ICCCM delete_window.
*/
@@ -1503,6 +1537,7 @@ main(int argc, char *argv[]ENVP_ARG)
register TScreen *screen;
int mode;
char *my_class = DEFCLASS;
+ Window winToEmbedInto = None;
#ifndef AMOEBA
/* extra length in case longer tty name like /dev/ttyq255 */
@@ -1534,7 +1569,7 @@ main(int argc, char *argv[]ENVP_ARG)
/* Do these first, since we may not be able to open the display */
ProgramName = argv[0];
TRACE_OPTS(options, optionDescList, XtNumber(optionDescList));
- TRACE_ARGV("Before XtAppInitialize", argv);
+ TRACE_ARGV("Before XtOpenApplication", argv);
if (argc > 1) {
int n;
int unique = 2;
@@ -1851,11 +1886,12 @@ main(int argc, char *argv[]ENVP_ARG)
#endif
XtSetErrorHandler(xt_error);
- toplevel = XtAppInitialize(&app_con, my_class,
- optionDescList,
- XtNumber(optionDescList),
- &argc, argv, fallback_resources,
- NULL, 0);
+ toplevel = XtOpenApplication(&app_con, my_class,
+ optionDescList,
+ XtNumber(optionDescList),
+ &argc, argv, fallback_resources,
+ sessionShellWidgetClass,
+ NULL, 0);
XtSetErrorHandler((XtErrorHandler) 0);
XtGetApplicationResources(toplevel, (XtPointer) & resource,
@@ -1951,7 +1987,7 @@ main(int argc, char *argv[]ENVP_ARG)
#endif
/* Parse the rest of the command line */
- TRACE_ARGV("After XtAppInitialize", argv);
+ TRACE_ARGV("After XtOpenApplication", argv);
for (argc--, argv++; argc > 0; argc--, argv++) {
if (**argv != '-')
Syntax(*argv);
@@ -2001,6 +2037,17 @@ main(int argc, char *argv[]ENVP_ARG)
Syntax(*argv);
command_to_exec = ++argv;
break;
+ case 'i':
+ if (argc <= 1) {
+ Syntax(*argv);
+ } else {
+ char *endPtr;
+ --argc;
+ ++argv;
+ winToEmbedInto = (Window) strtol(argv[0], &endPtr, 10);
+ }
+ break;
+
default:
Syntax(*argv);
}
@@ -2019,7 +2066,7 @@ main(int argc, char *argv[]ENVP_ARG)
XtNright, XawChainRight,
XtNbottom, XawChainBottom,
#endif
- 0);
+ (XtPointer) 0);
/* this causes the initialize method to be called */
#if OPT_HP_FUNC_KEYS
@@ -2044,6 +2091,15 @@ main(int argc, char *argv[]ENVP_ARG)
inhibit |= I_TEK;
#endif
+#if OPT_WIDE_CHARS
+ my_wcwidth = &mk_wcwidth;
+ if (term->misc.cjk_width)
+ my_wcwidth = &mk_wcwidth_cjk;
+#endif
+
+ XtAddCallback(toplevel, XtNdieCallback, die_callback, NULL);
+ XtAddCallback(toplevel, XtNsaveCallback, save_callback, NULL);
+
/*
* Set title and icon name if not specified
*/
@@ -2244,6 +2300,19 @@ main(int argc, char *argv[]ENVP_ARG)
StartLog(screen);
}
#endif
+
+ if (winToEmbedInto != None) {
+ XtRealizeWidget(toplevel);
+ /*
+ * This should probably query the tree or check the attributes of
+ * winToEmbedInto in order to verify that it exists, but I'm still not
+ * certain what is the best way to do it -GPS
+ */
+ XReparentWindow(XtDisplay(toplevel),
+ XtWindow(toplevel),
+ winToEmbedInto, 0, 0);
+ }
+
for (;;) {
#if OPT_TEK4014
if (screen->TekEmu)
@@ -2716,17 +2785,9 @@ spawn(void)
struct passwd *pw = NULL;
char *login_name = NULL;
#ifdef HAVE_UTMP
-#if defined(UTMPX_FOR_UTMP)
- struct utmpx utmp;
-#else
- struct utmp utmp;
-#endif
+ struct UTMP_STR utmp;
#ifdef USE_SYSV_UTMP
-#if defined(UTMPX_FOR_UTMP)
- struct utmpx *utret;
-#else
- struct utmp *utret;
-#endif
+ struct UTMP_STR *utret;
#endif
#ifdef USE_LASTLOG
struct lastlog lastlog;
@@ -3145,7 +3206,7 @@ spawn(void)
/* Now is the time to set up our process group and
* open up the pty slave.
*/
-#ifdef USE_SYSV_PGRP
+#ifdef USE_SYSV_PGRP
#if defined(CRAY) && (OSMAJORVERSION > 5)
(void) setsid();
#else
@@ -3171,7 +3232,7 @@ spawn(void)
/* make /dev/tty work */
ioctl(tty, TCSETCTTY, 0);
#endif
-#ifdef USE_SYSV_PGRP
+#ifdef USE_SYSV_PGRP
/* We need to make sure that we are actually
* the process group leader for the pty. If
* we are, then we should now be able to open
@@ -4075,9 +4136,11 @@ spawn(void)
#ifdef USE_LOGIN_DASH_P
if (term->misc.login_shell && pw && added_utmp_entry)
- execl(bin_login, "login", "-p", "-f", login_name, 0);
+ execl(bin_login, "login", "-p", "-f", login_name, (void *) 0);
#endif
- execlp(ptr, (term->misc.login_shell ? shname_minus : shname), 0);
+ execlp(ptr,
+ (term->misc.login_shell ? shname_minus : shname),
+ (void *) 0);
/* Exec failed. */
fprintf(stderr, "%s: Could not exec %s: %s\n", xterm_name,
@@ -4591,13 +4654,8 @@ Exit(int n)
removeFromUtmp();
#elif defined(HAVE_UTMP)
#ifdef USE_SYSV_UTMP
-#if defined(UTMPX_FOR_UTMP)
- struct utmpx utmp;
- struct utmpx *utptr;
-#else
- struct utmp utmp;
- struct utmp *utptr;
-#endif
+ struct UTMP_STR utmp;
+ struct UTMP_STR *utptr;
#if defined(WTMP) && !defined(SVR4) && !(defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)))
int fd; /* for /etc/wtmp */
#endif
diff --git a/programs/xterm/menu.c b/programs/xterm/menu.c
index 65ee2e95c..f3a8f0664 100644
--- a/programs/xterm/menu.c
+++ b/programs/xterm/menu.c
@@ -45,7 +45,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
-/* $XFree86: xc/programs/xterm/menu.c,v 3.46 2002/04/28 19:04:21 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/menu.c,v 3.47 2002/08/12 00:36:33 dickey Exp $ */
#include <xterm.h>
#include <data.h>
@@ -1165,7 +1165,7 @@ do_activeicon(Widget gw GCC_UNUSED,
term->misc.active_icon = !term->misc.active_icon;
XtVaSetValues(shell, XtNiconWindow,
term->misc.active_icon ? screen->iconVwin.window : None,
- NULL);
+ (XtPointer) 0);
update_activeicon();
}
}
@@ -1497,9 +1497,9 @@ HandlePrintScreen(Widget w,
/* ARGSUSED */
void
HandlePrintControlMode(Widget w,
- XEvent * event GCC_UNUSED,
- String * params GCC_UNUSED,
- Cardinal * param_count GCC_UNUSED)
+ XEvent * event GCC_UNUSED,
+ String * params GCC_UNUSED,
+ Cardinal * param_count GCC_UNUSED)
{
do_print_redir(w, (XtPointer) 0, (XtPointer) 0);
}
@@ -2067,7 +2067,7 @@ SetItemSensitivity(Widget mi, XtArgVal val)
*/
static void
InitPopup(Widget gw,
- XtPointer closure GCC_UNUSED,
+ XtPointer closure,
XtPointer data GCC_UNUSED)
{
String params[2];
@@ -2092,12 +2092,12 @@ SetupShell(Widget * menus, MenuList * shell, Widget * menu_tops, int n, int m)
simpleMenuWidgetClass,
*menus,
XtNgeometry, NULL,
- NULL);
+ (XtPointer) 0);
XtAddCallback(shell[n].w, XtNpopupCallback, InitPopup, menu_names[n].internal_name);
XtVaGetValues(shell[n].w,
XtNlabel, &external_name,
- NULL);
+ (XtPointer) 0);
TRACE(("...SetupShell(%s) -> %s -> %#lx\n",
menu_names[n].internal_name,
@@ -2113,7 +2113,7 @@ SetupShell(Widget * menus, MenuList * shell, Widget * menu_tops, int n, int m)
: 0),
XtNmenuName, menu_names[n].internal_name,
XtNlabel, external_name,
- NULL);
+ (XtPointer) 0);
}
#endif
@@ -2137,7 +2137,7 @@ SetupMenus(Widget shell, Widget * forms, Widget * menus)
#if OPT_TOOLBAR
*forms = XtVaCreateManagedWidget("form",
formWidgetClass, shell,
- NULL);
+ (XtPointer) 0);
xtermAddInput(*forms);
/*
@@ -2153,7 +2153,7 @@ SetupMenus(Widget shell, Widget * forms, Widget * menus)
XtNbottom, XawChainTop,
XtNleft, XawChainLeft,
XtNright, XawChainLeft,
- NULL);
+ (XtPointer) 0);
if (shell == toplevel) { /* vt100 */
for (n = mainMenu; n <= fontMenu; n++) {
diff --git a/programs/xterm/misc.c b/programs/xterm/misc.c
index ceaad821f..6d4c4c461 100644
--- a/programs/xterm/misc.c
+++ b/programs/xterm/misc.c
@@ -2,7 +2,7 @@
* $Xorg: misc.c,v 1.3 2000/08/17 19:55:09 cpqbld Exp $
*/
-/* $XFree86: xc/programs/xterm/misc.c,v 3.68 2002/04/28 19:04:21 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/misc.c,v 3.69 2002/06/01 00:54:49 dickey Exp $ */
/*
*
@@ -591,6 +591,31 @@ HandleBellPropertyChange(
}
}
+Window
+WMFrameWindow(XtermWidget termw)
+{
+ Window win_root, win_current, *children;
+ Window win_parent = 0;
+ unsigned int nchildren;
+
+ win_current = XtWindow(termw);
+
+ /* find the parent which is child of root */
+ do {
+ if (win_parent)
+ win_current = win_parent;
+ XQueryTree((&termw->screen)->display,
+ win_current,
+ &win_root,
+ &win_parent,
+ &children,
+ &nchildren);
+ XFree(children);
+ } while (win_root != win_parent);
+
+ return win_current;
+}
+
#if OPT_MAXIMIZE
/*ARGSUSED*/
void
@@ -677,7 +702,6 @@ RequestMaximize(XtermWidget termw, int maximize)
{
register TScreen *screen = &termw->screen;
XWindowAttributes win_attrs;
- Position root_x, root_y;
unsigned root_width, root_height;
if (maximize) {
@@ -685,16 +709,15 @@ RequestMaximize(XtermWidget termw, int maximize)
if (QueryMaximize(screen, &root_width, &root_height)) {
if (XGetWindowAttributes(screen->display,
- VShellWindow,
+ WMFrameWindow(termw),
&win_attrs)) {
- XtTranslateCoords(toplevel, 0, 0, &root_x, &root_y);
if (screen->restore_data != True
|| screen->restore_width != root_width
|| screen->restore_height != root_height) {
screen->restore_data = True;
- screen->restore_x = root_x - win_attrs.x;
- screen->restore_y = root_y - win_attrs.y;
+ screen->restore_x = win_attrs.x;
+ screen->restore_y = win_attrs.y;
screen->restore_width = win_attrs.width;
screen->restore_height = win_attrs.height;
TRACE(("HandleMaximize: save window position %d,%d size %d,%d\n",
@@ -1033,7 +1056,7 @@ StartLog(register TScreen * screen)
setgid(screen->gid);
setuid(screen->uid);
- execl(shell, shell, "-c", &screen->logfile[1], 0);
+ execl(shell, shell, "-c", &screen->logfile[1], (void *) 0);
fprintf(stderr, "%s: Can't exec `%s'\n", xterm_name,
&screen->logfile[1]);
@@ -1225,10 +1248,9 @@ find_closest_color(Display * display, Colormap cmap, XColor * def)
}
static Boolean
-AllocateAnsiColor(
- XtermWidget pTerm,
- ColorRes * res,
- char *spec)
+AllocateAnsiColor(XtermWidget pTerm,
+ ColorRes * res,
+ char *spec)
{
XColor def;
register TScreen *screen = &pTerm->screen;
@@ -1238,7 +1260,8 @@ AllocateAnsiColor(
&& (XAllocColor(screen->display, cmap, &def)
|| find_closest_color(screen->display, cmap, &def))) {
SET_COLOR_RES(res, def.pixel);
- TRACE(("AllocateAnsiColor %s (pixel %#lx)\n", spec, def.pixel));
+ TRACE(("AllocateAnsiColor[%d] %s (pixel %#lx)\n",
+ (res - screen->Acolors), spec, def.pixel));
return (TRUE);
}
TRACE(("AllocateAnsiColor %s (failed)\n", spec));
@@ -1250,6 +1273,8 @@ Pixel
xtermGetColorRes(ColorRes * res)
{
if (!res->mode) {
+ TRACE(("xtermGetColorRes for Acolors[%d]\n",
+ res - term->screen.Acolors));
if (AllocateAnsiColor(term, res, res->resource)) {
res->mode = True;
} else {
@@ -1293,12 +1318,15 @@ ChangeAnsiColorRequest(
}
if (!strcmp(name, "?"))
ReportAnsiColorRequest(pTerm, color, final);
- else if (!AllocateAnsiColor(pTerm, &(pTerm->screen.Acolors[color]), name))
- break;
- /* FIXME: free old color somehow? We aren't for the other color
- * change style (dynamic colors).
- */
- r = True;
+ else {
+ TRACE(("ChangeAnsiColor for Acolors[%d]\n", color));
+ if (!AllocateAnsiColor(pTerm, &(pTerm->screen.Acolors[color]), name))
+ break;
+ /* FIXME: free old color somehow? We aren't for the other color
+ * change style (dynamic colors).
+ */
+ r = True;
+ }
}
if (r)
ChangeAnsiColors(pTerm);
@@ -2090,6 +2118,8 @@ Cleanup(int code)
}
}
+ XtVaSetValues(toplevel, XtNjoinSession, False);
+
if (screen->pid > 1) {
(void) kill_process_group(screen->pid, SIGHUP);
}
diff --git a/programs/xterm/os2main.c b/programs/xterm/os2main.c
index 6c903249d..4aa0d047b 100644
--- a/programs/xterm/os2main.c
+++ b/programs/xterm/os2main.c
@@ -5,7 +5,7 @@
#ifndef lint
static char *rid = "$XConsortium: main.c,v 1.227.1.2 95/06/29 18:13:15 kaleb Exp $";
#endif /* lint */
-/* $XFree86: xc/programs/xterm/os2main.c,v 3.52 2002/06/01 00:54:49 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/os2main.c,v 3.53 2002/08/17 19:52:26 dickey Exp $ */
/***********************************************************
@@ -72,6 +72,10 @@ SOFTWARE.
#include <X11/Xlocale.h>
#endif
+#if OPT_WIDE_CHARS
+#include <wcwidth.h>
+#endif
+
#if OPT_TOOLBAR
#if defined(HAVE_LIB_XAW)
@@ -450,6 +454,8 @@ static XrmOptionDescRec optionDescList[] = {
#if OPT_WIDE_CHARS
{"-wc", "*wideChars", XrmoptionNoArg, (caddr_t) "on"},
{"+wc", "*wideChars", XrmoptionNoArg, (caddr_t) "off"},
+{"-cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "on"},
+{"+cjk_width", "*cjkWidth", XrmoptionNoArg, (caddr_t) "off"},
#endif
{"-wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "on"},
{"+wf", "*waitForMap", XrmoptionNoArg, (caddr_t) "off"},
@@ -578,6 +584,7 @@ static OptionHelp options[] = {
{ "-/+pob", "turn on/off pop on bell" },
#if OPT_WIDE_CHARS
{ "-/+wc", "turn on/off wide-character mode" },
+{ "-/+cjk_width", "turn on/off legacy CJK width convention" },
#endif
{ "-/+wf", "turn on/off wait for map before command exec" },
{ "-e command args ...", "command to execute" },
@@ -734,6 +741,10 @@ int number_ourTopLevelShellArgs = 2;
Bool waiting_for_initial_map;
+#if OPT_WIDE_CHARS
+int (*my_wcwidth) (wchar_t);
+#endif
+
/*
* DeleteWindow(): Action proc to implement ICCCM delete_window.
*/
@@ -1000,7 +1011,7 @@ main(int argc, char **argv ENVP_ARG)
XtNright, XawChainRight,
XtNbottom, XawChainBottom,
#endif
- 0);
+ (XtPointer) 0);
/* this causes the initialize method to be called */
#if OPT_HP_FUNC_KEYS
@@ -1024,6 +1035,11 @@ main(int argc, char **argv ENVP_ARG)
if (term->misc.tekInhibit)
inhibit |= I_TEK;
#endif
+#if OPT_WIDE_CHARS
+ my_wcwidth = &mk_wcwidth;
+ if (term->misc.cjk_width)
+ my_wcwidth = &mk_wcwidth_cjk;
+#endif
/*
* Set title and icon name if not specified
diff --git a/programs/xterm/ptyx.h b/programs/xterm/ptyx.h
index e0d5bae0b..2e62374db 100644
--- a/programs/xterm/ptyx.h
+++ b/programs/xterm/ptyx.h
@@ -2,7 +2,7 @@
* $Xorg: ptyx.h,v 1.3 2000/08/17 19:55:09 cpqbld Exp $
*/
-/* $XFree86: xc/programs/xterm/ptyx.h,v 3.96 2002/08/17 19:52:27 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/ptyx.h,v 3.97 2002/08/24 18:54:39 dickey Exp $ */
/*
* Copyright 1999,2000,2001,2002 by Thomas E. Dickey
@@ -658,7 +658,7 @@ typedef struct {
/* Define a fake XK code, we need it for the fake color response in
* xtermcapKeycode(). */
-#ifdef OPT_TCAP_QUERY
+#if OPT_TCAP_QUERY
# define XK_COLORS 0x0003
#endif
@@ -1314,7 +1314,7 @@ typedef struct {
XftFont *renderFontBold;
XftDraw *renderDraw;
#endif
-#ifdef OPT_INPUT_METHOD
+#if OPT_INPUT_METHOD
XFontSet fs; /* fontset for XIM preedit */
int fs_ascent; /* ascent of fs */
#endif
@@ -1375,6 +1375,7 @@ typedef struct _Misc {
#if OPT_WIDE_CHARS
char *f_w;
char *f_wb;
+ Boolean cjk_width; /* true when CJK width convention is turned on */
#endif
#if OPT_LUIT_PROG
Boolean callfilter; /* true to invoke luit */
diff --git a/programs/xterm/scrollbar.c b/programs/xterm/scrollbar.c
index 1991aa8cb..724b31e2d 100644
--- a/programs/xterm/scrollbar.c
+++ b/programs/xterm/scrollbar.c
@@ -2,7 +2,7 @@
* $Xorg: scrollbar.c,v 1.4 2000/08/17 19:55:09 cpqbld Exp $
*/
-/* $XFree86: xc/programs/xterm/scrollbar.c,v 3.32 2002/03/26 01:46:40 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/scrollbar.c,v 3.33 2002/04/28 19:04:21 dickey Exp $ */
/*
* Copyright 2000-2001,2002 by Thomas E. Dickey
@@ -183,7 +183,7 @@ ResizeScreen(XtermWidget xw, int min_width, int min_height)
XtNheightInc, FontHeight(screen),
XtNminWidth, min_width + FontWidth(screen),
XtNminHeight, min_height + FontHeight(screen),
- NULL);
+ (XtPointer) 0);
reqWidth = screen->fullVwin.f_width * (screen->max_col + 1) + min_width;
reqHeight = screen->fullVwin.f_height * (screen->max_row + 1) + min_height;
@@ -435,7 +435,7 @@ ScrollBarOn(XtermWidget xw, int init, int doalloc)
&& screen->fullVwin.fullwidth < term->core.width)
XtVaSetValues(screen->scrollWidget,
XtNx, screen->fullVwin.fullwidth - screen->scrollWidget->core.border_width,
- NULL);
+ (XtPointer) 0);
#endif
XtMapWidget(screen->scrollWidget);
diff --git a/programs/xterm/trace.c b/programs/xterm/trace.c
index 3dcc80d58..d138e65ea 100644
--- a/programs/xterm/trace.c
+++ b/programs/xterm/trace.c
@@ -1,5 +1,5 @@
/*
- * $XFree86: xc/programs/xterm/trace.c,v 3.13 2001/10/24 01:21:25 dickey Exp $
+ * $XFree86: xc/programs/xterm/trace.c,v 3.14 2001/11/05 02:07:16 dickey Exp $
*/
/************************************************************
@@ -187,7 +187,7 @@ TraceTranslations(const char *name, Widget w)
XtVaGetValues(w,
XtNtranslations, &xlations,
XtNaccelerators, &xcelerat,
- NULL);
+ (XtPointer) 0);
TRACE(("... xlations %#08lx\n", (long) xlations));
TRACE(("... xcelerat %#08lx\n", (long) xcelerat));
result = _XtPrintXlations(w, xlations, xcelerat, True);
@@ -365,7 +365,7 @@ TraceOptions(OptionHelp * options, XrmOptionDescRec * resources, Cardinal res_co
}
}
- TRACE(("Resource list items that will be ignored by XtAppInitialize:\n"));
+ TRACE(("Resource list items that will be ignored by XtOpenApplication:\n"));
for (j = 0; j < res_count; j++) {
switch (res_array[j].argKind) {
case XrmoptionSkipArg:
diff --git a/programs/xterm/version.h b/programs/xterm/version.h
index c4d390464..31a8a173f 100644
--- a/programs/xterm/version.h
+++ b/programs/xterm/version.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/xterm/version.h,v 3.78 2002/03/26 01:46:40 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/version.h,v 3.79 2002/08/24 18:54:39 dickey Exp $ */
/*
* These definitions are used to build the string that's printed in response to
@@ -6,5 +6,5 @@
* XFree86 to which this version of xterm has been built. The number in
* parentheses is my patch number (T.Dickey).
*/
-#define XTERM_PATCH 167
-#define XFREE86_VERSION "XFree86 4.2.0"
+#define XTERM_PATCH 168
+#define XFREE86_VERSION "XFree86 4.2.1"
diff --git a/programs/xterm/vttests/16colors.sh b/programs/xterm/vttests/16colors.sh
index fc362893b..a3589f8e4 100644
--- a/programs/xterm/vttests/16colors.sh
+++ b/programs/xterm/vttests/16colors.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/16colors.sh,v 1.2 1999/04/25 10:03:08 dawes Exp $
+# $XFree86: xc/programs/xterm/vttests/16colors.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $
#
# -- Thomas Dickey (1999/3/27)
# Show a simple 16-color test pattern. It is a little more confusing than
@@ -12,6 +12,8 @@ CMD='echo'
OPT='-n'
SUF=''
TMP=/tmp/xterm$$
+eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
+( test ! -f $TMP || test -s $TMP ) &&
for verb in printf print ; do
rm -f $TMP
eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
diff --git a/programs/xterm/vttests/8colors.sh b/programs/xterm/vttests/8colors.sh
index 65f69cfc6..8cf402f0d 100644
--- a/programs/xterm/vttests/8colors.sh
+++ b/programs/xterm/vttests/8colors.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/8colors.sh,v 1.2 1999/04/25 10:03:08 dawes Exp $
+# $XFree86: xc/programs/xterm/vttests/8colors.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $
#
# -- Thomas Dickey (1999/3/27)
# Show a simple 8-color test pattern
@@ -9,6 +9,8 @@ CMD='echo'
OPT='-n'
SUF=''
TMP=/tmp/xterm$$
+eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
+( test ! -f $TMP || test -s $TMP ) &&
for verb in printf print ; do
rm -f $TMP
eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
diff --git a/programs/xterm/vttests/acolors.sh b/programs/xterm/vttests/acolors.sh
new file mode 100755
index 000000000..6f06fd1db
--- /dev/null
+++ b/programs/xterm/vttests/acolors.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+# $XFree86: xc/programs/xterm/vttests/dynamic.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $
+#
+# -- Thomas Dickey (1999/3/27)
+# Demonstrate the use of the control sequence for changing ANSI colors.
+
+ESC=""
+CMD='echo'
+OPT='-n'
+SUF=''
+TMP=/tmp/xterm$$
+eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
+( test ! -f $TMP || test -s $TMP ) &&
+for verb in printf print ; do
+ rm -f $TMP
+ eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
+ if test -f $TMP ; then
+ if test ! -s $TMP ; then
+ CMD="$verb"
+ OPT=
+ SUF='\c'
+ break
+ fi
+ fi
+done
+rm -f $TMP
+
+LIST="00 30 80 d0 ff"
+
+exec </dev/tty
+old=`stty -g`
+stty raw -echo min 0 time 5
+
+$CMD $OPT "${ESC}]4;4;?${SUF}" > /dev/tty
+read original
+stty $old
+original=${original}${SUF}
+
+trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15
+$CMD "${ESC}[0;1;34mThis message is BLUE"
+$CMD "${ESC}[0;1;31mThis message is RED ${ESC}[0;31m(sometimes)"
+$CMD "${ESC}[0;1;32mThis message is GREEN${ESC}[0m"
+while true
+do
+ for R in $LIST
+ do
+ for G in $LIST
+ do
+ for B in $LIST
+ do
+ # color "9" is bold-red
+ test $R != 00 && test $G = 00 && test $B = 00 && $CMD $OPT "" >/dev/tty
+ $CMD $OPT "${ESC}]4;9;rgb:$R/$G/$B${SUF}" >/dev/tty
+ sleep 1
+ done
+ done
+ done
+done
diff --git a/programs/xterm/vttests/doublechars.sh b/programs/xterm/vttests/doublechars.sh
index ea7b28e9f..b167a3a97 100644
--- a/programs/xterm/vttests/doublechars.sh
+++ b/programs/xterm/vttests/doublechars.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/doublechars.sh,v 1.2 1999/09/25 14:38:51 dawes Exp $
+# $XFree86: xc/programs/xterm/vttests/doublechars.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $
#
# -- Thomas Dickey (1999/7/7)
# Illustrate the use of double-size characters by drawing successive lines in
@@ -13,6 +13,8 @@ CMD='echo'
OPT='-n'
SUF=''
TMP=/tmp/xterm$$
+eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
+( test ! -f $TMP || test -s $TMP ) &&
for verb in printf print ; do
rm -f $TMP
eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
diff --git a/programs/xterm/vttests/dynamic.sh b/programs/xterm/vttests/dynamic.sh
index 0f3d8e93b..3a15b4a7a 100644
--- a/programs/xterm/vttests/dynamic.sh
+++ b/programs/xterm/vttests/dynamic.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/dynamic.sh,v 1.2 1999/04/11 13:11:43 dawes Exp $
+# $XFree86: xc/programs/xterm/vttests/dynamic.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $
#
# -- Thomas Dickey (1999/3/27)
# Demonstrate the use of dynamic colors by setting the background successively
@@ -10,6 +10,8 @@ CMD='echo'
OPT='-n'
SUF=''
TMP=/tmp/xterm$$
+eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
+( test ! -f $TMP || test -s $TMP ) &&
for verb in printf print ; do
rm -f $TMP
eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
diff --git a/programs/xterm/vttests/fonts.sh b/programs/xterm/vttests/fonts.sh
index 86eb2fdca..e8dd6e3aa 100644
--- a/programs/xterm/vttests/fonts.sh
+++ b/programs/xterm/vttests/fonts.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/fonts.sh,v 1.1 1999/04/11 13:11:43 dawes Exp $
+# $XFree86: xc/programs/xterm/vttests/fonts.sh,v 1.2 2000/10/27 18:31:17 dawes Exp $
#
# -- Thomas Dickey (1999/3/27)
# Demonstrate the use of dynamic colors by setting the background successively
@@ -10,6 +10,8 @@ CMD='echo'
OPT='-n'
SUF=''
TMP=/tmp/xterm$$
+eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
+( test ! -f $TMP || test -s $TMP ) &&
for verb in printf print ; do
rm -f $TMP
eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
diff --git a/programs/xterm/vttests/resize.sh b/programs/xterm/vttests/resize.sh
index bcb5a55df..8a62fed9f 100644
--- a/programs/xterm/vttests/resize.sh
+++ b/programs/xterm/vttests/resize.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/resize.sh,v 1.2 1999/04/11 13:11:44 dawes Exp $
+# $XFree86: xc/programs/xterm/vttests/resize.sh,v 1.3 2000/10/27 18:31:17 dawes Exp $
#
# -- Thomas Dickey (1999/3/27)
# Obtain the current screen size, then resize the terminal to the nominal
@@ -10,6 +10,8 @@ CMD='echo'
OPT='-n'
SUF=''
TMP=/tmp/xterm$$
+eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
+( test ! -f $TMP || test -s $TMP ) &&
for verb in printf print ; do
rm -f $TMP
eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
diff --git a/programs/xterm/vttests/title.sh b/programs/xterm/vttests/title.sh
index 2d2521fe3..38bba026e 100644
--- a/programs/xterm/vttests/title.sh
+++ b/programs/xterm/vttests/title.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-# $XFree86: xc/programs/xterm/vttests/title.sh,v 1.3 1999/04/25 10:03:09 dawes Exp $
+# $XFree86: xc/programs/xterm/vttests/title.sh,v 1.4 2000/10/27 18:31:17 dawes Exp $
#
# -- Thomas Dickey (1999/3/27)
# Obtain the current title of the window, set up a simple clock which runs
@@ -10,6 +10,8 @@ CMD='echo'
OPT='-n'
SUF=''
TMP=/tmp/xterm$$
+eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null
+( test ! -f $TMP || test -s $TMP ) &&
for verb in printf print ; do
rm -f $TMP
eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
diff --git a/programs/xterm/wcwidth.c b/programs/xterm/wcwidth.c
index 630d11035..ea9247cb6 100644
--- a/programs/xterm/wcwidth.c
+++ b/programs/xterm/wcwidth.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/xterm/wcwidth.c,v 1.3 2001/07/29 22:08:16 tsi Exp $ */
+/* $XFree86: xc/programs/xterm/wcwidth.c,v 1.4 2002/08/12 00:36:33 dickey Exp $ */
/*
* This is an implementation of wcwidth() and wcswidth() (defined in
* IEEE Std 1002.1-2001) for Unicode.
@@ -214,7 +214,7 @@ int mk_wcswidth(const wchar_t *pwcs, size_t n)
* the traditional terminal character-width behaviour. It is not
* otherwise recommended for general use.
*/
-static int mk_wcwidth_cjk(wchar_t ucs)
+int mk_wcwidth_cjk(wchar_t ucs)
{
/* sorted list of non-overlapping intervals of East Asian Ambiguous
* characters, generated with "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */
diff --git a/programs/xterm/wcwidth.h b/programs/xterm/wcwidth.h
index ecdb8b2f9..96a47a098 100644
--- a/programs/xterm/wcwidth.h
+++ b/programs/xterm/wcwidth.h
@@ -1,15 +1,14 @@
-/* $XFree86: xc/programs/xterm/wcwidth.h,v 1.2 2001/06/18 19:09:27 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/wcwidth.h,v 1.3 2002/08/12 00:36:33 dickey Exp $ */
#ifndef included_wcwidth_h
#define included_wcwidth_h 1
#include <stddef.h>
-#define my_wcwidth mk_wcwidth
-
-extern int my_wcwidth(wchar_t ucs);
extern int mk_wcswidth(const wchar_t * pwcs, size_t n);
extern int mk_wcswidth_cjk(const wchar_t * pwcs, size_t n);
+extern int mk_wcwidth(wchar_t ucs);
+extern int mk_wcwidth_cjk(wchar_t ucs);
extern int wcswidth(const wchar_t * pwcs, size_t n);
extern int wcswidth_cjk(const wchar_t * pwcs, size_t n);
diff --git a/programs/xterm/xterm.dat b/programs/xterm/xterm.dat
index b00293eeb..20d4bfbc3 100644
--- a/programs/xterm/xterm.dat
+++ b/programs/xterm/xterm.dat
@@ -1,11 +1,14 @@
-! $XFree86: xc/programs/xterm/xterm.dat,v 1.2 2000/06/14 00:16:21 dawes Exp $
+! $XFree86: xc/programs/xterm/xterm.dat,v 1.3 2000/12/30 19:15:47 dickey Exp $
!
*title: Xterm
*iconName: Xterm
*c132: TRUE
*scrollBar: on
*saveLines: 1000
-XTerm.JoinSession:False
+
+! This is nonsense: if the xterm has no session management capabilities,
+! it is useless, and if it does, it is harmful.
+!XTerm.JoinSession:False
! turn off NumLock support - there is some conflict or problem on VMS
*numLock: false
diff --git a/programs/xterm/xterm.h b/programs/xterm/xterm.h
index f3e97078b..ed842addd 100644
--- a/programs/xterm/xterm.h
+++ b/programs/xterm/xterm.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/xterm/xterm.h,v 3.82 2002/08/17 19:52:27 dickey Exp $ */
+/* $XFree86: xc/programs/xterm/xterm.h,v 3.83 2002/08/24 18:54:39 dickey Exp $ */
/************************************************************
@@ -282,6 +282,7 @@ extern int errno;
#define XtNc132 "c132"
#define XtNcacheDoublesize "cacheDoublesize"
#define XtNcharClass "charClass"
+#define XtNcjkWidth "cjkWidth"
#define XtNcolorAttrMode "colorAttrMode"
#define XtNcolorBDMode "colorBDMode"
#define XtNcolorBLMode "colorBLMode"
@@ -390,6 +391,7 @@ extern int errno;
#define XtCC132 "C132"
#define XtCCacheDoublesize "CacheDoublesize"
#define XtCCharClass "CharClass"
+#define XtCCjkWidth "CjkWidth"
#define XtCColorMode "ColorMode"
#define XtCColumn "Column"
#define XtCCtrlFKeys "CtrlFKeys"
@@ -483,7 +485,7 @@ extern int errno;
/***====================================================================***/
-#ifdef __cplusplus
+#ifdef __cplusplus
extern "C" {
#endif
@@ -624,12 +626,17 @@ extern void first_map_occurred (void);
extern SIGNAL_T Exit (int n);
#endif
+#if OPT_WIDE_CHARS
+extern int (*my_wcwidth)(wchar_t);
+#endif
+
/* menu.c */
extern void do_hangup PROTO_XT_CALLBACK_ARGS;
extern void show_8bit_control (Bool value);
/* misc.c */
extern Cursor make_colored_cursor (unsigned cursorindex, unsigned long fg, unsigned long bg);
+extern Window WMFrameWindow(XtermWidget termw);
extern char *SysErrorMsg (int n);
extern char *udk_lookup (int keycode, int *len);
extern int XStrCmp (char *s1, char *s2);
@@ -889,7 +896,7 @@ int visual_width(PAIRED_CHARS(Char *str, Char *str2), Cardinal len);
#define visual_width(a, b) (b)
#endif
-#ifdef __cplusplus
+#ifdef __cplusplus
}
#endif
diff --git a/programs/xterm/xterm.log.html b/programs/xterm/xterm.log.html
index a855375aa..fbf8205e8 100644
--- a/programs/xterm/xterm.log.html
+++ b/programs/xterm/xterm.log.html
@@ -1,4 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
*****************************************************************************
* Copyright 1996-2001,2002 by Thomas E. Dickey *
@@ -20,12 +20,13 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF *
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *
*****************************************************************************
- $XFree86: xc/programs/xterm/xterm.log.html,v 1.83 2002/08/17 19:52:27 dickey Exp $
+ $XFree86: xc/programs/xterm/xterm.log.html,v 1.84 2002/08/24 18:54:39 dickey Exp $
-->
<HTML>
<HEAD>
<TITLE>XTERM - Change Log</TITLE>
<LINK REV=MADE HREF="mailto:dickey@invisible-island.net">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
<HR>
@@ -42,6 +43,7 @@ in the XFree86 CHANGELOG (found in the unbundled tree,
xc/programs/Xserver/hw/xfree86).
<UL>
+<LI><A HREF="#xterm_168">Patch #168 - 2002/9/29 - XFree86 4.2.1</A>
<LI><A HREF="#xterm_167">Patch #167 - 2002/8/24 - XFree86 4.2.0</A>
<LI><A HREF="#xterm_166">Patch #166 - 2002/3/25 - XFree86 4.2.0</A>
<LI><A HREF="#xterm_165">Patch #165 - 2002/1/5 - XFree86 4.1.0</A>
@@ -212,6 +214,57 @@ xc/programs/Xserver/hw/xfree86).
<LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
</UL>
+<H1><A NAME="xterm_168">Patch #168 - 2002/9/29 - XFree86 4.2.1</A></H1>
+<ul>
+ <li>improve data reported for control sequence that requests window
+ position by taking into account the window decorations, e.g.,
+ border and title (patch by Jess Thrysoee &lt;jess@thrysoee.dk&gt;).
+
+ <li>add <code>-cjk_width</code> and corresponding resource
+ <code>cjkWidth</code> (patch by Jungshik Shin
+ &lt;jshin@mailaps.org&gt;).
+
+ <li>add <code>-into</code> option, for embedding xterm in a Tcl/Tk
+ application (patch by George Peter Staplin &lt;georgeps@xmission.com&gt;).
+
+ <li>add simple session management (XSM) client capabilities to xterm.
+ So a session manager such as, e.g., xsm, should be able to respawn or
+ kill xterms without the help of an SM proxy (like smproxy), which is
+ a hack and almost always buggy (patch by David Madore).
+
+ <li>fix conflict between ifdef's for <code>OPT_DEC_LOCATOR</code> and
+ <code>OPT_READLINE</code> in button.c (reported by Ilya Zakharevich).
+
+ <li>fix for inconsistent use of <code>struct utmp</code> versus
+ <code>struct utmpx</code> introduced in patch #167 (patches by Paul
+ Gilmartin, Marc La France).
+
+ <li>modify logic for <code>metaSendsEscape</code> to allow it to work
+ in a setup where the Meta-key is not recognized as a modifier by
+ the key-translations logic (from a discussion of eightBitInput
+ with H.J.Lu, however Vincent Lefevre reported this in January).
+
+ <li>use null pointer values consistently, rather than literal "0", for
+ ending variable-length argument lists, e.g., for
+ <code>execlp()</code> (based on patch by Matthieu Herrb).
+
+ <li>correct logic of <code>ChangeAnsiColorRequest()</code>, which would
+ do a screen repaint after replying to a request for information.
+
+ <li>improve scripts in vttests to work with systems whose shells support
+ <code>echo -n</code> and have, as does Debian, an unrelated
+ <code>print</code> utility.
+
+ <li>add vttests/acolors.sh to demonstrate OSC 4, which queries or
+ sets ANSI colors.
+
+ <li>fixes for ctlseqs.ms (Pavel Roskin, Ilya Zakharevich).
+
+ <li>typos in xterm manpage (Jens Schweikhardt)
+
+ <li>remove a redundant GCC_UNUSED from InitPopup() (Nam SungHyun)
+</ul>
+
<H1><A NAME="xterm_167">Patch #167 - 2002/8/24 - XFree86 4.2.0</A></H1>
<ul>
<li>correct ifdef's for <code>USE_TERMCAP</code> to match cygwin
@@ -268,7 +321,7 @@ xc/programs/Xserver/hw/xfree86).
<ul>
<li>Check that the return value from ttyslot() is greater than 0
before writing the utmp file.
- Fixes w's "w: Stale utmp entry: &lt;user&gt &lt;tty&gt &lt;pty&gt" errors.
+ Fixes w's "w: Stale utmp entry: &lt;user&gt; &lt;tty&gt; &lt;pty&gt;" errors.
<li>Use openpty() to deal with new pty naming scheme.
</ul>
@@ -318,8 +371,9 @@ xc/programs/Xserver/hw/xfree86).
<li>change the colors for the 256-color model, making them less skewed
toward black (patch by Steve Wall).
- <li>add <code>vt100Graphics</code> resource (see patch #115, based on
- discussion with Glenn Maynard).
+ <li>add <code>vt100Graphics</code> resource
+ (see <a href="#xterm_115">patch #115</a>,
+ based on discussion with Glenn Maynard).
<li>ifdef'd Xaw/Xaw3d/neXtaw includes separately to avoid potential
incompatibilities between these flavors of Athena widgets.
@@ -484,7 +538,8 @@ xc/programs/Xserver/hw/xfree86).
<H1><A NAME="xterm_160">Patch #160 - 2001/10/7 - XFree86 4.1.0</A></H1>
<ul>
- <li>modify logic in main.c (see patch #145) to avoid generating the
+ <li>modify logic in main.c
+ (see <a href="#xterm_145">patch #145</a>) to avoid generating the
same identifier, for example, for /dev/tty1 and /dev/pts/1, which
is used to denote an entry in the utmp file (Debian bug report
#84676), A similar fix was also sent by Jerome Borsboom
@@ -1740,7 +1795,8 @@ xc/programs/Xserver/hw/xfree86).
utmp exit status (reports by Dave Ellement, Jeremie Petit, Tomas
Vanhala).
- <li>amend treatment of ALT key (see patch #94) so that if ALT is used
+ <li>amend treatment of ALT key
+ (see <a href="#xterm_94">patch #94</a>) so that if ALT is used
as a modifier in key translations, then no parameter will be sent
in escape sequences for Sun/PC function keys (request by Dr Werner Fink).
@@ -1816,7 +1872,7 @@ xc/programs/Xserver/hw/xfree86).
redirect all their messages to one particular xterm: it is more
pleasant to do this with xterm resources than with explicit calls to
the <code>mesg</code> program (patch, description by David Madore
- &lt;madore@clipper.ens.fr&gt;).
+ &lt;david.madore@ens.fr&gt;).
</ul>
<H1><A NAME="xterm_119">Patch #119 - 1999/10/16 - XFree86 3.9.16c</A></H1>
@@ -2554,7 +2610,7 @@ the Imakefile defines this).
providing user applications a means of determining the version
of xterm for feature comparison (request by Bram Moolenaar).
- <li>make xterm respond to secondary DA when the decTerminalId
+ <li>make xterm respond to secondary DA when the decTerminalID
is set for VT100.
<li>limit user-defined keys (DECUDK) to VT220-style keyboard
@@ -2571,7 +2627,7 @@ the Imakefile defines this).
reflect the actual configuration, the terminfo kdch1 string is not
(request by Dirk H Hohndel &lt;hohndel@suse.de&gt;)
- <li>improve scripts in vttest to work with newer shells that do not
+ <li>improve scripts in vttests to work with newer shells that do not
use 'echo -n'.
<li>add fonts.sh example script
diff --git a/programs/xterm/xterm.man b/programs/xterm/xterm.man
index 05816e8bd..7782b3d33 100644
--- a/programs/xterm/xterm.man
+++ b/programs/xterm/xterm.man
@@ -54,7 +54,7 @@
.\" other dealings in this Software without prior written authorization
.\" from The Open Group.
.\"
-.\" $XFree86: xc/programs/xterm/xterm.man,v 3.84 2002/08/17 19:52:27 dickey Exp $
+.\" $XFree86: xc/programs/xterm/xterm.man,v 3.85 2002/08/24 18:54:39 dickey Exp $
.\"
.\" updated by Thomas E. Dickey for XFree86, July 1996 - August 2002.
.TH XTERM 1 __vendorversion__
@@ -278,6 +278,19 @@ Set the \fIvt100\fP resource \fBcutToBeginningOfLine\fP to TRUE.
This sets classes indicated by the given ranges for using in selecting by
words. See the section specifying character classes.
.TP 8
+.B "\-cjk_width"
+Set the \fBcjkWidth\fP resource to ``true''.
+When turned on, characters with East Asian Ambiguous (A) category in UTR 11
+have a column width of 2.
+Othrwise, they have a column width of 1.
+This may be useful for some legacy CJK text
+terminal-based programs assuming box drawings and others to have a column
+width of 2.
+The default is ``false''
+.TP 8
+.B "+cjk_width"
+Reset the \fBcjkWidth\fP resource.
+.TP 8
.BI \-class " string"
This option allows you to override \fIxterm\fP's resource class.
Normally it is ``XTerm'', but
@@ -444,6 +457,11 @@ Turn on the \fBuseInsertMode\fP resource.
.B +im
Turn off the \fBuseInsertMode\fP resource.
.TP 8
+.BI \-into windowId
+Given an X window identifier (a decimal integer),
+xterm will reparent its top-level shell widget to that window.
+This is used to embed xterm within other applications.
+.TP 8
.B \-j
This option indicates that \fIxterm\fP should do jump scrolling. Normally,
text is scrolled one line at a time; this option allows \fIxterm\fP to move
@@ -1117,6 +1135,15 @@ Specifies comma-separated lists of character class bindings of the form
sets of characters should be treated the same when doing cut and paste.
See the section on specifying character classes.
.TP 8
+.B "cjkWidth (\fPclass\fB CjkWidth)"
+Specifies whether \fIxterm\fP should follow
+the traditional East Asian width convention.
+When turned on, characters with East Asian Ambiguous (A) category in UTR
+11 have a column width of 2.
+You may have to set this option to ``true''
+if you have some old East Asian terminal based programs that assume that
+line-drawing characters have a column width of 2.
+.TP 8
.B "curses (\fPclass\fB Curses)"
Specifies whether or not the last column bug in
.IR more (1)
@@ -1196,8 +1223,8 @@ yellow, blue, magenta, cyan, and white.
.TP 8
through
.TP 8
-.B "color255 \fPclass\fB Color255)"
-These specify the colors for the 256-color extension. The defaults for
+.B "color255 (\fPclass\fB Color255)"
+These specify the colors for the 256-color extension. The defaults
are for colors 16 through 231 to make a 6x6x6 color cube, and colors
232 through 255 to make a grayscale ramp.
.TP 8