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 <jcris...@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 <jcris...@debian.org> Tue, 13 Oct 2009 13:29:15 +0200 + xterm (249-1) unstable; urgency=low * New upstream release. commit e8ec13cdcea0f687aa64c747a8ad790628d16fff Author: Julien Cristau <jcris...@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�nez 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�rgen 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�meth M�rton +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 -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org