Copyright © 1997-2018,2019 by Thomas E. Dickey
Here is the latest version of this file.
It began as a list of the changes that I made for xterm, using the notes that I added when submitting a patch. You should note that other changes were made as well, by other people, to fix bugs and correct ifdef's for portability. Until mid-2006, most of these were summarized in the XFree86 CHANGELOG).
xkbcomp
ctlseqs.ms
run-tic.sh
forceBoxChars
checkXft
/usr/X11
_NET_WM_STATE
_NET_WM_STATE_HIDDEN
-iconic
xevents
xterm_io.h
posix_openpty
esctest
property_to_string
-report-icons
CF_ADD_LIBS
CF_GCC_VERSION
CF_GCC_WARNINGS
XTGETXRES
RequestResize
xterm-rep
xterm+osc104
modifyOtherKeys
vttests/modify-keys.pl
saveLines
-report-xres
--enable-trace
--enable-warnings
UTF8_STRING
COMPOUND_TEXT
--disable-doublechars
allowC1Printable
utf8Title
titleModes
sameName
utf8
--disable-ziconbeep
fullscreen
report-sgr.pl
DECLRMM
DECCOLM
DECALN
DECSTR
buffered
SL
SR
_X_UNUSED
GCC_UNUSED
imake
bufferedFPS
DECCRA
SD
saveCellData
ScrnRefresh
wcwidth.c
uniset
wcwidth
CSI13t
renderFont
internalBorder
useBorderClipping
CSI3t
mktemp
reverseVideo
setDirectFG
useClipping
vttests/sgrPushPop2.pl
XTPOPSGR
OSC 4
OSC 5
vttests/query-color.pl
vttests/query-dynamic.pl
tcapquery.pl
-q
limitResponse
const
Tekproc.c
disallowedPasteControls
resize
ENQ
SRM
Comment
Searches desktop files for ones that match search_string. The return value is an array of strvs. Each strv contains a list of applications that matched search_string with an equal score. The outer list is sorted by score so that the first strv contains the best-matching applications, and so on. The algorithm for determining matches is undefined and may change at any time.
Searches desktop files for ones that match search_string.
search_string
The return value is an array of strvs. Each strv contains a list of applications that matched search_string with an equal score. The outer list is sorted by score so that the first strv contains the best-matching applications, and so on. The algorithm for determining matches is undefined and may change at any time.
zIconBeep
limitResize
answerbackString
COPYING
xterm-new
keepClipboard
deleteIsDEL
fc-match
limitFontsets
mouse-codes
CF_GNU_SOURCE
$TERMINFO
CF_WITH_PCRE2
CF_CC_ENV_FLAGS
CFLAGS
CF_LD_RPATH_OPT
--disable-rpath
CF_XOPEN_SOURCE
XpmReadFileToPixmap
exec-formatted
DECERA
DECFRA
DECSERA
faceSize
]
DECRPTUI
omitTranslation
XTCHECKSUM
print-vt-chars.pl
other-sgr.sh
tabs
-tabs
ttyModes
vt100Graphics
checksumExtension
DECRQCRA
DECCKSR
colorInnerBorder
Imakefile
validShells
/etc/shell
DECRQSS
ambiguous[]
XTREPORTSGR
XTPUSHSGR
DECRPM
DECSNLS
DECRSPS
borderColor
DECELR
MotionNotify
allowMouseOps
DECSCPP
DECSLPP
DECCIR
DECTABSR
unicode/keysym.map
logFile
-
print-on-error
print-immediate
GetChecksum
disallowedWindowOps
xtermCheckRect
RIS
DL
IL
DECFI
DECBI
getusershell
endusershell
/etc/shells
utf8Fonts
-fs 15 \ -xrm '*VT100.font:12x24' \ -xrm '*VT100.boldFont:12x24' \ -xrm '*VT100.utf8Fonts.font: 12x24' \ -xrm '*VT100.utf8Fonts.boldFont: 12x24' \
nextEventDelay
-hold
scroll-to
terminfo
--with-man2html
DECSCUSR
cursorBlink
cursorBlinkXOR
SGR
-report-fonts
XftPattern
XftFontOpenPattern
regex
onXClicks
directColor
http://vt100.net/docs/vt220-rm/table2-3b.html http://vt100.net/docs/vt320-uu/appendixe.html
add entries for the DEC Supplemental Graphics table to display 0x28/0xa8 as ¤ and 0x5d/0xdd as Ÿ.
http://www.vt100.net/charsets/technical.html
alter the Unicode values used for 0x2b through 0x2c to use curly braces to work with the “middle” parts displayed with 0x2f and 0x30.
decTerminalID
--with-pcre2
xterm.man
INSTALL
xterm-direct
RGB
REP
T(B)
T(E)
S(T)
fragment_remaining()
fragment_consumed()
-i-
-o-
mkSamplePass
mkSampleSize
--enable-sixel-graphics
--enable-regis-graphics
HideCursor
T(M)
S(E)
R
W
F
locale
charClass
-report-charclass
eraseSavedLines
DECSED 3
highlightColorMode
u8
smxx
rmxx
do_select_regex
exec-selectable
insert-selection
DECRC
DECAWM
--enable-terminfo-env
--with-own-terminfo
/dev/tty
menuBar
regisScreenSize
maxGraphicSize
CF_ADD_CFLAGS
CF_MATH_LIB
Unreadable
Utility
--with-desktop-category
-fn
-fa
xtermLoadFont
vttests/query-status.pl
vttests/closest-rgb
OSC 52
CastMallocN
TextAlloc
sizeof(char)
COLUMNS
LINES
translations
-s
256colors2.pl
88colors2.pl
XFT_SPACING
XftPatternBuild
$ fc-match 'Go Mono:spacing=monospace' Go-Mono-Italic.ttf: "Go Mono" "Italic" (report by Giacomo Boffi on Stackoverflow).
minstall.in
strtol
-baudrate
CASE_xxx
VTparse.h
Tekparse.h
awk
*fullscreen:3
*fullscreen:never
allow-bold-fonts
GraphicsExpose
#ifdef
xtermcfg.hin
rs1
legacy
-kt
oldXtermFKeys
ioctl
I_PUSH
I_FIND
getXtermCombining
--without-xinerama
cppcheck --enable=all
allocateClosestRGB
cppcheck
_POSIX_C_SOURCE
STOP
CF_POSIX_C_SOURCE
keep-clipboard
-e
luit
openpty
%t
%R
exec-formatted()
insert-formatted()
%r
Xcursor.theme
-wc
--enable-builtin-xpms
-ls
--enable-initial-erase
--enable-pty-erase
--with-builtin-xpms
ICH
DCH
--enable-narrowproto
OSC 106
OSC 6
DECSLRM
DECSCL
DECSED 1
DECSCA
$
CSI [ $ z
DECIC
DECDC
--disable-dec-locator
CSI 1 9 t
ptyInitialErase
p
paste64.pl
_OwnSelection
_ConvertSelectionHelper
XTextProperty
-itc
colorIT
colorITMode
colorBD
allowPasteControls
editres
passedPty
-S
LineData
FocusOut
x-terminal-emulator
--with-xterm-symlink
vttests/resize.pl
do_select_regex()
xclip
selectToClipboard
insert-selectable
insert-formatted
fontsel
ScrnLimitChar
--with-Xaw3dxft
cursorUnderline
xterm.appdata.xml
<licence>
<metadata_license>
pointerMode
getXftColor
-sh
--disable-wide-attrs
utmp
utmpx
XF86Paste
SunPaste
-no-gcc
SHELL
XTERM_SHELL
-report-colors
TrueColor
-Wcast-qual
minstall.sh
vttests
env
/usr/bin/perl
initgroups
setgid
XCURSOR_THEME
--disable-wide-chars
--disable-boxchar
Xcursor
Inherits=
assumeAllChars
-h
-help
modifyKeyboard
reportFonts
pointerColor
DECNRCM
--disable-boxchars
faceName
XtOwnSelect
-Wl
--as-needed
plink.sh
--with-icon-symlink
SIGCHLD
XTERM_FILTER
DEBUG
initialFont
set-vt-font
set-tex-text
unsaveEditBufLines
PasteControls
allowWindowOps
--help
--with-terminal-id
backarrowKey
--disable-openpty
AlternateScroll
alternateScroll
TermColors
OscTextColors
Exit
free
--with-valgrind
ShowCursor
CSI
SS3
struct ttysize
groff
grohtml
~
'
-v
xterm
makewhatis
ut_id
ut_line
Mode_switch
XK_ISO_Level3_Shift
NotifyPointer
iconName
iconHint
printerCommand
gdm
query-colors.pl
Shell
allowTcapOps
--enable-backarrow-key
--regex
XkbKeycodeToKeysym
alwaysBoldMode
veryBoldColors
scroll-forw
scroll-back
--enable-double-buffer
cdXtraScroll
scroll-lock
-8
-c
-d
-u
utf8controls
SGR 38
SGR 48
_NET_WM_TOGGLE
_NET_WM_STATE_MAXIMIZED_VERT
_NET_WM_STATE_MAXIMIZED_HORZ
TekClear
E3
xterm-basic
ClearCurBackground
+maximized
--with-xpm
--with-icon-name
activeIcon
default
--with-icon-theme
--with-icondir
--with-pixmapdir
--with-app-defaults
kB
XT
sgr
altSendsEscape
backarrowKeyIsErase
metaSendsEscape
DESKTOP_STARTUP_ID
precompose
x_getlogin
getlogin
zIconTitleFormat
OkPasswd
posix_openpt
grantpt
eightBitMeta
--disable-selection-ops
visualBellLine
visualBell
eightBitInput
alt-sends-escape
XAllocColor()
RequestResize()
/bin/echo
echo
Besides these improvements, in discussion, it was noted that urxvt's implementation of 1005 is incorrect, relying upon a locale that provides UTF-8 encoding. In contrast, vttest demonstrates a correct decoding, independent of locale.
timestamp_filename
posix_openpt()
scaleHeight
DejaVu Sans Mono
-geometry
ash
zsh
$SHELL
unsetenv("SHELL")
getpwnam
getpwuid
putenv
unsetenv
ExposeContains
SVR4
XtAppPending
Expose
ConfigureNotify
-r
-geom
CF_FUNC_TGETENT
CF_X_ATHENA_LIBS
--with-freetype-config
--enable-load-vt-fonts
--enable-widec
x_strdup
minstall
Gtk
-into
localeFilter
keepSelection
-display
xterm+kbs
xterm-16color
xterm-256color
$TERM
$TERMCAP
printModeImmediate
printFileOnXError
--with-app-class
brokenStringTerm
xterm+tmux
tcapFunctionKeys
__hpux
CC
XtDefaultForeground
XtDefaultBackground
XParseColor
KeyPress
popup-menu
fontWarnings
toolBar
install-desktop
SIGWINCH
ioctl(*,TIOCGPGRP,*)
printModeOnXError
MapToColorMode()
-fullscreen
probe_netwm_fullscreen_capability
XGetWindowProperty
long
name
termName
-name
argv[0]
docs-ctlseqs
docs-xterm
docs-clean
copy-selection
CF_X_TOOLKIT
${name:=value}
${name-value}
xtermOpenFont
showWrapMarks
Xlib.h
font1
--enable-broken-st
fastScroll
brokenLinuxOSC
xterm-filter
bluit
xtermClearLEDs()
-bd
pkg-config
veryColorColors
colorBDMode
vttests/query-fonts.pl
OSC 50
allowScrollLock
false
menuLocale
setlocale
alwaysUseMods
scrollKey
-cjk_width
_XOPEN_SOURCE
--disable-rpath-hack
AllocateTermColor()
allowSendEvents
ESC % G
XmuInternStrings()
sinstall.sh
customization: color
/var/run
XkbBell
XInternAtom()
install.sh
install-sh
convertToUTF8
install-ti
install-full
colorAttrMode
allowColorOps
disallowedColorOps
disallowedFontOps
disallowedTcapOps
DECSMBV
DECSWBV
getPrinterFlags()
MoreRows
mkdir -p
mkdirs.sh
OSC 104
faceNameDoublesize
print
print-everything
printerNewLine
TScreenOf()
TekScreenOf()
highlightReverse
checkVeryBoldAttr
color<XX>
colorULMode
okPosition
vttests/256colors2.pl
vttests/88colors2.pl
color16
color255
XTERM_CELL
XTERM_CELLC
okScrnRow
--enable-16bit-chars
xrdb
makeColorPair
SetLineFlags()
CellColor
allowXXXOps
--enable-fifo-lines
cat
readPtyData
retryInputMethod
mkWidth
EXP_BOGUS_FG
DEF_ALLOW_FONT
DEF_ALLOW_WINDOW
xtermEnvLocale()
defaultString
eightBitSelectTypes
utf8SelectTypes
TEXT
TARGETS
MANPAGER
PAGER
tcap
Also add the same logic when hiding cursor, so the outline matches the in-focus cursor.
xtermAddInput()
install-scripts
install-bin
-maximized
allowTcapsOps
AltGr
ClearRight
paste64
tcap-query
OSC 3
DSR
DECUDK
allowFontOps
-Wconversion
-uc
+uc
cursorUnderLine
xtermFindShell
$PATH
use_extended_names
borderWidth
bellIsUrgent
popOnBell
formatOtherKeys
unselectwindow()
dylib
xmkmf
VMIN
VTIME
ttydefaults.h
termios.h
SameFont
CKILL
$MANPAGER
$PAGER
man
--disable-ansi-color
--disable-leaks
--enable-wide-chars
--disable-c1-print
ConvertSelection()
XA_TARGETS()
getXtermCell()
PACK_PAIR
quietGrab
NotifyGrab
NotifyUngrab
koi8rxterm
uxterm
tcap-fkeys
rectangles
--enable-tcap-query
--enable-tcap-fkeys
kdch1
xterm-r6
-hm
CSI > n
CSI > m
<xtermcap.h>
resize.c
termios
xterm-xfree86
xterm-xf86-v44
xterm-24
xterm-65
xterms
vs100
xterm-old
xterm-r5
--with-utempter
--enable-setuid
ptySttySize
.keyboard
-Wno-unknown-pragmas
gen-pc-fkeys.pl
select
$XTERM_LOCALE
waitForMap
ReverseVideo()
italicULMode
popup-menu()
allowTitleOps
XftDrawSetClipRectangles
altIsNotMeta
highlightTextColor
-selfg
-selbg
xwsh
find_closest_color()
Tcl/Tk
--disable-setgid
dabbrev-expand()
erase
boldMode
XftNameParse()
-fd
Xaw
do_precomposition()
make-precompose.sh
handle_translated_exposure
-cr
-ah
-bw
-w
Selection
VT Fonts
--enable-rectangles
--with-symlink
$X_EXTRA_LIBS
XK_Mode_switch
modifyCursorKeys
modifyFunctionKeys
print-redirect
print-redir
xterm-sun
xterm-sco
combiningChars
<ESC>
-reverse
-rv
--disable-setuid
USE_UTMP_SETGID
setegid
<term.h>
<termios.h>
keyboardType
sunKeyboard
XkbBell()
install-man
Makefile.in
$(DESTDIR)
utf8Latin1
*customization:color
XTerm.ad
releaseCursorGCs()
InstallXtermSetGID
InstGidFlags
$(CSGIDFLAGS)
struct lastlog
FreeBSDArchitecture
configure
set_cursor_gcs()
-cm
setf
setb
set-select
-fw
TIOCSCTTY
ioctl()
__GNU__
Bell
dotext
on2Clicks
on3Clicks
on4Clicks
on5Clicks
--with-tty-group
--disable-narrowproto
Xft
./configure --disable-active-icon
UXTerm.ad
--program-prefix
--without-app-defaults
lastlog
+u8
lastlogx
lastlog.h
utmp.h
-I.
_NET_WM_PID
+wf
scrollBarBorder
openpty()
SetupToolbar
+tb
-132
XtMakeResizeRequest()
CSI T
Cleanup()
XTerm*borderWidth:1
setpgrp()
find_utmp
getutid()
minBufSize
maxBufSize
sched_yield()
-S/nn
$CMD
$XTERM_SHELL
$XTERM_VERSION
wcwidth()
mk_width()
-mk_width
sched_yield
iconBorderWidth
--disable-imake
scoFunctionKeys
ReallocateBufOffsets()
-tb
\(
\)
$DISPLAY
utmpDisplayId
bellOnReset
$WINDOWID
xwininfo
creat_as()
BtnDown
--enable-mini-luit
OPT_MINI_LUIT
__INTERIX
grantpt()
showBlinkAsBold
XGrabKeyboard
XTerm-col.ad
xterm.vt100.font
xterm.vt100.utf8Fonts.font
FIONREAD
boldFont
dotext()
OPT_COLOR_RES2
openIm
ncv
setutent()
getutent()
OPT_DABBREV
--enable-dabbrev
xtermAddInput
__vendorversion__
-D
XVENDORNAME
#undef OPT_SESSION_MGT
PTYCHARLEN
XtExtdefaultfont
XtExtdefaultbackground
XtDefaultFont
SCO
sco
SCO325
__SCO__
Help()
SetCursorBlink()
freeBoldBox
showMissingGlyphs
xft-config
freetype-config
SYSV
sys_errlist[]
X11/Intrinsic.h
wchar_t
drawXtermText()
load-vt-fonts()
font
XTerm
cvvis
indp
rin
-u8
scroll-back(1, page-2)
visualBellDelay
XCopyArea()
$(MAIN_DEFINES)
--enable-pty-handshake
in_put()
PreeditPosition()
kDC
XK_KP_Equal
--enable-broken-osc
OSC
<escape>X
OSMAJORVERSION
OSMINORVERSION
FUNCPROTO
NARROWPROTO
vttests/16colors.sh
$SUF
trap
USE_HANDSHAKE
ptyHandshake
tgetent
XRegisterIMInstantiateCallback()
iconFont
tty
dec2ucs[]
tekInhibit
signalInhibit
ColorAttrMode
ColorMode
VeryBoldColors
-k8
ptsname()
XKB
XkbStdBell()
xtermLoadFont()
bindir
libdir
mandir
le
XDefineCursor()
AllocateAnsiColor()
Error()
exit()
SysError()
sh -c
export
\177\
tgetent()
error.h
input.c
Meta
xevents()
BlinkCursor()
open()
$CPPFLAGS
$CFLAGS
-/+
--disable-session-mgt
OPT_SESSION_MGT
decode_keyvalue()
-class
XtVaSetValues()
cjkWidth
OPT_DEC_LOCATOR
OPT_READLINE
struct utmp
struct utmpx
execlp()
ChangeAnsiColorRequest()
echo -n
USE_TERMCAP
appdefaultCursor
appdefaultKeypad
--enable-luit
ComputeSelect()
TrackText()
ScrollSelection()
tiXtraScroll
__UNIXOS2__
__EMX__
bold
wideChars
do_osc()
awaitInput
errno
DECBKM
reset
__QNX__
USE_SYSV_PGRP
tcsetpgrp
-version
uxname
<ncurses/term.h>
__CYGWIN__
NOTE: The CYGWIN port should not be linking resize with ncurses. It appears that the only reason it is, is because both the ncurses and termcap ports on that platform are badly misconfigured (essential pieces have been removed, etc). Checking for <ncurses/term.h> does not hurt anything, since there are some correct installations that are set up that way.
UXTerm
TIOCSSIZE
app-defaults
.Xdefaults
__EXTENSIONS__
__STDC__
get_termcap()
ScrollbarReverseVideo()
SunXK_F36
xtermcapKeycode()
getlogin()
vi
same_font_size()
color0
Color0
Foreground
ksh
suspend
XtReleaseGC()
-fs
<Xlib.h>
pututline
i18nSelection
brokenSelections
<time.h>
<sys/time.h>
dup2
getutent
getutid
getutline
sleep
"kb"
ClearInLine
SelectionReceived()
VTInitI18N()
UTF-8 mode: UTF8_STRING, TEXT, COMPOUND_TEXT, STRING. eight-bit mode: TEXT, COMPOUND_TEXT, UTF8_STRING, STRING.
i18nSelections
This applies to the normal configuration. When built with toolbar support, the hints are applied to a different widget level (more work will be needed to make hints work with the toolbar).
-T
-title
.title
*title
Changes from XFree86 4.0.2:
gcc -ansi -pedantic
larger-vt-font()
smaller-vt-font()
--program-suffix
--program-transform-name
termio.h
k;
-samename
-fwb
wideBoldFont
WideBoldFont
int
ctype
CharOf()
-DXRENDERFONT
initial_erase
get_pty()
my_pty_id()
my_pty_name()
same_font_name()
bold_font_name()
#undef HAVE_TERMIO_C_ISPEED
XtAppInitialize
sun function-keys
sunFunctionKeys
sun
sun keyboard
ClearInLine()
ScrnInsertChar()
ScrnDeleteChar()
kb
colorRV
colorRVMode
alt
meta
xtermMissingChar()
childstat
waitpid()
setuid()
struct termio
.mode
ColorRes
malloc()
<ESC>[3~
\177
scroll-forw()
scroll-back()
Index
xtermIndex
do_reversevideo()
depend
XtSetLanguageProc()
Caveat: XtSetLanguageProc() was added fairly late in the X11R5 patches, and some vendors shipped buggy versions of this function (request by Tomas Vanhala).
SGR_Background()
messages
mesg n
mesg
-C
_GNU_SOURCE
xterm consumes cpu when selecting text with mouse (holding down left mouse button) and when a program working under the xterm outputs something to stdout. Easy way to reproduce: while :; do echo aaa; sleep 1; done (while this runs, select text and hold down left mouse button) watch cpu load. release left mouse button - spinning stops.
xterm consumes cpu when selecting text with mouse (holding down left mouse button) and when a program working under the xterm outputs something to stdout.
Easy way to reproduce: while :; do echo aaa; sleep 1; done (while this runs, select text and hold down left mouse button) watch cpu load. release left mouse button - spinning stops.
while :; do echo aaa; sleep 1; done
DECEFR, "Enable Filter Rectangle" DECELR, "Enable Locator Reports" DECSLE, "Select Locator Events" DECRQLP, "Request Locator Position"
This allows the xterm mouse to be used with applications that use the DEC Locator sequences, such as VAX Tpu, or SMG$ based applications.
Several fixes. The main one is a first draft of pulldown menus. It's not complete (I have some minor/annoying geometry problems to correct), but is usable. Once it's complete I plan to add a menu to support additional selections that won't fit on the current popup menus. Also, this fits into my longterm plan to allow configuring with Motif libraries.
I have noticed some additional problems with right-scrollbar on X11R5 which I will correct later.
The first change is simple - I added ESC[3J to erase the stored lines above the screen. That's what the changes to util.c and ctlseqs.ms are. The second change is to get the blinking cursor working. I took out the cursorBlinkTime resource, and put in cursorBlink (Boolean), cursorOnTime (time cursor is on in msecs) and cursorOffTime, and added a cursorblink item to the vtMenu to enable/disable it.
The first change is simple - I added ESC[3J to erase the stored lines above the screen. That's what the changes to util.c and ctlseqs.ms are.
The second change is to get the blinking cursor working. I took out the cursorBlinkTime resource, and put in cursorBlink (Boolean), cursorOnTime (time cursor is on in msecs) and cursorOffTime, and added a cursorblink item to the vtMenu to enable/disable it.
With this patch, selection conversion works properly: ISO 8859-1 xterm -> ISO 8859-1 xterm (transferred as STRING); ISO 8859-1 xterm -> UTF-8 xterm (transferred as STRING); UTF-8 xterm -> ISO 8859-1 xterm (transferred as STRING); UTF-8 xterm -> UTF-8 xterm (transferred as UTF-8). It will not work properly if one xterm is in, say, ISO 8859-2. Actually, for this case xterm breaks the ICCCM routinely (sending ISO 8859-2 data as STRING), so I wouldn't worry too much about it. I have not changed the behaviour in eight-bit mode in any way.
With this patch, selection conversion works properly:
ISO 8859-1 xterm -> ISO 8859-1 xterm (transferred as STRING); ISO 8859-1 xterm -> UTF-8 xterm (transferred as STRING); UTF-8 xterm -> ISO 8859-1 xterm (transferred as STRING); UTF-8 xterm -> UTF-8 xterm (transferred as UTF-8).
It will not work properly if one xterm is in, say, ISO 8859-2. Actually, for this case xterm breaks the ICCCM routinely (sending ISO 8859-2 data as STRING), so I wouldn't worry too much about it. I have not changed the behaviour in eight-bit mode in any way.
This is a resync patch against XFree86 3.9Pn, reflecting changes which were submitted by Branden Robinson, who worked with Wichert Akkerman <wichert@cs.leidenuniv.nl> to set up ifdef's to handle GNU libc 2.1, and use getpt() which lets xterm avoid having to know the actual PTY name.
I have also added a few fixes for signed/unsigned mismatches, and corrected a problem in the configure script (the UTF-8 code was always configured since the Imakefile defines this).
No longer links xterm against libutil on a glibc2.1 system. libutil is a compatibility library and should only be used when necessary. Rather than having get_pty() use openpty() from this compatibility library, use the real UNIX98 pty support in get_pty() (open()ing the master pty, through getpt() if available (glibc extension)). Use openpty() only under glibc2.0. GNU libc2 is not Linux-specific; already it runs on the Hurd. It provides the UNIX98 pty functions (plus the getpt() extension), regardless of the underlying OS. Changed two constructs to look for GNU libc2 only, not GNU libc2 on Linux.
You must use the -u8 command line option to use this feature, as well as compile with the OPT_WIDE_CHARS definition.
<ESC>backslash
ioctl (ptyfd, I_PUSH, "ptem")
Here are several fixes and minor enhancements. The chief ones are the fixes for NumLock mode and reverse video, since we had become used to working around the problems.
This implements several small fixes and enhancements. The chief one implements fallback support for line drawing characters with fonts that do not include those characters. But I implemented that last.
When I implemented the popup menu entry to toggle between the normal and alternate screens, I considered only pasting from the normal screen to the alternate; this improvement allows either direction.
I note that a real VT100 terminal would not behave in this way, but it is a moot point since the VT100 does not implement alternate screen, and therefore the save/restore cursor sequence would not be used in this context. I reviewed the logic which switches between normal and alternate screens based on some recent newsgroup postings as well as a proposed patch in the Debian group which attempts to do this (the patch has a bug, however, so I did not use it).
This patch completes the implementation of double-sized character support for the VT100 emulation, and fixes a few minor bugs:
I tested the double-sized characters using vttest and the xfsft patch. These fonts worked reasonably well:
-bitstream-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1 9x15
The iso8859 font does not include box characters, of course, but looks good.
This refines my #85 patch by checking for a case where the font server returns a bold font that does not quite correspond to the normal font. When I asked for a bold version of the 6x12 font, the font server returned a near equivalent where the ascent and descent values did not match, causing xterm to leave lines across the display. This patch makes xterm reject that type of mismatch, falling back to the old font behavior.
This corrects a problem reported by Stefan Dalibor. My table entries for the printerExtent and printerFormFeed resources used the wrong types for sizeof, causing the printer to not work properly on some platforms because the printAttributes resource was overwritten (e.g., Digital Unix with DEC Alpha).
I reviewed all of the resource table entries and fixed a potential problem with resizeGravity, which was typed as int rather than XtGravity.
A small fix: when switching to/from the continuous mouse reporting mode, the event mask was incorrect if xterm was built under X11R5 because the original data was saved under an ifdef for active-icon.
Some cleanup (I noticed the pixel droppings a few months ago after getting a new 17" monitor):
Several small fixes and enhancements, including a patch from Bjorn Helgaas:
as well as
Merge changes through patch #83 with the 3.3.2e version.
This follows a change from XFree86 CVS which adds checks for non-null return from malloc (patch by Matthieu Herrb).
Several small fixes and enhancements:
From resync with XFree86 3.9Nb:
Bug fix for patch #81:
More bug fixes:
From resync with XFree86 3.9Aj:
This fixes a couple of items leftover or introduced by patch 79:
This patch fixes several small bugs:
Again, most of the bulk of this patch is for ANSI conversion. I used the IRIX compiler's -wlint option to find the remaining functions that use K&R syntax (since gcc does not do this properly). Also, I changed the logic in the print code slightly to close unwanted files before opening a pipe to the printer. This may help in some configurations where the line printer hangs until xterm closes the pipe.
Most of the bulk of this patch is to convert the extended C (K&R functions with prototypes) to ANSI. I verified that on Linux by comparing object files, to ensure that I did not, for example, interchange parameters in the function declarations.
The rest of the patch fixes several minor bugs, and adds a few features:
I would also add the 'prot protected capability, but the control sequences for that would not be recognized or properly ignored by the older xterm programs.
A fix for the print-window function, and some minor cleanup:
This incorporates fixes from several people, as well as some improvements that I made based on feedback from users:
This corrects a couple of recent bugs and adds a new resource:
This patch does the following:
The print facility now also displays the color information. (I will probably make this a resource).
I removed the symbols Size_t and Time_t, since they no longer serve a useful purpose.
I also modified the trace code to produce two files since some of the information is produced by the child process. So now they are Trace-parent.out and Trace-child.out
This is a patch from Chris Siebenmann <cks@hawkwind.utcs.toronto.edu>, which I have cleaned up a little, and integrated into the configure script.
From his description:
This set of patches is the latest incarnation of patches originally written by Ian! D Allen, then of the University of Waterloo and now of who knows where; I have been carrying them forward from xterm to xterm ever since about X11R4. What they do is add an option so that when an iconified xterm receives output it prepends '*** ' to its icon title and (optionally) beeps the bell; deiconifying the xterm removes the '*** '. Over the years I've found this to be incredibly convenient for monitoring all sorts of low-activity things.
This patch is a slightly modified version of one by Richard Braakman, which prevents buffer overflow in the input-method and preedit-type parsing in xterm. I changed a couple of details to make the code more maintainable, and looked for similar things - copying into a fixed-size buffer (found none, though I did spot an unused variable).
This patch corrects some minor bugs in xterm, and fills in some more details in the VT220 emulation:
This corrects the problem in xterm with utmp, reported by Olivier Calle <olivier@tc.fluke.com> as well as some other people after the XFree86 3.3.2 release.
The error was introduced by my patch #53 in XFree86 3.9r (October 1997).
The correction removes the reset of setuid/setgid before the main event loop, and solves the problem which I had worked around in a different manner: for some reason, the particular waitpid() call in creat_as() hangs, does not return when the child process exits. I changed the ifdef's to force the Linux configuration to use wait() instead. This call appears to work properly on other platforms such as SunOS and Solaris.
I also added tests in the standalone configure script to check for the existence of waitpid().
This corrects another problem with the logic for highlightColor resource. As reported by David Dawes:
I've just noticed a problem with with the "inverse" control sequence (ESC[7m) with the 3.3.2 xterm. What it does is sets the background black, and the text the usual foreground colour rather than simply swapping the foreground/background.
This appears to be because when I added logic to check that the highlightColor was distinct from foreground and background colors, I did not add a further check to see that it was not black (I would make an explicit check for the resource not being set, but see nothing definite in the headers that would let me reference an explicitly-undefined Pixel value, though there are some implications in xpm.h). But this should work.
I could not reproduce this until I noticed that the -rev option exposed it nicely.
This fixes the problem reported with failure to build the resize program (BSDI, OSF/1) due to not having <termcap.h>, by changing the ifdef to one that would be set only if the file exists (not currently specified, except by the standalone configure script). We do not really need to include <termcap.h> to build, but only for a clean compile, since it may declare the tgetent() prototype. I also updated the man-page for resize, since I had recently noticed that it can be used to resize xterm using the "Sun" control sequences option.
This is a small patch to xterm's 8-bit terminal description. I noticed while testing ncurses that I had specified the wrong (VT100-style) codes for the F1-F4. Xterm only uses VT220-style function keys in 8-bit mode.
This fixes the following problems with xterm:
It would be nice to implement save/restore cursor as a stack (and solve this type of problem completely), but that would lead to incompatibility with applications which assume they are running with a VT100 or VT220.
This is another patch from Bjorn Helgaas <helgaas@rsn.hp.com>, which I've reviewed (and learned some). Following are his notes:
I poked around some more and finally got xterm-62 to build and run cleanly on HP-UX 10.20. Here are the patches. They look sort of ugly, so here's a little explanation:
The problem on HP-UX was that we were linking with -lcurses rather than -ltermcap due to the second bullet above, and apparently something in HP-UX curses is broken. This seems very strange, because the only thing used is tgetent, which should affect any tty/pty configuration, but I lost interest in tracking down the exact problem.
This is a patch mostly by Bjorn Helgaas <helgaas@dhc.net> (I added the os2main.c change, and a little of the documentation). From Bjorn's description:
This patch modifies the reset behavior of xterm slightly:
This fixes some minor bugs and adds new functionality:
My last patch has an off-by-one error in the comparison for argc. Douglas Kosovic <douglask@dstc.edu.au> showed me where (he got a core dump). Also, I think this explains Clint Olsen's problem, but the symptoms were more subtle (EINVAL for a system call if the -display option is omitted).
This patch is mostly concerned with the standalone configure script; a few minor corrections are added:
This patch is based on analysis by Arfst Ludwig <arfst@luxor.IN-Berlin.DE>, who reported:
Setting the following resources xterm (all current versions) receives a segmentation fault on <Btn2Up> after scrolling: *XTerm*VT100*translations: #override \ ~Shift~Ctrl<Btn2Up>: insert-selection(PRIMARY, CUT_BUFFER0)\n\ Shift~Ctrl<Btn2Up>: insert-selection(CLIPBOARD, CUT_BUFFER1)\n\ ~Shift<BtnUp>: select-end(PRIMARY, CUT_BUFFER0)\n\ Shift<BtnUp>: select-end(CLIPBOARD, CUT_BUFFER1) (The above resources intention is to be able to paste the latest selection even if the xterm was cleared.) And here is how it works (and a fix!): The widget given to the action handler as first argument is not guaranteed to be a XtermWidget (it can be the ScrollbarWidget). Instead of accessing the widget's member directly XtDisplay gives the required pointer in a safe way.
Setting the following resources xterm (all current versions) receives a segmentation fault on <Btn2Up> after scrolling:
*XTerm*VT100*translations: #override \ ~Shift~Ctrl<Btn2Up>: insert-selection(PRIMARY, CUT_BUFFER0)\n\ Shift~Ctrl<Btn2Up>: insert-selection(CLIPBOARD, CUT_BUFFER1)\n\ ~Shift<BtnUp>: select-end(PRIMARY, CUT_BUFFER0)\n\ Shift<BtnUp>: select-end(CLIPBOARD, CUT_BUFFER1)
(The above resources intention is to be able to paste the latest selection even if the xterm was cleared.)
And here is how it works (and a fix!): The widget given to the action handler as first argument is not guaranteed to be a XtermWidget (it can be the ScrollbarWidget). Instead of accessing the widget's member directly XtDisplay gives the required pointer in a safe way.
I noticed that this was not the only instance (by reading the code, and testing with his example), and extended the solution to check the widget-class to ensure that it is indeed xterm's widget class before attempting to use it in the context of translations.
This fixes the segmentation violation noted by Rogier Wolff about a month ago. He'd set xterm to 400 (rows) by 150 columns, which broke because there were limited buffers (200 rows) used for juggling data when adding or deleting lines and for switching between alternate and normal screens. I replaced this by an allocated buffer.
The bug is simple to test if you set titeInhibit false.
This patch adds a fix and implements a new feature (as well as some minor typos):
This patch addresses bugs and requests reported by
Some of the changes are interrelated (it was an unusually busy week).
Most of this patch is related to the standalone configure script, though there are fixes/enhancements as well:
I've tested the configure script on Linux, SunOS 4.1.3, Solaris 2.5.1, IRIX 5.2 and 6.2, AIX 3.2.5 and CLIX 3.1 (all but the last run properly as well).
This is a collection of small fixes, and a couple of minor enhancements:
This patch implements the VT100/VT220 Media Copy (i.e., print-screen) control sequences.
This patch does the following (all but the first affect only the standalone configure script):
The existing behavior allowed underlines to be drawn outside the character-cell, so they weren't cleared properly under some circumstances.
This patch does the following
This is a patch to provide test-support for some work I'm doing on ncurses. It does not modify the normal configuration of xterm; the code is compiled if the standalone configure option "--enable-xmc-glitch" is specified.
This fixes the problem reported with xterm's cursor color versus the background (the second chunk in this patch) and also removes some duplicate initialization of the cursor GC's. If the cursor color at startup is the same as the background, then xterm will use the reverse GC, ignoring the setting of the colorMode resource.
This implements the first part of the VT100 doublesize characters for xterm, as well as fixing a handful of bugs:
Here's a fix for two problems:
Bram Moolenaar reported that the cursor color changed unexpectedly while scrolling. The cause was that it used the same GC's as the logic that draws the ANSI colors. The bug only appears if the cursorColor resource isn't set, and has been present since the initial implementation early last year. (The same bug also appears in rxvt ;-). Here's a fix.
Some nits found by Darren Hiebert (missing part of install-rule, incorrect assignment for --enable-color-mode option).
Patch for the configure script's logic for obtaining imake predefined symbols.
(both changes also modify the configure script)
This implements a simple configuration script with autoconf (to which I'll add more options later). It does the following:
It does not make tests for the things that imake does (that's another project), instead it uses a hybrid of the autoconf tests for libraries and adds imake's compiler options (which are necessary in some cases to get main.c to compile).
This corrects a minor, but annoying error in the vt220 emulation: the DECUDK is only supposed to be interpreted for _shifted_ function keys.
This corrects something that I overlooked in patch #27 (21-aug-1996), which is that when trimming the region to be repainted for the highlightSelection resource of xterm, I still have to paint the background past the highlighted region. This only happens when I first do a selection in a window that's partly off-screen, then move the window on-screen.
I got the description of DECSTR from a vt420 user's manual. I'll do some testing with vttest to ensure that there's nothing else to do than what was documented.
This adds to the reset-fix by Matthieu Herrb <Mathieu.Herrb@mipnet.fr> a small change to make xterm able to output 8-bit characters in VT100 mode. Applications that run on real VT100's don't do that anyway, and this feature should be removed sometime after finishing off the VT220 emulation (VT220's can do 8-bit characters). That would be a good time to change the default terminal-id to 220.
This implements the REP (repeat) control for xterm. That isn't part of the DEC VTxxx series, but is defined in ISO 6429. (Note that the base xterm terminal description is not changed -- I added a variant, "xterm-rep").
This implements vt52 emulation in xterm (ifdef'd so it can be removed). I've been using it for testing for the past month or so.
From bug-report by <auroux@clipper.ens.fr> (Denis Auroux), missing reset to ground state. I checked through the rest of that table and found another, in the unimplemented MC (screen print).
All of these changes are based on vttest 2.6
(Most of the volume in the patch is to add 2 more state tables for parsing the 2nd/3rd device-attribute controls).
This patch corrects the following reported by Roland Rosenfeld <roland@spinnaker.rhein.de>:
Roland also complained that he couldn't use box characters with
-adobe-courier-bold-r-normal--12-120-75-75-m-70-iso8859-1
but that's a known xterm limitation (the box characters must be part of the font, in the first 32 locations).
This patch fixes one of my long-term gripes: xterm's selection doesn't clearly show what's being selected (as per David's request, it's controlled by a resource, which defaults to the older behavior).
Here's a patch to fix a problem with xterm's cut/paste and another to modify the appearance of the highlighting while selecting. (The changes are independent, so you can see if the change to screen.c is desirable).
Here's a correction for two minor bugs that I picked up in testing, plus some lint (from Solaris 2.5) where NULL was used incorrectly:
This patch does several things. In effect, xterm can (I think) do a reasonably good job of emulating vt220 and vt320 terminals (as well as it was doing vt100, at any rate ;-).
It does NOT do:
Anyway, I:
I'll be continuing to test this patch for a while, but don't expect to add any new functionality (it passes all of the current tests I've built in vttest, but I need to make more tests)..
This removes the blinking cursor I added last week (for performance reasons). Time-permitting, I'll revisit this after 3.2 is released (there will be more work after XFree86 3.2, I assume).
I looked more closely at my "double-negative" and realized that I had been confused by the default color scheme (black on white) in combination with reverse video. However, I did see that the original_fg and original_bg data weren't really used - so I removed that logic.
Also:
(If anyone needs numbers, I had savedLines set to 2000, and found a reduction from ~700k to ~400k of allocated memory, according to Purify).
This documents the changes in control sequences for window operations that I added in my previous patch. I'm testing another patch that allows the user to use less memory if colors aren't needed.
(it's worth noting that this bug exists in X11R6.1, so I'd like to assume that someone's already submitted a fix to X Consortium...)
This implements the following:
This patch implements for xterm several minor features from ISO 6429 which are useful for terminfo applications. The HPA and VPA control sequences allow cursor movement along a row or column, cutting down a little on the characters transmitted. The other codes allow resetting specific graphic rendition attributes without modifying the other attributes. (now if someone just had time to implement blinking cursors...)
Adam Tla/lka <atlka@pg.gda.pl> told me a couple of weeks ago that I'd missed some of the background coloring in xterm. I investigated, and found that while I'd picked up on the clear-to-bottom and clear-to-end-of-line operations, I'd overlooked the insert/delete lines. Just so I wouldn't overlook any more of these, I updated a copy of vttest to test ISO colors and bce (background color erase). This patch introduces a new function, ClearCurBackground, whose calls replace the direct XClearArea calls that I'd overlooked. (There's also a few compiler warnings fixed, etc ;-)
This fixes the problem reported by David Dawes, by making the 50msec select timeout for the Xaw3d arrow scrollbar a resource. (I made it a boolean for a variety of reasons -- to make it a number, you'd need an additional resource, to avoid breaking the logic).
This patch brings the termcap and terminfo descriptions for xterm up to date. I made the following changes:
=> (I'm still considering modifying the code & description to match the rxvt program).
This corrects my earlier changes for colors - the inner border of the xterm was getting painted with the wrong color, since I'd moved the call to set the background into the logic that tracks SGR information.
This corrects a memory leak in xterm that happens whenever one switches fonts.
This patch corrects the behavior of the ANSI colors in xterm when reverse video is used, as well as some other lesser sins:
I observed an occasional glitch in the xterm's color behavior; a clear to end of line would get a color that had been used in a program that supposedly reset colors. I traced this down to the way xterm was modifying colors of GC's on the fly; it didn't restore the original color of the GC, even though it would later be used in functions (such as ClearRight) that assumed (my error) that the GC would have the current foreground or background color.
I fixed this by resetting the GC's colors with a new function 'resetXtermGC()', and direct calls on SGR_Foreground/SGR_Background, as appropriate and using a new function 'updatedXtermGC()' to encapsulate the logic that modifies the GC's color. (I also removed some commented-out code that was trying to do this -- the problem was a little more obscure).
This patch fixes the remaining problems that I had making xterm run with x11r5, as well as a couple of other bugs. It follows my patch from yesterday, that added ifdef's for some of the input-method resources.
This is mostly a documentation patch for xterm. It describes the color control sequences in more detail, and documents some other features of xterm that aren't described elsewhere.
I've also added a couple of ifdef's to fix (part of) the problem that I'm working on (making the program work properly on x11r5, where I'm doing memory testing -- I have a "good" version from mid-January, but my resync version doesn't work properly on x11r5). I'm not done with that yet.
I did a (clean) build of 3.1.2n on Linux 1.2.13 (ELF). I've got an S3 card.
This fixes the following in the 3.1.2n xterm:
I built this version (with a minor nit that I'll patch soon) on SunOS 4.1.3 so that I can test it some more with Purify.
btw: the changes made in Xpoll.h won't work on some older systems, because fd_set isn't a defined type (I've got one machine at least that this applies to).
This patch does all of the SGR foreground/background fixes (i.e., clearing the screen after an SGR color is set causes that color to be used in the foreground and/or background). If the FG_COLOR and/or BG_COLOR flags aren't set, then the xterm foreground and background default to the window's values. This usage is consistent with various types of hardware (especially the IBM PC), and is also used in rxvt.
=> This makes redundant some of the corresponding logic in HideCursor to set the foreground and background, but I left it in since it may be fixing an unrelated requirement.
=> This fixes some glitches in the accompanying resize, that leaves parts of the window in the original background color.
=> Otherwise, selection after an index or reverse index will paint the wrong colors.
This patch modifies the object code, by replacing indexing expressions with temporary variables with the full indexing expression. At first glance, this seems inefficient (it did to me ;-), until remembering comments made in the compilers newsgroups that trying to "help" the compiler doesn't really work that well. A good optimizing compiler can do a better job than the programmer can. (There's a moral in the use of 'register' variables also, but I won't fix those...).
Anyway, the revised code generates a smaller object...
When setting up for this phase, I saw that you'd corrected the bug that I found in ClearLeft. I decided to make this series of patches anyway, since readability never hurt (and there's the potential for finding another bug while reviewing this set).
This is my third (and final cleanup) patch for xterm. It gets rid of the unused stuff, and converts several functions to static (thereby reducing their scope).
At this point, the only compile warnings I've got (on Linux) are those about the select arguments (int vs fd_set type), and a missing declaration for waitpid. Those both are hard to get right without autoconfigure.
The next patches will address the functional changes...
This is my second patch to xterm. It corrects most of the gcc warnings (except for some that are due to X header files ;-). I compared objects to keep track of the changes that don't affect the object code (n/c) versus those that do.
At this point, I'm compiling (fairly) clean with gcc options
-Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wnested-externs
(I also compiled with -Wshadow, but while that found some things that I wanted to find, there's far too many warnings from the X headers to be usable in this context).
The changes:
This is my first cleanup patch for xterm. It addresses all of the gcc warnings for -Wall, -Wmissing-prototypes and -Wstrict-prototypes that I can change without modifying the object code. (I'm compiling this with gcc 2.7.0 for an aout target, which makes it simple to compare objects. When I do ELF-only, I've got a tool that compares that sort of thing as well).
Briefly, this patch adds (and uses) two header files in the xterm directory:
proto.h xterm.h
I expect this to be the biggest patch by far. However (barring a misplaced prototype), it shouldn't break anything, since the intent of the patch is to provide missing declarations.