[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xterm: Changes to 'debian-unstable'



 MANIFEST              |    3 
 THANKS                |  155 +++++++++++++++++++++++++
 Tekproc.c             |    6 
 button.c              |    4 
 charproc.c            |   42 ++++--
 data.c                |    6 
 data.h                |    6 
 debian/changelog      |   16 ++
 debian/xsfbs/xsfbs.mk |   21 ---
 debian/xsfbs/xsfbs.sh |  233 --------------------------------------
 fontutils.c           |   43 +++++--
 input.c               |   26 ++--
 main.c                |   77 +++++++-----
 main.h                |    7 -
 menu.c                |    4 
 menu.h                |    4 
 misc.c                |   48 ++++---
 print.c               |    8 -
 ptyx.h                |   16 +-
 resize.c              |   40 +++---
 scrollback.c          |   10 -
 scrollbar.c           |    4 
 trace.c               |    6 
 trace.h               |    4 
 util.c                |   26 +---
 version.h             |    4 
 vttests/256colors2.pl |   22 ++-
 vttests/88colors2.pl  |   22 ++-
 xstrings.c            |   10 -
 xstrings.h            |    8 -
 xterm.h               |   15 +-
 xterm.log.html        |  306 ++++++++++++++++++++++++++++----------------------
 xterm.man             |   15 ++
 xtermcap.c            |   11 -
 34 files changed, 653 insertions(+), 575 deletions(-)

New commits:
commit f0919410d0c292bfc085f122752e20c033c5110a
Author: Julien Cristau <jcristau@debian.org>
Date:   Tue Oct 13 13:54:50 2009 +0200

    Bump changelog

diff --git a/debian/changelog b/debian/changelog
index 1f80091..ca969f3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,19 @@
+xterm (250-1) UNRELEASED; urgency=low
+
+  * New upstream release
+    + add check and error-message for fonts that have no printable values in
+      the ISO-8859-1 range (closes: #542434)
+    + limit minimum cell-width for packed font to maximum-advance
+      reported by Xft.  Some fonts are wider than that, even in the Latin-1
+      range (closes: #550497)
+    + correct off-by-one in okPosition fix from patch #249 limit-checks which
+      prevented double-click selection on the bottom line of the screen
+      (closes: #550368)
+    + document in xterm manpage the limited availability of resources color16
+      to color255 as noted in patch #188 (LP: #438850)
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 13 Oct 2009 13:29:15 +0200
+
 xterm (249-1) unstable; urgency=low
 
   * New upstream release.

commit e8ec13cdcea0f687aa64c747a8ad790628d16fff
Author: Julien Cristau <jcristau@debian.org>
Date:   Tue Oct 13 13:28:58 2009 +0200

    Import xterm 250

diff --git a/MANIFEST b/MANIFEST
index 83163f5..7db856e 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-249, version xterm-249
+MANIFEST for xterm-250, version xterm-250
 --------------------------------------------------------------------------------
 MANIFEST                        this file
 256colres.h                     resource-definitions for 256-color mode
@@ -13,6 +13,7 @@ Makefile.in                     configure script template for Makefile
 README                          overview & caveats for 'xterm'
 README.i18n                     i18n readme:
 README.os390                    overview for os390 (EBCDIC) port of 'xterm'
+THANKS                          list of direct contributors
 TekPrsTbl.c                     Tek4014 parser state tables
 Tekparse.def                    template for generating Tekparse.h
 Tekparse.h                      Tek4014 parser-state definitions
diff --git a/THANKS b/THANKS
new file mode 100644
index 0000000..ae3dbfc
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,155 @@
+-- $XTermId: THANKS,v 1.1 2009/10/11 17:30:42 tom Exp $
+-- vile:txtmode fk=8bit
+There's no AUTHORS file in this distribution; it would be redundant since
+I (Thomas E. Dickey) have done more than 80% of the work on xterm since 1996.
+
+There's no reliable history before that point.
+For some insight, see
+
+	http://invisible-island.net/xterm/xterm.faq.html#who_did_it
+
+Here's a list from xterm.log.html of people who have contributed changes.
+
+Adam Sulmicki
+Alan Coopersmith
+Alex Hornung
+Alexander Pohoyda
+Alexander V Lukyanov
+Andrea Odetti
+Andreas Jaeger
+Andrew Sumner
+Andrew Tipton
+Anton Kovalenko
+Ben Yoshino
+Bernhard R Link
+Bernhard Rosenkraenzer
+Bill Nottingham
+Bob Maynard
+Bradd W Szonye
+Bram Moolenaar
+Branden Robinson
+Bruno Haible
+Caetano Jimenez Carezzato
+Christian Biere
+Christian Weisgerber
+Chuck Blake
+D Roland Walker
+Daniel Colascione
+Daniel Jacobowitz
+David Dawes
+David Krause
+David Madore
+David Mart�z Moreno
+David Mathog
+David Wood
+David Yeo
+Denis Zaitsev
+Dennis Schneider
+Dr Werner Fink
+Ed Schouten
+Eddy De Greef
+Edward S Arthur
+Egbert Eich
+Emanuele Giaquinta
+Eugene Konev
+Fabrice Bellard
+Frank Giessler
+Frank Guangxin Liu
+Frank Liu
+Gael Roualland
+George Peter Staplin
+Greg Badros
+Greg Klanderman
+Greg Smith
+H Merijn Brand
+Hasso Tepper
+Holger Veit
+Ilya Zakharevich
+James Armstrong
+Jason Bacon
+Jason Vas Dias
+Jeff Chua
+Jeff Uphoff
+Jens Schweikhardt
+Jeremy Buhler
+Jeroen Ruigrok
+Jess Thrysoee
+Jim Paris
+Joe Allen
+Joe Peterson
+Johnny Billquist
+Julien Cristau
+Juliusz Chroboczek
+Jungshik Shin
+J�Keil
+Kean Johnston
+Keith Packard
+Ken Martin
+Kevin Buhr
+Kiyokazu Suto
+Larry Riedel
+Lee Olsen
+Marc Bevand
+Marc La France
+Marius Tolzmann
+Mark Waggoner
+Markus Kuhn
+Martin Pirker
+Matthias Baake
+Matthias Scheler
+Matthieu Herrb
+Matthieu Lagouge
+Max Mikhanosha
+Michael Rohleder
+Michael Schroeder
+Mike Castle
+Mike Fabian
+Mike Hopkirk
+Min Sik Kim
+Miroslav Lichvar
+Nam SungHyun
+Nelson Beebe
+N�th M�on
+Ovidiu Gheorghioiu
+Paul Gilmartin
+Paul Giordano
+Paul Lampert
+Paul Vojta
+Paul Williams
+Pavel Roskin
+Per Hedeland
+Peter Berg Larsen
+Pierre Lombard
+Richard Braakman
+Richard Griswold
+Rob Braun
+Robert Brady
+Robert Earl
+Robin Cutshaw
+Ross Paterson
+Scott Sewall
+Semen A Ustimenko
+Sergei Laskavy
+Sergey Vlasov
+Slava Semushin
+Stefan Dirsch
+Steve Wall
+Stuart Lissaman
+Sven Verdoolaege
+Taneli Huuskonen
+Ted Phelps
+Thomas Wolff
+Tim Adye
+Tim Pope
+Tobias Stoeckmann
+Todd Larason
+Todd Miller
+Tomas Vanhala
+Tomasz Cholewo
+Tomohiro Kubota
+Tor Lillqvist
+Torrey Lyons
+Victor Stinner
+Werner Lemberg
+Will Day
+Zdenek Sekera
diff --git a/Tekproc.c b/Tekproc.c
index 478393c..cb3f6b2 100644
--- a/Tekproc.c
+++ b/Tekproc.c
@@ -1,4 +1,4 @@
-/* $XTermId: Tekproc.c,v 1.172 2009/08/09 17:22:34 tom Exp $ */
+/* $XTermId: Tekproc.c,v 1.173 2009/10/12 00:31:59 tom Exp $ */
 
 /*
  * Warning, there be crufty dragons here.
@@ -1887,10 +1887,10 @@ TekCopy(TekWidget tw)
 	    sprintf(initbuf, "%c%c%c%c",
 		    ANSI_ESC, (char) (tekscr->page.fontsize + '8'),
 		    ANSI_ESC, (char) (tekscr->page.linetype + '`'));
-	    write(tekcopyfd, initbuf, (size_t) 4);
+	    IGNORE_RC(write(tekcopyfd, initbuf, (size_t) 4));
 	    Tp = &Tek0;
 	    do {
-		write(tekcopyfd, Tp->data, (size_t) Tp->count);
+		IGNORE_RC(write(tekcopyfd, Tp->data, (size_t) Tp->count));
 		Tp = Tp->next;
 	    } while (Tp);
 	    close(tekcopyfd);
diff --git a/button.c b/button.c
index 877b209..6ccd5d5 100644
--- a/button.c
+++ b/button.c
@@ -1,4 +1,4 @@
-/* $XTermId: button.c,v 1.355 2009/10/01 09:06:20 tom Exp $ */
+/* $XTermId: button.c,v 1.356 2009/10/10 23:37:27 tom Exp $ */
 
 /*
  * Copyright 1999-2008,2009 by Thomas E. Dickey
@@ -2626,7 +2626,7 @@ okPosition(TScreen * screen,
 {
     Boolean result = True;
 
-    if (cell->row >= screen->max_row) {
+    if (cell->row > screen->max_row) {
 	result = False;
     } else if (cell->col > (LastTextCol(screen, *ld, cell->row) + 1)) {
 	cell->col = 0;
diff --git a/charproc.c b/charproc.c
index 6e7b7b6..c65f55c 100644
--- a/charproc.c
+++ b/charproc.c
@@ -1,4 +1,4 @@
-/* $XTermId: charproc.c,v 1.974 2009/09/27 22:37:54 tom Exp $ */
+/* $XTermId: charproc.c,v 1.980 2009/10/11 23:48:30 tom Exp $ */
 
 /*
 
@@ -116,6 +116,7 @@ in this Software without prior written authorization from The Open Group.
 
 #include <stdio.h>
 #include <ctype.h>
+#include <assert.h>
 
 #if defined(HAVE_SCHED_YIELD)
 #include <sched.h>
@@ -393,7 +394,7 @@ static XtActionsRec actionsList[] = {
 };
 /* *INDENT-ON* */
 
-static XtResource resources[] =
+static XtResource xterm_resources[] =
 {
     Bres(XtNallowSendEvents, XtCAllowSendEvents, screen.allowSendEvent0, False),
     Bres(XtNallowFontOps, XtCAllowFontOps, screen.allowFontOp0, DEF_ALLOW_FONT),
@@ -741,8 +742,8 @@ static
 WidgetClassRec xtermClassRec =
 {
     {
-/* core_class fields */
-	(WidgetClass) & widgetClassRec,		/* superclass     */
+	/* core_class fields */
+	(WidgetClass) & widgetClassRec,		/* superclass   */
 	"VT100",		/* class_name                   */
 	sizeof(XtermWidgetRec),	/* widget_size                  */
 	VTClassInit,		/* class_initialize             */
@@ -753,8 +754,8 @@ WidgetClassRec xtermClassRec =
 	VTRealize,		/* realize                      */
 	actionsList,		/* actions                      */
 	XtNumber(actionsList),	/* num_actions                  */
-	resources,		/* resources                    */
-	XtNumber(resources),	/* num_resources                */
+	xterm_resources,	/* resources                    */
+	XtNumber(xterm_resources),	/* num_resources        */
 	NULLQUARK,		/* xrm_class                    */
 	True,			/* compress_motion              */
 	False,			/* compress_exposure            */
@@ -1151,10 +1152,10 @@ set_mod_fkeys(XtermWidget xw, int which, int what, Bool enabled)
 
 #if OPT_TRACE
 #define WHICH_TABLE(name) if (table == name) result = #name
-static char *
+static const char *
 which_table(Const PARSE_T * table)
 {
-    char *result = "?";
+    const char *result = "?";
     /* *INDENT-OFF* */
     WHICH_TABLE (ansi_table);
     else WHICH_TABLE (cigtable);
@@ -4766,7 +4767,7 @@ unparseputn(XtermWidget xw, unsigned int n)
 }
 
 void
-unparseputs(XtermWidget xw, char *s)
+unparseputs(XtermWidget xw, const char *s)
 {
     while (*s)
 	unparseputc(xw, *s++);
@@ -5375,7 +5376,7 @@ ParseOnClicks(XtermWidget wnew, XtermWidget wreq, Cardinal item)
 {
     /* *INDENT-OFF* */
     static struct {
-	const String	name;
+	const char *	name;
 	SelectUnit	code;
     } table[] = {
     	{ "char",	Select_CHAR },
@@ -5432,7 +5433,7 @@ VTInitialize(Widget wrequest,
     Bool color_ok;
 #endif
 
-#if OPT_COLOR_RES2 && (MAXCOLORS > MIN_ANSI_COLORS)
+#if OPT_COLOR_RES2
     static XtResource fake_resources[] =
     {
 #if OPT_256_COLORS
@@ -5443,7 +5444,8 @@ VTInitialize(Widget wrequest,
     };
 #endif /* OPT_COLOR_RES2 */
 
-    TRACE(("VTInitialize\n"));
+    TRACE(("VTInitialize %d / %d\n", XtNumber(xterm_resources), MAXRESOURCES));
+    assert(XtNumber(xterm_resources) < MAXRESOURCES);
 
     /* Zero out the entire "screen" component of "wnew" widget, then do
      * field-by-field assignment of "screen" fields that are named in the
@@ -5717,9 +5719,14 @@ VTInitialize(Widget wrequest,
     init_Bres(screen.italicULMode);
     init_Bres(screen.colorRVMode);
 
+#if OPT_COLOR_RES2
+    TRACE(("...will fake resources for color%d to color%d\n",
+	   MIN_ANSI_COLORS,
+	   NUM_ANSI_COLORS - 1));
+#endif
     for (i = 0, color_ok = False; i < MAXCOLORS; i++) {
 
-#if OPT_COLOR_RES2 && (MAXCOLORS > MIN_ANSI_COLORS)
+#if OPT_COLOR_RES2
 	/*
 	 * Xt has a hardcoded limit on the maximum number of resources that can
 	 * be used in a widget.  If we configure both luit (which implies
@@ -6264,14 +6271,15 @@ VTRealize(Widget w,
 		       False,
 		       screen->menu_font_number)) {
 	if (XmuCompareISOLatin1(myfont->f_n, DEFFONT) != 0) {
+	    char *use_font = x_strdup(DEFFONT);
 	    fprintf(stderr,
 		    "%s:  unable to open font \"%s\", trying \"%s\"....\n",
-		    xterm_name, myfont->f_n, DEFFONT);
+		    xterm_name, myfont->f_n, use_font);
 	    (void) xtermLoadFont(xw,
-				 xtermFontName(DEFFONT),
+				 xtermFontName(use_font),
 				 False,
 				 screen->menu_font_number);
-	    screen->MenuFontName(screen->menu_font_number) = DEFFONT;
+	    screen->MenuFontName(screen->menu_font_number) = use_font;
 	}
     }
 
@@ -6584,7 +6592,7 @@ xim_real_init(XtermWidget xw)
     XIMStyle input_style = 0;
     Bool found;
     static struct {
-	char *name;
+	const char *name;
 	unsigned long code;
     } known_style[] = {
 	{
diff --git a/data.c b/data.c
index 795e753..7840f8b 100644
--- a/data.c
+++ b/data.c
@@ -1,4 +1,4 @@
-/* $XTermId: data.c,v 1.90 2009/08/09 17:22:56 tom Exp $ */
+/* $XTermId: data.c,v 1.91 2009/10/12 00:33:20 tom Exp $ */
 
 /*
  * Copyright 2002-2006,2007 by Thomas E. Dickey
@@ -110,3 +110,7 @@ int mapstate = -1;
 #if OPT_SESSION_MGT
 int ice_fd = -1;
 #endif
+
+#ifdef USE_IGNORE_RC
+int ignore_unused;
+#endif
diff --git a/data.h b/data.h
index 41f152a..edeefe8 100644
--- a/data.h
+++ b/data.h
@@ -1,4 +1,4 @@
-/* $XTermId: data.h,v 1.109 2009/08/09 17:23:01 tom Exp $ */
+/* $XTermId: data.h,v 1.110 2009/10/12 00:33:08 tom Exp $ */
 
 /*
  * Copyright 2002-2007,2009 by Thomas E. Dickey
@@ -211,4 +211,8 @@ typedef struct XTERM_RESOURCE {
 
 extern XTERM_RESOURCE resource;
 
+#ifdef USE_IGNORE_RC
+extern int ignore_unused;
+#endif
+
 #endif /* included_data_h */
diff --git a/fontutils.c b/fontutils.c
index 904b56c..ed1cf71 100644
--- a/fontutils.c
+++ b/fontutils.c
@@ -1,4 +1,4 @@
-/* $XTermId: fontutils.c,v 1.314 2009/09/30 09:37:45 tom Exp $ */
+/* $XTermId: fontutils.c,v 1.319 2009/10/12 22:29:42 tom Exp $ */
 
 /************************************************************
 
@@ -373,7 +373,7 @@ alloca_fontname(char **result, size_t next)
 }
 
 static void
-append_fontname_str(char **result, char *value)
+append_fontname_str(char **result, const char *value)
 {
     if (value == 0)
 	value = "*";
@@ -405,9 +405,9 @@ append_fontname_num(char **result, int value)
  */
 static char *
 derive_font_name(FontNameProperties * props,
-		 char *use_weight,
+		 const char *use_weight,
 		 int use_average_width,
-		 char *use_encoding)
+		 const char *use_encoding)
 {
     char *result = 0;
 
@@ -467,7 +467,7 @@ xtermSpecialFont(TScreen * screen, unsigned atts, unsigned chrset)
 #endif
     FontNameProperties *props;
     char *result = 0;
-    char *weight;
+    const char *weight;
     int pixel_size;
     int res_x;
     int res_y;
@@ -1241,7 +1241,7 @@ typedef struct {
  * correspond to the VT100 resources.
  */
 static Bool
-xtermLoadVTFonts(XtermWidget xw, char *myName, char *myClass)
+xtermLoadVTFonts(XtermWidget xw, String myName, String myClass)
 {
     static Bool initialized = False;
     static SubResourceRec original, referenceRec, subresourceRec;
@@ -1328,7 +1328,7 @@ xtermLoadVTFonts(XtermWidget xw, char *myName, char *myClass)
 
 #if OPT_WIDE_CHARS
 static Bool
-isWideFont(XFontStruct * fp, char *tag, Bool nullOk)
+isWideFont(XFontStruct * fp, const char *tag, Bool nullOk)
 {
     Bool result = False;
 
@@ -1564,15 +1564,23 @@ checkXft(XtermWidget xw, XTermXftFonts * data, XftFont * xft)
     data->map.min_width = 0;
     data->map.max_width = (Dimension) xft->max_advance_width;
 
+    /*
+     * For each ASCII or ISO-8859-1 printable code, ask what its width is.
+     * Given the maximum width for those, we have a reasonable estimate of
+     * the single-column width.
+     *
+     * Ignore control characters - their extent information is misleading.
+     */
     for (c = 32; c < 256; ++c) {
-	if (c >= 128 && c < 159)
+	if (c >= 127 && c <= 159)
 	    continue;
 	if (FcCharSetHasChar(xft->charset, c)) {
 	    XGlyphInfo extents;
 
 	    XftTextExtents32(XtDisplay(xw), xft, &c, 1, &extents);
-	    if (width < extents.width)
+	    if (width < extents.width && extents.width <= data->map.max_width) {
 		width = extents.width;
+	    }
 	}
     }
     data->map.min_width = width;
@@ -1694,6 +1702,15 @@ setRenderFontsize(TScreen * screen, VTwin * win, XftFont * font, const char *tag
 }
 #endif
 
+static void
+checkFontInfo(int value, const char *tag)
+{
+    if (value == 0) {
+	fprintf(stderr, "Selected font has no non-zero %s for ISO-8859-1 encoding\n", tag);
+	exit(1);
+    }
+}
+
 /*
  * Compute useful values for the font/window sizes
  */
@@ -1930,9 +1947,10 @@ xtermComputeFontInfo(XtermWidget xw,
 		XTermXftFonts *use = &(screen->renderFontNorm[fontnum]);
 		win->f_height = use->font->ascent + use->font->descent;
 		win->f_width = use->map.min_width;
-		TRACE(("...packed TrueType font %dx%d\n",
+		TRACE(("...packed TrueType font %dx%d vs %d\n",
 		       win->f_height,
-		       win->f_width));
+		       win->f_width,
+		       use->map.max_width));
 	    }
 #endif
 	    DUMP_XFT(xw, &(screen->renderFontNorm[fontnum]));
@@ -1971,6 +1989,9 @@ xtermComputeFontInfo(XtermWidget xw,
 	   win->f_width,
 	   win->f_ascent,
 	   win->f_descent));
+
+    checkFontInfo(win->f_height, "height");
+    checkFontInfo(win->f_width, "width");
 }
 
 /* save this information as a side-effect for double-sized characters */
diff --git a/input.c b/input.c
index fd6e3e0..9ee1fc5 100644
--- a/input.c
+++ b/input.c
@@ -1,4 +1,4 @@
-/* $XTermId: input.c,v 1.309 2009/06/18 00:08:40 tom Exp $ */
+/* $XTermId: input.c,v 1.310 2009/10/12 00:12:34 tom Exp $ */
 
 /*
  * Copyright 1999-2008,2009 by Thomas E. Dickey
@@ -125,13 +125,14 @@ typedef struct {
     char strbuf[STRBUFSIZE];
 } KEY_DATA;
 
-/*                       0123456789 abc def0123456789abcdef0123456789abcdef0123456789abcd */
-static char *kypd_num = " XXXXXXXX\tXXX\rXXXxxxxXXXXXXXXXXXXXXXXXXXXX*+,-./0123456789XXX=";
-
-/*                       0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd */
-static char *kypd_apl = " ABCDEFGHIJKLMNOPQRSTUVWXYZ??????abcdefghijklmnopqrstuvwxyzXXX";
-
-static char *curfinal = "HDACB  FE";
+static
+const char *kypd_num = " XXXXXXXX\tXXX\rXXXxxxxXXXXXXXXXXXXXXXXXXXXX*+,-./0123456789XXX=";
+/*                      0123456789 abc def0123456789abcdef0123456789abcdef0123456789abcd */
+static
+const char *kypd_apl = " ABCDEFGHIJKLMNOPQRSTUVWXYZ??????abcdefghijklmnopqrstuvwxyzXXX";
+/*                      0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd */
+static
+const char *curfinal = "HDACB  FE";
 
 static int decfuncvalue(KEY_DATA *);
 static void sunfuncvalue(ANSI *, KEY_DATA *);
@@ -139,10 +140,10 @@ static void hpfuncvalue(ANSI *, KEY_DATA *);
 static void scofuncvalue(ANSI *, KEY_DATA *);
 
 #if OPT_TRACE
-static char *
+static const char *
 ModifierName(unsigned modifier)
 {
-    char *s = "";
+    const char *s = "";
     if (modifier & ShiftMask)
 	s = " Shift";
     else if (modifier & LockMask)
@@ -1786,7 +1787,8 @@ TranslationsUseKeyword(Widget w, char **cache, const char *keyword)
 	}
 	free(test);
     }
-    TRACE(("TranslationsUseKeyword(%p, %s) = %d\n", w, keyword, result));
+    TRACE(("TranslationsUseKeyword(%p, %s) = %d\n",
+	   (void *) w, keyword, result));
     return result;
 }
 
@@ -1803,7 +1805,7 @@ xtermHasTranslation(XtermWidget xw, const char *keyword)
 
 #if OPT_EXTRA_PASTE
 static void
-addTranslation(XtermWidget xw, char *fromString, char *toString)
+addTranslation(XtermWidget xw, const char *fromString, const char *toString)
 {
     unsigned have = (xw->keyboard.extra_translations
 		     ? strlen(xw->keyboard.extra_translations)
diff --git a/main.c b/main.c
index 13ad09c..f3ee32b 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/* $XTermId: main.c,v 1.594 2009/08/30 21:40:45 Alex.Hornung Exp $ */
+/* $XTermId: main.c,v 1.597 2009/10/12 21:58:27 tom Exp $ */
 
 /*
  *				 W A R N I N G
@@ -448,11 +448,11 @@ extern char *ptsname(int);
 #endif
 
 #ifndef VMS
-static SIGNAL_T reapchild(int n);
+static SIGNAL_T reapchild(int /* n */ );
 static int spawnXTerm(XtermWidget /* xw */ );
-static void remove_termcap_entry(char *buf, char *str);
+static void remove_termcap_entry(char *, const char *);
 #ifdef USE_PTY_SEARCH
-static int pty_search(int *pty);
+static int pty_search(int * /* pty */ );
 #endif
 #endif /* ! VMS */
 
@@ -640,7 +640,7 @@ static struct jtchars d_jtc =
 static Boolean override_tty_modes = False;
 /* *INDENT-OFF* */
 static struct _xttymodes {
-    char *name;
+    const char *name;
     size_t len;
     int set;
     int value;
@@ -1329,7 +1329,7 @@ decode_keyvalue(char **ptr, int termcap)
 }
 
 static int
-abbrev(char *tst, char *cmp, size_t need)
+abbrev(const char *tst, const char *cmp, size_t need)
 {
     size_t len = strlen(tst);
     return ((len >= need) && (!strncmp(tst, cmp, len)));
@@ -2301,7 +2301,7 @@ main(int argc, char *argv[]ENVP_ARG)
 
 	buf[0] = '\0';
 	sprintf(buf, "%lx\n", XtWindow(SHELL_OF(CURRENT_EMU())));
-	write(screen->respond, buf, strlen(buf));
+	IGNORE_RC(write(screen->respond, buf, strlen(buf)));
     }
 #ifdef AIXV3
 #if (OSMAJORVERSION < 4)
@@ -2711,7 +2711,7 @@ pty_search(int *pty)
  */
 
 #if OPT_TEK4014
-static char *tekterm[] =
+static const char *tekterm[] =
 {
     "tek4014",
     "tek4015",			/* 4014 with APL character set support */
@@ -2730,7 +2730,7 @@ static char *tekterm[] =
  * The VT420 has up to 48 lines on the screen.
  */
 
-static char *vtterm[] =
+static const char *vtterm[] =
 {
 #ifdef USE_X11TERM
     "x11term",			/* for people who want special term name */
@@ -2847,7 +2847,9 @@ HsSysError(int error)
 	       handshake.fatal_error,
 	       handshake.buffer));
 	TRACE_HANDSHAKE("writing", &handshake);
-	write(cp_pipe[1], (char *) &handshake, sizeof(handshake));
+	IGNORE_RC(write(cp_pipe[1],
+			(const char *) &handshake,
+			sizeof(handshake)));
     } else {
 	fprintf(stderr,
 		"%s: fatal pty error errno=%d, error=%d device \"%s\"\n",
@@ -2876,7 +2878,9 @@ first_map_occurred(void)
 	if (pc_pipe[1] >= 0) {
 	    TRACE(("first_map_occurred: %dx%d\n", handshake.rows, handshake.cols));
 	    TRACE_HANDSHAKE("writing", &handshake);
-	    write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
+	    IGNORE_RC(write(pc_pipe[1],
+			    (const char *) &handshake,
+			    sizeof(handshake)));
 	    close(cp_pipe[0]);
 	    close(pc_pipe[1]);
 	}
@@ -3035,7 +3039,7 @@ spawnXTerm(XtermWidget xw)
 
     char *ptr, *shname, *shname_minus;
     int i, no_dev_tty = False;
-    char **envnew;		/* new environment */
+    const char **envnew;	/* new environment */
     char buf[64];
     char *TermName = NULL;
 #ifdef TTYSIZE_STRUCT
@@ -3275,15 +3279,22 @@ spawnXTerm(XtermWidget xw)
      */
     ok_termcap = True;
     if (!get_termcap(TermName = resource.term_name, newtc)) {
-	char *last = NULL;
-	TermName = *envnew;
+	const char *last = NULL;
+	char *next;
+
+	TermName = x_strdup(*envnew);
 	ok_termcap = False;
 	while (*envnew != NULL) {
-	    if ((last == NULL || strcmp(last, *envnew))
-		&& get_termcap(*envnew, newtc)) {
-		TermName = *envnew;
-		ok_termcap = True;
-		break;
+	    if (last == NULL || strcmp(last, *envnew)) {
+		next = x_strdup(*envnew);
+		if (get_termcap(next, newtc)) {
+		    free(TermName);
+		    TermName = next;
+		    ok_termcap = True;
+		    break;
+		} else {
+		    free(next);
+		}
 	    }
 	    last = *envnew;
 	    envnew++;
@@ -3307,8 +3318,9 @@ spawnXTerm(XtermWidget xw)
     } else if (resource.ptyInitialErase) {
 	;
     } else if (ok_termcap) {
+	static char name[] = TERMCAP_ERASE;
 	char temp[1024], *p = temp;
-	char *s = tgetstr(TERMCAP_ERASE, &p);
+	char *s = tgetstr(name, &p);
 	TRACE(("...extracting initial_erase value from termcap\n"));
 	if (s != 0) {
 	    initial_erase = decode_keyvalue(&s, True);
@@ -3562,8 +3574,9 @@ spawnXTerm(XtermWidget xw)
 			handshake.error = errno;
 			strcpy(handshake.buffer, ttydev);
 			TRACE_HANDSHAKE("writing", &handshake);
-			write(cp_pipe[1], (char *) &handshake,
-			      sizeof(handshake));
+			IGNORE_RC(write(cp_pipe[1],
+					(const char *) &handshake,
+					sizeof(handshake)));
 
 			/* get reply from parent */
 			i = read(pc_pipe[0], (char *) &handshake,
@@ -3909,7 +3922,7 @@ spawnXTerm(XtermWidget xw)
 		for (i = 0; i <= 2; i++)
 		    if (i != ttyfd) {
 			(void) close(i);
-			(void) dup(ttyfd);
+			IGNORE_RC(dup(ttyfd));
 		    }
 #ifndef ATT
 		/* and close the tty */
@@ -4218,7 +4231,9 @@ spawnXTerm(XtermWidget xw)
 		handshake.error = 0;
 		(void) strcpy(handshake.buffer, ttydev);
 		TRACE_HANDSHAKE("writing", &handshake);
-		(void) write(cp_pipe[1], (char *) &handshake, sizeof(handshake));
+		IGNORE_RC(write(cp_pipe[1],
+				(const char *) &handshake,
+				sizeof(handshake)));
 
 		if (resource.wait_for_map) {
 		    i = read(pc_pipe[0], (char *) &handshake,
@@ -4322,7 +4337,7 @@ spawnXTerm(XtermWidget xw)
 		if (((ptr = x_getenv("SHELL")) == NULL) &&
 		    ((pw == NULL && (pw = getpwuid(screen->uid)) == NULL) ||
 		     *(ptr = pw->pw_shell) == 0)) {
-		    ptr = "/bin/sh";
+		    ptr = x_strdup("/bin/sh");
 		}
 	    } else {
 		xtermSetenv("SHELL", explicit_shname);
@@ -4385,7 +4400,7 @@ spawnXTerm(XtermWidget xw)
 		if (xw->misc.login_shell) {
 		    int u;
 		    u = (term->misc.use_encoding ? 2 : 0);
-		    command_to_exec_with_luit[u + 1] = "-argv0";
+		    command_to_exec_with_luit[u + 1] = x_strdup("-argv0");
 		    command_to_exec_with_luit[u + 2] = shname_minus;
 		    command_to_exec_with_luit[u + 3] = NULL;
 		}
@@ -4448,13 +4463,17 @@ spawnXTerm(XtermWidget xw)
 				ProgramName, strerror(errno));
 			handshake.status = PTY_NOMORE;
 			TRACE_HANDSHAKE("writing", &handshake);
-			write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
+			IGNORE_RC(write(pc_pipe[1],
+					(const char *) &handshake,
+					sizeof(handshake)));
 			exit(ERROR_PTYS);
 		    }
 		    handshake.status = PTY_NEW;
 		    (void) strcpy(handshake.buffer, ttydev);
 		    TRACE_HANDSHAKE("writing", &handshake);
-		    write(pc_pipe[1], (char *) &handshake, sizeof(handshake));
+		    IGNORE_RC(write(pc_pipe[1],
+				    (const char *) &handshake,
+				    sizeof(handshake)));
 		    break;
 
 		case PTY_FATALERROR:
@@ -4836,7 +4855,7 @@ reapchild(int n GCC_UNUSED)
 #endif /* !VMS */
 
 static void
-remove_termcap_entry(char *buf, char *str)
+remove_termcap_entry(char *buf, const char *str)
 {
     char *base = buf;
     char *first = base;
diff --git a/main.h b/main.h
index 8e18d4c..5c4caa6 100644
--- a/main.h
+++ b/main.h
@@ -1,4 +1,4 @@
-/* $XTermId: main.h,v 1.43 2009/10/02 00:02:26 tom Exp $ */
+/* $XTermId: main.h,v 1.44 2009/10/10 09:38:25 tom Exp $ */
 
 /*
  * Copyright 2000-2008,2009 by Thomas E. Dickey
@@ -169,4 +169,9 @@
 #define DEFLOCALEFILTER		DEFLOCALEFILTER1(PROJECTROOT) "/bin/luit"
 #endif
 
+/*
+ * See lib/Xt/Resources.c
+ */
+#define MAXRESOURCES            400
+
 #endif	/* included_main_h */
diff --git a/menu.c b/menu.c
index 79377b3..a40d2ea 100644
--- a/menu.c
+++ b/menu.c
@@ -1,4 +1,4 @@
-/* $XTermId: menu.c,v 1.253 2009/09/27 22:36:07 tom Exp $ */
+/* $XTermId: menu.c,v 1.254 2009/10/11 22:46:44 tom Exp $ */
 
 /*
 
@@ -1849,7 +1849,7 @@ HandleSendSignal(Widget w,
 {
     /* *INDENT-OFF* */
     static struct sigtab {
-	char *name;
+	const char *name;
 	int sig;
     } signals[] = {
 #ifdef SIGTSTP
diff --git a/menu.h b/menu.h
index 20295fb..4cf4890 100644
--- a/menu.h
+++ b/menu.h
@@ -1,4 +1,4 @@
-/* $XTermId: menu.h,v 1.116 2009/09/27 22:33:36 tom Exp $ */
+/* $XTermId: menu.h,v 1.117 2009/10/11 22:45:22 tom Exp $ */
 
 /*
 
@@ -56,7 +56,7 @@ from The Open Group.
 #include <xterm.h>
 
 typedef struct _MenuEntry {
-    char *name;
+    const char *name;
     void (*function) PROTO_XT_CALLBACK_ARGS;
     Widget widget;
 } MenuEntry;
diff --git a/misc.c b/misc.c
index b84e78e..d378f90 100644
--- a/misc.c
+++ b/misc.c
@@ -1,4 +1,4 @@
-/* $XTermId: misc.c,v 1.425 2009/08/07 23:18:31 tom Exp $ */
+/* $XTermId: misc.c,v 1.428 2009/10/12 00:44:44 tom Exp $ */
 
 /*
  *
@@ -516,7 +516,7 @@ HandleKeyPressed(Widget w GCC_UNUSED,
 		 String * params GCC_UNUSED,
 		 Cardinal *nparams GCC_UNUSED)
 {
-    TRACE(("Handle insert-seven-bit for %p\n", w));
+    TRACE(("Handle insert-seven-bit for %p\n", (void *) w));
 #ifdef ACTIVEWINDOWINPUTONLY
     if (w == CURRENT_EMU())
 #endif
@@ -530,7 +530,7 @@ HandleEightBitKeyPressed(Widget w GCC_UNUSED,
 			 String * params GCC_UNUSED,
 			 Cardinal *nparams GCC_UNUSED)
 {
-    TRACE(("Handle insert-eight-bit for %p\n", w));
+    TRACE(("Handle insert-eight-bit for %p\n", (void *) w));
 #ifdef ACTIVEWINDOWINPUTONLY
     if (w == CURRENT_EMU())
 #endif
@@ -634,7 +634,7 @@ HandleSpawnTerminal(Widget w GCC_UNUSED,
     } else if (!pid) {
 	/* We are the child */
 	if (child_cwd) {
-	    chdir(child_cwd);	/* We don't care if this fails */
+	    IGNORE_RC(chdir(child_cwd));	/* We don't care if this fails */
 	}
 
 	if (setuid(screen->uid) == -1
@@ -1139,7 +1139,7 @@ HandleDabbrevExpand(Widget w,
 {
     XtermWidget xw;
 
-    TRACE(("Handle dabbrev-expand for %p\n", w));
+    TRACE(("Handle dabbrev-expand for %p\n", (void *) w));
     if ((xw = getXtermWidget(w)) != 0) {
 	TScreen *screen = &xw->screen;
 	if (!dabbrev_expand(screen))
@@ -1667,7 +1667,8 @@ StartLog(TScreen * screen)
 		 && ((pw = getpwuid(screen->uid)) == NULL
 		     || *(cp = pw->pw_shell) == 0))
 		|| (shell = CastMallocN(char, strlen(cp))) == 0) {
-		shell = "/bin/sh";
+		static char dummy[] = "/bin/sh";
+		shell = dummy;
 	    } else {
 		strcpy(shell, cp);
 	    }
@@ -1733,7 +1734,7 @@ FlushLog(TScreen * screen)
 	cp = VTbuffer->next;
 	if (screen->logstart != 0


Reply to: