Update to xterm-275. Tested by jasper@.

This commit is contained in:
matthieu 2011-09-17 11:51:57 +00:00
parent 32d3740477
commit c516620bcf
42 changed files with 1314 additions and 802 deletions

View File

@ -1,4 +1,4 @@
-- $XTermId: INSTALL,v 1.125 2011/07/07 01:01:14 tom Exp $
-- $XTermId: INSTALL,v 1.126 2011/08/30 09:51:01 tom Exp $
-------------------------------------------------------------------------------
-- Copyright 1997-2010,2011 by Thomas E. Dickey
--
@ -537,6 +537,23 @@ The options (in alphabetic order):
at existing ".desktop" files for xterm and common terminal
emulators, to use those.
--with-freetype-config configure script to use for FreeType
Use a specific option value to tell the configure script to try
just one of the variations:
"pkg*", e.g., pkg-config or pkgconfig uses whatever pkg-config
script was found.
otherwise, the parameter value is used as the name of the script
to try, using --cflags and --libs options.
Use --without-freetype-config to enable the --with-freetype-cflags
and --with-freetype-libs options.
The default value "auto" tells the configure script to try the
pkg-config script first, then freetype-config and finally xft-config.
--with-freetype-cflags -D/-I options for compiling with FreeType library
Override options provided by xft-config or freetype-config.

View File

@ -1,4 +1,4 @@
MANIFEST for xterm-273, version xterm-273
MANIFEST for xterm-275, version xterm-275
--------------------------------------------------------------------------------
MANIFEST this file
256colres.h resource-definitions for 256-color mode

View File

@ -1,4 +1,4 @@
/* $XTermId: Tekproc.c,v 1.189 2011/07/10 22:19:32 tom Exp $ */
/* $XTermId: Tekproc.c,v 1.190 2011/09/03 12:13:42 tom Exp $ */
/*
* Copyright 2001-2010,2011 by Thomas E. Dickey
@ -826,7 +826,7 @@ Tinput(TekWidget tw)
TCursorToggle(tw, TOGGLE);
Ttoggled = False;
}
if (XtAppPending(app_con) & XtIMXEvent) {
if (xtermAppPending() & XtIMXEvent) {
#ifdef VMS
Tselect_mask = X_mask;
#else /* VMS */

View File

@ -1,8 +1,7 @@
/* $XTermId: VTPrsTbl.c,v 1.59 2010/08/24 21:26:42 tom Exp $ */
/* $XTermId: VTPrsTbl.c,v 1.60 2011/09/11 15:00:46 tom Exp $ */
/*
*
* Copyright 1999-2009,2010 by Thomas E. Dickey
* Copyright 1999-2010,2011 by Thomas E. Dickey
*
* All Rights Reserved
*
@ -54,6 +53,7 @@
*/
#include <VTparse.h>
/* *INDENT-OFF* */
#if !OPT_BLINK_CURS
#undef CASE_CSI_SPACE_STATE
@ -8197,3 +8197,4 @@ CASE_IGNORE,
CASE_IGNORE,
};
#endif /* OPT_VT52_MODE */
/* *INDENT-ON* */

View File

@ -1,36 +1,34 @@
/* $XTermId: cachedGCs.c,v 1.60 2011/02/09 10:11:44 tom Exp $ */
/* $XTermId: cachedGCs.c,v 1.61 2011/09/11 14:59:38 tom Exp $ */
/************************************************************
Copyright 2007-2010,2011 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 2007-2010,2011 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.
*/
#include <data.h>
#include <xstrings.h>

View File

