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

Reply via email to