MANIFEST | 2 Makefile.in | 21 ++++- charproc.c | 30 +++++--- data.h | 7 + main.c | 26 ++++--- minstall.in | 10 +- misc.c | 174 ++++++++++++++++++++++++++++------------------- package/debian/changelog | 6 + package/debian/control | 2 package/debian/rules | 2 package/freebsd/Makefile | 2 package/xterm.spec | 39 +++++++++- ptyx.h | 26 +++++-- trace.c | 7 + version.h | 6 - vttests/256colors.pl | 13 ++- vttests/256colors2.pl | 13 +-- vttests/88colors.pl | 11 ++ vttests/88colors2.pl | 13 +-- vttests/dynamic.pl | 7 + vttests/paste64.pl | 8 +- vttests/query-color.pl | 7 + vttests/query-fonts.pl | 7 + vttests/resize.pl | 28 +++++-- vttests/tcapquery.pl | 7 + xterm.h | 4 - xterm.log.html | 53 ++++++++++++++ xterm.man | 53 ++++++++++---- 28 files changed, 413 insertions(+), 171 deletions(-)
New commits: commit f5a1486f17c95692747293c2400117ea79439c88 Author: Sven Joachim <svenj...@gmx.de> Date: Mon Mar 3 18:44:37 2014 +0100 Imported Upstream version 302 diff --git a/MANIFEST b/MANIFEST index 95ab9da..bc11abb 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1,4 +1,4 @@ -MANIFEST for xterm-301, version xterm-301 +MANIFEST for xterm-302, version xterm-302 -------------------------------------------------------------------------------- MANIFEST this file 256colres.h resource-definitions for 256-color mode diff --git a/Makefile.in b/Makefile.in index a468ff5..1dc71ef 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,8 +1,8 @@ -## $XTermId: Makefile.in,v 1.223 2013/06/23 23:40:18 tom Exp $ +## $XTermId: Makefile.in,v 1.225 2014/03/01 15:15:26 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # -# Copyright 1997-2012,2013 by Thomas E. Dickey +# Copyright 1997-2013,2014 by Thomas E. Dickey # # All Rights Reserved # @@ -189,6 +189,21 @@ resize$x : $(OBJS2) perl $(srcdir)/88colres.pl > $@ charproc$o : main.h @CHARPROC_DEPS@ + +misc$o : builtin_icons.h + +# do this to quiet gcc -Wcast-qual warnings +builtin_icons.h : + @echo "#if OPT_BUILTIN_XPMS" >$@ + @echo "#include <icons/mini.xterm.xpms>" >>$@ + @echo "#include <icons/filled-xterm.xpms>" >>$@ + @echo "#include <icons/xterm.xpms>" >>$@ + @echo "#include <icons/xterm-color.xpms>" >>$@ + @echo "#else" >>$@ + @sed -e 's/static char \* /static const char * /' $(srcdir)/icons/mini.xterm_48x48.xpm >>$@ + @echo "#endif" >>$@ + @echo "made $@" + ################################################################################ actual_xterm = `echo xterm| sed '$(transform)'` actual_resize = `echo resize| sed '$(transform)'` @@ -418,7 +433,7 @@ mostlyclean : -$(RM) *$o *.[is] XtermLog.* .pure core *~ *.bak *.BAK *.out *.tmp clean : mostlyclean - -$(RM) $(PROGRAMS) + -$(RM) $(PROGRAMS) builtin_icons.h distclean :: clean -$(RM) Makefile config.status config.cache config.log xtermcfg.h diff --git a/charproc.c b/charproc.c index 4991f68..1ebd75d 100644 --- a/charproc.c +++ b/charproc.c @@ -1,7 +1,7 @@ -/* $XTermId: charproc.c,v 1.1319 2013/11/26 20:38:11 tom Exp $ */ +/* $XTermId: charproc.c,v 1.1322 2014/03/02 23:32:05 tom Exp $ */ /* - * Copyright 1999-2012,2013 by Thomas E. Dickey + * Copyright 1999-2013,2014 by Thomas E. Dickey * * All Rights Reserved * @@ -3924,12 +3924,16 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp) * command-line, allow it to be enabled/disabled by * control sequence. */ + TRACE(("CASE_UTF8 wide:%d, utf8:%d, req:%s\n", + screen->wide_chars, + screen->utf8_mode, + BtoS(c == 'G'))); + if ((!screen->wide_chars) && (c == 'G')) { + WriteNow(); + ChangeToWide(xw); + } if (screen->wide_chars - && screen->utf8_mode != uAlways) { - if (!screen->wide_chars) { - WriteNow(); - ChangeToWide(xw); - } + && !screen->utf8_always) { switchPtyData(screen, c == 'G'); TRACE(("UTF8 mode %s\n", BtoS(screen->utf8_mode))); @@ -6937,6 +6941,7 @@ VTInitialize_locale(XtermWidget xw) TRACE(("... request screen.utf8_mode = %d\n", screen->utf8_mode)); TRACE(("... request screen.utf8_fonts = %d\n", screen->utf8_fonts)); + screen->utf8_always = (screen->utf8_mode == uAlways); if (screen->utf8_mode < 0) screen->utf8_mode = uFalse; @@ -7397,6 +7402,11 @@ VTInitialize(Widget wrequest, */ TScreenOf(wnew)->display = wnew->core.screen->display; + /* prep getVisualInfo() */ + wnew->visInfo = 0; + wnew->numVisuals = 0; + (void) getVisualInfo(wnew); + /* * We use the default foreground/background colors to compare/check if a * color-resource has been set. @@ -8334,15 +8344,17 @@ VTDestroy(Widget w GCC_UNUSED) #endif if (screen->selection_atoms) - XtFree((char *) (screen->selection_atoms)); + XtFree((void *) (screen->selection_atoms)); - XtFree((char *) (screen->selection_data)); + XtFree((void *) (screen->selection_data)); TRACE_FREE_LEAK(xtermClassRec.core_class.tm_table); TRACE_FREE_LEAK(xw->keyboard.extra_translations); TRACE_FREE_LEAK(xw->keyboard.shell_translations); TRACE_FREE_LEAK(xw->keyboard.xterm_translations); + XtFree((void *) (xw->visInfo)); + #if OPT_WIDE_CHARS FreeTypedBuffer(XChar2b); FreeTypedBuffer(char); diff --git a/data.h b/data.h index a3e093a..c2ee4c8 100644 --- a/data.h +++ b/data.h @@ -1,7 +1,7 @@ -/* $XTermId: data.h,v 1.123 2013/11/23 17:00:45 tom Exp $ */ +/* $XTermId: data.h,v 1.124 2014/03/02 12:01:26 tom Exp $ */ /* - * Copyright 2002-2012,2013 by Thomas E. Dickey + * Copyright 2002-2013,2014 by Thomas E. Dickey * * All Rights Reserved * @@ -205,6 +205,9 @@ typedef struct XTERM_RESOURCE { Boolean ptyHandshake; /* use pty-handshaking */ Boolean ptySttySize; /* reset TTY size after pty handshake */ #endif +#if OPT_REPORT_COLORS + Boolean reportColors; /* show color information as allocated */ +#endif #if OPT_REPORT_FONTS Boolean reportFonts; /* show bitmap-font information as loaded */ #endif diff --git a/main.c b/main.c index 7de9790..6157068 100644 --- a/main.c +++ b/main.c @@ -1,4 +1,4 @@ -/* $XTermId: main.c,v 1.741 2014/01/16 02:12:25 tom Exp $ */ +/* $XTermId: main.c,v 1.748 2014/03/03 01:15:27 tom Exp $ */ /* * Copyright 2002-2013,2014 by Thomas E. Dickey @@ -871,6 +871,9 @@ static XtResource application_resources[] = Bres("ptyHandshake", "PtyHandshake", ptyHandshake, True), Bres("ptySttySize", "PtySttySize", ptySttySize, DEF_PTY_STTY_SIZE), #endif +#if OPT_REPORT_COLORS + Bres("reportColors", "ReportColors", reportColors, False), +#endif #if OPT_REPORT_FONTS Bres("reportFonts", "ReportFonts", reportFonts, False), #endif @@ -1008,6 +1011,9 @@ static XrmOptionDescRec optionDescList[] = { {"+s", "*multiScroll", XrmoptionNoArg, (XPointer) "off"}, {"-sb", "*scrollBar", XrmoptionNoArg, (XPointer) "on"}, {"+sb", "*scrollBar", XrmoptionNoArg, (XPointer) "off"}, +#if OPT_REPORT_COLORS +{"-report-colors","*reportColors", XrmoptionNoArg, (XPointer) "on"}, +#endif #if OPT_REPORT_FONTS {"-report-fonts","*reportFonts", XrmoptionNoArg, (XPointer) "on"}, #endif @@ -3145,6 +3151,7 @@ find_utmp(struct UTMP_STR *tofind) /* * Only set $SHELL for paths found in the standard location. + * ...or if $SHELL happens to give an absolute pathname to an executable. */ static Boolean validShell(const char *pathname) @@ -3156,8 +3163,7 @@ validShell(const char *pathname) size_t rc; FILE *fp; - if (!IsEmpty(pathname) - && access(pathname, X_OK) == 0 + if (validProgram(pathname) && stat(ok_shells, &sb) == 0 && (sb.st_mode & S_IFMT) == S_IFREG && (sb.st_size != 0) @@ -3167,8 +3173,10 @@ validShell(const char *pathname) if (rc == (size_t) sb.st_size) { char *p = blob; char *q, *r; + blob[rc] = '\0'; while (!result && (q = strtok(p, "\n")) != 0) { if ((r = x_strtrim(q)) != 0) { + TRACE(("...test \"%s\"\n", q)); if (!strcmp(q, pathname)) { result = True; } @@ -4561,6 +4569,7 @@ spawnXTerm(XtermWidget xw) /* * If we have an explicit shell to run, make that set $SHELL. + * Next, allow an existing setting of $SHELL, for absolute paths. * Otherwise, if $SHELL is not set, determine it from the user's * password information, if possible. * @@ -4568,10 +4577,11 @@ spawnXTerm(XtermWidget xw) * program rather than choosing between $SHELL and "/bin/sh". */ if (validShell(explicit_shname)) { - xtermSetenv("SHELL", explicit_shname); - shell_path = explicit_shname; - } else if (validShell(shell_path = x_getenv("SHELL"))) { - ; /* OK */ + xtermSetenv("SHELL", shell_path = explicit_shname); + } else if (validProgram(shell_path = x_getenv("SHELL"))) { + if (!validShell(shell_path)) { + xtermUnsetenv("SHELL"); + } } else if ((!OkPasswd(&pw) && !x_getpwuid(screen->uid, &pw)) || *(shell_path = x_strdup(pw.pw_shell)) == 0) { shell_path = resetShell(shell_path); @@ -4588,8 +4598,8 @@ spawnXTerm(XtermWidget xw) if (explicit_shname != 0 && access(explicit_shname, X_OK) == 0) { free(shell_path); shell_path = explicit_shname; + xtermSetenv("XTERM_SHELL", shell_path); } - xtermSetenv("XTERM_SHELL", shell_path); shname = x_basename(shell_path); TRACE(("shell path '%s' leaf '%s'\n", shell_path, shname)); diff --git a/minstall.in b/minstall.in index 86a40bc..5ffdfbd 100644 --- a/minstall.in +++ b/minstall.in @@ -1,9 +1,9 @@ #!/bin/sh -# $XTermId: minstall.in,v 1.20 2013/04/21 18:58:54 tom Exp $ +# $XTermId: minstall.in,v 1.21 2014/02/27 23:43:50 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # -# Copyright 2001-2012,2013 by Thomas E. Dickey +# Copyright 2001-2013,2014 by Thomas E. Dickey # # All Rights Reserved # @@ -116,8 +116,10 @@ done WTMP_PATH=$WTMP_PATH/$WTMP_NAME # "X" is usually in the miscellaneous section, along with "undocumented". -# Use that to guess an appropriate section. -X_MANSECT=`man X 2>&1 | tr '\012' '\020' | sed -e 's/^[^0123456789]*\([^) ][^) ]*\).*/\1/'` +# Use that to guess an appropriate section. This relies on having the manpage +# installed. +X_MANPAGE=X +X_MANSECT=`man $X_MANPAGE 2>&1 | grep $X_MANPAGE'([^)]*)' | head -n 1 | tr '\012' '\040' | sed -e 's/^[^0123456789]*\([^) ][^) ]*\).*/\1/'` test -z "$X_MANSECT" && X_MANSECT=$suffix VERSION_H=`echo "$OLD_FILE" | sed -e 's,/[^/]*$,/version.h,' -e s',^[^/]*$,version.h,'` diff --git a/misc.c b/misc.c index 1f3bad6..c70e34c 100644 --- a/misc.c +++ b/misc.c @@ -1,4 +1,4 @@ -/* $XTermId: misc.c,v 1.686 2014/01/19 16:12:25 Egmont.Koblinger Exp $ */ +/* $XTermId: misc.c,v 1.701 2014/03/03 01:19:15 tom Exp $ */ /* * Copyright 1999-2013,2014 by Thomas E. Dickey @@ -2177,23 +2177,47 @@ ReportAnsiColorRequest(XtermWidget xw, int colornum, int final) } } -static void -getColormapInfo(Display *display, unsigned *typep, unsigned *sizep) +int +getVisualInfo(XtermWidget xw) { - int numFound; - XVisualInfo myTemplate, *visInfoPtr; - - myTemplate.visualid = XVisualIDFromVisual(DefaultVisual(display, - XDefaultScreen(display))); - visInfoPtr = XGetVisualInfo(display, (long) VisualIDMask, - &myTemplate, &numFound); - *typep = (numFound >= 1) ? (unsigned) visInfoPtr->class : 0; - *sizep = (numFound >= 1) ? (unsigned) visInfoPtr->colormap_size : 0; - - XFree((char *) visInfoPtr); + TScreen *screen = TScreenOf(xw); + Display *dpy = screen->display; + XVisualInfo myTemplate; + + if (xw->visInfo == 0 && xw->numVisuals == 0) { + myTemplate.visualid = XVisualIDFromVisual(DefaultVisual(dpy, + XDefaultScreen(dpy))); + xw->visInfo = XGetVisualInfo(dpy, (long) VisualIDMask, + &myTemplate, &xw->numVisuals); + + if ((xw->visInfo != 0) && (xw->numVisuals > 0)) { + if (resource.reportColors) { + printf("getVisualInfo depth %d, type %d (%s), size %d\n", + xw->visInfo->depth, + xw->visInfo->class, + ((xw->visInfo->class & 1) ? "dynamic" : "static"), + xw->visInfo->colormap_size); + } + TRACE(("getVisualInfo depth %d, type %d (%s), size %d\n", + xw->visInfo->depth, + xw->visInfo->class, + ((xw->visInfo->class & 1) ? "dynamic" : "static"), + xw->visInfo->colormap_size)); + } + } + return (xw->visInfo != 0) && (xw->numVisuals > 0); +} - TRACE(("getColormapInfo type %d (%s), size %d\n", - *typep, ((*typep & 1) ? "dynamic" : "static"), *sizep)); +static void +getColormapInfo(XtermWidget xw, unsigned *typep, unsigned *sizep) +{ + if (getVisualInfo(xw)) { + *typep = (unsigned) xw->visInfo->class; + *sizep = (unsigned) xw->visInfo->colormap_size; + } else { + *typep = 0; + *sizep = 0; + } } #define MAX_COLORTABLE 4096 @@ -2207,9 +2231,9 @@ loadColorTable(XtermWidget xw, unsigned length) Colormap cmap = xw->core.colormap; TScreen *screen = TScreenOf(xw); unsigned i; - Boolean result = False; + Boolean result = (screen->cmap_data != 0); - if (screen->cmap_data == 0 + if (!result && length != 0 && length < MAX_COLORTABLE) { screen->cmap_data = TypeMallocN(XColor, (size_t) length); @@ -2258,7 +2282,7 @@ allocateClosestRGB(XtermWidget xw, Colormap cmap, XColor * def) unsigned cmap_size; unsigned i; - getColormapInfo(screen->display, &cmap_type, &cmap_size); + getColormapInfo(xw, &cmap_type, &cmap_size); if ((cmap_type & 1) != 0) { @@ -2359,21 +2383,18 @@ static int simpleColors(XColor * colortable, unsigned length) { unsigned n; - int state = -1; + int state = 0; int check; for (n = 0; n < length; ++n) { - if (state == -1) { - CheckColor(state, colortable[n]); - if (state == 0) - state = -1; - } if (state > 0) { CheckColor(check, colortable[n]); if (check > 0 && check != state) { state = 0; break; } + } else { + CheckColor(state, colortable[n]); } } switch (state) { @@ -2433,7 +2454,7 @@ searchColors(XColor * colortable, unsigned length, unsigned color, int state) * actual RGB values allocated. * * That is, XAllocColor() should suffice unless the color map is full. In that - * case, allocateClosesRGB() is useful for the dynamic display classes such as + * case, allocateClosestRGB() is useful for the dynamic display classes such as * PseudoColor. It is not useful for TrueColor, since XQueryColors() does not * return regular RGB triples (unless a different scheme was used for * specifying the pixel values); only the blue value is filled in. However, it @@ -2451,18 +2472,18 @@ allocateExactRGB(XtermWidget xw, Colormap cmap, XColor * def) Boolean result = (Boolean) (XAllocColor(screen->display, cmap, def) != 0); /* - * If this is a statically allocated display, e.g., TrueColor, see if we - * can improve on the result by using the color values actually supported - * by the server. + * If this is a statically allocated display with too many items to store + * in our array, i.e., TrueColor, see if we can improve on the result by + * using the color values actually supported by the server. */ if (result) { unsigned cmap_type; unsigned cmap_size; int state; - getColormapInfo(screen->display, &cmap_type, &cmap_size); + getColormapInfo(xw, &cmap_type, &cmap_size); - if ((cmap_type & 1) == 0) { + if (cmap_type == TrueColor) { XColor temp = *def; if (loadColorTable(xw, cmap_size) @@ -2723,11 +2744,27 @@ xtermAllocColor(XtermWidget xw, XColor * def, const char *spec) TScreen *screen = TScreenOf(xw); Colormap cmap = xw->core.colormap; - if (XParseColor(screen->display, cmap, spec, def) - && allocateBestRGB(xw, def)) { - TRACE(("xtermAllocColor -> %x/%x/%x\n", - def->red, def->green, def->blue)); - result = True; + if (XParseColor(screen->display, cmap, spec, def)) { + XColor save_def = *def; + if (resource.reportColors) { + printf("color %04x/%04x/%04x = \"%s\"\n", + def->red, def->green, def->blue, + spec); + } + if (allocateBestRGB(xw, def)) { + if (resource.reportColors) { + if (def->red != save_def.red || + def->green != save_def.green || + def->blue != save_def.blue) { + printf("color %04x/%04x/%04x ~ \"%s\"\n", + def->red, def->green, def->blue, + spec); + } + } + TRACE(("xtermAllocColor -> %x/%x/%x\n", + def->red, def->green, def->blue)); + result = True; + } } return result; } @@ -3142,12 +3179,13 @@ ChangeColorsRequest(XtermWidget xw, if (names != NULL) { *names++ = '\0'; } - if (thisName != 0 && !strcmp(thisName, "?")) { - ReportColorRequest(xw, ndx, final); - } else if (!pOldColors->names[ndx] - || (thisName - && strcmp(thisName, pOldColors->names[ndx]))) { - AllocateTermColor(xw, &newColors, ndx, thisName, False); + if (thisName != 0) { + if (!strcmp(thisName, "?")) { + ReportColorRequest(xw, ndx, final); + } else if (!pOldColors->names[ndx] + || strcmp(thisName, pOldColors->names[ndx])) { + AllocateTermColor(xw, &newColors, ndx, thisName, False); + } } } } @@ -4566,20 +4604,10 @@ which_icon_hint(void) int getVisualDepth(XtermWidget xw) { - Display *display = TScreenOf(xw)->display; - XVisualInfo myTemplate, *visInfoPtr; - int numFound; int result = 0; - myTemplate.visualid = XVisualIDFromVisual(DefaultVisual(display, - XDefaultScreen(display))); - visInfoPtr = XGetVisualInfo(display, (long) VisualIDMask, - &myTemplate, &numFound); - if (visInfoPtr != 0) { - if (numFound != 0) { - result = visInfoPtr->depth; - } - XFree(visInfoPtr); + if (getVisualInfo(xw)) { + result = xw->visInfo->depth; } return result; } @@ -4596,14 +4624,7 @@ xtermLoadIcon(XtermWidget xw) Pixmap myMask = 0; char *workname = 0; ICON_HINT hint = which_icon_hint(); -#if OPT_BUILTIN_XPMS -#include <icons/mini.xterm.xpms> -#include <icons/filled-xterm.xpms> -#include <icons/xterm.xpms> -#include <icons/xterm-color.xpms> -#else -#include <icons/mini.xterm_48x48.xpm> -#endif +#include <builtin_icons.h> TRACE(("xtermLoadIcon %p:%s\n", (void *) xw, NonNull(resource.icon_hint))); @@ -5097,6 +5118,27 @@ Cleanup(int code) Exit(code); } +#ifndef S_IXOTH +#define S_IXOTH 1 +#endif + +Boolean +validProgram(const char *pathname) +{ + Boolean result = False; + struct stat sb; + + if (!IsEmpty(pathname) + && *pathname == '/' + && strstr(pathname, "/..") == 0 + && stat(pathname, &sb) == 0 + && (sb.st_mode & S_IFMT) == S_IFREG + && (sb.st_mode & S_IXOTH) != 0) { + result = True; + } + return result; +} + #ifndef VMS #ifndef PATH_MAX #define PATH_MAX 512 /* ... is not defined consistently in Xos.h */ @@ -5142,9 +5184,7 @@ xtermFindShell(char *leaf, Bool warning) if (skip) ++d; s += (d - tmp); - if (*tmp == '/' - && strstr(tmp, "..") == 0 - && access(tmp, X_OK) == 0) { + if (validProgram(tmp)) { result = x_strdup(tmp); found = True; allocated = True; @@ -5161,9 +5201,7 @@ xtermFindShell(char *leaf, Bool warning) } } TRACE(("...xtermFindShell(%s)\n", result)); - if (*result != '/' - || strstr(result, "..") != 0 - || access(result, X_OK) != 0) { + if (!validProgram(result)) { if (warning) xtermWarning("No absolute path found for shell: %s\n", result); if (allocated) diff --git a/package/debian/changelog b/package/debian/changelog index 71b9091..b8c242e 100644 --- a/package/debian/changelog +++ b/package/debian/changelog @@ -1,3 +1,9 @@ +xterm-dev (302) unstable; urgency=low + + * maintenance updates + + -- Thomas E. Dickey <dic...@invisible-island.net> Sat, 15 Feb 2014 16:19:35 -0500 + xterm-dev (301) unstable; urgency=high * miscellaneous fixes diff --git a/package/debian/control b/package/debian/control index b970db2..96995ec 100644 --- a/package/debian/control +++ b/package/debian/control @@ -3,7 +3,7 @@ Section: x11 Priority: optional Maintainer: Thomas E. Dickey <dic...@invisible-island.net> Homepage: http://invisible-island.net/xterm/ -Build-Depends: debhelper (>= 7) +Build-Depends: debhelper (>= 7), xorg-docs-core Standards-Version: 3.8.2 Package: xterm-dev diff --git a/package/debian/rules b/package/debian/rules index 1d5159f..8f818b5 100755 --- a/package/debian/rules +++ b/package/debian/rules @@ -181,7 +181,7 @@ binary-arch: build install dh_install dh_link dh_strip - dh_compress + dh_compress -Xexamples dh_fixperms dh_installdeb dh_shlibdeps diff --git a/package/freebsd/Makefile b/package/freebsd/Makefile index c2f5632..ba96789 100644 --- a/package/freebsd/Makefile +++ b/package/freebsd/Makefile @@ -5,7 +5,7 @@ # and "make makesum". PORTNAME= xterm -PORTVERSION= 301 +PORTVERSION= 302 CATEGORIES= x11 MASTER_SITES= ftp://invisible-island.net/xterm/ \ CRITICAL diff --git a/package/xterm.spec b/package/xterm.spec index d4a6d84..f18b6db 100644 --- a/package/xterm.spec +++ b/package/xterm.spec @@ -1,18 +1,42 @@ -# $XTermId: xterm.spec,v 1.59 2013/12/09 12:59:32 tom Exp $ +# $XTermId: xterm.spec,v 1.65 2014/02/28 21:41:43 tom Exp $ Summary: X terminal emulator (development version) %global my_middle xterm %global my_suffix -dev %global fullname %{my_middle}%{my_suffix} %global my_class XTermDev Name: %{fullname} -Version: 301 +Version: 302 Release: 1 License: X11 Group: User Interface/X Source: xterm-%{version}.tgz -# URL: http://invisible-island.net/xterm/ +URL: ftp://invisible-island.net/xterm/ Provides: x-terminal-emulator +# This part (the build-requires) would be useful if the various distributions +# had provided stable package-naming, or virtual packages to cover transitions. +# However, they have not done this in the past. +%define use_x_manpage %(test "x$_use_x_manpage" = xyes && echo 1 || echo 0) +%if "%{use_x_manpage}" + +%global is_mandriva %(test -f /etc/mandriva-release && echo %{use_x_manpage} || echo 0) +%global is_redhat %(test -f /etc/redhat-release && echo %{use_x_manpage} || echo 0) +%global is_suse %(test -f /etc/SuSE-release && echo %{use_x_manpage} || echo 0) + +%if %{is_mandriva} +BuildRequires: x11-docs +%else +%if %{is_redhat} +BuildRequires: xorg-x11-docs +%else +%if %{is_suse} +BuildRequires: xorg-docs +%endif +%endif +%endif + +%endif + %description xterm is the standard terminal emulator for the X Window System. It provides DEC VT102 and Tektronix 4014 compatible terminals for @@ -46,14 +70,19 @@ for the program and its resource class, to avoid conflict with other packages. %define desktop_utils %(if which desktop-file-install 2>&1 >/dev/null ; then echo 1 || echo 0 ; fi) %define icon_theme %(test -d /usr/share/icons/hicolor && echo 1 || echo 0) +%define apps_x11r6 %(test -d /usr/X11R6/lib/X11/app-defaults && echo 1 || echo 0) %define apps_shared %(test -d /usr/share/X11/app-defaults && echo 1 || echo 0) %define apps_syscnf %(test -d /etc/X11/app-defaults && echo 1 || echo 0) +%if %{apps_x11r6} +%define _xresdir %{_prefix}/X11R6/lib/X11/app-defaults +%else %if %{apps_shared} %define _xresdir %{_datadir}/X11/app-defaults %else %define _xresdir %{_sysconfdir}/X11/app-defaults %endif +%endif %define _iconsdir %{_datadir}/icons %define _pixmapsdir %{_datadir}/pixmaps @@ -142,7 +171,7 @@ make install-bin install-man install-app install-icon \ # The scripts are readable, but not executable, to let find-requires # know that they do not depend on Perl packages. - chmod 644 $RPM_BUILD_ROOT%{my_docdir}/vttests/* + chmod 644 $RPM_BUILD_ROOT%{my_docdir}/vttests/*.pl %if "%{desktop_utils}" make install-desktop \ @@ -164,6 +193,8 @@ if [ -x %{_bindir}/gtk-update-icon-cache ]; then %{_bindir}/gtk-update-icon-cache %{_iconsdir}/hicolor || : fi %endif +# find-requires does not care about at this point +chmod +x %{my_docdir}/vttests/*.* %postun %if "%{icon_theme}" diff --git a/ptyx.h b/ptyx.h index 99ea119..24bd777 100644 --- a/ptyx.h +++ b/ptyx.h @@ -1,7 +1,7 @@ -/* $XTermId: ptyx.h,v 1.789 2013/11/23 17:04:26 tom Exp $ */ +/* $XTermId: ptyx.h,v 1.794 2014/03/02 22:38:51 tom Exp $ */ /* - * Copyright 1999-2012,2013 by Thomas E. Dickey + * Copyright 1999-2013,2014 by Thomas E. Dickey * * All Rights Reserved * @@ -80,6 +80,13 @@ #include <stdio.h> +#ifdef HAVE_STDINT_H +#include <stdint.h> +#define DECONST(type,s) ((type *)(intptr_t)(const type *)(s)) +#else +#define DECONST(type,s) ((type *)(s)) +#endif + /* adapted from IntrinsicI.h */ #define MyStackAlloc(size, stack_cache_array) \ ((size) <= sizeof(stack_cache_array) \ @@ -657,6 +664,10 @@ typedef struct { #endif #endif +#ifndef OPT_REPORT_COLORS +#define OPT_REPORT_COLORS 1 /* provide "-report-colors" option */ +#endif + #ifndef OPT_REPORT_FONTS #define OPT_REPORT_FONTS 1 /* provide "-report-fonts" option */ #endif @@ -1387,14 +1398,14 @@ typedef unsigned char IChar; /* for 8-bit characters */ #define Cres(name, class, offset, dftvalue) \ {RES_NAME(name), RES_CLASS(class), XtRPixel, sizeof(Pixel), \ - RES_OFFSET(offset), XtRString, (XtPointer) dftvalue} + RES_OFFSET(offset), XtRString, DECONST(char,dftvalue)} #define Tres(name, class, offset, dftvalue) \ COLOR_RES2(name, class, screen.Tcolors[offset], dftvalue) \ #define Fres(name, class, offset, dftvalue) \ {RES_NAME(name), RES_CLASS(class), XtRFontStruct, sizeof(XFontStruct *), \ - RES_OFFSET(offset), XtRString, (XtPointer) dftvalue} + RES_OFFSET(offset), XtRString, DECONST(char,dftvalue)} #define Ires(name, class, offset, dftvalue) \ {RES_NAME(name), RES_CLASS(class), XtRInt, sizeof(int), \ @@ -1402,11 +1413,11 @@ typedef unsigned char IChar; /* for 8-bit characters */ #define Dres(name, class, offset, dftvalue) \ {RES_NAME(name), RES_CLASS(class), XtRFloat, sizeof(float), \ - RES_OFFSET(offset), XtRString, (XtPointer) dftvalue} + RES_OFFSET(offset), XtRString, DECONST(char,dftvalue)} #define Sres(name, class, offset, dftvalue) \ {RES_NAME(name), RES_CLASS(class), XtRString, sizeof(char *), \ - RES_OFFSET(offset), XtRString, (XtPointer) dftvalue} + RES_OFFSET(offset), XtRString, DECONST(char,dftvalue)} #define Wres(name, class, offset, dftvalue) \ {RES_NAME(name), RES_CLASS(class), XtRWidget, sizeof(Widget), \ @@ -1869,6 +1880,7 @@ typedef struct { char * utf8_mode_s; /* use UTF-8 decode/encode */ char * utf8_fonts_s; /* use UTF-8 decode/encode */ int utf8_nrc_mode; /* saved UTF-8 mode for DECNRCM */ + Boolean utf8_always; /* special case for wideChars */ int utf8_mode; /* use UTF-8 decode/encode: 0-2 */ int utf8_fonts; /* use UTF-8 decode/encode: 0-2 */ int max_combining; /* maximum # of combining chars */ @@ -2647,6 +2659,8 @@ typedef unsigned Tabs [TAB_ARRAY_SIZE]; typedef struct _XtermWidgetRec { CorePart core; XSizeHints hints; + XVisualInfo *visInfo; + int numVisuals; Bool init_menu; TKeyboard keyboard; /* terminal keyboard */ TScreen screen; /* terminal screen */ diff --git a/trace.c b/trace.c index 423f7fb..7d7edc2 100644 --- a/trace.c +++ b/trace.c @@ -1,7 +1,7 @@ -/* $XTermId: trace.c,v 1.153 2013/11/26 22:41:44 tom Exp $ */ +/* $XTermId: trace.c,v 1.154 2014/03/02 12:01:26 tom Exp $ */ /* - * Copyright 1997-2012,2013 by Thomas E. Dickey + * Copyright 1997-2013,2014 by Thomas E. Dickey * * All Rights Reserved * @@ -917,6 +917,9 @@ TraceXtermResources(void) XRES_B(ptyHandshake); XRES_B(ptySttySize); #endif +#if OPT_REPORT_COLORS + XRES_B(reportColors); +#endif #if OPT_REPORT_FONTS XRES_B(reportFonts); #endif diff --git a/version.h b/version.h index 13964d4..2e85746 100644 --- a/version.h +++ b/version.h @@ -1,4 +1,4 @@ -/* $XTermId: version.h,v 1.378 2014/01/19 20:58:11 tom Exp $ */ +/* $XTermId: version.h,v 1.381 2014/03/03 01:57:01 tom Exp $ */ /* * Copyright 1998-2013,2014 by Thomas E. Dickey @@ -38,8 +38,8 @@ * version of X to which this version of xterm has been built. The resulting * number in parentheses is my patch number (Thomas E. Dickey). */ -#define XTERM_PATCH 301 -#define XTERM_DATE 2014-01-19 +#define XTERM_PATCH 302 +#define XTERM_DATE 2014-03-02 #ifndef __vendorversion__ #define __vendorversion__ "XTerm" diff --git a/vttests/256colors.pl b/vttests/256colors.pl index 57976f7..a037368 100755 --- a/vttests/256colors.pl +++ b/vttests/256colors.pl @@ -1,9 +1,9 @@ -#!/usr/bin/perl -# $XTermId: 256colors.pl,v 1.4 2006/09/29 21:49:03 tom Exp $ +#!/usr/bin/env perl +# $XTermId: 256colors.pl,v 1.5 2014/02/26 20:16:12 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # -# Copyright 1999,2006 by Thomas E. Dickey +# Copyright 1999-2006,2014 by Thomas E. Dickey # # All Rights Reserved # @@ -31,10 +31,15 @@ # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- -# + +use strict; +use warnings; + # This uses 33 print-lines on an 80-column display. Printing the numbers in # hexadecimal would make it compact enough for 24x80, but less readable. +our ($bg, $fg); + for ($bg = 0; $bg < 256; $bg++) { # print "\x1b[9;1H\x1b[2J"; for ($fg = 0; $fg < 256; $fg++) { diff --git a/vttests/256colors2.pl b/vttests/256colors2.pl index af8d5b7..f0360ec 100755 --- a/vttests/256colors2.pl +++ b/vttests/256colors2.pl @@ -1,9 +1,9 @@ -#!/usr/bin/perl -# $XTermId: 256colors2.pl,v 1.15 2012/09/19 23:32:48 tom Exp $ +#!/usr/bin/env perl +# $XTermId: 256colors2.pl,v 1.16 2014/02/26 20:21:48 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # -# Copyright 1999-2009,2012 by Thomas E. Dickey +# Copyright 1999-2012,2014 by Thomas E. Dickey # Copyright 2002 by Steve Wall # Copyright 1999 by Todd Larason # @@ -39,6 +39,7 @@ # pleasing shades use strict; +use warnings; use Getopt::Std; use Encode 'encode_utf8'; @@ -128,9 +129,9 @@ for ($red = 0; $red < $cube; $red++) { for ($blue = 0; $blue < $cube; $blue++) { &define_color( 16 + (map_cube($red) * $cube * $cube) + (map_cube($green) * $cube) + map_cube($blue), - int (@steps[$red]), - int (@steps[$green]), - int (@steps[$blue])); + int ($steps[$red]), + int ($steps[$green]), + int ($steps[$blue])); } } } diff --git a/vttests/88colors.pl b/vttests/88colors.pl index 3db178c..efade56 100755 --- a/vttests/88colors.pl +++ b/vttests/88colors.pl @@ -1,9 +1,9 @@ -#!/usr/bin/perl -# $XTermId: 88colors.pl,v 1.3 1999/09/27 20:12:18 tom Exp $ +#!/usr/bin/env perl +# $XTermId: 88colors.pl,v 1.4 2014/02/26 20:16:26 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # -# Copyright 1999 by Thomas E. Dickey +# Copyright 1999,2014 by Thomas E. Dickey # # All Rights Reserved # @@ -33,6 +33,11 @@ # ----------------------------------------------------------------------------- # Made from 256colors.pl +use strict; +use warnings; + +our ($bg, $fg); + for ($bg = 0; $bg < 88; $bg++) { print "\x1b[9;1H\x1b[48;5;${bg}m\x1b[2J"; for ($fg = 0; $fg < 88; $fg++) { diff --git a/vttests/88colors2.pl b/vttests/88colors2.pl index a96747f..eb0d9b1 100755 --- a/vttests/88colors2.pl +++ b/vttests/88colors2.pl @@ -1,9 +1,9 @@ -#!/usr/bin/perl -# $XTermId: 88colors2.pl,v 1.11 2012/09/19 23:31:56 tom Exp $ +#!/usr/bin/env perl +# $XTermId: 88colors2.pl,v 1.12 2014/02/26 20:16:53 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # -# Copyright 1999-2009,2012 by Thomas E. Dickey +# Copyright 1999-2012,2014 by Thomas E. Dickey # Copyright 1999 by Steve Wall # # All Rights Reserved -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/e1wkxuo-0000fb...@moszumanska.debian.org