@ -1,4 +1,4 @@
/* $XTermId: charproc.c,v 1.1127 2011/08/22 23:36:42 tom Exp $ */
/* $XTermId: charproc.c,v 1.1132 2011/09/04 18:18:16 tom Exp $ */
/*
* Copyright 1999-2010,2011 by Thomas E. Dickey
@ -435,6 +435,8 @@ static XtResource xterm_resources[] =
Bres(XtNunderLine, XtCUnderLine, screen.underline, True),
Bres(XtNvisualBell, XtCVisualBell, screen.visualbell, False),
Dres(XtNscaleHeight, XtCScaleHeight, screen.scale_height, "1.0"),
Ires(XtNbellSuppressTime, XtCBellSuppressTime, screen.bellSuppressTime, BELLSUPPRESSMSEC),
Ires(XtNfontWarnings, XtCFontWarnings, misc.fontWarnings, fwResource),
Ires(XtNinternalBorder, XtCBorderWidth, screen.border, DEFBORDER),
@ -3468,6 +3470,7 @@ updateCursor(TScreen * screen)
}
}
#if OPT_BLINK_CURS || OPT_BLINK_TEXT
static void
reallyStopBlinking(TScreen * screen)
{
@ -3478,6 +3481,7 @@ reallyStopBlinking(TScreen * screen)
xevents();
}
}
#endif
#ifdef VMS
#define ptymask() (v_bufptr > v_bufstr ? pty_mask : 0)
@ -3671,7 +3675,7 @@ in_put(XtermWidget xw)
* The blocking is optional, because it tends to increase the load
* on the host.
*/
if (XtAppPending(app_con)) {
if (xtermAppPending()) {
select_timeout.tv_usec = 0;
time_select = 1;
} else if (screen->awaitInput) {
@ -3711,7 +3715,7 @@ in_put(XtermWidget xw)
/* if there are X events already in our queue, it
counts as being readable */
if (XtAppPending(app_con) ||
if (xtermAppPending() ||
FD_ISSET(ConnectionNumber(screen->display), &select_mask)) {
xevents();
if (VTbuffer->update != update) /* HandleInterpret */
@ -5615,7 +5619,7 @@ RequestResize(XtermWidget xw, int rows, int cols, Bool text)
#endif
XSync(screen->display, False); /* synchronize */
if (XtAppPending(app_con))
if (xtermAppPending())
xevents();
TRACE(("...RequestResize done\n"));
@ -6186,6 +6190,12 @@ VTInitialize(Widget wrequest,
init_Bres(screen.scrollttyoutput);
init_Bres(screen.scrollkey);
init_Dres(screen.scale_height);
if (TScreenOf(wnew)->scale_height < 0.9)
TScreenOf(wnew)->scale_height = (float) 0.9;
if (TScreenOf(wnew)->scale_height > 1.5)
TScreenOf(wnew)->scale_height = (float) 1.5;
init_Bres(misc.autoWrap);
init_Bres(misc.login_shell);
init_Bres(misc.reverseWrap);
@ -6926,7 +6936,7 @@ VTDestroy(Widget w GCC_UNUSED)
TRACE_FREE_LEAK(screen->term_id);
TRACE_FREE_LEAK(screen->charClass);
TRACE_FREE_LEAK(screen->answer_back);
TRACE_FREE_LEAK(screen->printer_command);
TRACE_FREE_LEAK(screen->printer_state.printer_command);
TRACE_FREE_LEAK(screen->keyboard_dialect);
TRACE_FREE_LEAK(screen->disallowedColorOps);
TRACE_FREE_LEAK(screen->disallowedFontOps);
@ -8430,7 +8440,7 @@ ReallyReset(XtermWidget xw, Bool full, Bool saved)
&replyWidth, &replyHeight);
repairSizeHints();
XSync(screen->display, False); /* synchronize */
if (XtAppPending(app_con))
if (xtermAppPending())
xevents();
}

View File

@ -1,36 +1,35 @@
/* $XTermId: charsets.c,v 1.41 2009/01/25 23:39:12 tom Exp $ */
/* $XTermId: charsets.c,v 1.42 2011/09/11 14:40:17 tom Exp $ */
/************************************************************
Copyright 1998-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 1998-2009,2011 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.
*
*/
#include <xterm.h>
#include <data.h>

View File

@ -1,4 +1,4 @@
dnl $XTermId: configure.in,v 1.277 2011/08/19 09:13:07 tom Exp $
dnl $XTermId: configure.in,v 1.279 2011/09/04 21:27:24 tom Exp $
dnl
dnl -----------------------------------------------------------------------------
dnl this file is part of xterm
@ -73,6 +73,7 @@ CF_SIGWINCH
### checks for header files
AC_CHECK_HEADERS( \
ncurses/curses.h \
ncurses/term.h \
stdlib.h \
sys/ttydefaults.h \
@ -100,6 +101,7 @@ AC_CHECK_FUNCS( \
getlogin \
memmove \
putenv \
unsetenv \
sched_yield \
strerror \
strftime \

View File

@ -1,6 +1,6 @@
.\"#! troff -ms $1 -*- Nroff -*-
.\" "Xterm Control Sequences" document
.\" $XTermId: ctlseqs.ms,v 1.242 2011/07/04 22:56:23 tom Exp $
.\" $XTermId: ctlseqs.ms,v 1.244 2011/09/04 18:14:33 tom Exp $
.\"
.\"
.\" Copyright 1996-2010,2011 by Thomas E. Dickey
@ -443,9 +443,9 @@ Vertical Tab (Ctrl-K). This is treated the same as LF.
.\"
.St
.Ss
Controls beginning with ESC
Controls beginning with \*(Es
.LP
This excludes controls where ESC is part of a 7-bit equivalent to 8-bit C1 controls, ordered by the final character(s).
This excludes controls where \*(Es is part of a 7-bit equivalent to 8-bit C1 controls, ordered by the final character(s).
.\"
.IP \\*(Es\\*(Sp\\*F
7-bit controls (S7C1T).
@ -851,10 +851,10 @@ See the section \fBMouse Tracking\fP.
(enables the \fBeightBitInput\fP resource).
\*(Ps = \*1\*0\*3\*5 \(-> Enable special modifiers for Alt and NumLock keys.
(This enables the \fBnumLock\fP resource).
\*(Ps = \*1\*0\*3\*6 \(-> Send ESC when Meta modifies a key.
\*(Ps = \*1\*0\*3\*6 \(-> Send \*(Es when Meta modifies a key.
(This enables the \fBmetaSendsEscape\fP resource).
\*(Ps = \*1\*0\*3\*7 \(-> Send DEL from the editing-keypad Delete key.
\*(Ps = \*1\*0\*3\*9 \(-> Send ESC when Alt modifies a key.
\*(Ps = \*1\*0\*3\*9 \(-> Send \*(Es when Alt modifies a key.
(This enables the \fBaltSendsEscape\fP resource).
\*(Ps = \*1\*0\*4\*0 \(-> Keep selection even if not highlighted.
(This enables the \fBkeepSelection\fP resource).
@ -944,10 +944,10 @@ See the section \fBMouse Tracking\fP.
(This disables the \fBeightBitInput\fP resource).
\*(Ps = \*1\*0\*3\*5 \(-> Disable special modifiers for Alt and NumLock keys.
(This disables the \fBnumLock\fP resource).
\*(Ps = \*1\*0\*3\*6 \(-> Don't send ESC when Meta modifies a key.
\*(Ps = \*1\*0\*3\*6 \(-> Don't send \*(Es when Meta modifies a key.
(This disables the \fBmetaSendsEscape\fP resource).
\*(Ps = \*1\*0\*3\*7 \(-> Send VT220 Remove from the editing-keypad Delete key.
\*(Ps = \*1\*0\*3\*9 \(-> Don't send ESC when Alt modifies a key.
\*(Ps = \*1\*0\*3\*9 \(-> Don't send \*(Es when Alt modifies a key.
(This disables the \fBaltSendsEscape\fP resource).
\*(Ps = \*1\*0\*4\*0 \(-> Do not keep selection when not highlighted.
(This disables the \fBkeepSelection\fP resource).
@ -1285,7 +1285,7 @@ DECELR always cancels any prevous rectangle definition.
.IP \\*(Cs\\*(Ps\\*s\\*x
Request Terminal Parameters (DECREQTPARM).
.br
if \*(Ps is a "0" (default) or "1", and \fBxterm\fR is emulating VT100,
if \*(Ps is a "0" (default) or "1", and \fIxterm\fR is emulating VT100,
the control sequence elicits a response of the same form
whose parameters describe the terminal:
\*(Ps \(-> the given \*(Ps incremented by 2.
@ -1415,7 +1415,7 @@ If a "?" is given rather than a name or RGB specification,
xterm replies with a control sequence of the same form which can be used
to set the corresponding color.
Because more than one pair of color number and specification can
be given in one control sequence, \fBxterm\fR can make more than one reply.
be given in one control sequence, \fIxterm\fR can make more than one reply.
.sP
\*(Ps = \*5 ; \fIc ; spec\fP \(-> Change Special Color Number \fIc\fP to
the color specified by \fIspec\fP.
@ -1432,7 +1432,7 @@ to these codes in an \*(Os\*4 control:
The 10 colors (below) which may be set or queried
using \*1\*0 through \*1\*9 are
denoted \fIdynamic colors\fR, since the corresponding control sequences
were the first means for setting \fBxterm\fR's colors dynamically,
were the first means for setting \fIxterm\fR's colors dynamically,
i.e., after it was started.
They are not the same as the ANSI colors.
These controls may be disabled using the \fIallowColorOps\fP resource.
@ -1445,7 +1445,7 @@ If a "?" is given rather than a name or RGB specification,
xterm replies with a control sequence of the same form which can be used
to set the corresponding dynamic color.
Because more than one pair of color number and specification can
be given in one control sequence, \fBxterm\fR can make more than one reply.
be given in one control sequence, \fIxterm\fR can make more than one reply.
.sP
\*(Ps = \*1\*0 \(-> Change VT100 text foreground color to \*(Pt.
\*(Ps = \*1\*1 \(-> Change VT100 text background color to \*(Pt.
@ -1899,14 +1899,14 @@ Similarly, \fIxterm\fP can be compiled to support HP keyboards.
See the xterm-hp terminfo entry for details.
.Sh "The Alternate Screen Buffer"
.LP
\fBXterm\fP maintains two screen buffers.
\fIXterm\fP maintains two screen buffers.
The normal screen buffer allows you to scroll back to view saved lines
of output up to the maximum set by the \fBsaveLines\fP resource.
The alternate screen buffer is exactly as large as the display,
contains no additional saved lines.
When the alternate screen buffer is active,
you cannot scroll back to view saved lines.
\fBXterm\fP provides control sequences and menu entries
\fIXterm\fP provides control sequences and menu entries
for switching between the two.
.lP
Most full-screen applications use terminfo or termcap to obtain
@ -1915,7 +1915,7 @@ i.e., \fIsmcup\fP and \fIrmcup\fP for terminfo,
or the corresponding \fIti\fP and \fIte\fP for termcap.
The \fBtiteInhibit\fP resource removes the \fIti\fP and \fIte\fP strings
from the TERMCAP string which is set in the environment for some platforms.
That is not done when \fBxterm\fP is built with terminfo libraries because
That is not done when \fIxterm\fP is built with terminfo libraries because
terminfo does not provide the whole text of the termcap data in one piece.
It would not work for terminfo anyway, since terminfo data is not passed
in environment variables;
@ -1937,10 +1937,10 @@ pasted text is bracketed with control sequences
so that the program can differentiate pasted text from typed-in text.
When bracketed paste mode is set,
the program will receive:
ESC [ 200 ~,
\*(Es [ 200 ~,
.br
followed by the pasted text, followed by
ESC [ 201 ~.
\*(Es [ 201 ~.
.
.Sh "Title Modes"
.LP
@ -2177,24 +2177,24 @@ Form Feed or New Page (Ctrl-L).
.IP \\*(Cr
Carriage Return (Ctrl-M).
.IP \\*(Es\\*(Et
Switch to VT100 Mode (ESC Ctrl-C).
Switch to VT100 Mode (\*(Es Ctrl-C).
.IP \\*(Es\\*(En
Return Terminal Status (ESC Ctrl-E).
Return Terminal Status (\*(Es Ctrl-E).
.IP \\*(Es\\*(Ff
PAGE (Clear Screen) (ESC Ctrl-L).
PAGE (Clear Screen) (\*(Es Ctrl-L).
.IP \\*(Es\\*(So
Begin 4015 APL mode (ESC Ctrl-N). (This is ignored by \fIxterm\fP).
Begin 4015 APL mode (\*(Es Ctrl-N). (This is ignored by \fIxterm\fP).
.IP \\*(Es\\*(Si
End 4015 APL mode (ESC Ctrl-O). (This is ignored by \fIxterm\fP).
End 4015 APL mode (\*(Es Ctrl-O). (This is ignored by \fIxterm\fP).
.IP \\*(Es\\*(Eb
COPY (Save Tektronix Codes to file COPY\fIyyyy-mm-dd.hh:mm:ss\fP).
\*(Eb (end transmission block) is the same as Ctrl-W.
.IP \\*(Es\\*(Ca
Bypass Condition (ESC Ctrl-X).
Bypass Condition (\*(Es Ctrl-X).
.IP \\*(Es\\*(Su
GIN mode (ESC Ctrl-Z).
GIN mode (\*(Es Ctrl-Z).
.IP \\*(Es\\*(Fs
Special Point Plot Mode (ESC Ctrl-\e).
Special Point Plot Mode (\*(Es Ctrl-\e).
.IP \\*(Es\\*8
Select Large Character Set.
.IP \\*(Es\\*9

View File

@ -9,7 +9,6 @@
Xterm Control Sequences
Edward Moy
University of California, Berkeley
@ -112,7 +111,7 @@ TAB Horizontal Tab (HT) (Ctrl-I).
VT Vertical Tab (Ctrl-K). This is treated the same as LF.
Controls beginning with ESC
This excludes controls where ESC is part of a 7-bit equivalent to 8-bit
This excludes controls where ESC is part of a 7-bit equivalent to 8-bit
C1 controls, ordered by the final character(s).
ESC SP F 7-bit controls (S7C1T).
ESC SP G 8-bit controls (S8C1T).
@ -207,8 +206,8 @@ DCS + p Pt ST
as by the Request Termcap/Terminfo String control.
DCS + q Pt ST
Request Termcap/Terminfo String (xterm, experimental). The
string following the "q" is a list of names encoded in hexa-
decimal (2 digits per character) separated by ; which corre-
string following the "q" is a list of names encoded in hex-
adecimal (2 digits per character) separated by ; which corre-
spond to termcap or terminfo key names.
Two special features are also recognized, which are not key
names: Co for termcap colors (or colors for terminfo colors),
@ -365,11 +364,11 @@ CSI ? Pm h
(enables the eightBitInput resource).
Ps = 1 0 3 5 -> Enable special modifiers for Alt and Num-
Lock keys. (This enables the numLock resource).
Ps = 1 0 3 6 -> Send ESC when Meta modifies a key. (This
Ps = 1 0 3 6 -> Send ESC when Meta modifies a key. (This
enables the metaSendsEscape resource).
Ps = 1 0 3 7 -> Send DEL from the editing-keypad Delete
key.
Ps = 1 0 3 9 -> Send ESC when Alt modifies a key. (This
Ps = 1 0 3 9 -> Send ESC when Alt modifies a key. (This
enables the altSendsEscape resource).
Ps = 1 0 4 0 -> Keep selection even if not highlighted.
(This enables the keepSelection resource).
@ -455,11 +454,11 @@ CSI ? Pm l
the eightBitInput resource).
Ps = 1 0 3 5 -> Disable special modifiers for Alt and Num-
Lock keys. (This disables the numLock resource).
Ps = 1 0 3 6 -> Don't send ESC when Meta modifies a key.
Ps = 1 0 3 6 -> Don't send ESC when Meta modifies a key.
(This disables the metaSendsEscape resource).
Ps = 1 0 3 7 -> Send VT220 Remove from the editing-keypad
Delete key.
Ps = 1 0 3 9 -> Don't send ESC when Alt modifies a key.
Ps = 1 0 3 9 -> Don't send ESC when Alt modifies a key.
(This disables the altSendsEscape resource).
Ps = 1 0 4 0 -> Do not keep selection when not highlighted.
(This disables the keepSelection resource).
@ -1300,9 +1299,9 @@ Bracketed Paste Mode
When bracketed paste mode is set, pasted text is bracketed with control
sequences so that the program can differentiate pasted text from typed-
in text. When bracketed paste mode is set, the program will receive:
ESC [ 200 ~,
ESC [ 200 ~,
followed by the pasted text, followed by
ESC [ 201 ~.
ESC [ 201 ~.
Title Modes
The window- and icon-labels can be set or queried using control
@ -1475,16 +1474,17 @@ LF Line Feed or New Line (Ctrl-J).
VT Cursor up (Ctrl-K).
FF Form Feed or New Page (Ctrl-L).
CR Carriage Return (Ctrl-M).
ESC ETX Switch to VT100 Mode (ESC Ctrl-C).
ESC ENQ Return Terminal Status (ESC Ctrl-E).
ESC FF PAGE (Clear Screen) (ESC Ctrl-L).
ESC SO Begin 4015 APL mode (ESC Ctrl-N). (This is ignored by xterm).
ESC SI End 4015 APL mode (ESC Ctrl-O). (This is ignored by xterm).
ESC ETX Switch to VT100 Mode (ESC Ctrl-C).
ESC ENQ Return Terminal Status (ESC Ctrl-E).
ESC FF PAGE (Clear Screen) (ESC Ctrl-L).
ESC SO Begin 4015 APL mode (ESC Ctrl-N). (This is ignored by
xterm).
ESC SI End 4015 APL mode (ESC Ctrl-O). (This is ignored by xterm).
ESC ETB COPY (Save Tektronix Codes to file COPYyyyy-mm-dd.hh:mm:ss).
ETB (end transmission block) is the same as Ctrl-W.
ESC CAN Bypass Condition (ESC Ctrl-X).
ESC SUB GIN mode (ESC Ctrl-Z).
ESC FS Special Point Plot Mode (ESC Ctrl-\).
ESC CAN Bypass Condition (ESC Ctrl-X).
ESC SUB GIN mode (ESC Ctrl-Z).
ESC FS Special Point Plot Mode (ESC Ctrl-\).
ESC 8 Select Large Character Set.
ESC 9 Select #2 Character Set.
ESC : Select #3 Character Set.

View File

@ -1,36 +1,34 @@
/* $XTermId: doublechr.c,v 1.75 2010/06/15 10:58:13 tom Exp $ */
/* $XTermId: doublechr.c,v 1.76 2011/09/11 14:59:40 tom Exp $ */
/************************************************************
Copyright 1997-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 1997-2010,2011 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.
*/
#include <xterm.h>
#include <data.h>

View File

@ -1,36 +1,34 @@
/* $XTermId: fontutils.c,v 1.361 2011/07/17 22:26:05 tom Exp $ */
/* $XTermId: fontutils.c,v 1.368 2011/09/11 13:22:34 tom Exp $ */
/************************************************************
Copyright 1998-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 1998-2010,2011 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.
*/
/*
* A portion of this module (for FontNameProperties) was adapted from EMU 1.3;
@ -53,6 +51,9 @@ authorization.
#include <stdio.h>
#include <ctype.h>
#define SetFontWidth(screen,dst,src) (dst)->f_width = (src)
#define SetFontHeight(screen,dst,src) (dst)->f_height = (int)((screen)->scale_height * (float) (src))
/* from X11/Xlibint.h - not all vendors install this file */
#define CI_NONEXISTCHAR(cs) (((cs)->width == 0) && \
(((cs)->rbearing|(cs)->lbearing| \
@ -661,8 +662,8 @@ is_double_width_font_xft(Display * dpy, XftFont * font)
{
XGlyphInfo gi1, gi2;
FcChar32 c1 = HALF_WIDTH_CHAR1, c2 = HALF_WIDTH_CHAR2;
char *fwstr = FULL_WIDTH_TEST_STRING;
char *hwstr = HALF_WIDTH_TEST_STRING;
String fwstr = FULL_WIDTH_TEST_STRING;
String hwstr = HALF_WIDTH_TEST_STRING;
/* Some Korean fonts don't have Chinese characters at all. */
if (!XftCharExists(dpy, font, FULL_WIDTH_CHAR1)) {
@ -677,8 +678,16 @@ is_double_width_font_xft(Display * dpy, XftFont * font)
if (gi1.xOff != gi2.xOff) /* Not a fixed-width font */
return False;
XftTextExtentsUtf8(dpy, font, (FcChar8 *) hwstr, (int) strlen(hwstr), &gi1);
XftTextExtentsUtf8(dpy, font, (FcChar8 *) fwstr, (int) strlen(fwstr), &gi2);
XftTextExtentsUtf8(dpy,
font,
(_Xconst FcChar8 *) hwstr,
(int) strlen(hwstr),
&gi1);
XftTextExtentsUtf8(dpy,
font,
(_Xconst FcChar8 *) fwstr,
(int) strlen(fwstr),
&gi2);
/*
* fontconfig and Xft prior to 2.2(?) set the width of half-width
@ -1309,8 +1318,11 @@ sameSubResources(SubResourceRec * a, SubResourceRec * b)
if (!SAME_MEMBER(default_font.f_n)
|| !SAME_MEMBER(default_font.f_b)
#if OPT_WIDE_CHARS
|| !SAME_MEMBER(default_font.f_w)
|| !SAME_MEMBER(default_font.f_wb)) {
|| !SAME_MEMBER(default_font.f_wb)
#endif
) {
TRACE(("sameSubResources: default_font differs\n"));
result = False;
} else {
@ -1560,12 +1572,13 @@ xtermSetCursorBox(TScreen * screen)
#define CACHE_XFT(dst,src) if (src != 0) {\
checkXft(xw, &(dst[fontnum]), src);\
TRACE(("Xft metrics %s[%d] = %d (%d,%d) advance %d, actual %d%s\n",\
TRACE(("Xft metrics %s[%d] = %d (%d,%d)%s advance %d, actual %d%s\n",\
#dst,\
fontnum,\
src->height,\
src->ascent,\
src->descent,\
((src->ascent + src->descent) > src->height ? "*" : ""),\
src->max_advance_width,\
dst[fontnum].map.min_width,\
dst[fontnum].map.mixed ? " mixed" : ""));\
@ -1776,8 +1789,8 @@ setRenderFontsize(TScreen * screen, VTwin * win, XftFont * font, const char *tag
width >>= 1;
}
if (tag == 0) {
win->f_width = width;
win->f_height = height;
SetFontWidth(screen, win, width);
SetFontHeight(screen, win, height);
win->f_ascent = ascent;
win->f_descent = descent;
TRACE(("setRenderFontsize result %dx%d (%d+%d)\n",
@ -1791,8 +1804,8 @@ setRenderFontsize(TScreen * screen, VTwin * win, XftFont * font, const char *tag
win->f_width, win->f_height, win->f_ascent, win->f_descent,
width, height, ascent, descent));
win->f_width = width;
win->f_height = height;
SetFontWidth(screen, win, width);
SetFontHeight(screen, win, height);
win->f_ascent = ascent;
win->f_descent = descent;
} else {
@ -2101,8 +2114,8 @@ xtermComputeFontInfo(XtermWidget xw,
if (screen->force_packed) {
XTermXftFonts *use = &(screen->renderFontNorm[fontnum]);
win->f_height = use->font->ascent + use->font->descent;
win->f_width = use->map.min_width;
SetFontHeight(screen, win, use->font->ascent + use->font->descent);
SetFontWidth(screen, win, use->map.min_width);
TRACE(("...packed TrueType font %dx%d vs %d\n",
win->f_height,
win->f_width,
@ -2119,11 +2132,11 @@ xtermComputeFontInfo(XtermWidget xw,
#endif /* OPT_RENDERFONT */
{
if (is_double_width_font(font) && !(screen->fnt_prop)) {
win->f_width = (font->min_bounds.width);
SetFontWidth(screen, win, font->min_bounds.width);
} else {
win->f_width = (font->max_bounds.width);
SetFontWidth(screen, win, font->max_bounds.width);
}
win->f_height = (font->ascent + font->descent);
SetFontHeight(screen, win, font->ascent + font->descent);
win->f_ascent = font->ascent;
win->f_descent = font->descent;
}
@ -2794,7 +2807,7 @@ useFaceSizes(XtermWidget xw)
/*
* Workaround for breakage in font-packages - check if all of the
* bitmap font sizes are the same, and if we're using TrueType
* fonts.
* fonts.
*/
if (broken_fonts) {
float lo_value = (float) 9.0e9;

View File

@ -1,36 +1,34 @@
/* $XTermId: fontutils.h,v 1.83 2011/04/24 20:47:51 tom Exp $ */
/* $XTermId: fontutils.h,v 1.84 2011/09/11 14:59:37 tom Exp $ */
/************************************************************
Copyright 1998-2010,2011 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 1998-2010,2011 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.
*/
#ifndef included_fontutils_h
#define included_fontutils_h 1

View File

@ -1,36 +1,34 @@
/* $XTermId: linedata.c,v 1.79 2011/01/21 00:07:35 tom Exp $ */
/* $XTermId: linedata.c,v 1.80 2011/09/11 14:59:39 tom Exp $ */
/************************************************************
Copyright 2009-2010,2011 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 2009-2010,2011 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.
*/
#include <xterm.h>
#include <data.h> /* FIXME - needed for 'term' */

View File

@ -1,4 +1,76 @@
/* $XTermId: main.c,v 1.656 2011/08/25 08:55:31 tom Exp $ */
/* $XTermId: main.c,v 1.667 2011/09/11 21:02:37 tom Exp $ */
/*
* Copyright 2002-2010,2011 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 1987, 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, 1988 by Digital Equipment Corporation, Maynard.
*
* All Rights Reserved
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation, and that the name of Digital not be used in
* advertising or publicity pertaining to distribution of the software
* without specific, written prior permission.
*
* DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
* DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
* ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
*/
/*
* W A R N I N G
@ -13,80 +85,6 @@
* hold your breath, though....
*/
/***********************************************************
Copyright 2002-2010,2011 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 1987, 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, 1988 by Digital Equipment Corporation, Maynard.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Digital not be used in
advertising or publicity pertaining to distribution of the software
without specific, written prior permission.
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
/* main.c */
#define RES_OFFSET(field) XtOffsetOf(XTERM_RESOURCE, field)
@ -1033,6 +1031,7 @@ static XrmOptionDescRec optionDescList[] = {
{"+rvc", "*colorRVMode", XrmoptionNoArg, (XPointer) "on"},
{"-sf", "*sunFunctionKeys", XrmoptionNoArg, (XPointer) "on"},
{"+sf", "*sunFunctionKeys", XrmoptionNoArg, (XPointer) "off"},
{"-sh", "*scaleHeight", XrmoptionSepArg, (XPointer) NULL},
{"-si", "*scrollTtyOutput", XrmoptionNoArg, (XPointer) "off"},
{"+si", "*scrollTtyOutput", XrmoptionNoArg, (XPointer) "on"},
{"-sk", "*scrollKey", XrmoptionNoArg, (XPointer) "on"},
@ -1420,7 +1419,6 @@ parseArg(int *num, char **argv, char **valuep)
/* *INDENT-OFF* */
#define DATA(option,kind) { option, NULL, kind, (XtPointer) NULL }
static XrmOptionDescRec opTable[] = {
DATA("+rv", XrmoptionNoArg),
DATA("+synchronous", XrmoptionNoArg),
DATA("-background", XrmoptionSepArg),
DATA("-bd", XrmoptionSepArg),
@ -1433,11 +1431,9 @@ parseArg(int *num, char **argv, char **valuep)
DATA("-fn", XrmoptionSepArg),
DATA("-font", XrmoptionSepArg),
DATA("-foreground", XrmoptionSepArg),
DATA("-geometry", XrmoptionSepArg),
DATA("-iconic", XrmoptionNoArg),
DATA("-name", XrmoptionSepArg),
DATA("-reverse", XrmoptionNoArg),
DATA("-rv", XrmoptionNoArg),
DATA("-selectionTimeout", XrmoptionSepArg),
DATA("-synchronous", XrmoptionNoArg),
DATA("-title", XrmoptionSepArg),
@ -1460,6 +1456,9 @@ parseArg(int *num, char **argv, char **valuep)
int atbest = -1;
int best = -1;
int test;
Boolean exact = False;
int ambiguous1 = -1;
int ambiguous2 = -1;
#define ITEM(n) ((Cardinal)(n) < XtNumber(optionDescList) \
? &optionDescList[n] \
@ -1485,10 +1484,12 @@ parseArg(int *num, char **argv, char **valuep)
if ((test + 1) == (int) strlen(check->option)) {
if (check->argKind == XrmoptionStickyArg) {
if (strlen(argv[*num]) > strlen(check->option)) {
exact = True;
atbest = (int) inlist;
break;
}
} else if ((test + 1) == (int) strlen(argv[*num])) {
exact = True;
atbest = (int) inlist;
break;
}
@ -1513,10 +1514,8 @@ parseArg(int *num, char **argv, char **valuep)
} else if (test == best) {
if (atbest >= 0) {
if (atbest > 0) {
fprintf(stderr,
"%s: ambiguous option \"%s\" vs \"%s\"\n",
ProgramName, check->option,
ITEM(atbest)->option);
ambiguous1 = (int) inlist;
ambiguous2 = (int) atbest;
}
atbest = -1;
}
@ -1526,6 +1525,13 @@ parseArg(int *num, char **argv, char **valuep)
*valuep = 0;
if (atbest >= 0) {
if (!exact && ambiguous1 >= 0 && ambiguous2 >= 0) {
fprintf(stderr,
"%s: ambiguous option \"%s\" vs \"%s\"\n",
ProgramName,
ITEM(ambiguous1)->option,
ITEM(ambiguous2)->option);
}
result = ITEM(atbest);
TRACE(("...result %s\n", result->option));
/* expand abbreviations */
@ -2406,7 +2412,7 @@ main(int argc, char *argv[]ENVP_ARG)
char **split_filter = x_splitargs(term->misc.localefilter);
unsigned count_split = x_countargv(split_filter);
unsigned count_exec = x_countargv(command_to_exec);
unsigned count_using = (term->misc.use_encoding ? 2 : 0);
unsigned count_using = (unsigned) (term->misc.use_encoding ? 2 : 0);
command_to_exec_with_luit = TypeCallocN(char *,
(count_split
@ -2419,7 +2425,7 @@ main(int argc, char *argv[]ENVP_ARG)
x_appendargv(command_to_exec_with_luit, split_filter);
if (count_using) {
char *encoding_opt[4];
encoding_opt[0] = "-encoding";
encoding_opt[0] = x_strdup("-encoding");
encoding_opt[1] = term->misc.locale_str;
encoding_opt[2] = 0;
x_appendargv(command_to_exec_with_luit, encoding_opt);
@ -2427,7 +2433,7 @@ main(int argc, char *argv[]ENVP_ARG)
command_length_with_luit = x_countargv(command_to_exec_with_luit);
if (count_exec) {
char *delimiter[2];
delimiter[0] = "--";
delimiter[0] = x_strdup("--");
delimiter[1] = 0;
x_appendargv(command_to_exec_with_luit, delimiter);
x_appendargv(command_to_exec_with_luit, command_to_exec);
@ -3227,7 +3233,7 @@ spawnXTerm(XtermWidget xw)
#ifdef TTYSIZE_STRUCT
TTYSIZE_STRUCT ts;
#endif
struct passwd *pw = NULL;
struct passwd pw;
char *login_name = NULL;
#ifndef USE_UTEMPTER
#ifdef HAVE_UTMP
@ -3294,7 +3300,7 @@ spawnXTerm(XtermWidget xw)
ttyfd = -1;
errno = ENXIO;
}
pw = NULL;
memset(&pw, 0, sizeof(pw));
#if OPT_PTY_HANDSHAKE
got_handshake_size = False;
#endif /* OPT_PTY_HANDSHAKE */
@ -4153,40 +4159,9 @@ spawnXTerm(XtermWidget xw)
#endif
#ifdef HAVE_UTMP
pw = getpwuid(screen->uid);
login_name = NULL;
if (pw && pw->pw_name) {
#ifdef HAVE_GETLOGIN
/*
* If the value from getlogin() differs from the value we
* get by looking in the password file, check if it does
* correspond to the same uid. If so, allow that as an
* alias for the uid.
*
* Of course getlogin() will fail if we're started from
* a window-manager, since there's no controlling terminal
* to fuss with. In that case, try to get something useful
* from the user's $LOGNAME or $USER environment variables.
*/
if (((login_name = getlogin()) != NULL
|| (login_name = x_getenv("LOGNAME")) != NULL
|| (login_name = x_getenv("USER")) != NULL)
&& strcmp(login_name, pw->pw_name)) {
struct passwd *pw2 = getpwnam(login_name);
if (pw2 != 0) {
uid_t uid2 = pw2->pw_uid;
pw = getpwuid(screen->uid);
if ((uid_t) pw->pw_uid != uid2)
login_name = NULL;
} else {
pw = getpwuid(screen->uid);
}
}
#endif
if (login_name == NULL)
login_name = pw->pw_name;
if (login_name != NULL)
login_name = x_strdup(login_name);
if (x_getpwuid(screen->uid, &pw)) {
login_name = x_getlogin(screen->uid, &pw);
}
if (login_name != NULL) {
xtermSetenv("LOGNAME", login_name); /* for POSIX */
@ -4299,7 +4274,7 @@ spawnXTerm(XtermWidget xw)
tslot = ttyslot();
added_utmp_entry = False;
{
if (tslot > 0 && pw && !resource.utmpInhibit &&
if (tslot > 0 && OkPasswd(&pw) && !resource.utmpInhibit &&
(i = open(etc_utmp, O_WRONLY)) >= 0) {
memset(&utmp, 0, sizeof(utmp));
(void) strncpy(utmp.ut_line,
@ -4403,8 +4378,8 @@ spawnXTerm(XtermWidget xw)
IGNORE_RC(setgid(screen->gid));
TRACE_IDS;
#ifdef HAS_BSD_GROUPS
if (geteuid() == 0 && pw) {
if (initgroups(login_name, pw->pw_gid)) {
if (geteuid() == 0 && OkPasswd(&pw)) {
if (initgroups(login_name, pw.pw_gid)) {
perror("initgroups failed");
SysError(ERROR_INIGROUPS);
}
@ -4468,11 +4443,11 @@ spawnXTerm(XtermWidget xw)
xtermSetenv("LINES", numbuf);
}
#ifdef HAVE_UTMP
if (pw) { /* SVR4 doesn't provide these */
if (OkPasswd(&pw)) { /* SVR4 doesn't provide these */
if (!x_getenv("HOME"))
xtermSetenv("HOME", pw->pw_dir);
xtermSetenv("HOME", pw.pw_dir);
if (!x_getenv("SHELL"))
xtermSetenv("SHELL", pw->pw_shell);
xtermSetenv("SHELL", pw.pw_shell);
}
#endif /* HAVE_UTMP */
#ifdef OWN_TERMINFO_DIR
@ -4540,11 +4515,10 @@ spawnXTerm(XtermWidget xw)
* Incidentally, our setting of $SHELL tells luit to use that
* program rather than choosing between $SHELL and "/bin/sh".
*/
unsetenv("SHELL");
if ((ptr = explicit_shname) == NULL) {
if ((ptr = x_getenv("SHELL")) == NULL) {
if ((pw == NULL && (pw = getpwuid(screen->uid)) == NULL)
|| *(ptr = pw->pw_shell) == 0) {
if ((!OkPasswd(&pw) && !x_getpwuid(screen->uid, &pw))
|| *(ptr = pw.pw_shell) == 0) {
ptr = x_strdup("/bin/sh");
} else if (ptr != 0) {
xtermSetenv("SHELL", ptr);
@ -4603,7 +4577,7 @@ spawnXTerm(XtermWidget xw)
#endif /* !TERMIO_STRUCT */
#ifdef USE_LOGIN_DASH_P
if (xw->misc.login_shell && pw && added_utmp_entry)
if (xw->misc.login_shell && OkPasswd(&pw) && added_utmp_entry)
execl(bin_login, "login", "-p", "-f", login_name, (void *) 0);
#endif
@ -4916,7 +4890,7 @@ Exit(int n)
#endif
/*
* Close after releasing ownership to avoid race condition: other programs
* Close after releasing ownership to avoid race condition: other programs
* grabbing it, and *then* having us release ownership....
*/
close(screen->respond); /* close explicitly to avoid race with slave side */

View File

@ -1,4 +1,4 @@
/* $XTermId: menu.c,v 1.295 2011/07/12 10:45:36 tom Exp $ */
/* $XTermId: menu.c,v 1.297 2011/09/11 13:15:18 tom Exp $ */
/*
* Copyright 1999-2010,2011 by Thomas E. Dickey
@ -540,9 +540,11 @@ unusedEntries(XtermWidget xw, MenuIndex num)
memset(result, 0, sizeof(result));
switch (num) {
case mainMenu:
#if OPT_MAXIMIZE
if (resource.fullscreen > 1) {
result[mainMenu_fullscreen] = True;
}
#endif
#if OPT_NUM_LOCK
if (!screen->alt_is_not_meta) {
result[mainMenu_alt_esc] = True;
@ -655,7 +657,7 @@ create_menu(Widget w, XtermWidget xw, MenuIndex num)
for (n = 0; n < nentries; ++n) {
if (!unused[n]) {
cb[0].callback = (XtCallbackProc) entries[n].function;
cb[0].closure = (caddr_t) entries[n].name;
cb[0].closure = (XtPointer) entries[n].name;
entries[n].widget = XtCreateManagedWidget(entries[n].name,
(entries[n].function
? smeBSBObjectClass
@ -3564,6 +3566,7 @@ update_font_utf8_title(void)
}
#endif
#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT
void
update_menu_allowBoldFonts(void)
{
@ -3572,6 +3575,7 @@ update_menu_allowBoldFonts(void)
fontMenu_allowBoldFonts,
TScreenOf(term)->allowBoldFonts);
}
#endif
#if OPT_ALLOW_XXX_OPS
static void

View File

@ -1,4 +1,4 @@
/* $XTermId: menu.h,v 1.125 2011/07/11 09:41:34 tom Exp $ */
/* $XTermId: menu.h,v 1.126 2011/08/28 21:15:40 tom Exp $ */
/*
* Copyright 1999-2010,2011 by Thomas E. Dickey
@ -435,8 +435,6 @@ extern void update_poponbell(void);
#define update_marginbell() /* nothing */
extern void update_menu_allowBoldFonts(void);
#if OPT_ALLOW_XXX_OPS
extern void update_menu_allowColorOps(void);
extern void update_menu_allowFontOps(void);
@ -508,6 +506,12 @@ extern void set_tekhide_sensitivity(void);
#define set_tekhide_sensitivity() /*nothing*/
#endif
#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT
extern void update_menu_allowBoldFonts(void);
#else
#define update_menu_allowBoldFonts() /*nothing*/
#endif
/*
* macros for mapping font size to tekMenu placement
*/

View File

@ -1,4 +1,4 @@
/* $XTermId: misc.c,v 1.539 2011/08/23 01:03:18 tom Exp $ */
/* $XTermId: misc.c,v 1.548 2011/09/11 20:18:45 tom Exp $ */
/*
* Copyright 1999-2010,2011 by Thomas E. Dickey
@ -272,7 +272,7 @@ do_xevents(void)
{
TScreen *screen = TScreenOf(term);
if (XtAppPending(app_con)
if (xtermAppPending()
||
#if defined(VMS) || defined(__VMS)
screen->display->qlen > 0
@ -359,6 +359,172 @@ xtermShowPointer(XtermWidget xw, Bool enable)
}
}
#if OPT_TRACE
static void
TraceExposeEvent(XEvent * arg)
{
XExposeEvent *event = (XExposeEvent *) arg;
TRACE(("pending Expose %ld %d: %d,%d %dx%d %#lx\n",
event->serial,
event->count,
event->y,
event->x,
event->height,
event->width,
event->window));
}
#else
#define TraceExposeEvent(event) /* nothing */
#endif
/* true if p contains q */
#define ExposeContains(p,q) \
((p)->y <= (q)->y \
&& (p)->x <= (q)->x \
&& ((p)->y + (p)->height) >= ((q)->y + (q)->height) \
&& ((p)->x + (p)->width) >= ((q)->x + (q)->width))
static XtInputMask
mergeExposeEvents(XEvent * target)
{
XEvent next_event;
XExposeEvent *p, *q;
TRACE(("pending Expose...?\n"));
TraceExposeEvent(target);
XtAppNextEvent(app_con, target);
p = (XExposeEvent *) target;
while (XtAppPending(app_con)
&& XtAppPeekEvent(app_con, &next_event)
&& next_event.type == Expose) {
Boolean merge_this = False;
TraceExposeEvent(&next_event);
q = (XExposeEvent *) (&next_event);
XtAppNextEvent(app_con, &next_event);
/*
* If either window is contained within the other, merge the events.
* The traces show that there are also cases where a full repaint of
* a window is broken into 3 or more rectangles, which do not arrive
* in the same instant. We could merge those if xterm were modified
* to skim several events ahead.
*/
if (p->window == q->window) {
if (ExposeContains(p, q)) {
TRACE(("pending Expose...merged forward\n"));
merge_this = True;
next_event = *target;
} else if (ExposeContains(q, p)) {
TRACE(("pending Expose...merged backward\n"));
merge_this = True;
}
}
if (!merge_this) {
XtDispatchEvent(target);
}
*target = next_event;
}
XtDispatchEvent(target);
return XtAppPending(app_con);
}
#if OPT_TRACE
static void
TraceConfigureEvent(XEvent * arg)
{
XConfigureEvent *event = (XConfigureEvent *) arg;
TRACE(("pending Configure %ld %d,%d %dx%d %#lx\n",
event->serial,
event->y,
event->x,
event->height,
event->width,
event->window));
}
#else
#define TraceConfigureEvent(event) /* nothing */
#endif
/*
* On entry, we have peeked at the event queue and see a configure-notify
* event. Remove that from the queue so we can look further.
*
* Then, as long as there is a configure-notify event in the queue, remove
* that. If the adjacent events are for different windows, process the older
* event and update the event used for comparing windows. If they are for the
* same window, only the newer event is of interest.
*
* Finally, process the (remaining) configure-notify event.
*/
static XtInputMask
mergeConfigureEvents(XEvent * target)
{
XEvent next_event;
XConfigureEvent *p, *q;
XtAppNextEvent(app_con, target);
p = (XConfigureEvent *) target;
TRACE(("pending Configure...?%s\n", XtAppPending(app_con) ? "yes" : "no"));
TraceConfigureEvent(target);
if (XtAppPending(app_con)
&& XtAppPeekEvent(app_con, &next_event)
&& next_event.type == ConfigureNotify) {
Boolean merge_this = False;
TraceConfigureEvent(&next_event);
XtAppNextEvent(app_con, &next_event);
q = (XConfigureEvent *) (&next_event);
if (p->window == q->window) {
TRACE(("pending Configure...merged\n"));
merge_this = True;
}
if (!merge_this) {
TRACE(("pending Configure...skipped\n"));
XtDispatchEvent(target);
}
*target = next_event;
}
XtDispatchEvent(target);
return XtAppPending(app_con);
}
/*
* Filter redundant Expose- and ConfigureNotify-events. This is limited to
* adjacent events because there could be other event-loop processing. Absent
* that limitation, it might be possible to scan ahead to find when the screen
* would be completely updated, skipping unnecessary re-repainting before that
* point.
*
* Note: all cases should allow doing XtAppNextEvent if result is true.
*/
XtInputMask
xtermAppPending(void)
{
XtInputMask result = XtAppPending(app_con);
XEvent this_event;
while (result && XtAppPeekEvent(app_con, &this_event)) {
if (this_event.type == Expose) {
result = mergeExposeEvents(&this_event);
} else if (this_event.type == ConfigureNotify) {
result = mergeConfigureEvents(&this_event);
} else {
TRACE(("pending %s\n", visibleEventType(this_event.type)));
break;
}
}
return result;
}
void
xevents(void)
{
@ -378,7 +544,7 @@ xevents(void)
* XEvent queue. Other sources i.e., the pty are handled elsewhere
* with select().
*/
while ((input_mask = XtAppPending(app_con)) != 0) {
while ((input_mask = xtermAppPending()) != 0) {
if (input_mask & XtIMTimer)
XtAppProcessEvent(app_con, (XtInputMask) XtIMTimer);
#if OPT_SESSION_MGT
@ -462,7 +628,7 @@ xevents(void)
XtDispatchEvent(&event);
}
} while (XtAppPending(app_con) & XtIMXEvent);
} while (xtermAppPending() & XtIMXEvent);
}
static Cursor
@ -1623,9 +1789,6 @@ void
StartLog(XtermWidget xw)
{
static char *log_default;
#ifdef ALLOWLOGFILEEXEC
char *cp;
#endif /* ALLOWLOGFILEEXEC */
TScreen *screen = TScreenOf(xw);
if (screen->logging || (screen->inhibit & I_LOG))
@ -1685,7 +1848,7 @@ StartLog(XtermWidget xw)
int pid;
int p[2];
static char *shell;
struct passwd *pw;
struct passwd pw;
if (pipe(p) < 0 || (pid = fork()) < 0)
return;
@ -1705,14 +1868,19 @@ StartLog(XtermWidget xw)
close(ConnectionNumber(screen->display));
close(screen->respond);
if ((((cp = x_getenv("SHELL")) == NULL)
&& ((pw = getpwuid(screen->uid)) == NULL
|| *(cp = pw->pw_shell) == 0))
|| (shell = CastMallocN(char, strlen(cp))) == 0) {
if ((shell = x_getenv("SHELL")) == NULL) {
if (x_getpwuid(screen->uid, &pw)) {
x_getlogin(screen->uid, &pw);
if (*(pw.pw_shell)) {
shell = pw.pw_shell;
}
}
}
if (shell == 0) {
static char dummy[] = "/bin/sh";
shell = dummy;
} else {
strcpy(shell, cp);
}
signal(SIGHUP, SIG_DFL);
@ -3290,8 +3458,10 @@ do_dcs(XtermWidget xw, Char * dcsbuf, size_t dcslen)
int code = 0;
if (screen->cursor_underline)
code |= 2;
#if OPT_BLINK_CURS
if (screen->cursor_blink)
code |= 1;
#endif
sprintf(reply, "%d%s", code + 1, cp);
} else
okay = False;
@ -4204,12 +4374,31 @@ xtermFindShell(char *leaf, Bool warning)
#define ENV_HUNK(n) (unsigned) ((((n) + 1) | 31) + 1)
/*
* If we do not have unsetenv(), make consistent updates for environ[].
* This could happen on some older machines due to the uneven standardization
* process for the two functions.
*
* That is, putenv() makes a copy of environ, and some implementations do not
* update the environ pointer, so the fallback when unsetenv() is missing would
* not work as intended. Likewise, the reverse could be true, i.e., unsetenv
* could copy environ.
*/
#if defined(HAVE_PUTENV) && !defined(HAVE_UNSETENV)
#undef HAVE_PUTENV
#elif !defined(HAVE_PUTENV) && defined(HAVE_UNSETENV)
#undef HAVE_UNSETENV
#endif
/*
* copy the environment before Setenv'ing.
*/
void
xtermCopyEnv(char **oldenv)
{
#ifdef HAVE_PUTENV
(void) oldenv;
#else
unsigned size;
char **newenv;
@ -4220,8 +4409,32 @@ xtermCopyEnv(char **oldenv)
newenv = TypeCallocN(char *, ENV_HUNK(size));
memmove(newenv, oldenv, size * sizeof(char *));
environ = newenv;
#endif
}
#if !defined(HAVE_PUTENV) || !defined(HAVE_UNSETENV)
static int
findEnv(const char *var, int *lengthp)
{
char *test;
int envindex = 0;
size_t len = strlen(var);
int found = -1;
TRACE(("findEnv(%s=..)\n", var));
while ((test = environ[envindex]) != NULL) {
if (strncmp(test, var, len) == 0 && test[len] == '=') {
found = envindex;
break;
}
envindex++;
}
*lengthp = envindex;
return found;
}
#endif
/*
* sets the value of var to be arg in the Unix 4.2 BSD environment env.
* Var should end with '=' (bindings are of the form "var=value").
@ -4233,21 +4446,20 @@ void
xtermSetenv(const char *var, const char *value)
{
if (value != 0) {
char *test;
int envindex = 0;
#ifdef HAVE_PUTENV
char *both = malloc(2 + strlen(var) + strlen(value));
TRACE(("xtermSetenv(%s=%s)\n", var, value));
if (both) {
sprintf(both, "%s=%s", var, value);
putenv(both);
}
#else
size_t len = strlen(var);
int found = -1;
int envindex;
int found = findEnv(var, &envindex);
TRACE(("xtermSetenv(%s=%s)\n", var, value));
while ((test = environ[envindex]) != NULL) {
if (strncmp(test, var, len) == 0 && test[len] == '=') {
found = envindex;
break;
}
envindex++;
}
if (found < 0) {
unsigned need = ENV_HUNK(envindex + 1);
unsigned have = ENV_HUNK(envindex);
@ -4275,9 +4487,29 @@ xtermSetenv(const char *var, const char *value)
return;
}
sprintf(environ[found], "%s=%s", var, value);
#endif
}
}
void
xtermUnsetenv(const char *var)
{
TRACE(("xtermUnsetenv(%s)\n", var));
#ifdef HAVE_UNSETENV
unsetenv(var);
#else
{
int ignore;
int item = findEnv(var, &ignore);
if (item >= 0) {
while ((environ[item] = environ[item + 1]) != 0) {
++item;
}
}
}
#endif
}
/*ARGSUSED*/
int
xerror(Display * d, XErrorEvent * ev)
@ -4644,10 +4876,10 @@ sortedOpts(OptionHelp * options, XrmOptionDescRec * descs, Cardinal numDescs)
/*
* Report the character-type locale that xterm was started in.
*/
char *
String
xtermEnvLocale(void)
{
static char *result;
static String result;
if (result == 0) {
if ((result = x_nonempty(setlocale(LC_CTYPE, 0))) == 0) {
@ -4846,11 +5078,12 @@ xtermOpenApplication(XtAppContext * app_context_return,
num_args);
IceAddConnectionWatch(icewatch, NULL);
#else
result = XtAppInitialize(app_conp,
result = XtAppInitialize(app_context_return,
my_class,
optionDescList,
XtNumber(optionDescList),
&argc, argv,
options,
num_options,
argc_in_out,
argv_in_out,
fallback_resources,
NULL, 0);
#endif /* OPT_SESSION_MGT */

View File

@ -1,3 +1,15 @@
xterm-dev (275) unstable; urgency=low
* Regressions in #272, #274.
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 11 Sep 2011 09:46:57 -0400
xterm-dev (274) unstable; urgency=low
* Various build-fixes.
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 28 Aug 2011 20:07:29 -0400
xterm-dev (273) unstable; urgency=low
* Build-fixes/regressions from #272.

View File

@ -1,7 +1,7 @@
# $XTermId: xterm.spec,v 1.15 2011/08/25 09:42:35 tom Exp $
# $XTermId: xterm.spec,v 1.17 2011/09/11 13:46:07 tom Exp $
Summary: A text-based Web browser
Name: xterm-dev
Version: 273
Version: 275
Release: 1
License: X11
Group: Applications/Internet

View File

@ -1,36 +1,34 @@
/* $XTermId: print.c,v 1.138 2011/07/14 23:49:10 tom Exp $ */
/* $XTermId: print.c,v 1.139 2011/09/11 14:59:36 tom Exp $ */
/************************************************************
Copyright 1997-2010,2011 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 1997-2010,2011 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.
*/
#include <xterm.h>
#include <data.h>

View File

@ -1,36 +1,34 @@
/* $XTermId: ptydata.c,v 1.100 2011/02/02 01:45:14 tom Exp $ */
/* $XTermId: ptydata.c,v 1.101 2011/09/11 14:59:38 tom Exp $ */
/************************************************************
Copyright 1999-2010,2011 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 1999-2010,2011 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.
*/
#include <data.h>

View File

@ -1,4 +1,4 @@
/* $XTermId: ptyx.h,v 1.702 2011/08/23 01:02:53 tom Exp $ */
/* $XTermId: ptyx.h,v 1.704 2011/08/30 22:39:45 tom Exp $ */
/*
* Copyright 1999-2010,2011 by Thomas E. Dickey
@ -1748,6 +1748,7 @@ typedef struct {
#endif
Dimension fnt_wide;
Dimension fnt_high;
float scale_height; /* scaling for font-height */
XTermFonts fnts[fMAX]; /* normal/bold/etc for terminal */
Boolean free_bold_box; /* same_font_size's austerity */
Boolean allowBoldFonts; /* do we use bold fonts at all? */
@ -2001,7 +2002,7 @@ typedef struct {
#define MenuFontName(n) menu_font_names[n][fNorm]
long menu_font_sizes[NMENUFONTS];
int menu_font_number;
#if OPT_WIDE_CHARS
#if OPT_LOAD_VTFONTS || OPT_WIDE_CHARS
Boolean savedVTFonts;
Boolean mergedVTFonts;
SubResourceRec cacheVTFonts;

View File

@ -1,7 +1,7 @@
/* $XTermId: resize.c,v 1.114 2010/05/23 16:04:32 tom Exp $ */
/* $XTermId: resize.c,v 1.118 2011/09/11 20:19:19 tom Exp $ */
/*
* Copyright 2003-2009,2010 by Thomas E. Dickey
* Copyright 2003-2010,2011 by Thomas E. Dickey
*
* All Rights Reserved
*
@ -90,12 +90,6 @@
int ignore_unused;
#endif
#ifdef X_NOT_POSIX
#if !defined(SYSV) && !defined(i386)
extern struct passwd *getpwuid(); /* does ANYBODY need this? */
#endif /* SYSV && i386 */
#endif /* X_NOT_POSIX */
#ifdef __MVS__
#define ESCAPE(string) "\047" string
#else
@ -117,13 +111,19 @@ static struct {
int type;
} shell_list[] = {
{ "csh", SHELL_C }, /* vanilla cshell */
{ "tcsh", SHELL_C },
{ "jcsh", SHELL_C },
{ "tcsh", SHELL_C },
{ "sh", SHELL_BOURNE }, /* vanilla Bourne shell */
{ "ksh", SHELL_BOURNE }, /* Korn shell (from AT&T toolchest) */
{ "ksh-i", SHELL_BOURNE }, /* other name for latest Korn shell */
{ "ash", SHELL_BOURNE },
{ "bash", SHELL_BOURNE }, /* GNU Bourne again shell */
{ "dash", SHELL_BOURNE },
{ "jsh", SHELL_BOURNE },
{ "ksh", SHELL_BOURNE }, /* Korn shell (from AT&T toolchest) */
{ "ksh-i", SHELL_BOURNE }, /* another name for Korn shell */
{ "ksh93", SHELL_BOURNE }, /* Korn shell */
{ "mksh", SHELL_BOURNE },
{ "pdksh", SHELL_BOURNE },
{ "zsh", SHELL_BOURNE },
{ NULL, SHELL_BOURNE } /* default (same as xterm's) */
};
/* *INDENT-ON* */
@ -230,7 +230,6 @@ main(int argc, char **argv ENVP_ARG)
char *ptr;
int emu = VT100;
char *shell;
struct passwd *pw;
int i;
int rows, cols;
#ifdef USE_ANY_SYSV_TERMIO
@ -279,11 +278,19 @@ main(int argc, char **argv ENVP_ARG)
/* Find out what kind of shell this user is running.
* This is the same algorithm that xterm uses.
*/
if (((ptr = x_getenv("SHELL")) == NULL) &&
(((pw = getpwuid(getuid())) == NULL) ||
*(ptr = pw->pw_shell) == 0))
/* this is the same default that xterm uses */
ptr = x_strdup("/bin/sh");
if ((ptr = x_getenv("SHELL")) == NULL) {
uid_t uid = getuid();
struct passwd pw;
if (x_getpwuid(uid, &pw)) {
(void) x_getlogin(uid, &pw);
}
if (!OkPasswd(&pw)
|| *(ptr = pw.pw_shell) == 0) {
/* this is the same default that xterm uses */
ptr = x_strdup("/bin/sh");
}
}
shell = x_basename(ptr);

View File

@ -1,8 +1,7 @@
.\" $XTermId: resize.man,v 1.19 2011/08/16 09:10:05 tom Exp $
.\" $XTermId: resize.man,v 1.20 2011/09/11 19:28:54 tom Exp $
.\"
.\" updated by Thomas E. Dickey for XFree86, 1998-2006.
.\"
.\" $XFree86: xc/programs/xterm/resize.man,v 1.12 2006/02/13 01:14:59 dickey Exp $
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds AQ \(aq
.el .ds AQ '
@ -20,9 +19,11 @@ resize \- set environment and terminal settings to current xterm window size
.I Resize
prints a shell command for setting the appropriate environment variables
to indicate the current size of \fIxterm\fP window from which the command
is run. For this output to take effect, \fIresize\fP must either be evaluated
is run.
For this output to take effect, \fIresize\fP must either be evaluated
as part of the command line (usually done with a shell alias or function) or
else redirected to a file which can then be read in. From the C shell (usually
else redirected to a file which can then be read in.
From the C shell (usually
known as \fI/bin/csh\fP), the following alias could be defined in the
user's \fI.cshrc\fP:
.sp
@ -45,6 +46,15 @@ in with the \*(``.\*('' command:
$ resize > /tmp/out
$ .\0/tmp/out
.fi
.PP
.I Resize
determines the user's current shell by first checking if \fB$SHELL\fP
is set, and using that.
Otherwise it determines the user's shell by looking in the password file.
Generally Bourne-shell variants (including \fIksh\fP)
do not modify \fB$SHELL\fP,
so it is possible for \fIresize\fP to be confused if one runs
\fIresize\fP from a Bourne shell spawned from a C shell.
.SH OPTIONS
The following options may be used with \fIresize\fP:
.TP 8
@ -61,14 +71,15 @@ This option indicates that Sun console escape sequences will be used
instead of the VT100-style \fIxterm\fP escape codes.
If \fIrows\fP and
\fIcolumns\fP are given, \fIresize\fP will ask the \fIxterm\fP to resize
itself. However, the window manager may choose to disallow the change.
.sp
itself.
However, the window manager may choose to disallow the change.
.PP
Note that the Sun console escape sequences are recognized
by XFree86 \fIxterm\fP and
by \fIdtterm\fP.
The \fIresize\fP program may be installed as \fIsunsize\fP,
which causes makes it assume the \fB\-s\fP option.
.sp
.PP
The \fIrows\fP and
\fIcolumns\fP arguments must appear last; though they are normally
associated with the \fB\-s\fP option, they are parsed separately.

View File

@ -1,36 +1,34 @@
/* $XTermId: scrollback.c,v 1.14 2010/04/28 21:47:09 tom Exp $ */
/* $XTermId: scrollback.c,v 1.15 2011/09/11 14:59:40 tom Exp $ */
/************************************************************
Copyright 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 2009-2010,2011 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.
*/
#include <xterm.h>

View File

@ -1,4 +1,4 @@
/* $XTermId: scrollbar.c,v 1.181 2011/04/18 22:35:33 tom Exp $ */
/* $XTermId: scrollbar.c,v 1.182 2011/09/03 12:13:42 tom Exp $ */
/*
* Copyright 2000-2010,2011 by Thomas E. Dickey
@ -234,7 +234,7 @@ DoResizeScreen(XtermWidget xw)
}
#endif
XSync(screen->display, False); /* synchronize */
if (XtAppPending(app_con))
if (xtermAppPending())
xevents();
#ifndef NO_ACTIVE_ICON

View File

@ -1,7 +1,7 @@
/* $XTermId: tabs.c,v 1.38 2010/04/17 17:11:43 tom Exp $ */
/* $XTermId: tabs.c,v 1.39 2011/09/11 15:00:38 tom Exp $ */
/*
* Copyright 2000-2009,2010 by Thomas E. Dickey
* Copyright 2000-2010,2011 by Thomas E. Dickey
*
* All Rights Reserved
*
@ -29,6 +29,7 @@
* sale, use or other dealings in this Software without prior written
* authorization.
*
*
* Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
*
* All Rights Reserved

View File

@ -1,36 +1,34 @@
/* $XTermId: testxmc.c,v 1.47 2010/04/17 17:11:33 tom Exp $ */
/* $XTermId: testxmc.c,v 1.48 2011/09/11 14:59:40 tom Exp $ */
/************************************************************
Copyright 1997-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 1997-2010,2011 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.
*/
/*
* This module provides test support for curses applications that must work

View File

@ -1,10 +1,10 @@
/* $XTermId: trace.c,v 1.129 2011/08/22 09:56:16 tom Exp $ */
/* $XTermId: trace.c,v 1.131 2011/09/11 14:59:35 tom Exp $ */
/*
* Copyright 1997-2010,2011 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
@ -28,7 +28,6 @@
* holders shall not be used in advertising or otherwise to promote the
* sale, use or other dealings in this Software without prior written
* authorization.
*
*/
/*
@ -148,6 +147,17 @@ TraceIds(const char *fname, int lnum)
}
}
void
TraceTime(const char *fname, int lnum)
{
time_t now;
if (fname != 0) {
Trace("datetime (%s@%d) ", fname, lnum);
}
now = time((time_t *) 0);
Trace("-- %s", ctime(&now));
}
static void
formatAscii(char *dst, unsigned value)
{

View File

@ -1,7 +1,6 @@
/* $XTermId: trace.h,v 1.60 2011/08/21 23:44:01 tom Exp $ */
/* $XTermId: trace.h,v 1.64 2011/09/11 14:56:42 tom Exp $ */
/*
*
* Copyright 1997-2010,2011 by Thomas E. Dickey
*
* All Rights Reserved
@ -29,7 +28,6 @@
* holders shall not be used in advertising or otherwise to promote the
* sale, use or other dealings in this Software without prior written
* authorization.
*
*/
/*
@ -86,6 +84,10 @@ extern void TraceIds(const char * /* fname */, int /* lnum */);
#undef TRACE_IDS
#define TRACE_IDS TraceIds(__FILE__, __LINE__)
extern void TraceTime(const char * /* fname */, int /* lnum */);
#undef TRACE_TIME
#define TRACE_TIME TraceTime(__FILE__, __LINE__)
extern void TraceOptions(OptionHelp * /* options */, XrmOptionDescRec * /* resources */, Cardinal /* count */);
#undef TRACE_OPTS
#define TRACE_OPTS(opts,ress,lens) TraceOptions(opts,ress,lens)
@ -132,6 +134,9 @@ extern XtGeometryResult TraceResizeRequest(const char * /* fn */, int /* ln */,
#define init_Bres(name) \
TRACE(("init " #name " = %s\n", \
BtoS(wnew->name = request->name)))
#define init_Dres(name) \
TRACE(("init " #name " = %f\n", \
wnew->name = request->name))
#define init_Dres2(name,i) \
TRACE(("init " #name "[%d] = %f\n", i, \
wnew->name[i] = request->name[i]))
@ -151,6 +156,7 @@ extern XtGeometryResult TraceResizeRequest(const char * /* fn */, int /* ln */,
fill_Tres(wnew, request, offset)))
#else
#define init_Bres(name) wnew->name = request->name
#define init_Dres(name) wnew->name = request->name
#define init_Dres2(name,i) wnew->name[i] = request->name[i]
#define init_Ires(name) wnew->name = request->name
#define init_Sres(name) wnew->name = x_strtrim(request->name)

View File

@ -1,4 +1,4 @@
/* $XTermId: util.c,v 1.545 2011/02/17 00:28:45 tom Exp $ */
/* $XTermId: util.c,v 1.546 2011/08/31 00:10:07 tom Exp $ */
/*
* Copyright 1999-2010,2011 by Thomas E. Dickey
@ -3163,6 +3163,9 @@ drawXtermText(XtermWidget xw,
screen->cursor_state == OFF ? ' ' : '*',
y, x, chrset, len,
visibleIChars(text, len)));
if (screen->scale_height != 1.0) {
xtermFillCells(xw, flags, gc, x, y, (Cardinal) len);
}
y += FontAscent(screen);
#if OPT_WIDE_CHARS

View File

@ -1,12 +1,10 @@
/* $XTermId: version.h,v 1.334 2011/09/11 14:59:33 tom Exp $ */
/*
* $XTermId: version.h,v 1.331 2011/08/25 09:05:00 tom Exp $
* ----------------------------------------------------------------------------
* this file is part of xterm
*
* Copyright 1998-2010,2011 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
@ -14,10 +12,10 @@
* 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.
@ -25,12 +23,11 @@
* 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.
* ----------------------------------------------------------------------------
*/
/*
@ -39,7 +36,7 @@
* version of X to which this version of xterm has been built. The number in
* parentheses is my patch number (Thomas E. Dickey).
*/
#define XTERM_PATCH 273
#define XTERM_PATCH 275
#ifndef __vendorversion__
#define __vendorversion__ "XTerm/OpenBSD"

View File

@ -1,36 +1,34 @@
/* $XTermId: xstrings.c,v 1.40 2011/08/25 08:55:55 tom Exp $ */
/* $XTermId: xstrings.c,v 1.47 2011/09/11 20:20:12 tom Exp $ */
/************************************************************
Copyright 2000-2010,2011 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 2000-2010,2011 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.
*/
#include <xterm.h>
@ -41,6 +39,16 @@ authorization.
#include <xstrings.h>
static void
alloc_pw(struct passwd *target, struct passwd *source)
{
*target = *source;
/* we care only about these strings */
target->pw_dir = x_strdup(source->pw_dir);
target->pw_name = x_strdup(source->pw_name);
target->pw_shell = x_strdup(source->pw_shell);
}
void
x_appendargv(char **target, char **source)
{
@ -136,9 +144,110 @@ x_getenv(const char *name)
return x_strdup(x_nonempty(getenv(name)));
}
/*
* Call this with in_out pointing to data filled in by x_getpwnam() or by
* x_getpwnam(). It finds the user's logon name, if possible. As a side
* effect, it updates in_out to fill in possibly more-relevant data, i.e.,
* in case there is more than one alias for the same uid.
*/
char *
x_getlogin(uid_t uid, struct passwd *in_out)
{
char *login_name = NULL;
#ifdef HAVE_GETLOGIN
login_name = getlogin();
#endif
/*
* Of course getlogin() will fail if we're started from a window-manager,
* since there's no controlling terminal to fuss with. In that case, try
* to get something useful from the user's $LOGNAME or $USER environment
* variables.
*/
if (login_name == NULL) {
login_name = x_getenv("LOGNAME");
if (login_name == NULL)
login_name = x_getenv("USER");
}
/*
* If the logon-name differs from the value we get by looking in the
* password file, check if it does correspond to the same uid. If so,
* allow that as an alias for the uid.
*/
if (login_name != NULL
&& strcmp(login_name, in_out->pw_name)) {
struct passwd pw2;
if (x_getpwnam(login_name, &pw2)) {
uid_t uid2 = pw2.pw_uid;
struct passwd pw3;
if (!x_getpwuid(uid, &pw3)
|| (uid_t) pw3.pw_uid != uid2) {
login_name = NULL;
} else {
/* use the other passwd-data including shell */
alloc_pw(in_out, &pw2);
}
} else {
(void) x_getpwuid(uid, in_out);
}
}
if (login_name == NULL)
login_name = in_out->pw_name;
if (login_name != NULL)
login_name = x_strdup(login_name);
return login_name;
}
/*
* Simpler than getpwnam_r, retrieves the passwd result by name and stores the
* result via the given pointer. On failure, wipes the data to prevent use.
*/
Boolean
x_getpwnam(const char *name, struct passwd * result)
{
struct passwd *ptr = getpwnam(name);
Boolean code;
if (OkPasswd(ptr)) {
code = True;
alloc_pw(result, ptr);
} else {
code = False;
memset(result, 0, sizeof(*result));
}
return code;
}
/*
* Simpler than getpwuid_r, retrieves the passwd result by uid and stores the
* result via the given pointer. On failure, wipes the data to prevent use.
*/
Boolean
x_getpwuid(uid_t uid, struct passwd * result)
{
struct passwd *ptr = getpwuid((uid_t) uid);
Boolean code;
if (OkPasswd(ptr)) {
code = True;
alloc_pw(result, ptr);
} else {
code = False;
memset(result, 0, sizeof(*result));
}
return code;
}
/*
* Decode a single hex "nibble", returning the nibble as 0-15, or -1 on error.
*/ int
*/
int
x_hex2int(int c)
{
if (c >= '0' && c <= '9')
@ -204,7 +313,7 @@ x_splitargs(const char *command)
for (n = count = 0, state = 0; command[n] != '\0'; ++n) {
switch (state) {
case 0:
if (!isspace(command[n])) {
if (!isspace(CharOf(command[n]))) {
state = 1;
if (pass)
result[count] = blob + n;
@ -214,7 +323,7 @@ x_splitargs(const char *command)
}
break;
case 1:
if (isspace(command[n])) {
if (isspace(CharOf(command[n]))) {
blob[n] = '\0';
state = 0;
}

View File

@ -1,43 +1,46 @@
/* $XTermId: xstrings.h,v 1.21 2011/08/21 17:23:33 tom Exp $ */
/* $XTermId: xstrings.h,v 1.25 2011/09/11 20:20:22 tom Exp $ */
/************************************************************
Copyright 2000-2009,2011 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 2000-2009,2011 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.
*/
#ifndef included_xstrings_h
#define included_xstrings_h 1
/* *INDENT-OFF* */
#include <X11/Intrinsic.h>
#include <pwd.h>
#define OkPasswd(p) ((p)->pw_name != 0 && (p)->pw_name[0] != 0)
extern Boolean x_getpwnam(const char * /* name */, struct passwd * /* result */);
extern Boolean x_getpwuid(uid_t /* uid */, struct passwd * /* result */);
extern String x_nonempty(String /* s */);
extern String x_skip_blanks(String /* s */);
extern String x_skip_nonblanks(String /* s */);
@ -46,6 +49,7 @@ extern char *x_basename(char * /* name */);
extern char *x_decode_hex(const char * /* source */, const char ** /* next */);
extern char *x_encode_hex(const char * /* source */);
extern char *x_getenv(const char * /* name */);
extern char *x_getlogin(uid_t /* uid */, struct passwd * /* in_out */);
extern char *x_strdup(const char * /* s */);
extern char *x_strindex(char * /* s1 */, const char * /* s2 */);
extern char *x_strtrim(const char * /* s */);

View File

@ -1,36 +1,34 @@
/* $XTermId: xterm.h,v 1.656 2011/08/20 00:20:20 tom Exp $ */
/* $XTermId: xterm.h,v 1.661 2011/09/11 14:59:22 tom Exp $ */
/************************************************************
Copyright 1999-2010,2011 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 1999-2010,2011 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.
*/
/*
* Common/useful definitions for XTERM application.
@ -482,6 +480,7 @@ extern char **environ;
#define XtNreverseWrap "reverseWrap"
#define XtNrightScrollBar "rightScrollBar"
#define XtNsaveLines "saveLines"
#define XtNscaleHeight "scaleHeight"
#define XtNscrollBar "scrollBar"
#define XtNscrollBarBorder "scrollBarBorder"
#define XtNscrollKey "scrollKey"
@ -646,6 +645,7 @@ extern char **environ;
#define XtCReverseWrap "ReverseWrap"
#define XtCRightScrollBar "RightScrollBar"
#define XtCSaveLines "SaveLines"
#define XtCScaleHeight "ScaleHeight"
#define XtCScrollBar "ScrollBar"
#define XtCScrollBarBorder "ScrollBarBorder"
#define XtCScrollCond "ScrollCond"
@ -955,13 +955,14 @@ extern void show_8bit_control (Bool /* value */);
extern Bool AllocateTermColor(XtermWidget, ScrnColors *, int, const char *, Bool);
extern Cursor make_colored_cursor (unsigned /* cursorindex */, unsigned long /* fg */, unsigned long /* bg */);
extern OptionHelp * sortedOpts(OptionHelp *, XrmOptionDescRec *, Cardinal);
extern String xtermEnvLocale (void);
extern Widget xtermOpenApplication(XtAppContext * /* app_context_return */, String /* application_class */, XrmOptionDescRec */* options */, Cardinal /* num_options */, int * /* argc_in_out */, String */* argv_in_out */, String * /* fallback_resources */, WidgetClass /* widget_class */, ArgList /* args */, Cardinal /* num_args */);
extern Window WMFrameWindow(XtermWidget /* termw */);
extern XtInputMask xtermAppPending (void);
extern XrmOptionDescRec * sortedOptDescs(XrmOptionDescRec *, Cardinal);
extern XtermWidget getXtermWidget(Widget /* w */);
extern char *udk_lookup (int /* keycode */, int * /* len */);
extern char *xtermEnvEncoding (void);
extern char *xtermEnvLocale (void);
extern char *xtermFindShell(char * /* leaf */, Bool /* warning */);
extern char *xtermVersion(void);
extern const char *SysErrorMsg (int /* n */);
@ -1015,6 +1016,7 @@ extern void xtermDisplayCursor (XtermWidget /* xw */);
extern void xtermEmbedWindow(Window /* winToEmbedInfo */);
extern void xtermSetenv (const char * /* var */, const char * /* value */);
extern void xtermShowPointer (XtermWidget /* xw */, Bool /* enable */);
extern void xtermUnsetenv (const char * /* var */);
#if OPT_DABBREV
extern void HandleDabbrevExpand PROTO_XT_ACTIONS_ARGS;

View File

@ -31,7 +31,7 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
*****************************************************************************
$XTermId: xterm.log.html,v 1.1081 2011/08/25 09:29:41 tom Exp $
$XTermId: xterm.log.html,v 1.1101 2011/09/12 00:50:25 tom Exp $
-->
<HTML>
<HEAD>
@ -41,7 +41,9 @@
</HEAD>
<BODY>
<HR>
Copyright &copy; 1997-2009,2010 by <A
<a href=
"http://invisible-island.net/">http://invisible-island.net/</a><a href="http://invisible-island.net/xterm/">xterm/</a><br>
Copyright &copy; 1997-2010,2011 by <A
HREF="mailto:dickey@invisible-island.net">Thomas E. Dickey</A>
<HR>
<H1>Contents</H1>
@ -56,6 +58,8 @@ Most of these are summarized in the XFree86 CHANGELOG
is the latest version of this file.
<UL>
<LI><A HREF="#xterm_275">Patch #275 - 2011/09/11</A>
<LI><A HREF="#xterm_274">Patch #274 - 2011/09/05</A>
<LI><A HREF="#xterm_273">Patch #273 - 2011/08/25</A>
<LI><A HREF="#xterm_272">Patch #272 - 2011/08/24</A>
<LI><A HREF="#xterm_271">Patch #271 - 2011/07/14</A>
@ -332,6 +336,86 @@ is the latest version of this file.
<LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
</UL>
<H1><A NAME="xterm_275">Patch #275 - 2011/09/11</A></H1>
<ul>
<li>add <code>ash</code>, <code>zsh</code> to known shells for
<code>resize</code>.
<li>modify <code>resize</code>
to reuse the logic from <code>xterm</code>
which determines the actual logon-user's shell
if <code>$SHELL</code> is not set.
<li>revert the <code>unsetenv("SHELL")</code> added in
<a href="#xterm_272">patch #272</a>.
<li>an <code>unsetenv("SHELL")</code> added in
<a href="#xterm_272">patch #272</a> to help ensure that
<code>luit</code> would get the user's shell consistently
did not work as expected for cases where multiple
names are in the password-file for a given uid.
That was because changes in <a href="#xterm_157">patch #157</a>
to handle this situation
did not take into account that repeated calls to
<code>getpwnam</code> and <code>getpwuid</code>
return a pointer to the same static buffer.
Fixed the older logic to work as intended,
by ensuring that the passwd-data from each call is stored
separately (report by Paul Keusemann).
<li>adjust ifdef's for <code>putenv</code> and <code>unsetenv</code>
in case only one of those is provided on a given platform.
<li>correct comparison used in <code>ExposeContains</code> macro from
<a href="#xterm_274">patch #274</a>
changes, to handle window-dragging (patch by Todd Eigenschink).
</ul>
<H1><A NAME="xterm_274">Patch #274 - 2011/09/05</A></H1>
<ul>
<li>portability fixes for cygwin: do not define <code>SVR4</code>,
and work around nonstandard header location.
<li>ifdef'd use of <code>unsetenv</code>
from <a href="#xterm_273">patch #273</a>
changes to work with Solaris 9
(report by Waldemar Rachwal).
<li>modify logic for <code>XtAppPending</code> to merge adjacent
<code>Expose</code> and <code>ConfigureNotify</code> events
which are redundant (report by Edward McGuire).
<li>fix an unneeded warning message when <code>-r</code> option
is given.
<li>remove a few redundant entries from table used for helping
abbreviation-checking of command-line options, makes
<code>-geom</code> work again after
<a href="#xterm_272">patch #272</a> changes
as an abbreviation of
<code>-geometry</code>.
<li>add <code>scaleHeight</code> resource and
command-line option <code>-sh</code>
as workaround for some font-configurations broken by
changes in FreeType 2.4.6 (report by Miroslav Hodak).
<li>portability fixes for some configure macros:
<code>CF_FUNC_TGETENT</code>,
<code>CF_XOPEN_SOURCE</code>,
<code>CF_X_ATHENA_LIBS</code>.
<li>add configure option <code>--with-freetype-config</code> to
improve selection over the plethora of configuration options
which freetype has so far provided.
<li>build-fix for configure <code>--enable-load-vt-fonts</code> when
<code>--enable-widec</code> is not specified.
<li>build-fixes for suppressing various features, needed after changes
in patches 270, 271 and 272 (report by Brian Lindholm)
</ul>
<H1><A NAME="xterm_273">Patch #273 - 2011/08/25</A></H1>
<ul>
<li>build-fix for out-of-tree "make docs" rule.

View File

@ -1,5 +1,5 @@
'\" t
.\" $XTermId: xterm.man,v 1.507 2011/08/23 00:50:07 tom Exp $
.\" $XTermId: xterm.man,v 1.510 2011/09/04 23:54:12 tom Exp $
.\"
.\" Copyright 1996-2010,2011 by Thomas E. Dickey
.\"
@ -881,6 +881,10 @@ for function keys.
This option indicates that the standard escape codes should be generated for
function keys.
.TP 8
.BI \-sh " number"
scale line-height values by the given number.
See the discussion of the \fBscaleHeight\fP resource.
.TP 8
.B \-si
This option indicates that output to a window should not automatically
reposition the screen to the bottom of the scrolling region.
@ -1121,7 +1125,7 @@ Toolkit provides standard options that accomplish the same task.
This option specifies the preferred size and position of the Tektronix window.
It is shorthand for specifying the \*(``\fI*tekGeometry\fP\*('' resource.
.TP 8
.B \ #\fIgeom\fP
.B "#\fIgeom\fP"
This option specifies the preferred position of the icon window.
It is shorthand for specifying the \*(``\fI*iconGeometry\fP\*('' resource.
.TP 8
@ -1404,8 +1408,13 @@ In practice
this should never be a problem.
The default is \*(``true\*(''.
.TP 8
.B "scaleHeight (\fPclass\fB ScaleHeight)"
Scale line-height values by the resource value,
which is limited to \*(``0.9\*'' to \*(``1.5\*''.
The default value is \*(``1.0\*('',
.TP 8
.B "scoFunctionKeys (\fPclass\fB ScoFunctionKeys)"
Specifies whether or not SCP Function Key escape codes should be generated for
Specifies whether or not SCO Function Key escape codes should be generated for
function keys instead of standard escape sequences.
.IP
See also the \fBkeyboardType\fP resource.
@ -4854,6 +4863,7 @@ Hide Tek Window (tekhide)
.
.PP
X environments differ in their security consciousness.
.bP
Most servers,
run under \fIxdm\fP,
are capable of using a \*(``magic cookie\*('' authorization
@ -4864,6 +4874,7 @@ other users are also permitted to run clients on that same host,
it is possible that someone can run an application which uses the
basic services of the X protocol to snoop on your activities,
potentially capturing a transcript of everything you type at the keyboard.
.bP
Any process which has access to your X display can manipulate it
in ways that you might not anticipate,
even redirecting your keyboard to itself
@ -4873,13 +4884,19 @@ While the \fBallowSendEvents\fP provides some protection against
rogue applications tampering with your programs,
guarding against a snooper is harder.
.
.PP
.bP
The X input extension for instance allows an application to bypass
all of the other (limited) authorization and security features,
including the GrabKeyboard protocol.
.
.bP
The possibility of an application spying on your keystrokes
is of particular concern when you want to type in a password
or other sensitive data.
The best solution to this problem is to use a better
authorization mechanism than is provided by X.
Given all of these caveats,
.PP
Subject to all of these caveats,
a simple mechanism exists for protecting keyboard input in \fIxterm\fP.
.
.PP
@ -4891,7 +4908,9 @@ When an application prompts you for a password
(or other sensitive data), you can enable \fBSecure Keyboard\fP using the
menu, type in the data, and then disable \fBSecure Keyboard\fP using
the menu again.
.bP
This ensures that you know which window is accepting your keystrokes.
.bP
It cannot ensure that there are no processes which have access to your
X display that might be observing the keystrokes as well.
.

View File

@ -1,36 +1,34 @@
/* $XTermId: xtermcap.h,v 1.16 2010/01/06 21:20:40 tom Exp $ */
/* $XTermId: xtermcap.h,v 1.18 2011/09/11 14:59:33 tom Exp $ */
/************************************************************
Copyright 2007-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 2007-2010,2011 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.
*/
/*
* Common/useful definitions for XTERM termcap interface.
@ -59,7 +57,11 @@ authorization.
#undef ERR /* workaround for glibc 2.1.3 */
#ifdef HAVE_NCURSES_CURSES_H
#include <ncurses/curses.h>
#else
#include <curses.h>
#endif
#ifndef NCURSES_VERSION
#ifdef HAVE_TERMCAP_H

View File

@ -56,6 +56,7 @@ authorization.
#define HAVE_LIB_XAW 1 /* CF_X_ATHENA */
/* #undef HAVE_LIB_XAW3D */ /* CF_X_ATHENA(--with-Xaw3d) */
/* #undef HAVE_LIB_XAWPLUS */ /* CF_X_ATHENA(--with-XawPlus) */
/* #undef HAVE_NCURSES_CURSES_H /* AC_CHECK_HEADERS(ncurses/curses.h) */
/* #undef HAVE_NCURSES_TERM_H */ /* AC_CHECK_HEADERS(ncurses/term.h) */
#define HAVE_PATHS_H 1 /* CF_LASTLOG */
/* #undef HAVE_PCREPOSIX_H */ /* CF_WITH_PCRE */
@ -76,6 +77,7 @@ authorization.
#define HAVE_TIGETSTR 1 /* AC_CHECK_FUNCS(tigetstr) */
#define HAVE_UNISTD_H 1 /* AC_CHECK_HEADERS(unistd.h) */
#define HAVE_USE_EXTENDED_NAMES 1 /* AC_CHECK_FUNCS(use_extended_names) */
#define HAVE_UNSETENV /* AC_CHECK_FUNCS(unsetenv) */
#define HAVE_UTMP 1 /* CF_UTMP */
#define HAVE_UTMP_UT_HOST 1 /* CF_UTMP_UT_HOST */
/* #undef HAVE_UTMP_UT_SESSION */ /* CF_UTMP_UT_SESSION */

View File

@ -1,36 +1,34 @@
/* $XTermId: xtermcfg.hin,v 1.182 2010/11/11 01:14:49 tom Exp $ */
/* $XTermId: xtermcfg.hin,v 1.185 2011/09/11 15:06:56 tom Exp $ */
/************************************************************
Copyright 1997-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 1997-2010,2011 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.
*/
#ifndef included_xtermcfg_h
#define included_xtermcfg_h 1
@ -56,6 +54,7 @@ authorization.
#undef HAVE_LIB_XAW /* CF_X_ATHENA */
#undef HAVE_LIB_XAW3D /* CF_X_ATHENA(--with-Xaw3d) */
#undef HAVE_LIB_XAWPLUS /* CF_X_ATHENA(--with-XawPlus) */
#undef HAVE_NCURSES_CURSES_H /* AC_CHECK_HEADERS(ncurses/curses.h) */
#undef HAVE_NCURSES_TERM_H /* AC_CHECK_HEADERS(ncurses/term.h) */
#undef HAVE_PATHS_H /* CF_LASTLOG */
#undef HAVE_PCREPOSIX_H /* CF_WITH_PCRE */
@ -76,6 +75,7 @@ authorization.
#undef HAVE_TIGETSTR /* AC_CHECK_FUNCS(tigetstr) */
#undef HAVE_UNISTD_H /* AC_CHECK_HEADERS(unistd.h) */
#undef HAVE_USE_EXTENDED_NAMES /* AC_CHECK_FUNCS(use_extended_names) */
#undef HAVE_UNSETENV /* AC_CHECK_FUNCS(unsetenv) */
#undef HAVE_UTMP /* CF_UTMP */
#undef HAVE_UTMP_UT_HOST /* CF_UTMP_UT_HOST */
#undef HAVE_UTMP_UT_SESSION /* CF_UTMP_UT_SESSION */

View File

@ -1,26 +1,27 @@
/* $XTermId: xutf8.c,v 1.10 2011/07/04 13:51:08 tom Exp $ */
/* $XTermId: xutf8.c,v 1.11 2011/09/11 14:59:37 tom Exp $ */
/*
Copyright (c) 2001 by Juliusz Chroboczek
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
AUTHORS OR COPYRIGHT HOLDERS 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.
*/
* Copyright (c) 2001 by Juliusz Chroboczek
*
* 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 AUTHORS OR COPYRIGHT HOLDERS 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.
*/
#include <xterm.h>