xterm: Changes to 'upstream-unstable'
INSTALL | 11
MANIFEST | 2
Makefile.in | 9
Tekproc.c | 42
aclocal.m4 | 38
button.c | 113 -
cachedGCs.c | 25
charproc.c | 94 -
config.guess | 15
config.sub | 16
configure | 3862 +++++++++++++++++++++++-----------------------
configure.in | 7
cursor.c | 32
data.c | 6
data.h | 8
doublechr.c | 13
fontutils.c | 49
graphics.c | 29
graphics.h | 42
graphics_regis.c | 146 +
graphics_regis.h | 8
graphics_sixel.c | 187 +-
graphics_sixel.h | 8
input.c | 31
keysym2ucs.c | 6
main.c | 23
menu.c | 6
misc.c | 152 +
package/debian/changelog | 6
package/freebsd/Makefile | 2
package/xterm.spec | 4
precompose.c | 8
print.c | 26
ptydata.c | 7
ptyx.h | 8
scrollback.c | 9
scrollbar.c | 17
svg.c | 8
termcap | 14
terminfo | 9
trace.c | 49
trace.h | 12
unicode/README | 13
unicode/convmap.pl | 9
unicode/keysym.map | 3
unicode/precompose.c.tail | 6
util.c | 214 +-
version.c | 9
version.h | 6
wcwidth.c | 22
xstrings.c | 24
xterm.h | 3
xterm.log.html | 103 +
xterm.man | 94 -
xtermcap.c | 24
xtermcfg.hin | 19
56 files changed, 3030 insertions(+), 2678 deletions(-)
New commits:
commit c9cb401305a4c9866c5462a724410472c4e6db29
Author: Sven Joachim <svenjoac@gmx.de>
Date: Mon Jun 6 17:27:21 2016 +0200
Imported Upstream version 325
diff --git a/INSTALL b/INSTALL
index f049a7c..e2f03b4 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,6 @@
--- $XTermId: INSTALL,v 1.158 2015/08/10 23:38:32 tom Exp $
+-- $XTermId: INSTALL,v 1.159 2016/05/28 18:39:26 tom Exp $
-------------------------------------------------------------------------------
--- Copyright 1997-2014,2015 by Thomas E. Dickey
+-- Copyright 1997-2015,2016 by Thomas E. Dickey
--
-- All Rights Reserved
--
@@ -777,6 +777,13 @@ The options (in alphabetic order):
Activate the --disable-leaks option, and ensure that "-g" is added to
CFLAGS.
+ --without-xinerama do not use Xinerama extension for multiple screens
+
+ Xinerama is an X server extension that allows multiple physical
+ screens to behave as a single screen. If you do not need the feature
+ (or do not want the extra library dependency), use this option to
+ suppress it.
+
--with-xpm=DIR use Xpm library for colored icon, may specify path
Use Xpm library to show colored icon in window decoration, e.g.,
diff --git a/MANIFEST b/MANIFEST
index 818655f..98e5f3b 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-324, version xterm-324
+MANIFEST for xterm-325, version xterm-325
--------------------------------------------------------------------------------
MANIFEST this file
256colres.h resource-definitions for 256-color mode
diff --git a/Makefile.in b/Makefile.in
index 5064a12..17b273d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,8 +1,8 @@
-## $XTermId: Makefile.in,v 1.234 2015/02/12 09:31:30 tom Exp $
+## $XTermId: Makefile.in,v 1.235 2016/05/15 16:45:53 tom Exp $
# -----------------------------------------------------------------------------
# this file is part of xterm
#
-# Copyright 1997-2014,2015 by Thomas E. Dickey
+# Copyright 1997-2015,2016 by Thomas E. Dickey
#
# All Rights Reserved
#
@@ -52,6 +52,7 @@ ETAGS = @ETAGS@
LN_S = @LN_S@
RM = rm -f
LINT = @LINT@
+LINT_OPTS = @LINT_OPTS@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -563,8 +564,8 @@ koi8rxterm.ps : koi8rxterm.$(manext)
koi8rxterm.txt : koi8rxterm.$(manext)
################################################################################
lint :
- $(LINT) $(CPPFLAGS) $(SRCS1)
- $(LINT) $(CPPFLAGS) $(SRCS2)
+ $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(SRCS1)
+ $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(SRCS2)
tags :
$(CTAGS) $(SRCS) $(HDRS)
diff --git a/Tekproc.c b/Tekproc.c
index 6f8da47..a640643 100644
--- a/Tekproc.c
+++ b/Tekproc.c
@@ -1,7 +1,7 @@
-/* $XTermId: Tekproc.c,v 1.198 2014/07/12 22:55:02 tom Exp $ */
+/* $XTermId: Tekproc.c,v 1.199 2016/05/16 09:14:46 tom Exp $ */
/*
- * Copyright 2001-2012,2014 by Thomas E. Dickey
+ * Copyright 2001-2014,2016 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -416,12 +416,11 @@ Tekparse(TekWidget tw)
TScreen *screen = TScreenOf(xw);
TekScreen *tekscr = TekScreenOf(tw);
int x, y;
- IChar c = 0;
IChar ch;
int nextstate;
for (;;) {
- c = input();
+ IChar c = input();
/*
* The parsing tables all have 256 entries. If we're supporting
* wide characters, we handle them by treating them the same as
@@ -1036,12 +1035,15 @@ TekPage(TekWidget tw)
static int
getpoint(TekWidget tw)
{
- int c, x, y, e, lo_y = 0;
+ int x, y, e, lo_y = 0;
TekScreen *tekscr = TekScreenOf(tw);
x = tekscr->cur.x;
y = tekscr->cur.y;
+
for (;;) {
+ int c;
+
if ((c = (int) input()) < ' ') { /* control character */
unput(c);
return (0);
@@ -1083,16 +1085,12 @@ TCursorBack(TekWidget tw)
{
TekScreen *tekscr = TekScreenOf(tw);
const struct Tek_Char *t;
- int x, l;
-
- x = (tekscr->cur_X -=
- (t = &TekChar[tekscr->cur.fontsize])->hsize
- );
+ int x = (tekscr->cur_X -= (t = &TekChar[tekscr->cur.fontsize])->hsize);
if (((tekscr->margin == MARGIN1) && (x < 0))
|| ((tekscr->margin == MARGIN2) && (x < TEKWIDTH / 2))) {
- if ((l = (tekscr->cur_Y + (t->vsize - 1)) / t->vsize + 1) >=
- t->nlines) {
+ int l = ((tekscr->cur_Y + (t->vsize - 1)) / t->vsize + 1);
+ if (l >= t->nlines) {
tekscr->margin = !tekscr->margin;
l = 0;
}
@@ -1105,14 +1103,11 @@ static void
TCursorForward(TekWidget tw)
{
TekScreen *tekscr = TekScreenOf(tw);
- const struct Tek_Char *t;
- int l;
+ const struct Tek_Char *t = &TekChar[tekscr->cur.fontsize];
- if ((tekscr->cur_X +=
- (t = &TekChar[tekscr->cur.fontsize])->hsize
- ) > TEKWIDTH
- ) {
- if ((l = tekscr->cur_Y / t->vsize - 1) < 0) {
+ if ((tekscr->cur_X += t->hsize) > TEKWIDTH) {
+ int l = (tekscr->cur_Y / t->vsize - 1);
+ if (l < 0) {
tekscr->margin = !tekscr->margin;
l = t->nlines - 1;
}
@@ -1733,7 +1728,6 @@ void
ChangeTekColors(TekWidget tw, TScreen *screen, ScrnColors * pNew)
{
TekScreen *tekscr = TekScreenOf(tw);
- int i;
XGCValues gcv;
if (COLOR_DEFINED(pNew, TEK_FG)) {
@@ -1753,6 +1747,8 @@ ChangeTekColors(TekWidget tw, TScreen *screen, ScrnColors * pNew)
}
if (tw) {
+ int i;
+
XSetForeground(XtDisplay(tw), tekscr->TnormalGC,
T_COLOR(screen, TEK_FG));
XSetBackground(XtDisplay(tw), tekscr->TnormalGC,
@@ -1785,7 +1781,6 @@ TekReverseVideo(TekWidget tw)
XtermWidget xw = term;
TScreen *screen = TScreenOf(xw);
TekScreen *tekscr = TekScreenOf(tw);
- int i;
Pixel tmp;
XGCValues gcv;
@@ -1794,6 +1789,8 @@ TekReverseVideo(TekWidget tw)
T_COLOR(screen, TEK_CURSOR) = T_COLOR(screen, TEK_FG);
if (tw) {
+ int i;
+
XSetForeground(XtDisplay(tw), tekscr->TnormalGC, T_COLOR(screen, TEK_FG));
XSetBackground(XtDisplay(tw), tekscr->TnormalGC, T_COLOR(screen, TEK_BG));
@@ -1903,7 +1900,6 @@ TekCopy(TekWidget tw)
TekLink *Tp;
char buf[TIMESTAMP_LEN + 10];
- char initbuf[5];
int tekcopyfd;
timestamp_filename(buf, "COPY");
@@ -1921,6 +1917,8 @@ TekCopy(TekWidget tw)
tekcopyfd = open_userfile(screen->uid, screen->gid, buf, False);
if (tekcopyfd >= 0) {
+ char initbuf[5];
+
sprintf(initbuf, "%c%c%c%c",
ANSI_ESC, (char) (tekscr->page.fontsize + '8'),
ANSI_ESC, (char) (tekscr->page.linetype + '`'));
diff --git a/aclocal.m4 b/aclocal.m4
index 9ac69df..1aa0c3e 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-dnl $XTermId: aclocal.m4,v 1.408 2016/03/11 00:54:28 tom Exp $
+dnl $XTermId: aclocal.m4,v 1.412 2016/05/28 18:42:52 tom Exp $
dnl
dnl ---------------------------------------------------------------------------
dnl
@@ -254,11 +254,15 @@ ifelse([$3],,[ :]dnl
])dnl
])])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CC_ENV_FLAGS version: 2 updated: 2015/04/12 15:39:00
+dnl CF_CC_ENV_FLAGS version: 3 updated: 2016/05/21 18:10:17
dnl ---------------
dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
dnl into CC. This will not help with broken scripts that wrap the compiler with
dnl options, but eliminates a more common category of user confusion.
+dnl
+dnl Caveat: this also disallows blanks in the pathname for the compiler, but
+dnl the nuisance of having inconsistent settings for compiler and preprocessor
+dnl outweighs that limitation.
AC_DEFUN([CF_CC_ENV_FLAGS],
[
# This should have been defined by AC_PROG_CC
@@ -266,13 +270,16 @@ AC_DEFUN([CF_CC_ENV_FLAGS],
AC_MSG_CHECKING(\$CC variable)
case "$CC" in
-(*[[\ \ ]]-[[IUD]]*)
+(*[[\ \ ]]-*)
AC_MSG_RESULT(broken)
AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options)
# humor him...
- cf_flags=`echo "$CC" | sed -e 's/^[[^ ]]*[[ ]]//'`
+ cf_flags=`echo "$CC" | sed -e 's/^[[^ ]]*[[ ]][[ ]]*//'`
CC=`echo "$CC" | sed -e 's/[[ ]].*//'`
CF_ADD_CFLAGS($cf_flags)
+ CF_VERBOSE(resulting CC: '$CC')
+ CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
+ CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
;;
(*)
AC_MSG_RESULT(ok)
@@ -1893,6 +1900,14 @@ AC_SUBST(GROFF_NOTE)
AC_SUBST(NROFF_NOTE)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_PROG_LINT version: 3 updated: 2016/05/22 15:25:54
+dnl ------------
+AC_DEFUN([CF_PROG_LINT],
+[
+AC_CHECK_PROGS(LINT, lint cppcheck splint)
+AC_SUBST(LINT_OPTS)
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_REGEX version: 12 updated: 2015/04/18 08:56:57
dnl --------
dnl Attempt to determine if we've got one of the flavors of regular-expression
@@ -3769,6 +3784,21 @@ CF_NO_LEAKS_OPTION(valgrind,
[USE_VALGRIND])
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_WITH_XINERAMA version: 1 updated: 2016/05/28 14:41:12
+dnl ----------------
+AC_DEFUN([CF_WITH_XINERAMA],
+[
+AC_MSG_CHECKING(if you want to use the Xinerama extension)
+AC_ARG_WITH(xinerama,
+[ --without-xinerama do not use Xinerama extension for multiscreen support],
+ [cf_with_xinerama="$withval"],
+ [cf_with_xinerama=yes])
+AC_MSG_RESULT($cf_with_xinerama)
+if test "$cf_with_xinerama" = yes; then
+ CF_XINERAMA
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_WITH_XPM version: 3 updated: 2012/10/04 06:57:36
dnl -----------
dnl Test for Xpm library, update compiler/loader flags if it is wanted and
diff --git a/button.c b/button.c
index 630e212..1532d3d 100644
--- a/button.c
+++ b/button.c
@@ -1,4 +1,4 @@
-/* $XTermId: button.c,v 1.501 2016/03/06 19:16:35 tom Exp $ */
+/* $XTermId: button.c,v 1.505 2016/05/30 19:42:44 tom Exp $ */
/*
* Copyright 1999-2015,2016 by Thomas E. Dickey
@@ -562,7 +562,6 @@ InitLocatorFilter(XtermWidget xw)
int row = 0, col = 0;
Bool oor = 0;
Bool ret;
- int state;
ret = XQueryPointer(screen->display, VWindow(screen),
&root, &child, &rx, &ry, &x, &y, &mask);
@@ -643,6 +642,8 @@ InitLocatorFilter(XtermWidget xw)
(col > screen->loc_filter_right) ||
(row < screen->loc_filter_top) ||
(row > screen->loc_filter_bottom)) {
+ int state;
+
/* Pointer is already outside the rectangle - report immediately */
ButtonState(state, mask);
@@ -679,7 +680,6 @@ CheckLocatorPosition(XtermWidget xw, XButtonEvent *event)
TScreen *screen = TScreenOf(xw);
int row, col;
Bool oor;
- int state;
LocatorCoords(row, col, event->x, event->y, oor);
@@ -703,6 +703,8 @@ CheckLocatorPosition(XtermWidget xw, XButtonEvent *event)
reply.a_nparam = 1;
reply.a_param[0] = 0; /* Event - 0 = locator unavailable */
} else {
+ int state;
+
ButtonState(state, event->state);
reply.a_nparam = 4;
@@ -838,10 +840,12 @@ rowOnCurrentLine(TScreen *screen,
int *deltap) /* must be XButtonEvent */
{
int result = 1;
- int l1, l2;
*deltap = 0;
+
if (line != screen->cur_row) {
+ int l1, l2;
+
if (line < screen->cur_row)
l1 = line, l2 = screen->cur_row;
else
@@ -947,12 +951,13 @@ DiredButton(Widget w,
if ((xw = getXtermWidget(w)) != 0) {
TScreen *screen = TScreenOf(xw);
- Char Line[6];
- unsigned line, col;
if (IsBtnEvent(event)
&& (event->xbutton.y >= screen->border)
&& (event->xbutton.x >= OriginX(screen))) {
+ Char Line[6];
+ unsigned line, col;
+
line = (unsigned) ((event->xbutton.y - screen->border)
/ FontHeight(screen));
col = (unsigned) ((event->xbutton.x - OriginX(screen))
@@ -1036,14 +1041,16 @@ ViButton(Widget w,
if ((xw = getXtermWidget(w)) != 0) {
TScreen *screen = TScreenOf(xw);
int pty = screen->respond;
- Char Line[6];
- int line;
if (IsBtnEvent(event)) {
+ int line;
line = screen->cur_row -
((event->xbutton.y - screen->border) / FontHeight(screen));
+
if (line != 0) {
+ Char Line[6];
+
Line[0] = ANSI_ESC; /* force an exit from insert-mode */
v_write(pty, Line, 1);
@@ -1229,8 +1236,6 @@ UTF8toLatin1(TScreen *screen, Char *s, unsigned long len, unsigned long *result)
Cardinal offset = 0;
- const Char *p;
-
if (len != 0) {
PtyData data;
@@ -1265,6 +1270,8 @@ UTF8toLatin1(TScreen *screen, Char *s, unsigned long len, unsigned long *result)
* whatever the user wants).
*/
if (fails) {
+ const Char *p;
+
for (p = (const Char *) screen->default_string; *p != '\0'; ++p) {
AddChar(&buffer, &used, offset, *p);
}
@@ -1524,13 +1531,12 @@ static Atom *
_SelectionTargets(Widget w)
{
Atom *result;
- TScreen *screen;
XtermWidget xw;
if ((xw = getXtermWidget(w)) == 0) {
result = NULL;
} else {
- screen = TScreenOf(xw);
+ TScreen *screen = TScreenOf(xw);
#if OPT_WIDE_CHARS
if (screen->wide_chars) {
@@ -1726,13 +1732,14 @@ xtermGetSelection(Widget w,
}
#endif
} else {
- struct _SelectionList *list;
if (targets == NULL || targets[0] == None) {
targets = _SelectionTargets(w);
}
if (targets != 0) {
+ struct _SelectionList *list;
+
target = targets[0];
if (targets[1] == None) { /* last target in list */
@@ -1840,11 +1847,10 @@ ToNational(TScreen *screen, Char *buffer, unsigned *length)
{
int gsetL = screen->gsets[screen->curgl];
int gsetR = screen->gsets[screen->curgr];
- unsigned chr, out, gl, gr;
- Char *p;
#if OPT_WIDE_CHARS
if ((screen->utf8_nrc_mode | screen->utf8_mode) != uFalse) {
+ Char *p;
PtyData *data = TypeXtMallocX(PtyData, *length);
memset(data, 0, sizeof(*data));
@@ -1853,6 +1859,8 @@ ToNational(TScreen *screen, Char *buffer, unsigned *length)
memcpy(data->buffer, buffer, (size_t) *length);
p = buffer;
while (data->next < data->last) {
+ unsigned chr, out, gl, gr;
+
if (!decodeUtf8(screen, data)) {
data->utf_size = 1;
data->utf_data = data->next[0];
@@ -1872,9 +1880,12 @@ ToNational(TScreen *screen, Char *buffer, unsigned *length)
} else
#endif
{
+ Char *p;
+
for (p = buffer; (int) (p - buffer) < (int) *length; ++p) {
- chr = *p;
- out = chr;
+ unsigned gl, gr;
+ unsigned chr = *p;
+ unsigned out = chr;
if ((gl = xtermCharSetIn(screen, chr, gsetL)) != chr) {
out = gl;
} else if ((gr = xtermCharSetIn(screen, chr, gsetR)) != chr) {
@@ -1978,7 +1989,9 @@ _WriteSelectionData(XtermWidget xw, Char *line, size_t length)
/* Doing this one line at a time may no longer be necessary
because v_write has been re-written. */
+#if OPT_PASTE64
TScreen *screen = TScreenOf(xw);
+#endif
Char *lag, *end;
/* in the VMS version, if tt_pasting isn't set to True then qio
@@ -2049,11 +2062,11 @@ removeControls(XtermWidget xw, char *value)
{
TScreen *screen = TScreenOf(xw);
size_t dst = 0;
- size_t src = 0;
if (screen->allowPasteControls) {
dst = strlen(value);
} else {
+ size_t src = 0;
while ((value[dst] = value[src]) != '\0') {
int ch = CharOf(value[src++]);
if (ch < 32) {
@@ -2098,7 +2111,7 @@ SelectionReceived(Widget w,
int *format)
{
char **text_list = NULL;
- int text_list_count;
+ int text_list_count = 0;
XTextProperty text_prop;
TScreen *screen;
Display *dpy;
@@ -2479,9 +2492,7 @@ EndExtend(XtermWidget xw,
Bool use_cursor_loc)
{
CELL cell;
- unsigned count;
TScreen *screen = TScreenOf(xw);
- Char line[64];
if (use_cursor_loc) {
cell = screen->cursorp;
@@ -2489,11 +2500,15 @@ EndExtend(XtermWidget xw,
PointToCELL(screen, event->xbutton.y, event->xbutton.x, &cell);
}
ExtendExtend(xw, &cell);
+
screen->lastButtonUpTime = event->xbutton.time;
screen->lastButton = event->xbutton.button;
+
if (!isSameCELL(&(screen->startSel), &(screen->endSel))) {
if (screen->replyToEmacs) {
- count = 0;
+ Char line[64];
+ unsigned count = 0;
+
if (screen->control_eight_bits) {
line[count++] = ANSI_CSI;
} else {
@@ -2863,10 +2878,10 @@ static int
LastTextCol(TScreen *screen, CLineData *ld, int row)
{
int i = -1;
- const IAttr *ch;
if (ld != 0) {
if (okScrnRow(screen, row)) {
+ const IAttr *ch;
for (i = screen->max_col,
ch = ld->attribs + i;
i >= 0 && !(*ch & CHARDRAWN);
@@ -3243,8 +3258,6 @@ do_select_regex(TScreen *screen, CELL *startc, CELL *endc)
char *expr = screen->selectExpr[inx];
regex_t preg;
regmatch_t match;
- char *search;
- int *indexed;
TRACE(("Select_REGEX[%d]:%s\n", inx, NonNull(expr)));
if (okPosition(screen, &ld, startc) && expr != 0) {
@@ -3253,11 +3266,13 @@ do_select_regex(TScreen *screen, CELL *startc, CELL *endc)
int lastRow = lastRowOfLine(screen, firstRow);
unsigned size = lengthOfLines(screen, firstRow, lastRow);
int actual = cellToColumn(screen, startc);
+ int *indexed;
TRACE(("regcomp ok rows %d..%d bytes %d\n",
firstRow, lastRow, size));
if ((indexed = TypeCallocN(int, size + 1)) != 0) {
+ char *search;
if ((search = make_indexed_text(screen,
firstRow,
size,
@@ -3355,7 +3370,6 @@ ComputeSelect(XtermWidget xw,
{
TScreen *screen = TScreenOf(xw);
- int length;
int cclass;
CELL first = *startc;
CELL last = *endc;
@@ -3429,7 +3443,7 @@ ComputeSelect(XtermWidget xw,
#endif
if (okPosition(screen, &(ld.endSel), &(screen->endSel))) {
- length = LastTextCol(screen, ld.endSel, screen->endSel.row);
+ int length = LastTextCol(screen, ld.endSel, screen->endSel.row);
cclass = CClassOf(endSel);
do {
++screen->endSel.col;
@@ -3608,7 +3622,6 @@ ReHiliteText(XtermWidget xw,
CELL *lastp)
{
TScreen *screen = TScreenOf(xw);
- int i;
CELL first = *firstp;
CELL last = *lastp;
@@ -3630,6 +3643,7 @@ ReHiliteText(XtermWidget xw,
return;
if (!isSameRow(&first, &last)) { /* do multiple rows */
+ int i;
if ((i = screen->max_col - first.col + 1) > 0) { /* first row */
ScrnRefresh(xw, first.row, first.col, 1, i, True);
}
@@ -3656,13 +3670,13 @@ SaltTextAway(XtermWidget xw,
TScreen *screen = TScreenOf(xw);
int i, j = 0;
int eol;
- int tmp;
Char *line;
Char *lp;
CELL first = *cellc;
CELL last = *cell;
if (isSameRow(&first, &last) && first.col > last.col) {
+ int tmp;
EXCHANGE(first.col, last.col, tmp);
}
@@ -3983,9 +3997,7 @@ ConvertSelection(Widget w,
}
if (*target == XA_TARGETS(dpy)) {
- Atom *allocP;
Atom *targetP;
- Atom *std_targets;
XPointer std_return = 0;
unsigned long std_length;
@@ -3993,6 +4005,8 @@ ConvertSelection(Widget w,
target, type, &std_return,
&std_length, format)) {
Atom *my_targets = _SelectionTargets(w);
+ Atom *allocP;
+ Atom *std_targets;
TRACE(("XmuConvertStandardSelection - success\n"));
std_targets = (Atom *) (void *) (std_return);
@@ -4341,7 +4355,6 @@ SaveText(TScreen *screen,
{
LineData *ld;
int i = 0;
- unsigned c;
Char *result = lp;
#if OPT_WIDE_CHARS
unsigned previous = 0;
@@ -4358,6 +4371,7 @@ SaveText(TScreen *screen,
#endif
*eol = !LineTstWrapped(ld);
for (i = scol; i < ecol; i++) {
+ unsigned c;
assert(i < (int) ld->lineSize);
c = E2A(ld->charData[i]);
#if OPT_WIDE_CHARS
@@ -4371,10 +4385,9 @@ SaveText(TScreen *screen,
are in memory attached to the HIDDEN_CHAR */
if_OPT_WIDE_CHARS(screen, {
if ((screen->utf8_nrc_mode | screen->utf8_mode) != uFalse) {
- unsigned ch;
size_t off;
for_each_combData(off, ld) {
- ch = ld->combData[off][i];
+ unsigned ch = ld->combData[off][i];
if (ch == 0)
break;
lp = convertToUTF8(lp, ch);
@@ -4390,10 +4403,9 @@ SaveText(TScreen *screen,
if ((screen->utf8_nrc_mode | screen->utf8_mode) != uFalse) {
lp = convertToUTF8(lp, (c != 0) ? c : ' ');
if_OPT_WIDE_CHARS(screen, {
- unsigned ch;
size_t off;
for_each_combData(off, ld) {
- ch = ld->combData[off][i];
+ unsigned ch = ld->combData[off][i];
if (ch == 0)
break;
lp = convertToUTF8(lp, ch);
@@ -4827,13 +4839,12 @@ static char **
tokenizeFormat(String format)
{
char **result = 0;
- int pass;
int argc;
- int n;
format = x_skip_blanks(format);
if (*format != '\0') {
char *blob = x_strdup(format);
+ int pass;
for (pass = 0; pass < 2; ++pass) {
int used = 0;
@@ -4841,6 +4852,7 @@ tokenizeFormat(String format)
int escaped = 0;
int squoted = 0;
int dquoted = 0;
+ int n;
argc = 0;
for (n = 0; format[n] != '\0'; ++n) {
@@ -4998,9 +5010,10 @@ expandFormat(XtermWidget xw,
size_t need = 0;
for (n = 0; format[n] != '\0'; ++n) {
- char *value = 0;
if (format[n] == '%') {
+ char *value = 0;
+
switch (format[++n]) {
case '%':
if (pass) {
@@ -5089,10 +5102,10 @@ expandFormat(XtermWidget xw,
static void
executeCommand(pid_t pid, char **argv)
{
- char *child_cwd = ProcGetCWD(pid);
-
(void) pid;
if (argv != 0 && argv[0] != 0) {
+ char *child_cwd = ProcGetCWD(pid);
+
if (fork() == 0) {
if (child_cwd) {
IGNORE_RC(chdir(child_cwd)); /* We don't care if this fails */
@@ -5106,11 +5119,10 @@ executeCommand(pid_t pid, char **argv)
static void
freeArgv(char *blob, char **argv)
{
- int n;
-
if (blob) {
free(blob);
if (argv) {
+ int n;
for (n = 0; argv[n]; ++n)
free(argv[n]);
free(argv);
@@ -5125,11 +5137,11 @@ reallyExecFormatted(Widget w, char *format, char *data, CELL *start, CELL *finis
if ((xw = getXtermWidget(w)) != 0) {
char **argv;
- char *blob;
- int argc;
if ((argv = tokenizeFormat(format)) != 0) {
- blob = argv[0];
+ char *blob = argv[0];
+ int argc;
+
for (argc = 0; argv[argc] != 0; ++argc) {
argv[argc] = expandFormat(xw, argv[argc], data, start, finish);
}
@@ -5169,13 +5181,13 @@ HandleExecSelectable(Widget w,
CELL start, finish;
char *data;
char **argv;
- char *blob;
- int argc;
data = getDataFromScreen(xw, params[1], &start, &finish);
if (data != 0) {
if ((argv = tokenizeFormat(params[0])) != 0) {
- blob = argv[0];
+ char *blob = argv[0];
+ int argc;
+
for (argc = 0; argv[argc] != 0; ++argc) {
argv[argc] = expandFormat(xw, argv[argc], data,
&start, &finish);
@@ -5235,11 +5247,10 @@ HandleInsertSelectable(Widget w,
CELL start, finish;
char *data;
char *temp = x_strdup(params[0]);
- char *exps;
data = getDataFromScreen(xw, params[1], &start, &finish);
if (data != 0) {
- exps = expandFormat(xw, temp, data, &start, &finish);
+ char *exps = expandFormat(xw, temp, data, &start, &finish);
if (exps != 0) {
unparseputs(xw, exps);
unparse_end(xw);
diff --git a/cachedGCs.c b/cachedGCs.c
index 2b346b7..84b74f2 100644
--- a/cachedGCs.c
+++ b/cachedGCs.c
@@ -1,7 +1,7 @@
-/* $XTermId: cachedGCs.c,v 1.63 2014/12/18 21:56:08 tom Exp $ */
+/* $XTermId: cachedGCs.c,v 1.64 2016/05/16 09:26:15 tom Exp $ */
/*
- * Copyright 2007-2011,2014 by Thomas E. Dickey
+ * Copyright 2007-2014,2016 by Thomas E. Dickey
*
* All Rights Reserved
*
@@ -527,12 +527,12 @@ setCgsFont(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId, XTermFonts * font)
void
clrCgsFonts(XtermWidget xw, VTwin *cgsWin, XTermFonts * font)
{
- CgsCache *me;
- int j, k;
-
if (HaveFont(font)) {
+ int j;
for_each_gc(j) {
+ CgsCache *me;
if ((me = myCache(xw, cgsWin, (CgsEnum) j)) != 0) {
+ int k;
for (k = 0; k < DEPTH; ++k) {
if (SameFont(LIST(k).font, font)) {
TRACE2(("clrCgsFonts %s gc %p(%d) %s\n",
@@ -565,13 +565,13 @@ getCgsGC(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId)
{
CgsCache *me;
GC result = 0;
- int j, k;
- unsigned used = 0;
if ((me = myCache(xw, cgsWin, cgsId)) != 0) {
TRACE2(("getCgsGC(%s, %s)\n",
traceVTwin(xw, cgsWin), traceCgsEnum(cgsId)));
if (me->mask != 0) {
+ int j;
+ unsigned used = 0;
/* fill in the unchanged fields */
if (!(me->mask & GC_CSet))
@@ -622,6 +622,7 @@ getCgsGC(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId)
}
if (result == 0) {
+ int k;
/* if none were empty, pick the least-used slot, to modify */
for (j = 0, k = -1; j < DEPTH; ++j) {
if (used >= LIST(j).used) {
@@ -769,12 +770,12 @@ copyCgs(XtermWidget xw, VTwin *cgsWin, CgsEnum dstCgsId, CgsEnum srcCgsId)
void
redoCgs(XtermWidget xw, Pixel fg, Pixel bg, CgsEnum cgsId)
{
- int n;
VTwin *cgsWin = WhichVWin(TScreenOf(xw));
CgsCache *me = myCache(xw, cgsWin, cgsId);
if (me != 0) {
CgsCacheData *save_data = me->data;
+ int n;
for (n = 0; n < DEPTH; ++n) {
if (LIST(n).gc != 0 && HaveFont(LIST(n).font)) {
@@ -806,12 +807,13 @@ void
swapCgs(XtermWidget xw, VTwin *cgsWin, CgsEnum dstCgsId, CgsEnum srcCgsId)
{
if (dstCgsId != srcCgsId) {
- CgsCache *dst;
CgsCache *src;
- CgsCache tmp;
if ((src = myCache(xw, cgsWin, srcCgsId)) != 0) {
+ CgsCache *dst;
+
if ((dst = myCache(xw, cgsWin, dstCgsId)) != 0) {
+ CgsCache tmp;
int srcIndex = dataIndex(src);
int dstIndex = dataIndex(dst);
@@ -831,9 +833,10 @@ GC
freeCgs(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId)
{
CgsCache *me;
- int j;
if ((me = myCache(xw, cgsWin, cgsId)) != 0) {
+ int j;
+
for (j = 0; j < DEPTH; ++j) {
if (LIST(j).gc != 0) {
TRACE(("freeCgs(%s, %s) gc %p(%d)\n",
diff --git a/charproc.c b/charproc.c
index d4cf1d9..f177f89 100644
--- a/charproc.c
+++ b/charproc.c
@@ -1,4 +1,4 @@
-/* $XTermId: charproc.c,v 1.1417 2016/02/12 00:18:59 tom Exp $ */
+/* $XTermId: charproc.c,v 1.1420 2016/05/30 19:31:33 tom Exp $ */
/*
* Copyright 1999-2015,2016 by Thomas E. Dickey
@@ -4128,14 +4128,12 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
case CASE_RIS:
TRACE(("CASE_RIS\n"));
VTReset(xw, True, True);
- ResetState(sp);
- break;
+ /* NOTREACHED */
case CASE_DECSTR:
TRACE(("CASE_DECSTR\n"));
VTReset(xw, False, False);
- ResetState(sp);
- break;
+ /* NOTREACHED */
case CASE_REP:
TRACE(("CASE_REP\n"));
@@ -4399,8 +4397,6 @@ static Char *v_bufend; /* end of physical buffer */
void
v_write(int f, const Char *data, unsigned len)
{
- int riten;
-
TRACE2(("v_write(%d:%s)\n", len, visibleChars(data, len)));
if (v_bufstr == NULL) {
if (len > 0) {
@@ -4414,7 +4410,7 @@ v_write(int f, const Char *data, unsigned len)
}
}
if_DEBUG({
- fprintf(stderr, "v_write called with %d bytes (%ld left over)",
+ fprintf(stderr, "v_write called with %u bytes (%ld left over)",
len, (long) (v_bufptr - v_bufstr));
if (len > 1 && len < 10)
fprintf(stderr, " \"%.*s\"", len, (const char *) data);
@@ -4465,7 +4461,7 @@ v_write(int f, const Char *data, unsigned len)
v_buffer = TypeRealloc(Char, size + len, v_buffer);
if (v_buffer) {
if_DEBUG({
- fprintf(stderr, "expanded buffer to %d\n",
+ fprintf(stderr, "expanded buffer to %u\n",
size + len);
});
v_bufstr = v_buffer;
@@ -4503,6 +4499,8 @@ v_write(int f, const Char *data, unsigned len)
#define MAX_PTY_WRITE 128 /* 1/2 POSIX minimum MAX_INPUT */
if (v_bufptr > v_bufstr) {
+ int riten;
+
#ifdef VMS
riten = tt_write(v_bufstr,
((v_bufptr - v_bufstr <= VMS_TERM_BUFFER_SIZE)
@@ -4550,7 +4548,7 @@ v_write(int f, const Char *data, unsigned len)
Reply to: