xterm-145.patch.txt

# ------------------------------------------------------------------------------
# Imakefile            |   20 -
# Makefile.in          |   10 
# README.os390         |    9 
# button.c             |   22 +
# charproc.c           |   63 +++--
# config.guess         |    3 
# config.sub           |    4 
# configure            |  581 ++++++++++++++++++++++++-------------------------
# configure.in         |   11 
# data.c               |    8 
# fontutils.c          |   16 -
# main.c               |  471 +++++++++++++++++++++------------------
# menu.c               |    2 
# misc.c               |   17 -
# os2main.c            |   64 ++---
# ptydata.c            |    4 
# ptyx.h               |   55 ++++
# resize.c             |   40 ---
# screen.c             |  123 ++++------
# termcap              |  126 +++++-----
# terminfo             |   50 ++++
# trace.h              |    4 
# util.c               |   24 +-
# version.h            |    4 
# xterm-145/xstrings.c |   68 +++++
# xterm-145/xstrings.h |   41 +++
# xterm.h              |    3 
# xterm.log.html       |   73 ++++++
# xterm.man            |   18 +
# 29 files changed, 1123 insertions(+), 811 deletions(-)
# ------------------------------------------------------------------------------
Index: Imakefile
--- xterm-144+/Imakefile        Mon Aug 28 14:56:36 2000
+++ xterm-145/Imakefile Fri Sep  8 18:49:26 2000
@@ -92,8 +92,8 @@
 
 #ifdef UTF8support
     UTF8_OPTION = -DOPT_WIDE_CHARS
-        UTF8SRC = keysym2ucs.c
-        UTF8OBJ = keysym2ucs.o
+        UTF8SRC = charclass.c keysym2ucs.c precompose.c wcwidth.c
+        UTF8OBJ = charclass.o keysym2ucs.o precompose.o wcwidth.o
 #endif
 
    MAIN_DEFINES = $(UTMPDEF) $(TTYGROUPDEF) $(PUCCPTYDDEF) $(NOPOSIXTERMIOS) \
@@ -110,20 +110,20 @@
           MAINSRC = main.c
           MAINOBJ = main.o
 #endif
-          SRCS1 = button.c charclass.c charproc.c charsets.c cursor.c \
+          SRCS1 = button.c charproc.c charsets.c cursor.c \
                  data.c doublechr.c fontutils.c input.c \
-                 menu.c misc.c precompose.c print.c ptydata.c \
-                 screen.c scrollbar.c tabs.c util.c wcwidth.c \
+                 menu.c misc.c print.c ptydata.c \
+                 screen.c scrollbar.c tabs.c util.c xstrings.c \
                  TekPrsTbl.c Tekproc.c VTPrsTbl.c \
                  $(MAINSRC) $(EXTRASRC) $(UTF8SRC)
-          OBJS1 = button.o charclass.o charproc.o charsets.o cursor.o \
+          OBJS1 = button.o charproc.o charsets.o cursor.o \
                  data.o doublechr.o fontutils.o input.o \
-                 menu.o misc.o precompose.o print.o ptydata.o \
-                 screen.o scrollbar.o tabs.o util.o wcwidth.o \
+                 menu.o misc.o print.o ptydata.o \
+                 screen.o scrollbar.o tabs.o util.o xstrings.o \
                  TekPrsTbl.o Tekproc.o VTPrsTbl.o \
                  $(MAINOBJ) $(EXTRAOBJ) $(UTF8OBJ)
-          SRCS2 = resize.c
-          OBJS2 = resize.o
+          SRCS2 = resize.c xstrings.c
+          OBJS2 = resize.o xstrings.o
            SRCS = $(SRCS1) $(SRCS2)
            OBJS = $(OBJS1) $(OBJS2)
        PROGRAMS = ProgramTargetName(resize) ProgramTargetName(xterm)
Index: Makefile.in
--- xterm-144+/Makefile.in      Mon Aug 28 14:56:36 2000
+++ xterm-145/Makefile.in       Wed Sep  6 18:54:21 2000
@@ -57,19 +57,19 @@
           SRCS1 = button.c charproc.c charsets.c cursor.c \
                  data.c doublechr.c fontutils.c input.c \
                  $(MAINSRC) menu.c misc.c print.c ptydata.c \
-                 screen.c scrollbar.c tabs.c util.c \
+                 screen.c scrollbar.c tabs.c util.c xstrings.c \
                  VTPrsTbl.c $(EXTRASRC)
           OBJS1 = button.o charproc.o charsets.o cursor.o \
                  data.o doublechr.o fontutils.o input.o \
                  main.o menu.o misc.o print.o ptydata.o \
-                 screen.o scrollbar.o tabs.o util.o \
+                 screen.o scrollbar.o tabs.o util.o xstrings.o \
                  VTPrsTbl.o $(EXTRAOBJ)
-          SRCS2 = resize.c
-          OBJS2 = resize.o
+          SRCS2 = resize.c xstrings.c
+          OBJS2 = resize.o xstrings.o
            SRCS = $(SRCS1) $(SRCS2)
            OBJS = $(OBJS1) $(OBJS2)
            HDRS = VTparse.h data.h error.h main.h menu.h proto.h \
-                  ptyx.h version.h xterm.h $(EXTRAHDR)
+                  ptyx.h version.h xstrings.h xterm.h $(EXTRAHDR)
        PROGRAMS = xterm resize
 
 all:   $(PROGRAMS)
Index: README.os390
--- xterm-144+/README.os390     Fri Nov 19 15:27:18 1999
+++ xterm-145/README.os390      Sun Sep 10 21:52:14 2000
@@ -39,6 +39,9 @@
 this isn't strictly necessary, but will reduce the size of the executable
 by about 4M.
 
+The '-Wl,EDIT=NO' causes the Binder to produce a non-editable executable,
+dramatically reducing the size of the executable file.
+
 Good Luck!!
 Greg Smith
 rys@trex.rtpnc.epa.gov
@@ -51,7 +54,7 @@
    pax -o from=ISO8859-1,to=IBM-1047 -rf xterm.tar
    cd xterm
    export LIBS='-lXt  -lX11 -lSM -lICE'
-   export CFLAGS='-D_ALL_SOURCE'
+   export CFLAGS='-D_ALL_SOURCE -Wl,EDIT=NO'
    ./configure
    make
    export DISPLAY=my.xserver.name:0
@@ -63,9 +66,7 @@
    gunzip xterm.tar.gz
    pax -o from=ISO8859-1,to=IBM-1047 -rf xterm.tar
    cd xterm
-   export LIBS='/usr/lib/Xaw.x /usr/lib/SM.x /usr/lib/ICE.x /usr/lib/X11.x'
-   export CFLAGS='-O2 -W c,dll -D_ALL_SOURCE'
-   ./configure
+   ./configure   # LIBS, CFLAGS, and CC are defined by configure for os/390 2.6.
    [optional: edit the Makefile and remove '-lXaw -lXext -lXmu -lXt  -lSM -lICE -lX11'
               from the LIBS assignment]
    make
Index: button.c
--- xterm-144+/button.c Mon Aug 28 14:56:36 2000
+++ xterm-145/button.c  Mon Sep 11 05:40:11 2000
@@ -918,15 +918,12 @@
        Cardinal num_params,
        Bool utf8_failed GCC_UNUSED)    /* already tried UTF-8 */
 {
-    TScreen *screen;
     Atom selection;
     int cutbuffer;
 
     if (!IsXtermWidget(w))
        return;
 
-    screen = &((XtermWidget)w)->screen;
-
     XmuInternStrings(XtDisplay(w), params, (Cardinal)1, &selection);
     switch (selection) {
       case XA_CUT_BUFFER0: cutbuffer = 0; break;
@@ -956,6 +953,7 @@
     } else {
        struct _SelectionList* list;
 #if OPT_WIDE_CHARS
+       TScreen *screen = &((XtermWidget)w)->screen;
        if (!screen->wide_chars || utf8_failed) {
            params++;
            num_params--;
@@ -1500,7 +1498,7 @@
 #if OPT_WIDE_CHARS
 int iswide(int i)
 {
-    return my_wcwidth(i) == 2;
+    return (i == HIDDEN_CHAR) || (my_wcwidth(i) == 2);
 }
 #endif
 
@@ -2244,12 +2242,18 @@
                        "%s: selection too big (%d bytes), not storing in CUT_BUFFER%d\n",
                        xterm_name, termw->screen.selection_length, cutbuffer);
            } else {
-             /* Cutbuffers are untyped, so in the wide chars case, we
-                just store the raw UTF-8 data.  It is unlikely it
-                will be useful to anyone. */
+               /* This used to just use the UTF-8 data, which was totally
+                * broken as not even the corresponding paste code in Xterm
+                * understood this!  So now it converts to Latin1 first.
+                *   Robert Brady, 2000-09-05
+                */
+               long length = termw->screen.selection_length;
+               Char *data = termw->screen.selection_data;
+               if_OPT_WIDE_CHARS((&(termw->screen)), {
+                   data = UTF8toLatin1(data, length, &length);
+               })
                XStoreBuffer( XtDisplay((Widget)termw),
-                             termw->screen.selection_data,
-                             termw->screen.selection_length, cutbuffer );
+                             data, length, cutbuffer );
            }
        } else if (!replyToEmacs) {
            have_selection |=
Index: charproc.c
--- xterm-144+/charproc.c       Mon Aug 28 14:56:36 2000
+++ xterm-145/charproc.c        Mon Sep 11 05:42:15 2000
@@ -2677,7 +2677,7 @@
 #else
        int next_col, last_col, this_col;       /* must be signed */
 #endif
-       Cardinal n, offset;
+       Cardinal offset;
 
 #if OPT_WIDE_CHARS
        if (!screen->utf8_mode || charset == '0') /* don't translate if we use UTF-8 */
@@ -2687,6 +2687,7 @@
                return;
 
        if_OPT_XMC_GLITCH(screen,{
+               Cardinal n;
                if (charset != '?') {
                        for (n = 0; n < len; n++) {
                                if (buf[n] == XMC_GLITCH)
@@ -2723,6 +2724,10 @@
                        need_wrap = 1;
                }
 
+               if (width_here == width_available) {
+                       need_wrap = 1;
+               }
+
                if (chars_chomped != (len - offset)) {
                        need_wrap = 1;
                }
@@ -2878,7 +2883,7 @@
                                CurCursorX(screen, screen->cur_row, screen->cur_col),
                                CursorY(screen, screen->cur_row),
                                curXtermChrSet(screen->cur_row),
-                               PAIRED_CHARS(str, str2), len);
+                               PAIRED_CHARS(str, str2), len, 0);
 
                        resetXtermGC(screen, flags, False);
 
@@ -3093,7 +3098,7 @@
                case 8:                 /* DECARM                       */
                        /* ignore autorepeat */
                        break;
-               case SET_X10_MOUSE:     /* MIT bogus sequence           */
+               case SET_X10_MOUSE:     /* MIT bogus sequence           */
                        MotionOff( screen, termw );
                        set_mousemode(X10_MOUSE);
                        break;
@@ -3334,7 +3339,7 @@
                case 47:                /* alternate buffer             */
                        DoSM(DP_X_ALTSCRN, screen->alternate);
                        break;
-               case SET_VT200_MOUSE:   /* mouse bogus sequence         */
+               case SET_VT200_MOUSE:   /* mouse bogus sequence         */
                case SET_VT200_HIGHLIGHT_MOUSE:
                case SET_BTN_EVENT_MOUSE:
                case SET_ANY_EVENT_MOUSE:
@@ -3407,7 +3412,7 @@
                case 8:                 /* DECARM                       */
                        /* ignore autorepeat */
                        break;
-               case SET_X10_MOUSE:     /* MIT bogus sequence           */
+               case SET_X10_MOUSE:     /* MIT bogus sequence           */
                        DoRM(DP_X_X10MSE, screen->send_mouse_pos);
                        break;
                case 40:                /* 132 column mode              */
@@ -3449,7 +3454,7 @@
                            /* update_altscreen done by ToAlt and FromAlt */
                        }
                        break;
-               case SET_VT200_MOUSE:   /* mouse bogus sequence         */
+               case SET_VT200_MOUSE:   /* mouse bogus sequence         */
                case SET_VT200_HIGHLIGHT_MOUSE:
                case SET_BTN_EVENT_MOUSE:
                case SET_ANY_EVENT_MOUSE:
@@ -4920,6 +4925,7 @@
        Char    c1l = 0;
        Char    c2h = 0;
        Char    c2l = 0;
+       int     base;
 #endif
 
        if (screen->cursor_state == BLINKED_OFF)
@@ -4940,15 +4946,22 @@
        }
 #endif /* NO_ACTIVE_ICON */
 
+#if OPT_WIDE_CHARS
+       base  =
+#endif
        clo   = SCRN_BUF_CHARS(screen, screen->cursor_row)[screen->cursor_col];
        flags = SCRN_BUF_ATTRS(screen, screen->cursor_row)[screen->cursor_col];
 
        if_OPT_WIDE_CHARS(screen,{
+           int my_col = screen->cursor_col;
            chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[screen->cursor_col];
-           c1l = SCRN_BUF_COM1L(screen, screen->cursor_row)[screen->cursor_col];
-           c1h = SCRN_BUF_COM1H(screen, screen->cursor_row)[screen->cursor_col];
-           c2l = SCRN_BUF_COM2L(screen, screen->cursor_row)[screen->cursor_col];
-           c2h = SCRN_BUF_COM2H(screen, screen->cursor_row)[screen->cursor_col];
+           base = (chi << 8) | clo;
+           if (iswide(base))
+               my_col += 1;
+           c1l = SCRN_BUF_COM1L(screen, screen->cursor_row)[my_col];
+           c1h = SCRN_BUF_COM1H(screen, screen->cursor_row)[my_col];
+           c2l = SCRN_BUF_COM2L(screen, screen->cursor_row)[my_col];
+           c2h = SCRN_BUF_COM2H(screen, screen->cursor_row)[my_col];
        })
 
        if (clo == 0
@@ -5053,20 +5066,20 @@
                x = CurCursorX(screen, screen->cur_row, screen->cur_col),
                y = CursorY(screen, screen->cur_row),
                curXtermChrSet(screen->cur_row),
-               PAIRED_CHARS(&clo, &chi), 1);
+               PAIRED_CHARS(&clo, &chi), 1, 0);
 
 #if OPT_WIDE_CHARS
        if (c1l || c1h) {
                drawXtermText(screen, flags, currentGC,
                              x, y,
                              curXtermChrSet(screen->cur_row),
-                             PAIRED_CHARS(&c1l, &c1h), 1);
+                             PAIRED_CHARS(&c1l, &c1h), 1, iswide(base));
 
                if (c2l || c2h)
                        drawXtermText(screen, flags, currentGC,
                                      x, y,
                                      curXtermChrSet(screen->cur_row),
-                                     PAIRED_CHARS(&c2l, &c2h), 1);
+                                     PAIRED_CHARS(&c2l, &c2h), 1, iswide(base));
        }
 #endif
 
@@ -5100,6 +5113,7 @@
        Char    c1l = 0;
        Char    c2h = 0;
        Char    c2l = 0;
+       int     base;
 #endif
 
        if (screen->cursor_state == OFF)        /* FIXME */
@@ -5114,6 +5128,9 @@
        }
 #endif /* NO_ACTIVE_ICON */
 
+#if OPT_WIDE_CHARS
+       base  =
+#endif
        clo   = SCRN_BUF_CHARS(screen, screen->cursor_row)[screen->cursor_col];
        flags = SCRN_BUF_ATTRS(screen, screen->cursor_row)[screen->cursor_col];
 
@@ -5126,11 +5143,15 @@
        })
 
        if_OPT_WIDE_CHARS(screen,{
+           int my_col = screen->cursor_col;
            chi = SCRN_BUF_WIDEC(screen, screen->cursor_row)[screen->cursor_col];
-           c1l = SCRN_BUF_COM1L(screen, screen->cursor_row)[screen->cursor_col];
-           c1h = SCRN_BUF_COM1H(screen, screen->cursor_row)[screen->cursor_col];
-           c2l = SCRN_BUF_COM2L(screen, screen->cursor_row)[screen->cursor_col];
-           c2h = SCRN_BUF_COM2H(screen, screen->cursor_row)[screen->cursor_col];
+           base = (chi << 8) | clo;
+           if (iswide(base))
+               my_col += 1;
+           c1l = SCRN_BUF_COM1L(screen, screen->cursor_row)[my_col];
+           c1h = SCRN_BUF_COM1H(screen, screen->cursor_row)[my_col];
+           c2l = SCRN_BUF_COM2L(screen, screen->cursor_row)[my_col];
+           c2h = SCRN_BUF_COM2H(screen, screen->cursor_row)[my_col];
        })
 
        if (screen->cursor_row > screen->endHRow ||
@@ -5159,20 +5180,20 @@
                x = CurCursorX(screen, screen->cursor_row, screen->cursor_col),
                y = CursorY(screen, screen->cursor_row),
                curXtermChrSet(screen->cursor_row),
-               PAIRED_CHARS(&clo, &chi), 1);
+               PAIRED_CHARS(&clo, &chi), 1, 0);
 
 #if OPT_WIDE_CHARS
        if (c1l || c1h) {
                drawXtermText (screen, flags, currentGC,
                                x, y,
                                curXtermChrSet(screen->cur_row),
-                               PAIRED_CHARS(&c1l, &c1h), 1);
+                               PAIRED_CHARS(&c1l, &c1h), 1, iswide(base));
 
                if (c2l || c2h)
                        drawXtermText (screen, flags, currentGC,
                                        x, y,
                                        curXtermChrSet(screen->cur_row),
-                                       PAIRED_CHARS(&c2l, &c2h), 1);
+                                       PAIRED_CHARS(&c2l, &c2h), 1, iswide(base));
        }
 #endif
        screen->cursor_state = OFF;
@@ -5339,7 +5360,7 @@
 /*
  * set_character_class - takes a string of the form
  *
- *                 low[-high]:val[,low[-high]:val[...]]
+ *   low[-high]:val[,low[-high]:val[...]]
  *
  * and sets the indicated ranges to the indicated values.
  */
Index: config.guess
--- xterm-144+/config.guess     Thu Aug  3 14:00:32 2000
+++ xterm-145/config.guess      Thu Aug 24 21:41:14 2000
@@ -109,6 +109,9 @@
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    i?86:OS/2:*:*)
+        echo "i386-unknown-os2"
+       exit 0;;
     *:NetBSD:*:*)
        # Netbsd (nbsd) targets should (where applicable) match one or
        # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
Index: config.sub
--- xterm-144+/config.sub       Thu Aug  3 14:00:32 2000
+++ xterm-145/config.sub        Thu Aug 24 21:41:14 2000
@@ -122,6 +122,9 @@
 ### recognize some manufacturers as not being operating systems, so we
 ### can provide default operating systems below.
 case $os in
+       -os2)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86/'`
+               ;;
        -sun*os*)
                # Prevent following clause from handling this invalid input.
                ;;
@@ -1003,6 +1006,7 @@
                os=-nto-qnx
                ;;
        -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -os2 \
              | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
              | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
                ;;
Index: configure
--- xterm-144+/configure        Mon Aug 28 14:56:36 2000
+++ xterm-145/configure Sun Sep 10 21:53:18 2000
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13.19990117 
+# Generated automatically using autoconf version 2.13.20000819 
 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
 #
 # This configure script is free software; the Free Software Foundation
@@ -379,7 +379,7 @@
     verbose=yes ;;
 
   -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.13.19990117"
+    echo "configure generated by autoconf version 2.13.20000819"
     exit 0 ;;
 
   -with-* | --with-*)
@@ -644,10 +644,17 @@
 
 
 ###    checks for alternative programs
+
+case "$host_os" in
+openedition)   : ${CFLAGS="-O2 -Wc,dll -D_ALL_SOURCE -Wl,EDIT=NO"}
+               : ${LIBS="/usr/lib/Xaw.x /usr/lib/SM.x /usr/lib/ICE.x /usr/lib/X11.x"}
+               : ${CC=c89};;
+esac
+
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:651: checking for $ac_word" >&5
+echo "configure:658: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -677,7 +684,7 @@
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:681: checking for $ac_word" >&5
+echo "configure:688: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -728,7 +735,7 @@
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:732: checking for $ac_word" >&5
+echo "configure:739: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -760,7 +767,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:764: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:771: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -771,12 +778,12 @@
 
 cat > conftest.$ac_ext << EOF
 
-#line 775 "configure"
+#line 782 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -802,12 +809,12 @@
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:806: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:813: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:811: checking whether we are using GNU C" >&5
+echo "configure:818: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -816,7 +823,7 @@
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:820: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:827: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -835,7 +842,7 @@
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:839: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:846: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -867,7 +874,7 @@
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:871: checking how to run the C preprocessor" >&5
+echo "configure:878: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -882,13 +889,13 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 886 "configure"
+#line 893 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:892: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:899: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -899,13 +906,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 903 "configure"
+#line 910 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:909: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:916: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -916,13 +923,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 920 "configure"
+#line 927 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:926: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:933: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -948,13 +955,13 @@
 
 if test $ac_cv_prog_gcc = yes; then
     echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:952: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:959: checking whether ${CC-cc} needs -traditional" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
     ac_pattern="Autoconf.*'x'"
   cat > conftest.$ac_ext <<EOF
-#line 958 "configure"
+#line 965 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
@@ -972,7 +979,7 @@
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat > conftest.$ac_ext <<EOF
-#line 976 "configure"
+#line 983 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
@@ -998,7 +1005,7 @@
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1002: checking for $ac_word" >&5
+echo "configure:1009: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1039,7 +1046,7 @@
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1043: checking for a BSD compatible install" >&5
+echo "configure:1050: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1094,9 +1101,9 @@
 
 ###    checks for UNIX variants that set C preprocessor variables
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:1098: checking for AIX" >&5
+echo "configure:1105: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 1100 "configure"
+#line 1107 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -1118,7 +1125,7 @@
 
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1122: checking for POSIXized ISC" >&5
+echo "configure:1129: checking for POSIXized ISC" >&5
 if test -d /etc/conf/kconfig.d &&
   grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
 then
@@ -1140,17 +1147,17 @@
 
 ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-echo "configure:1144: checking for minix/config.h" >&5
+echo "configure:1151: checking for minix/config.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1149 "configure"
+#line 1156 "configure"
 #include "confdefs.h"
 #include <minix/config.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1161: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1197,17 +1204,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1201: checking for $ac_hdr" >&5
+echo "configure:1208: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1206 "configure"
+#line 1213 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1218: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1237,13 +1244,13 @@
 ###    checks for typedefs
 
 echo $ac_n "checking for size_t in <sys/types.h> or <stdio.h>""... $ac_c" 1>&6
-echo "configure:1241: checking for size_t in <sys/types.h> or <stdio.h>" >&5
+echo "configure:1248: checking for size_t in <sys/types.h> or <stdio.h>" >&5
 if eval "test \"`echo '$''{'cf_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 1247 "configure"
+#line 1254 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1256,7 +1263,7 @@
 size_t x
 ; return 0; }
 EOF
-if { (eval echo configure:1260: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1267: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_size_t=yes
 else
@@ -1276,12 +1283,12 @@
 
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1280: checking for ANSI C header files" >&5
+echo "configure:1287: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1285 "configure"
+#line 1292 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1289,7 +1296,7 @@
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1293: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1300: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1306,7 +1313,7 @@
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1310 "configure"
+#line 1317 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1324,7 +1331,7 @@
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1328 "configure"
+#line 1335 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1345,7 +1352,7 @@
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1349 "configure"
+#line 1356 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1356,7 +1363,7 @@
 exit (0); }
 
 EOF
-if { (eval echo configure:1360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1380,12 +1387,12 @@
 fi
 
 echo $ac_n "checking for time_t""... $ac_c" 1>&6
-echo "configure:1384: checking for time_t" >&5
+echo "configure:1391: checking for time_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_time_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1389 "configure"
+#line 1396 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1423,12 +1430,12 @@
        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1427: checking for $ac_func" >&5
+echo "configure:1434: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1432 "configure"
+#line 1439 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1451,7 +1458,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -1477,12 +1484,12 @@
 
 
 echo $ac_n "checking for memmove""... $ac_c" 1>&6
-echo "configure:1481: checking for memmove" >&5
+echo "configure:1488: checking for memmove" >&5
 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1486 "configure"
+#line 1493 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char memmove(); below.  */
@@ -1505,7 +1512,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_memmove=yes"
 else
@@ -1524,12 +1531,12 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for bcopy""... $ac_c" 1>&6
-echo "configure:1528: checking for bcopy" >&5
+echo "configure:1535: checking for bcopy" >&5
 if eval "test \"`echo '$''{'ac_cv_func_bcopy'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1533 "configure"
+#line 1540 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char bcopy(); below.  */
@@ -1552,7 +1559,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_bcopy=yes"
 else
@@ -1568,7 +1575,7 @@
   echo "$ac_t""yes" 1>&6
   
        echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6
-echo "configure:1572: checking if bcopy does overlapping moves" >&5
+echo "configure:1579: checking if bcopy does overlapping moves" >&5
 if eval "test \"`echo '$''{'cf_cv_good_bcopy'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1577,7 +1584,7 @@
   cf_cv_good_bcopy=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 1581 "configure"
+#line 1588 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1590,7 +1597,7 @@
 }
                
 EOF
-if { (eval echo configure:1594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cf_cv_good_bcopy=yes
 else
@@ -1628,7 +1635,7 @@
 
 
 echo $ac_n "checking for full tgetent function""... $ac_c" 1>&6
-echo "configure:1632: checking for full tgetent function" >&5
+echo "configure:1639: checking for full tgetent function" >&5
 if eval "test \"`echo '$''{'cf_cv_lib_tgetent'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1643,7 +1650,7 @@
   echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&5
 else
   cat > conftest.$ac_ext <<EOF
-#line 1647 "configure"
+#line 1654 "configure"
 #include "confdefs.h"
 
 /* terminfo implementations ignore the buffer argument, making it useless for
@@ -1657,7 +1664,7 @@
        tgetent(buffer, "vt100");
        exit(buffer[0] == 0); }
 EOF
-if { (eval echo configure:1661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&5
         if test -n "$cf_termlib" ; then
@@ -1693,7 +1700,7 @@
 EOF
 
        cat > conftest.$ac_ext <<EOF
-#line 1697 "configure"
+#line 1704 "configure"
 #include "confdefs.h"
 
 #include <termcap.h>
@@ -1704,7 +1711,7 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:1708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cat >> confdefs.h <<\EOF
 #define HAVE_TERMCAP_H 1
@@ -1722,7 +1729,7 @@
         # validate values for the TERM environment variable given to
         # child processes.
        echo $ac_n "checking for partial tgetent function""... $ac_c" 1>&6
-echo "configure:1726: checking for partial tgetent function" >&5
+echo "configure:1733: checking for partial tgetent function" >&5
 if eval "test \"`echo '$''{'cf_cv_lib_part_tgetent'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1731,14 +1738,14 @@
        for cf_termlib in $cf_TERMLIB ; do
                LIBS="$cf_save_LIBS -l$cf_termlib"
                cat > conftest.$ac_ext <<EOF
-#line 1735 "configure"
+#line 1742 "configure"
 #include "confdefs.h"
 
 int main() {
 tgetent(0, 0)
 ; return 0; }
 EOF
-if { (eval echo configure:1742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "there is a terminfo/tgetent in $cf_termlib" 1>&5
                         cf_cv_lib_part_tgetent="-l$cf_termlib"
@@ -1761,17 +1768,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1765: checking for $ac_hdr" >&5
+echo "configure:1772: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1770 "configure"
+#line 1777 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1782: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1812,17 +1819,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1816: checking for $ac_hdr" >&5
+echo "configure:1823: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1821 "configure"
+#line 1828 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1833: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1849,13 +1856,13 @@
 done
 
 echo $ac_n "checking for lastlog path""... $ac_c" 1>&6
-echo "configure:1853: checking for lastlog path" >&5
+echo "configure:1860: checking for lastlog path" >&5
 if eval "test \"`echo '$''{'cf_cv_path_lastlog'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 1859 "configure"
+#line 1866 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1870,7 +1877,7 @@
 char *path = _PATH_LASTLOG
 ; return 0; }
 EOF
-if { (eval echo configure:1874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_path_lastlog="_PATH_LASTLOG"
 else
@@ -1897,7 +1904,7 @@
 
 
 echo $ac_n "checking for utmp implementation""... $ac_c" 1>&6
-echo "configure:1901: checking for utmp implementation" >&5
+echo "configure:1908: checking for utmp implementation" >&5
 if eval "test \"`echo '$''{'cf_cv_have_utmp'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1905,7 +1912,7 @@
        cf_cv_have_utmp=no
 for cf_header in utmpx utmp ; do
        cat > conftest.$ac_ext <<EOF
-#line 1909 "configure"
+#line 1916 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1921,7 +1928,7 @@
        
 ; return 0; }
 EOF
-if { (eval echo configure:1925: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1932: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_have_utmp=$cf_header
         break
@@ -1931,7 +1938,7 @@
   rm -rf conftest*
   
        cat > conftest.$ac_ext <<EOF
-#line 1935 "configure"
+#line 1942 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1947,7 +1954,7 @@
        
 ; return 0; }
 EOF
-if { (eval echo configure:1951: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1958: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_have_utmp=$cf_header
         cat >> confdefs.h <<\EOF
@@ -1982,13 +1989,13 @@
 
 if test $cf_cv_have_utmp != no ; then
 echo $ac_n "checking if utmp.ut_host is declared""... $ac_c" 1>&6
-echo "configure:1986: checking if utmp.ut_host is declared" >&5
+echo "configure:1993: checking if utmp.ut_host is declared" >&5
 if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_host'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 1992 "configure"
+#line 1999 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1997,7 +2004,7 @@
 struct $cf_cv_have_utmp x; char *y = &x.ut_host[0]
 ; return 0; }
 EOF
-if { (eval echo configure:2001: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2008: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_have_utmp_ut_host=yes
 else
@@ -2021,7 +2028,7 @@
 
 if test $cf_cv_have_utmp != no ; then
 echo $ac_n "checking for exit-status in $cf_cv_have_utmp""... $ac_c" 1>&6
-echo "configure:2025: checking for exit-status in $cf_cv_have_utmp" >&5
+echo "configure:2032: checking for exit-status in $cf_cv_have_utmp" >&5
 if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_xstatus'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2033,7 +2040,7 @@
        ut_exit.ut_exit
 do
 cat > conftest.$ac_ext <<EOF
-#line 2037 "configure"
+#line 2044 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -2042,7 +2049,7 @@
 struct $cf_cv_have_utmp x; long y = x.$cf_result = 0
 ; return 0; }
 EOF
-if { (eval echo configure:2046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2053: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_have_utmp_ut_xstatus=$cf_result
         break
@@ -2074,13 +2081,13 @@
 
 if test $cf_cv_have_utmp != no ; then
 echo $ac_n "checking if utmp.ut_xtime is declared""... $ac_c" 1>&6
-echo "configure:2078: checking if utmp.ut_xtime is declared" >&5
+echo "configure:2085: checking if utmp.ut_xtime is declared" >&5
 if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_xtime'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 2084 "configure"
+#line 2091 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -2089,7 +2096,7 @@
 struct $cf_cv_have_utmp x; long y = x.ut_xtime = 0
 ; return 0; }
 EOF
-if { (eval echo configure:2093: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_have_utmp_ut_xtime=yes
 else
@@ -2097,7 +2104,7 @@
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 2101 "configure"
+#line 2108 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -2106,7 +2113,7 @@
 struct $cf_cv_have_utmp x; long y = x.ut_tv.tv_sec
 ; return 0; }
 EOF
-if { (eval echo configure:2110: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_have_utmp_ut_xtime=define
 else
@@ -2141,13 +2148,13 @@
 
 if test $cf_cv_have_utmp != no ; then
 echo $ac_n "checking if utmp.ut_session is declared""... $ac_c" 1>&6
-echo "configure:2145: checking if utmp.ut_session is declared" >&5
+echo "configure:2152: checking if utmp.ut_session is declared" >&5
 if eval "test \"`echo '$''{'cf_cv_have_utmp_ut_session'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 2151 "configure"
+#line 2158 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -2156,7 +2163,7 @@
 struct $cf_cv_have_utmp x; long y = x.ut_session
 ; return 0; }
 EOF
-if { (eval echo configure:2160: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2167: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_have_utmp_ut_session=yes
 else
@@ -2181,14 +2188,14 @@
        
 
 echo $ac_n "checking if $cf_cv_have_utmp is SYSV flavor""... $ac_c" 1>&6
-echo "configure:2185: checking if $cf_cv_have_utmp is SYSV flavor" >&5
+echo "configure:2192: checking if $cf_cv_have_utmp is SYSV flavor" >&5
 if eval "test \"`echo '$''{'cf_cv_sysv_utmp'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 test "$cf_cv_have_utmp" = "utmp" && cf_prefix="ut" || cf_prefix="utx"
 cat > conftest.$ac_ext <<EOF
-#line 2192 "configure"
+#line 2199 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -2202,7 +2209,7 @@
        end${cf_prefix}ent();
 ; return 0; }
 EOF
-if { (eval echo configure:2206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_sysv_utmp=yes
 else
@@ -2225,7 +2232,7 @@
 
 
 echo $ac_n "checking if you want to link with utempter""... $ac_c" 1>&6
-echo "configure:2229: checking if you want to link with utempter" >&5
+echo "configure:2236: checking if you want to link with utempter" >&5
 
 # Check whether --with-utempter or --without-utempter was given.
 if test "${with_utempter+set}" = set; then
@@ -2240,7 +2247,7 @@
 if test $use_utempter = yes ; then
        
 echo $ac_n "checking if we can link with utempter library""... $ac_c" 1>&6
-echo "configure:2244: checking if we can link with utempter library" >&5
+echo "configure:2251: checking if we can link with utempter library" >&5
 if eval "test \"`echo '$''{'cf_cv_have_utempter'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2248,7 +2255,7 @@
 cf_save_LIBS="$LIBS"
 LIBS="-lutempter $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2252 "configure"
+#line 2259 "configure"
 #include "confdefs.h"
 
 #include <utempter.h>
@@ -2260,7 +2267,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   
        cf_cv_have_utempter=yes
@@ -2291,13 +2298,13 @@
 
 
 echo $ac_n "checking if external errno is declared""... $ac_c" 1>&6
-echo "configure:2295: checking if external errno is declared" >&5
+echo "configure:2302: checking if external errno is declared" >&5
 if eval "test \"`echo '$''{'cf_cv_dcl_errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 2301 "configure"
+#line 2308 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_STDLIB_H
@@ -2310,7 +2317,7 @@
 long x = (long) errno
 ; return 0; }
 EOF
-if { (eval echo configure:2314: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2321: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval 'cf_cv_dcl_'errno'=yes'
 else
@@ -2341,13 +2348,13 @@
 # It's possible (for near-UNIX clones) that the data doesn't exist
 
 echo $ac_n "checking if external errno exists""... $ac_c" 1>&6
-echo "configure:2345: checking if external errno exists" >&5
+echo "configure:2352: checking if external errno exists" >&5
 if eval "test \"`echo '$''{'cf_cv_have_errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 2351 "configure"
+#line 2358 "configure"
 #include "confdefs.h"
 
 #undef errno
@@ -2357,7 +2364,7 @@
 errno = 2
 ; return 0; }
 EOF
-if { (eval echo configure:2361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval 'cf_cv_have_'errno'=yes'
 else
@@ -2389,7 +2396,7 @@
 
 
 echo $ac_n "checking for tty group name""... $ac_c" 1>&6
-echo "configure:2393: checking for tty group name" >&5
+echo "configure:2400: checking for tty group name" >&5
 if eval "test \"`echo '$''{'cf_cv_tty_group_name'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2447,7 +2454,7 @@
 
 
 echo $ac_n "checking if we may use tty group""... $ac_c" 1>&6
-echo "configure:2451: checking if we may use tty group" >&5
+echo "configure:2458: checking if we may use tty group" >&5
 if eval "test \"`echo '$''{'cf_cv_tty_group'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2456,7 +2463,7 @@
   cf_cv_tty_group=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 2460 "configure"
+#line 2467 "configure"
 #include "confdefs.h"
 
 #include <unistd.h>
@@ -2481,7 +2488,7 @@
 }
        
 EOF
-if { (eval echo configure:2485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cf_cv_tty_group=yes
 else
@@ -2506,7 +2513,7 @@
 ###    checks for compiler characteristics
 
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:2510: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:2517: checking for ${CC-cc} option to accept ANSI C" >&5
 if eval "test \"`echo '$''{'cf_cv_ansi_cc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2530,7 +2537,7 @@
 do
        CFLAGS="$cf_save_CFLAGS $cf_arg"
        cat > conftest.$ac_ext <<EOF
-#line 2534 "configure"
+#line 2541 "configure"
 #include "confdefs.h"
 
 #ifndef CC_HAS_PROTOS
@@ -2546,7 +2553,7 @@
        struct s2 {int (*f) (double a);};
 ; return 0; }
 EOF
-if { (eval echo configure:2550: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ansi_cc="$cf_arg"; break
 else
@@ -2573,12 +2580,12 @@
 fi
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:2577: checking for working const" >&5
+echo "configure:2584: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2582 "configure"
+#line 2589 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -2627,7 +2634,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2631: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2638: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -2651,12 +2658,12 @@
 ###    checks for system services and user specified options
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:2655: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:2662: checking for sys/wait.h that is POSIX.1 compatible" >&5
 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2660 "configure"
+#line 2667 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -2672,7 +2679,7 @@
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:2676: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -2695,13 +2702,13 @@
 
 
 echo $ac_n "checking for POSIX wait functions""... $ac_c" 1>&6
-echo "configure:2699: checking for POSIX wait functions" >&5
+echo "configure:2706: checking for POSIX wait functions" >&5
 if eval "test \"`echo '$''{'cf_cv_posix_wait'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 2705 "configure"
+#line 2712 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -2719,7 +2726,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_posix_wait=yes
 else
@@ -2740,13 +2747,13 @@
 
 
 echo $ac_n "checking if this platform has SYSV flavor""... $ac_c" 1>&6
-echo "configure:2744: checking if this platform has SYSV flavor" >&5
+echo "configure:2751: checking if this platform has SYSV flavor" >&5
 if eval "test \"`echo '$''{'cf_cv_sysv'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 2750 "configure"
+#line 2757 "configure"
 #include "confdefs.h"
 
 #include <curses.h>
@@ -2771,7 +2778,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_sysv=yes
 else
@@ -2792,7 +2799,7 @@
 
 
 echo $ac_n "checking for elf_begin in -lelf""... $ac_c" 1>&6
-echo "configure:2796: checking for elf_begin in -lelf" >&5
+echo "configure:2803: checking for elf_begin in -lelf" >&5
 ac_lib_var=`echo elf'_'elf_begin | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2800,7 +2807,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lelf  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2804 "configure"
+#line 2811 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2811,7 +2818,7 @@
 elf_begin()
 ; return 0; }
 EOF
-if { (eval echo configure:2815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2828,13 +2835,13 @@
   echo "$ac_t""yes" 1>&6
   
 echo $ac_n "checking if this is an SVR4 system""... $ac_c" 1>&6
-echo "configure:2832: checking if this is an SVR4 system" >&5
+echo "configure:2839: checking if this is an SVR4 system" >&5
 if eval "test \"`echo '$''{'cf_cv_svr4'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 2838 "configure"
+#line 2845 "configure"
 #include "confdefs.h"
 
 #include <elf.h>
@@ -2855,7 +2862,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2859: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2866: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_svr4=yes
 else
@@ -2881,13 +2888,13 @@
 
 
 echo $ac_n "checking if we must define _GNU_SOURCE""... $ac_c" 1>&6
-echo "configure:2885: checking if we must define _GNU_SOURCE" >&5
+echo "configure:2892: checking if we must define _GNU_SOURCE" >&5
 if eval "test \"`echo '$''{'cf_cv_gnu_source'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 2891 "configure"
+#line 2898 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int main() {
@@ -2897,7 +2904,7 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:2901: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2908: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_gnu_source=no
 else
@@ -2907,7 +2914,7 @@
   cf_save="$CFLAGS"
         CFLAGS="$CFLAGS -D_GNU_SOURCE"
         cat > conftest.$ac_ext <<EOF
-#line 2911 "configure"
+#line 2918 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int main() {
@@ -2917,7 +2924,7 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:2921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_gnu_source=no
 else
@@ -2942,7 +2949,7 @@
 # Uses ac_ vars as temps to allow command line to override cache and checks.
 # --without-x overrides everything else, but does not touch the cache.
 echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:2946: checking for X" >&5
+echo "configure:2953: checking for X" >&5
 
 
 # Check whether --with-x or --without-x was given.
@@ -3005,12 +3012,12 @@
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 3009 "configure"
+#line 3016 "configure"
 #include "confdefs.h"
 #include <$x_direct_test_include>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3014: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3021: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3079,14 +3086,14 @@
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3083 "configure"
+#line 3090 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:3090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   LIBS="$ac_save_LIBS"
 # We can link X programs with no special library path.
@@ -3186,7 +3193,7 @@
        # FIXME: modify the library lookup in autoconf to
        # allow _s.a suffix ahead of .a
        echo $ac_n "checking for open in -lc_s""... $ac_c" 1>&6
-echo "configure:3190: checking for open in -lc_s" >&5
+echo "configure:3197: checking for open in -lc_s" >&5
 ac_lib_var=`echo c_s'_'open | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3194,7 +3201,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lc_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3198 "configure"
+#line 3205 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3205,7 +3212,7 @@
 open()
 ; return 0; }
 EOF
-if { (eval echo configure:3209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3222,7 +3229,7 @@
   echo "$ac_t""yes" 1>&6
   LIBS="-lc_s $LIBS"
        echo $ac_n "checking for gethostname in -lbsd""... $ac_c" 1>&6
-echo "configure:3226: checking for gethostname in -lbsd" >&5
+echo "configure:3233: checking for gethostname in -lbsd" >&5
 ac_lib_var=`echo bsd'_'gethostname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3230,7 +3237,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lbsd  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3234 "configure"
+#line 3241 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3241,7 +3248,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:3245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3258,7 +3265,7 @@
   echo "$ac_t""yes" 1>&6
   LIBS="-lbsd $LIBS"
        echo $ac_n "checking for gethostname in -lnsl_s""... $ac_c" 1>&6
-echo "configure:3262: checking for gethostname in -lnsl_s" >&5
+echo "configure:3269: checking for gethostname in -lnsl_s" >&5
 ac_lib_var=`echo nsl_s'_'gethostname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3266,7 +3273,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3270 "configure"
+#line 3277 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3277,7 +3284,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:3281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3294,7 +3301,7 @@
   echo "$ac_t""yes" 1>&6
   LIBS="-lnsl_s $LIBS"
        echo $ac_n "checking for XOpenDisplay in -lX11_s""... $ac_c" 1>&6
-echo "configure:3298: checking for XOpenDisplay in -lX11_s" >&5
+echo "configure:3305: checking for XOpenDisplay in -lX11_s" >&5
 ac_lib_var=`echo X11_s'_'XOpenDisplay | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3302,7 +3309,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lX11_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3306 "configure"
+#line 3313 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3313,7 +3320,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:3317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3330,7 +3337,7 @@
   echo "$ac_t""yes" 1>&6
   LIBS="-lX11_s $LIBS"
        echo $ac_n "checking for XtAppInitialize in -lXt_s""... $ac_c" 1>&6
-echo "configure:3334: checking for XtAppInitialize in -lXt_s" >&5
+echo "configure:3341: checking for XtAppInitialize in -lXt_s" >&5
 ac_lib_var=`echo Xt_s'_'XtAppInitialize | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3338,7 +3345,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXt_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3342 "configure"
+#line 3349 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3349,7 +3356,7 @@
 XtAppInitialize()
 ; return 0; }
 EOF
-if { (eval echo configure:3353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3390,7 +3397,7 @@
        ;;
 *)
        echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:3394: checking for socket in -lsocket" >&5
+echo "configure:3401: checking for socket in -lsocket" >&5
 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3398,7 +3405,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3402 "configure"
+#line 3409 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3409,7 +3416,7 @@
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:3413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3437,7 +3444,7 @@
 fi
 
        echo $ac_n "checking for gethostname in -lnsl""... $ac_c" 1>&6
-echo "configure:3441: checking for gethostname in -lnsl" >&5
+echo "configure:3448: checking for gethostname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3445,7 +3452,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3449 "configure"
+#line 3456 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3456,7 +3463,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:3460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3507,17 +3514,17 @@
     case "`(uname -sr) 2>/dev/null`" in
     "SunOS 5"*)
       echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
-echo "configure:3511: checking whether -R must be followed by a space" >&5
+echo "configure:3518: checking whether -R must be followed by a space" >&5
       ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
       cat > conftest.$ac_ext <<EOF
-#line 3514 "configure"
+#line 3521 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -3533,14 +3540,14 @@
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 3537 "configure"
+#line 3544 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -3572,7 +3579,7 @@
     # libraries were built with DECnet support.  And karl@cs.umb.edu says
     # the Alpha needs dnet_stub (dnet does not exist).
     echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:3576: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:3583: checking for dnet_ntoa in -ldnet" >&5
 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3580,7 +3587,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3584 "configure"
+#line 3591 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3591,7 +3598,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:3595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3613,7 +3620,7 @@
 
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
       echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
-echo "configure:3617: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:3624: checking for dnet_ntoa in -ldnet_stub" >&5
 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3621,7 +3628,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet_stub  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3625 "configure"
+#line 3632 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3632,7 +3639,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:3636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3661,12 +3668,12 @@
     # The nsl library prevents programs from opening the X display
     # on Irix 5.2, according to dickey@clark.net.
     echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:3665: checking for gethostbyname" >&5
+echo "configure:3672: checking for gethostbyname" >&5
 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3670 "configure"
+#line 3677 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -3689,7 +3696,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gethostbyname=yes"
 else
@@ -3710,7 +3717,7 @@
 
     if test $ac_cv_func_gethostbyname = no; then
       echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3714: checking for gethostbyname in -lnsl" >&5
+echo "configure:3721: checking for gethostbyname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3718,7 +3725,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3722 "configure"
+#line 3729 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3729,7 +3736,7 @@
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:3733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3759,12 +3766,12 @@
     # -lsocket must be given before -lnsl if both are needed.
     # We assume that if connect needs -lnsl, so does gethostbyname.
     echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:3763: checking for connect" >&5
+echo "configure:3770: checking for connect" >&5
 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3768 "configure"
+#line 3775 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -3787,7 +3794,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_connect=yes"
 else
@@ -3808,7 +3815,7 @@
 
     if test $ac_cv_func_connect = no; then
       echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:3812: checking for connect in -lsocket" >&5
+echo "configure:3819: checking for connect in -lsocket" >&5
 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3816,7 +3823,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3820 "configure"
+#line 3827 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3827,7 +3834,7 @@
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:3831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3851,12 +3858,12 @@
 
     # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
     echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:3855: checking for remove" >&5
+echo "configure:3862: checking for remove" >&5
 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3860 "configure"
+#line 3867 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -3879,7 +3886,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_remove=yes"
 else
@@ -3900,7 +3907,7 @@
 
     if test $ac_cv_func_remove = no; then
       echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:3904: checking for remove in -lposix" >&5
+echo "configure:3911: checking for remove in -lposix" >&5
 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3908,7 +3915,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3912 "configure"
+#line 3919 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3919,7 +3926,7 @@
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:3923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3943,12 +3950,12 @@
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:3947: checking for shmat" >&5
+echo "configure:3954: checking for shmat" >&5
 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3952 "configure"
+#line 3959 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -3971,7 +3978,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_shmat=yes"
 else
@@ -3992,7 +3999,7 @@
 
     if test $ac_cv_func_shmat = no; then
       echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:3996: checking for shmat in -lipc" >&5
+echo "configure:4003: checking for shmat in -lipc" >&5
 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4000,7 +4007,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lipc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4004 "configure"
+#line 4011 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4011,7 +4018,7 @@
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:4015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4044,7 +4051,7 @@
   # libraries we check for below, so use a different variable.
   #  --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
   echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6
-echo "configure:4048: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:4055: checking for IceConnectionNumber in -lICE" >&5
 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4052,7 +4059,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4056 "configure"
+#line 4063 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4063,7 +4070,7 @@
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:4067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4090,7 +4097,7 @@
        LDFLAGS="$LDFLAGS $X_LIBS"
        CFLAGS="$CFLAGS $X_CFLAGS"
        echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:4094: checking for XOpenDisplay in -lX11" >&5
+echo "configure:4101: checking for XOpenDisplay in -lX11" >&5
 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4098,7 +4105,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4102 "configure"
+#line 4109 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4109,7 +4116,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:4113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4130,7 +4137,7 @@
 fi
 
        echo $ac_n "checking for XtAppInitialize in -lXt""... $ac_c" 1>&6
-echo "configure:4134: checking for XtAppInitialize in -lXt" >&5
+echo "configure:4141: checking for XtAppInitialize in -lXt" >&5
 ac_lib_var=`echo Xt'_'XtAppInitialize | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4138,7 +4145,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4142 "configure"
+#line 4149 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4149,7 +4156,7 @@
 XtAppInitialize()
 ; return 0; }
 EOF
-if { (eval echo configure:4153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4206,17 +4213,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4210: checking for $ac_hdr" >&5
+echo "configure:4217: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4215 "configure"
+#line 4222 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4220: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4227: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4264,7 +4271,7 @@
 
 
 echo $ac_n "checking for XextCreateExtension in -lXext""... $ac_c" 1>&6
-echo "configure:4268: checking for XextCreateExtension in -lXext" >&5
+echo "configure:4275: checking for XextCreateExtension in -lXext" >&5
 ac_lib_var=`echo Xext'_'XextCreateExtension | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4272,7 +4279,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXext  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4276 "configure"
+#line 4283 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4283,7 +4290,7 @@
 XextCreateExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:4287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4320,13 +4327,13 @@
                if test $cf_path != default ; then
                        CFLAGS="-I$cf_path/include $cf_save"
                        echo $ac_n "checking for $cf_test in $cf_path""... $ac_c" 1>&6
-echo "configure:4324: checking for $cf_test in $cf_path" >&5
+echo "configure:4331: checking for $cf_test in $cf_path" >&5
                else
                        echo $ac_n "checking for $cf_test""... $ac_c" 1>&6
-echo "configure:4327: checking for $cf_test" >&5
+echo "configure:4334: checking for $cf_test" >&5
                fi
                cat > conftest.$ac_ext <<EOF
-#line 4330 "configure"
+#line 4337 "configure"
 #include "confdefs.h"
 
 #include <X11/Intrinsic.h>
@@ -4335,7 +4342,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4346: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_result=yes
 else
@@ -4361,21 +4368,21 @@
                        if test $cf_path != default ; then
                                LIBS="-L$cf_path/lib $cf_lib $LIBS"
                                echo $ac_n "checking for $cf_lib in $cf_path""... $ac_c" 1>&6
-echo "configure:4365: checking for $cf_lib in $cf_path" >&5
+echo "configure:4372: checking for $cf_lib in $cf_path" >&5
                        else
                                LIBS="$cf_lib $LIBS"
                                echo $ac_n "checking for $cf_test in $cf_lib""... $ac_c" 1>&6
-echo "configure:4369: checking for $cf_test in $cf_lib" >&5
+echo "configure:4376: checking for $cf_test in $cf_lib" >&5
                        fi
                        cat > conftest.$ac_ext <<EOF
-#line 4372 "configure"
+#line 4379 "configure"
 #include "confdefs.h"
 
 int main() {
 $cf_test()
 ; return 0; }
 EOF
-if { (eval echo configure:4379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_result=yes
 else
@@ -4413,13 +4420,13 @@
 
 
 echo $ac_n "checking for declaration of fd_set""... $ac_c" 1>&6
-echo "configure:4417: checking for declaration of fd_set" >&5
+echo "configure:4424: checking for declaration of fd_set" >&5
 if eval "test \"`echo '$''{'cf_cv_type_fd_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   echo "trying sys/types alone" 1>&5
 cat > conftest.$ac_ext <<EOF
-#line 4423 "configure"
+#line 4430 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4427,7 +4434,7 @@
 fd_set x
 ; return 0; }
 EOF
-if { (eval echo configure:4431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_fd_set=sys/types.h
 else
@@ -4436,7 +4443,7 @@
   rm -rf conftest*
   echo "trying X11/Xpoll.h" 1>&5
 cat > conftest.$ac_ext <<EOF
-#line 4440 "configure"
+#line 4447 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_X11_XPOLL_H
@@ -4446,7 +4453,7 @@
 fd_set x
 ; return 0; }
 EOF
-if { (eval echo configure:4450: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_fd_set=X11/Xpoll.h
 else
@@ -4455,7 +4462,7 @@
   rm -rf conftest*
   echo "trying sys/select.h" 1>&5
 cat > conftest.$ac_ext <<EOF
-#line 4459 "configure"
+#line 4466 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4464,7 +4471,7 @@
 fd_set x
 ; return 0; }
 EOF
-if { (eval echo configure:4468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_fd_set=sys/select.h
 else
@@ -4490,13 +4497,13 @@
 
 
 echo $ac_n "checking for IRIX 6.5 baud-rate redefinitions""... $ac_c" 1>&6
-echo "configure:4494: checking for IRIX 6.5 baud-rate redefinitions" >&5
+echo "configure:4501: checking for IRIX 6.5 baud-rate redefinitions" >&5
 if eval "test \"`echo '$''{'cf_cv_termio_c_ispeed'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 4500 "configure"
+#line 4507 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4509,7 +4516,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4513: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_termio_c_ispeed=yes
 
@@ -4539,12 +4546,12 @@
 for ac_func in grantpt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4543: checking for $ac_func" >&5
+echo "configure:4550: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4548 "configure"
+#line 4555 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4567,7 +4574,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4589,7 +4596,7 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6
-echo "configure:4593: checking for openpty in -lutil" >&5
+echo "configure:4600: checking for openpty in -lutil" >&5
 ac_lib_var=`echo util'_'openpty | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4597,7 +4604,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lutil  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4601 "configure"
+#line 4608 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4608,7 +4615,7 @@
 openpty()
 ; return 0; }
 EOF
-if { (eval echo configure:4612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4619: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4642,7 +4649,7 @@
 # Extract the first word of "xterm", so it can be a program name with args.
 set dummy xterm; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4646: checking for $ac_word" >&5
+echo "configure:4653: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XTERM_PATH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4680,12 +4687,12 @@
        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4684: checking for $ac_func" >&5
+echo "configure:4691: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4689 "configure"
+#line 4696 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4708,7 +4715,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4734,7 +4741,7 @@
 
 
 echo $ac_n "checking if we should use imake to help""... $ac_c" 1>&6
-echo "configure:4738: checking if we should use imake to help" >&5
+echo "configure:4745: checking if we should use imake to help" >&5
 
 # Check whether --enable-imake or --disable-imake was given.
 if test "${enable_imake+set}" = set; then
@@ -4759,7 +4766,7 @@
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4763: checking for $ac_word" >&5
+echo "configure:4770: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_IMAKE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4898,7 +4905,7 @@
 
 
 echo $ac_n "checking for default terminal-id""... $ac_c" 1>&6
-echo "configure:4902: checking for default terminal-id" >&5
+echo "configure:4909: checking for default terminal-id" >&5
 
 # Check whether --with-terminal-id or --without-terminal-id was given.
 if test "${with_terminal_id+set}" = set; then
@@ -4919,7 +4926,7 @@
 
 
 echo $ac_n "checking for default terminal-type""... $ac_c" 1>&6
-echo "configure:4923: checking for default terminal-type" >&5
+echo "configure:4930: checking for default terminal-type" >&5
 
 # Check whether --with-terminal-type or --without-terminal-type was given.
 if test "${with_terminal_type+set}" = set; then
@@ -4936,7 +4943,7 @@
 
 
 echo $ac_n "checking for private terminfo-directory""... $ac_c" 1>&6
-echo "configure:4940: checking for private terminfo-directory" >&5
+echo "configure:4947: checking for private terminfo-directory" >&5
 
 # Check whether --with-own-terminfo or --without-own-terminfo was given.
 if test "${with_own_terminfo+set}" = set; then
@@ -4975,7 +4982,7 @@
 
 ###    checks for optional features
 echo $ac_n "checking if you want active-icons""... $ac_c" 1>&6
-echo "configure:4979: checking if you want active-icons" >&5
+echo "configure:4986: checking if you want active-icons" >&5
 
 # Check whether --enable-active-icon or --disable-active-icon was given.
 if test "${enable_active_icon+set}" = set; then
@@ -5001,7 +5008,7 @@
 fi
 
 echo $ac_n "checking if you want ANSI color""... $ac_c" 1>&6
-echo "configure:5005: checking if you want ANSI color" >&5
+echo "configure:5012: checking if you want ANSI color" >&5
 
 # Check whether --enable-ansi-color or --disable-ansi-color was given.
 if test "${enable_ansi_color+set}" = set; then
@@ -5027,7 +5034,7 @@
 if test $enable_ansi_color = yes ; then
 
        echo $ac_n "checking if you want 16 colors like aixterm""... $ac_c" 1>&6
-echo "configure:5031: checking if you want 16 colors like aixterm" >&5
+echo "configure:5038: checking if you want 16 colors like aixterm" >&5
        
 # Check whether --enable-16-color or --disable-16-color was given.
 if test "${enable_16_color+set}" = set; then
@@ -5051,7 +5058,7 @@
 
 
        echo $ac_n "checking if you want 256 colors""... $ac_c" 1>&6
-echo "configure:5055: checking if you want 256 colors" >&5
+echo "configure:5062: checking if you want 256 colors" >&5
        
 # Check whether --enable-256-color or --disable-256-color was given.
 if test "${enable_256_color+set}" = set; then
@@ -5078,7 +5085,7 @@
 
        else
        echo $ac_n "checking if you want 88 colors""... $ac_c" 1>&6
-echo "configure:5082: checking if you want 88 colors" >&5
+echo "configure:5089: checking if you want 88 colors" >&5
        
 # Check whether --enable-88-color or --disable-88-color was given.
 if test "${enable_88_color+set}" = set; then
@@ -5109,7 +5116,7 @@
 fi
 
 echo $ac_n "checking if you want blinking cursor""... $ac_c" 1>&6
-echo "configure:5113: checking if you want blinking cursor" >&5
+echo "configure:5120: checking if you want blinking cursor" >&5
 
 # Check whether --enable-blink-cursor or --disable-blink-cursor was given.
 if test "${enable_blink_cursor+set}" = set; then
@@ -5135,7 +5142,7 @@
 if test $enable_ansi_color = yes ; then
 
        echo $ac_n "checking if you want bold colors mapped like IBM PC""... $ac_c" 1>&6
-echo "configure:5139: checking if you want bold colors mapped like IBM PC" >&5
+echo "configure:5146: checking if you want bold colors mapped like IBM PC" >&5
        
 # Check whether --enable-bold-color or --disable-bold-color was given.
 if test "${enable_bold_color+set}" = set; then
@@ -5159,7 +5166,7 @@
 
 
        echo $ac_n "checking if you want color-mode enabled by default""... $ac_c" 1>&6
-echo "configure:5163: checking if you want color-mode enabled by default" >&5
+echo "configure:5170: checking if you want color-mode enabled by default" >&5
        
 # Check whether --enable-color-mode or --disable-color-mode was given.
 if test "${enable_color_mode+set}" = set; then
@@ -5185,7 +5192,7 @@
 fi
 
 echo $ac_n "checking if you want support for color highlighting""... $ac_c" 1>&6
-echo "configure:5189: checking if you want support for color highlighting" >&5
+echo "configure:5196: checking if you want support for color highlighting" >&5
 
 # Check whether --enable-highlighting or --disable-highlighting was given.
 if test "${enable_highlighting+set}" = set; then
@@ -5209,7 +5216,7 @@
 
 
 echo $ac_n "checking if you want support for doublesize characters""... $ac_c" 1>&6
-echo "configure:5213: checking if you want support for doublesize characters" >&5
+echo "configure:5220: checking if you want support for doublesize characters" >&5
 
 # Check whether --enable-doublechars or --disable-doublechars was given.
 if test "${enable_doublechars+set}" = set; then
@@ -5233,7 +5240,7 @@
 
 
 echo $ac_n "checking if you want fallback-support for box characters""... $ac_c" 1>&6
-echo "configure:5237: checking if you want fallback-support for box characters" >&5
+echo "configure:5244: checking if you want fallback-support for box characters" >&5
 
 # Check whether --enable-boxchars or --disable-boxchars was given.
 if test "${enable_boxchars+set}" = set; then
@@ -5257,7 +5264,7 @@
 
 
 echo $ac_n "checking if you want support for HP-style function keys""... $ac_c" 1>&6
-echo "configure:5261: checking if you want support for HP-style function keys" >&5
+echo "configure:5268: checking if you want support for HP-style function keys" >&5
 
 # Check whether --enable-hp-fkeys or --disable-hp-fkeys was given.
 if test "${enable_hp_fkeys+set}" = set; then
@@ -5283,7 +5290,7 @@
 fi
 
 echo $ac_n "checking if you want support for SCO-style function keys""... $ac_c" 1>&6
-echo "configure:5287: checking if you want support for SCO-style function keys" >&5
+echo "configure:5294: checking if you want support for SCO-style function keys" >&5
 
 # Check whether --enable-sco-fkeys or --disable-sco-fkeys was given.
 if test "${enable_sco_fkeys+set}" = set; then
@@ -5309,7 +5316,7 @@
 fi
 
 echo $ac_n "checking if you want support for internationalization""... $ac_c" 1>&6
-echo "configure:5313: checking if you want support for internationalization" >&5
+echo "configure:5320: checking if you want support for internationalization" >&5
 
 # Check whether --enable-i18n or --disable-i18n was given.
 if test "${enable_i18n+set}" = set; then
@@ -5335,7 +5342,7 @@
 fi
 
 echo $ac_n "checking if you want support for initial-erase setup""... $ac_c" 1>&6
-echo "configure:5339: checking if you want support for initial-erase setup" >&5
+echo "configure:5346: checking if you want support for initial-erase setup" >&5
 
 # Check whether --enable-initial-erase or --disable-initial-erase was given.
 if test "${enable_initial_erase+set}" = set; then
@@ -5361,7 +5368,7 @@
 fi
 
 echo $ac_n "checking if you want support for input-method""... $ac_c" 1>&6
-echo "configure:5365: checking if you want support for input-method" >&5
+echo "configure:5372: checking if you want support for input-method" >&5
 
 # Check whether --enable-input-method or --disable-input-method was given.
 if test "${enable_input_method+set}" = set; then
@@ -5381,13 +5388,13 @@
 echo "$ac_t""$enable_ximp" 1>&6
 
 echo $ac_n "checking if X libraries support input-method""... $ac_c" 1>&6
-echo "configure:5385: checking if X libraries support input-method" >&5
+echo "configure:5392: checking if X libraries support input-method" >&5
 if eval "test \"`echo '$''{'cf_cv_input_method'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 5391 "configure"
+#line 5398 "configure"
 #include "confdefs.h"
 
 #include <X11/IntrinsicP.h>
@@ -5414,7 +5421,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_input_method=yes
 else
@@ -5437,7 +5444,7 @@
 fi
 
 echo $ac_n "checking if you want support for logging""... $ac_c" 1>&6
-echo "configure:5441: checking if you want support for logging" >&5
+echo "configure:5448: checking if you want support for logging" >&5
 
 # Check whether --enable-logging or --disable-logging was given.
 if test "${enable_logging+set}" = set; then
@@ -5461,7 +5468,7 @@
 EOF
 
        echo $ac_n "checking if you want to allow logging via a pipe""... $ac_c" 1>&6
-echo "configure:5465: checking if you want to allow logging via a pipe" >&5
+echo "configure:5472: checking if you want to allow logging via a pipe" >&5
        
 # Check whether --enable-logfile-exec or --disable-logfile-exec was given.
 if test "${enable_logfile_exec+set}" = set; then
@@ -5488,7 +5495,7 @@
 fi
 
 echo $ac_n "checking if you want support for iconify/maximize translations""... $ac_c" 1>&6
-echo "configure:5492: checking if you want support for iconify/maximize translations" >&5
+echo "configure:5499: checking if you want support for iconify/maximize translations" >&5
 
 # Check whether --enable-maximize or --disable-maximize was given.
 if test "${enable_maximize+set}" = set; then
@@ -5512,7 +5519,7 @@
 
 
 echo $ac_n "checking if you want NumLock to override keyboard tables""... $ac_c" 1>&6
-echo "configure:5516: checking if you want NumLock to override keyboard tables" >&5
+echo "configure:5523: checking if you want NumLock to override keyboard tables" >&5
 
 # Check whether --enable-num-lock or --disable-num-lock was given.
 if test "${enable_num_lock+set}" = set; then
@@ -5536,7 +5543,7 @@
 
 
 echo $ac_n "checking if you want support for right-scrollbar""... $ac_c" 1>&6
-echo "configure:5540: checking if you want support for right-scrollbar" >&5
+echo "configure:5547: checking if you want support for right-scrollbar" >&5
 
 # Check whether --enable-rightbar or --disable-rightbar was given.
 if test "${enable_rightbar+set}" = set; then
@@ -5562,7 +5569,7 @@
 fi
 
 echo $ac_n "checking if you want check for redundant name-change""... $ac_c" 1>&6
-echo "configure:5566: checking if you want check for redundant name-change" >&5
+echo "configure:5573: checking if you want check for redundant name-change" >&5
 
 # Check whether --enable-samename or --disable-samename was given.
 if test "${enable_samename+set}" = set; then
@@ -5586,7 +5593,7 @@
 
 
 echo $ac_n "checking if you want support for tek4014""... $ac_c" 1>&6
-echo "configure:5590: checking if you want support for tek4014" >&5
+echo "configure:5597: checking if you want support for tek4014" >&5
 
 # Check whether --enable-tek4014 or --disable-tek4014 was given.
 if test "${enable_tek4014+set}" = set; then
@@ -5616,7 +5623,7 @@
 fi
 
 echo $ac_n "checking if you want pulldown menus with a toolbar""... $ac_c" 1>&6
-echo "configure:5620: checking if you want pulldown menus with a toolbar" >&5
+echo "configure:5627: checking if you want pulldown menus with a toolbar" >&5
 
 # Check whether --enable-toolbar or --disable-toolbar was given.
 if test "${enable_toolbar+set}" = set; then
@@ -5640,7 +5647,7 @@
 
 
 echo $ac_n "checking if you want VT52 emulation""... $ac_c" 1>&6
-echo "configure:5644: checking if you want VT52 emulation" >&5
+echo "configure:5651: checking if you want VT52 emulation" >&5
 
 # Check whether --enable-vt52 or --disable-vt52 was given.
 if test "${enable_vt52+set}" = set; then
@@ -5664,7 +5671,7 @@
 
 
 echo $ac_n "checking if you want wide-character support""... $ac_c" 1>&6
-echo "configure:5668: checking if you want wide-character support" >&5
+echo "configure:5675: checking if you want wide-character support" >&5
 
 # Check whether --enable-wide-chars or --disable-wide-chars was given.
 if test "${enable_wide_chars+set}" = set; then
@@ -5693,7 +5700,7 @@
 fi
 
 echo $ac_n "checking if you want DECterm Locator support""... $ac_c" 1>&6
-echo "configure:5697: checking if you want DECterm Locator support" >&5
+echo "configure:5704: checking if you want DECterm Locator support" >&5
 
 # Check whether --enable-dec-locator or --disable-dec-locator was given.
 if test "${enable_dec_locator+set}" = set; then
@@ -5719,7 +5726,7 @@
 fi
 
 echo $ac_n "checking if you want -ziconbeep option""... $ac_c" 1>&6
-echo "configure:5723: checking if you want -ziconbeep option" >&5
+echo "configure:5730: checking if you want -ziconbeep option" >&5
 
 # Check whether --enable-ziconbeep or --disable-ziconbeep was given.
 if test "${enable_ziconbeep+set}" = set; then
@@ -5744,7 +5751,7 @@
 
 # development/testing aids
 echo $ac_n "checking if you want debugging traces""... $ac_c" 1>&6
-echo "configure:5748: checking if you want debugging traces" >&5
+echo "configure:5755: checking if you want debugging traces" >&5
 
 # Check whether --enable-trace or --disable-trace was given.
 if test "${enable_trace+set}" = set; then
@@ -5773,7 +5780,7 @@
 
 
 echo $ac_n "checking if you want to see long compiling messages""... $ac_c" 1>&6
-echo "configure:5777: checking if you want to see long compiling messages" >&5
+echo "configure:5784: checking if you want to see long compiling messages" >&5
 
 # Check whether --enable-echo or --disable-echo was given.
 if test "${enable_echo+set}" = set; then
@@ -5813,7 +5820,7 @@
 
 
 echo $ac_n "checking if you want magic cookie emulation""... $ac_c" 1>&6
-echo "configure:5817: checking if you want magic cookie emulation" >&5
+echo "configure:5824: checking if you want magic cookie emulation" >&5
 
 # Check whether --enable-xmc-glitch or --disable-xmc-glitch was given.
 if test "${enable_xmc_glitch+set}" = set; then
@@ -5842,7 +5849,7 @@
 
 if test -n "$GCC" ; then
 echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6
-echo "configure:5846: checking if you want to turn on gcc warnings" >&5
+echo "configure:5853: checking if you want to turn on gcc warnings" >&5
 
 # Check whether --enable-warnings or --disable-warnings was given.
 if test "${enable_warnings+set}" = set; then
@@ -5882,9 +5889,9 @@
 if test -n "$GCC"
 then
        echo "checking for $CC __attribute__ directives" 1>&6
-echo "configure:5886: checking for $CC __attribute__ directives" >&5
+echo "configure:5893: checking for $CC __attribute__ directives" >&5
        cat > conftest.$ac_ext <<EOF
-#line 5888 "configure"
+#line 5895 "configure"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -5922,7 +5929,7 @@
 EOF
                        ;;
                esac
-               if { (eval echo configure:5926: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:5933: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
                        test -n "$verbose" && echo "$ac_t""... $cf_attribute" 1>&6
                        cat conftest.h >>confdefs.h
 #              else
@@ -5939,11 +5946,11 @@
 if test -n "$GCC"
 then
                cat > conftest.$ac_ext <<EOF
-#line 5943 "configure"
+#line 5950 "configure"
 int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
                echo "checking for $CC warning options" 1>&6
-echo "configure:5947: checking for $CC warning options" >&5
+echo "configure:5954: checking for $CC warning options" >&5
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="-W -Wall"
        cf_warn_CONST=""
@@ -5961,7 +5968,7 @@
                Wstrict-prototypes $cf_warn_CONST
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo configure:5965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:5972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
                        test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6
                        EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
                        test "$cf_opt" = Wcast-qual && EXTRA_CFLAGS="$EXTRA_CFLAGS -DXTSTRINGDEFINES"
@@ -6080,7 +6087,7 @@
     echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
     exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
   -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.13.19990117"
+    echo "$CONFIG_STATUS generated by autoconf version 2.13.20000819"
     exit 0 ;;
   -help | --help | --hel | --he | --h)
     echo "\$ac_cs_usage"; exit 0 ;;
Index: configure.in
--- xterm-144+/configure.in     Mon Aug 28 14:56:36 2000
+++ xterm-145/configure.in      Sun Sep 10 21:53:08 2000
@@ -27,12 +27,21 @@
 dnl ---------------------------------------------------------------------------
 dnl Process this file with autoconf to produce a configure script.
 dnl
-AC_PREREQ(2.13.19990117)
+AC_PREREQ(2.13.20000819)
 AC_INIT(charproc.c)
 AC_CONFIG_HEADER(xtermcfg.h:xtermcfg.hin)
 CF_CHECK_CACHE
 
 ###    checks for alternative programs
+
+dnl Only add to this case statement when a system has a compiler that is not
+dnl detected by AC_PROG_CC.
+case "$host_os" in
+openedition)   : ${CFLAGS="-O2 -Wc,dll -D_ALL_SOURCE -Wl,EDIT=NO"}
+               : ${LIBS="/usr/lib/Xaw.x /usr/lib/SM.x /usr/lib/ICE.x /usr/lib/X11.x"}
+               : ${CC=c89};;
+esac
+
 AC_PROG_CC
 AC_PROG_CPP
 AC_GCC_TRADITIONAL
Index: data.c
--- xterm-144+/data.c   Sat Feb 12 06:47:41 2000
+++ xterm-145/data.c    Sat Sep  9 11:17:31 2000
@@ -26,10 +26,6 @@
  * SOFTWARE.
  */
 
-#ifdef HAVE_CONFIG_H
-#include <xtermcfg.h>
-#endif
-
 #include <ptyx.h>              /* gets Xt stuff, too */
 #include <data.h>
 
@@ -68,12 +64,12 @@
 #endif /* OPT_ZICONBEEP */
 
 #if OPT_SAME_NAME
-Boolean sameName;            /* Don't change the title or icon name if it
+Boolean sameName;      /* Don't change the title or icon name if it
                        is the same.  This prevents flicker on the screen at
                        the cost of an extra request to the server */
 #endif
 
-int am_slave = 0;      /* set to 1 if running as a slave process */
+int am_slave = -1;     /* set to file-descriptor if we're a slave process */
 int max_plus1;
 #ifdef VMS
 int Select_mask;
Index: fontutils.c
--- xterm-144+/fontutils.c      Mon Aug 28 14:56:36 2000
+++ xterm-145/fontutils.c       Mon Sep 11 05:35:21 2000
@@ -397,12 +397,17 @@
 
 /*
  * Case-independent comparison for font-names, including wildcards.
+ * XLFD allows '?' as a wildcard, but we do not handle that (no one seems
+ * to use it).
  */
 static Boolean
 same_font_name(char *pattern, char *match)
 {
        while (*pattern && *match) {
-               if (*pattern == '*') {
+               if (*pattern == *match) {
+                       pattern++;
+                       match++;
+               } else if (*pattern == '*' || *match == '*') {
                        if (same_font_name(pattern+1, match)) {
                                return True;
                        } else if (same_font_name(pattern, match+1)) {
@@ -431,11 +436,10 @@
 static int
 got_bold_font(Display *dpy, XFontStruct *fs, char *requested)
 {
-       FontNameProperties *fp;
        char actual[MAX_FONTNAME];
        int got;
 
-       if ((fp = get_font_name_props(dpy, fs, actual)) == 0)
+       if (get_font_name_props(dpy, fs, actual) == 0)
                got = 0;
        else
                got = same_font_name(requested, actual);
@@ -527,8 +531,10 @@
                 || (bfs = XLoadQueryFont (screen->display, bfontname)) == 0) {
                        bfs = nfs;
                        TRACE(("...cannot load a matching bold font\n"));
-               } else if (!same_font_size(nfs, bfs)
-                || !got_bold_font(screen->display, bfs, bfontname)) {
+               } else if (same_font_size(nfs, bfs)
+                && got_bold_font(screen->display, bfs, bfontname)) {
+                       TRACE(("...got a matching bold font\n"));
+               } else {
                        XFreeFont(screen->display, bfs);
                        bfs = nfs;
                        TRACE(("...did not get a matching bold font\n"));
Index: main.c
--- xterm-144+/main.c   Mon Aug 28 14:56:36 2000
+++ xterm-145/main.c    Sat Sep  9 11:34:18 2000
@@ -90,6 +90,7 @@
 #include <error.h>
 #include <menu.h>
 #include <main.h>
+#include <xstrings.h>
 
 #if OPT_WIDE_CHARS
 #include <charclass.h>
@@ -131,36 +132,19 @@
 #endif
 #endif /* MINIX */
 
-#ifdef att
-#define ATT
-#endif
-
 #ifdef __osf__
 #define USE_SYSV_SIGNALS
 #define WTMP
 #endif
 
-#ifdef SVR4
-#undef  SYSV                   /* predefined on Solaris 2.4 */
-#define SYSV                   /* SVR4 is (approx) superset of SVR3 */
-#define ATT
-#ifndef __sgi
+#if defined(SVR4) && !defined(__sgi)
 #define USE_TERMIOS
 #endif
-#endif
 
-#if defined(SYSV) && defined(i386) && !defined(SVR4)
-#define ATT
-#define USE_HANDSHAKE
+#ifdef USE_ISPTS_FLAG
 static Bool IsPts = False;
 #endif
 
-#if (defined(ATT) && !defined(__sgi)) || (defined(SYSV) && defined(i386)) || (defined (__GLIBC__) && ((__GLIBC__ > 2) || (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
-#define USE_USG_PTYS
-#else
-#define USE_HANDSHAKE
-#endif
-
 #if defined(SYSV) && !defined(SVR4) && !defined(ISC22) && !defined(ISC30)
 /* older SYSV systems cannot ignore SIGHUP.
    Shell hangs, or you get extra shells, or something like that */
@@ -192,7 +176,6 @@
 #ifdef __MVS__
 #define SVR4
 #define USE_POSIX_TERMIOS
-#define USE_USG_PTYS
 #define USE_SYSV_PGRP
 #define USE_SYSV_SIGNALS
 #undef  HAS_LTCHARS
@@ -454,13 +437,8 @@
 
 #ifdef  PUCC_PTYD
 #include <local/openpty.h>
-int    Ptyfd;
 #endif /* PUCC_PTYD */
 
-#ifdef sequent
-#define USE_GET_PSEUDOTTY
-#endif
-
 #ifndef UTMP_FILENAME
 #ifdef UTMP_FILE
 #define UTMP_FILENAME UTMP_FILE
@@ -538,10 +516,12 @@
 #ifndef VMS
 static SIGNAL_T reapchild (int n);
 static int spawn (void);
-static int pty_search (int *pty);
 static void remove_termcap_entry (char *buf, char *str);
+#ifdef USE_PTY_SEARCH
+static int pty_search (int *pty);
+#endif
 #endif /* ! VMS */
-static char *base_name (char *name);
+
 static void get_terminal (void);
 static void resize (TScreen *s, char *oldtc, char *newtc);
 
@@ -764,7 +744,7 @@
 #endif
 
 static int inhibit;
-static char passedPty[2];      /* name if pty if slave */
+static char passedPty[PTYCHARLEN + 1]; /* name if pty if slave */
 
 #if defined(TIOCCONS) || defined(SRIOCSREDIR)
 static int Console;
@@ -1310,6 +1290,111 @@
 
 Atom wm_delete_window;
 
+/*
+ * Some platforms use names such as /dev/tty01, others /dev/pts/1.  Parse off
+ * the "tty01" or "pts/1" portion, and return that for use as an identifier for
+ * utmp.
+ */
+static char *
+my_pty_name(char *device)
+{
+       size_t len = strlen(device);
+       Boolean name = False;
+
+       while (len != 0) {
+               int ch = device[len-1];
+               if (isdigit(ch)) {
+                       len--;
+               } else if (ch == '/') {
+                       if (name)
+                               break;
+                       len--;
+               } else if (isalpha(ch)) {
+                       name = True;
+                       len--;
+               } else {
+                       break;
+               }
+       }
+       TRACE(("my_pty_name(%s) -> '%s'\n", device, device + len));
+       return device + len;
+}
+
+/*
+ * If the name contains a '/', it is a "pts/1" case.  Otherwise, return the
+ * last few characters for a utmp identifier.
+ */
+static char *
+my_pty_id(char *device)
+{
+       char *name = my_pty_name(device);
+       char *leaf = x_basename(name);
+
+       if (name == leaf) {     /* no '/' in the name */
+               int len = strlen(leaf);
+               if (PTYCHARLEN < len)
+                       leaf = leaf + (len - PTYCHARLEN);
+       }
+       TRACE(("my_pty_id  (%s) -> '%s'\n", device, leaf));
+       return leaf;
+}
+
+/*
+ * Set the tty/pty identifier
+ */
+static void
+set_pty_id(char *device, char *id)
+{
+       char *name = my_pty_name(device);
+       char *leaf = x_basename(name);
+
+       if (name == leaf) {
+               strcpy(my_pty_id(device), id);
+       } else {
+               strcpy(leaf, id);
+       }
+       TRACE(("set_pty_id(%s) -> '%s'\n", id, device));
+}
+
+/*
+ * The original -S option accepts two characters to identify the pty, and a
+ * file-descriptor (assumed to be nonzero).  That is not general enough, so we
+ * check first if the option contains a '/' to delimit the two fields, and if
+ * not, fall-thru to the original logic.
+ */
+static Boolean
+ParseSccn(char *option)
+{
+       char *leaf = x_basename(option);
+       Boolean code = False;
+
+       if (leaf != option) {
+               if (leaf - option > 1
+                && leaf - option <= PTYCHARLEN
+                && sscanf(leaf, "%d", &am_slave) == 1) {
+                       size_t len = leaf - option - 1;
+                       /*
+                        * If the given length is less than PTYCHARLEN, that is
+                        * all right because the calling application may be
+                        * giving us a path for /dev/pts, which would be
+                        * followed by one or more decimal digits.
+                        *
+                        * For fixed-width fields, it is up to the calling
+                        * application to provide leading 0's, if needed.
+                        */
+                       strncpy(passedPty, option, len);
+                       passedPty[len] = 0;
+                       code = True;
+               }
+       } else {
+               code = (sscanf(option, "%c%c%d",
+                       passedPty, passedPty+1, &am_slave) == 3);
+       }
+       TRACE(("ParseSccn(%s) = '%s' %d (%s)\n", option,
+               passedPty, am_slave, code ? "OK" : "ERR"));
+       return code;
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -1340,10 +1425,10 @@
 #endif
 
 #ifndef AMOEBA
-       /* +2 in case longer tty name like /dev/ttyq255 */
-       ttydev = (char *) malloc (sizeof(TTYDEV) + 2);
-#ifndef __osf__
-       ptydev = (char *) malloc (sizeof(PTYDEV) + 2);
+       /* extra length in case longer tty name like /dev/ttyq255 */
+       ttydev = (char *) malloc (sizeof(TTYDEV) + 80);
+#ifdef USE_PTY_DEVICE
+       ptydev = (char *) malloc (sizeof(PTYDEV) + 80);
        if (!ttydev || !ptydev)
 #else
        if (!ttydev)
@@ -1355,7 +1440,7 @@
            exit (1);
        }
        strcpy (ttydev, TTYDEV);
-#ifndef __osf__
+#ifdef USE_PTY_DEVICE
        strcpy (ptydev, PTYDEV);
 #endif
 
@@ -1758,8 +1843,7 @@
 #endif /* TIOCCONS */
                continue;
             case 'S':
-               if (sscanf(*argv + 2, "%c%c%d", passedPty, passedPty+1,
-                          &am_slave) != 3)
+               if (!ParseSccn(*argv + 2))
                    Syntax(*argv);
                continue;
 #ifdef DEBUG
@@ -1836,7 +1920,7 @@
 
            if (!resource.title) {
                if (command_to_exec) {
-                   resource.title = base_name (command_to_exec[0]);
+                   resource.title = x_basename (command_to_exec[0]);
                } /* else not reached */
            }
 
@@ -1908,7 +1992,7 @@
        /* Realize procs have now been executed */
 
 #ifndef AMOEBA
-       if (am_slave) { /* Write window id so master end can read and use */
+       if (am_slave >= 0) { /* Write window id so master end can read and use */
            char buf[80];
 
            buf[0] = '\0';
@@ -1996,30 +2080,37 @@
        }
 }
 
-static char *
-base_name(char *name)
-{
-       register char *cp;
-
-       cp = strrchr(name, '/');
-       return(cp ? cp + 1 : name);
-}
-
 #ifndef AMOEBA
-/* This function opens up a pty master and stuffs its value into pty.
+/*
+ * This function opens up a pty master and stuffs its value into pty.
+ *
  * If it finds one, it returns a value of 0.  If it does not find one,
  * it returns a value of !0.  This routine is designed to be re-entrant,
  * so that if a pty master is found and later, we find that the slave
  * has problems, we can re-enter this function and get another one.
  */
-
 static int
-get_pty (int *pty)
+get_pty (int *pty, char *from GCC_UNUSED)
 {
-#if defined(__osf__) || (defined(__GLIBC__) && !defined(USE_USG_PTYS))
+       int result = 1;
+#ifdef PUCC_PTYD
+
+       result = ((*pty = openrpty(ttydev, ptydev,
+                               (resource.utmpInhibit ? OPTY_NOP : OPTY_LOGIN),
+                               getuid(), from)) < 0);
+
+#elif defined(__osf__) || (defined(__GLIBC__) && !defined(USE_USG_PTYS))
+
        int tty;
-       return (openpty(pty, &tty, ttydev, NULL, NULL));
-#elif (defined(SYSV) && defined(i386) && !defined(SVR4)) || defined(__QNXNTO__)
+       result = openpty(pty, &tty, ttydev, NULL, NULL);
+
+#elif defined(__QNXNTO__)
+
+       result = pty_search(pty);
+
+#else
+#if defined(USE_ISPTS_FLAG)
+
        /*
          The order of this code is *important*.  On SYSV/386 we want to open
          a /dev/ttyp? first if at all possible.  If none are available, then
@@ -2043,91 +2134,101 @@
          for the "if (IsPts)" statement in spawn(); we have two different
          device types which need to be handled differently.
          */
-       if (pty_search(pty) == 0)
-           return 0;
-       return 1;
-#elif defined(USE_USG_PTYS) || defined(__CYGWIN__)
+       result = pty_search(pty);
+
+#endif
+#if defined(USE_USG_PTYS) || defined(__CYGWIN__)
+
 #ifdef __GLIBC__ /* if __GLIBC__ and USE_USG_PTYS, we know glibc >= 2.1 */
        /* GNU libc 2 allows us to abstract away from having to know the
           master pty device name. */
-       if ((*pty = getpt()) < 0) {
-           return 1;
+       if ((*pty = getpt()) >= 0) {
+           strcpy(ttydev, ptsname(*pty));
+           result = 0;
        }
-       strcpy(ttydev, ptsname(*pty));
 #elif defined(__MVS__)
-       return pty_search(pty);
+       result = pty_search(pty);
 #else
-       if ((*pty = open ("/dev/ptmx", O_RDWR)) < 0) {
-           return 1;
-       }
+       result = ((*pty = open ("/dev/ptmx", O_RDWR)) < 0);
 #endif
-#if defined(SVR4) || defined(SCO325) || (defined(i386) && defined(SYSV))
-       strcpy(ttydev, ptsname(*pty));
-#if defined (SYSV) && defined(i386) && !defined(SVR4)
-       IsPts = True;
+#if defined(SVR4) || defined(SCO325) || defined(USE_ISPTS_FLAG)
+       if (!result)
+           strcpy(ttydev, ptsname(*pty));
+#ifdef USE_ISPTS_FLAG
+       IsPts = !result;        /* true if we're successful */
 #endif
 #endif
-       return 0;
+
 #elif defined(AIXV3)
-       if ((*pty = open ("/dev/ptc", O_RDWR)) < 0) {
-           return 1;
+
+       if ((*pty = open ("/dev/ptc", O_RDWR)) >= 0) {
+           strcpy(ttydev, ttyname(*pty));
+           result = 0;
        }
-       strcpy(ttydev, ttyname(*pty));
-       return 0;
-#elif defined(__sgi) && (OSMAJORVERSION >= 4)
-       char    *tty_name;
 
-       tty_name = _getpty (pty, O_RDWR, 0622, 0);
-       if (tty_name == 0)
-           return 1;
-       strcpy (ttydev, tty_name);
-       return 0;
 #elif defined(__convex__)
-       char *pty_name, *getpty();
+
+       char *pty_name;
+       extern char *getpty(void);
 
        while ((pty_name = getpty()) != NULL) {
            if ((*pty = open (pty_name, O_RDWR)) >= 0) {
                strcpy(ptydev, pty_name);
                strcpy(ttydev, pty_name);
-               ttydev[5] = 't';
-               return 0;
+               *x_basename(ttydev) = 't';
+               result = 0;
+               break;
            }
        }
-       return 1;
-#elif defined(USE_GET_PSEUDOTTY)
-       return ((*pty = getpseudotty (&ttydev, &ptydev)) >= 0 ? 0 : 1);
+
+#elif defined(sequent)
+
+       result = ((*pty = getpseudotty (&ttydev, &ptydev)) < 0);
+
+#elif defined(__sgi) && (OSMAJORVERSION >= 4)
+
+       char    *tty_name;
+
+       tty_name = _getpty (pty, O_RDWR, 0622, 0);
+       if (tty_name != 0) {
+           strcpy (ttydev, tty_name);
+           result = 0;
+       }
+
 #elif (defined(__sgi) && (OSMAJORVERSION < 4)) || (defined(umips) && defined (SYSTYPE_SYSV))
+
        struct stat fstat_buf;
 
        *pty = open ("/dev/ptc", O_RDWR);
-       if (*pty < 0 || (fstat (*pty, &fstat_buf)) < 0) {
-         return(1);
+       if (*pty >= 0 && (fstat (*pty, &fstat_buf)) >= 0) {
+           result = 0;
+           sprintf (ttydev, "/dev/ttyq%d", minor(fstat_buf.st_rdev));
        }
-       sprintf (ttydev, "/dev/ttyq%d", minor(fstat_buf.st_rdev));
-#ifndef __sgi
-       sprintf (ptydev, "/dev/ptyq%d", minor(fstat_buf.st_rdev));
-       if ((*tty = open (ttydev, O_RDWR)) < 0) {
-         close (*pty);
-         return(1);
-       }
-#endif /* !__sgi */
-       /* got one! */
-       return(0);
-#else /* __sgi or umips */
 
-#ifdef __hpux
+#elif defined(__hpux)
+
        /*
         * Use the clone device if it works, otherwise use pty_search logic.
         */
        if ((*pty = open("/dev/ptym/clone", O_RDWR)) >= 0) {
-               strcpy(ttydev, ptsname(*pty));
-               return(0);
+           strcpy(ttydev, ptsname(*pty));
+           result = 0;
+       } else {
+           result = pty_search(pty);
        }
-#endif
 
-       return pty_search(pty);
+#else
+
+       result = pty_search(pty);
 
 #endif
+#endif
+
+       TRACE(("get_pty(ttydev=%s, ptydev=%s) %s fd=%d\n",
+               ttydev != 0 ? ttydev : "?",
+               ptydev != 0 ? ptydev : "?",
+               result ? "FAIL" : "OK", *pty));
+       return result;
 }
 
 /*
@@ -2136,34 +2237,34 @@
  * a functional interface for allocating a pty.
  * Returns 0 if found a pty, 1 if fails.
  */
+#ifdef USE_PTY_SEARCH
 static int
 pty_search(int *pty)
 {
     static int devindex = 0, letter = 0;
 
 #if defined(CRAY) || defined(__MVS__)
-    for (; devindex < MAXPTTYS; devindex++) {
+    while (devindex < MAXPTTYS) {
        sprintf (ttydev, TTYFORMAT, devindex);
        sprintf (ptydev, PTYFORMAT, devindex);
+       devindex++;
 
+       TRACE(("pty_search(ttydev=%s, ptydev=%s)\n", ttydev, ptydev));
        if ((*pty = open (ptydev, O_RDWR)) >= 0) {
-           /* We need to set things up for our next entry
-            * into this function!
-            */
-           (void) devindex++;
            return 0;
        }
     }
 #else /* CRAY || __MVS__ */
     while (PTYCHAR1[letter]) {
-       ttydev [strlen(ttydev) - 2]  = ptydev [strlen(ptydev) - 2] =
-           PTYCHAR1 [letter];
+       ttydev [strlen(ttydev) - 2] =
+       ptydev [strlen(ptydev) - 2] = PTYCHAR1 [letter];
 
        while (PTYCHAR2[devindex]) {
-           ttydev [strlen(ttydev) - 1] = ptydev [strlen(ptydev) - 1] =
-               PTYCHAR2 [devindex];
-           /* for next time around loop or next entry to this function */
+           ttydev [strlen(ttydev) - 1] =
+           ptydev [strlen(ptydev) - 1] = PTYCHAR2 [devindex];
            devindex++;
+
+           TRACE(("pty_search(ttydev=%s, ptydev=%s)\n", ttydev, ptydev));
            if ((*pty = open (ptydev, O_RDWR)) >= 0) {
 #ifdef sun
                /* Need to check the process group of the pty.
@@ -2180,7 +2281,7 @@
            }
        }
        devindex = 0;
-       (void) letter++;
+       letter++;
     }
 #endif /* CRAY else */
     /*
@@ -2189,6 +2290,7 @@
      */
     return 1;
 }
+#endif /* USE_PTY_SEARCH */
 #endif /* AMOEBA */
 
 static void
@@ -2430,14 +2532,12 @@
        signal(SIGTTOU,SIG_IGN);
 #endif
 
-       if (am_slave) {
+       if (am_slave >= 0) {
                screen->respond = am_slave;
-#ifndef __osf__
-               ptydev[strlen(ptydev) - 2] = ttydev[strlen(ttydev) - 2] =
-                       passedPty[0];
-               ptydev[strlen(ptydev) - 1] = ttydev[strlen(ttydev) - 1] =
-                       passedPty[1];
-#endif /* __osf__ */
+               set_pty_id(ttydev, passedPty);
+#ifdef USE_PTY_DEVICE
+               set_pty_id(ptydev, passedPty);
+#endif
                setgid (screen->gid);
                setuid (screen->uid);
        } else {
@@ -2568,29 +2668,13 @@
                        tty = -1;
                }
 
-#ifdef PUCC_PTYD
-               if(-1 == (screen->respond = openrpty(ttydev, ptydev,
-                               (resource.utmpInhibit ?  OPTY_NOP : OPTY_LOGIN),
-                               getuid(), XDisplayString(screen->display))))
-#else /* not PUCC_PTYD */
-               if (get_pty (&screen->respond))
-#endif /* PUCC_PTYD */
+               if (get_pty (&screen->respond, XDisplayString(screen->display)))
                {
                        /*  no ptys! */
                        (void) fprintf(stderr, "%s: no available ptys: %s\n",
                                       xterm_name, strerror(errno));
                        exit (ERROR_PTYS);
                }
-#ifdef PUCC_PTYD
-                 else {
-                       /*
-                        *  set the fd of the master in a global var so
-                        *  we can undo all this on exit
-                        *
-                        */
-                       Ptyfd = screen->respond;
-                 }
-#endif /* PUCC_PTYD */
        }
 
        /* avoid double MapWindow requests */
@@ -2719,7 +2803,7 @@
        }
 #endif
 
-       if (!am_slave) {
+       if (am_slave < 0) {
 #ifdef USE_HANDSHAKE
            if (pipe(pc_pipe) || pipe(cp_pipe))
                SysError (ERROR_FORK);
@@ -2737,15 +2821,11 @@
 #else
                int pgrp = getpid();
 #endif
-#if defined(HAVE_UTMP) && defined(USE_SYSV_UTMP)
-               char* ptyname;
-               char* ptynameptr = 0;
-#endif
 
 #ifdef USE_USG_PTYS
-#if defined(SYSV) && defined(i386) && !defined(SVR4)
+#ifdef USE_ISPTS_FLAG
                if (IsPts) {    /* SYSV386 supports both, which did we open? */
-#endif /* SYSV && i386 && !SVR4 */
+#endif
                int ptyfd;
 
                setpgrp();
@@ -2791,9 +2871,9 @@
                        ws.ws_ypixel = FullHeight(screen);
                }
 #endif
-#if defined(SYSV) && defined(i386) && !defined(SVR4)
+#ifdef USE_ISPTS_FLAG
                } else {        /* else pty, not pts */
-#endif /* SYSV && i386 && !SVR4 */
+#endif
 #endif /* USE_USG_PTYS */
 
 #ifdef USE_HANDSHAKE           /* warning, goes for a long ways */
@@ -2913,9 +2993,9 @@
                        }
                        (void) strcpy(ttydev, ptr);
                }
-#if defined(SYSV) && defined(i386) && !defined(SVR4)
+#ifdef USE_ISPTS_FLAG
                } /* end of IsPts else clause */
-#endif /* SYSV && i386 && !SVR4 */
+#endif
 
 #endif /* USE_HANDSHAKE -- from near fork */
 
@@ -3349,31 +3429,10 @@
                **   - We need to do it before we go and change our
                **     user and group id's.
                */
-#ifdef CRAY
-#define PTYCHARLEN 4
-#endif
-
-#ifdef __osf__
-#define PTYCHARLEN 5
-#endif
-
-#ifndef PTYCHARLEN
-#define PTYCHARLEN 2
-#endif
-
                (void) setutent ();
                /* set up entry to search for */
-               ptyname = ttydev;
                bzero((char *)&utmp, sizeof(utmp));
-#ifndef __sgi
-               if (PTYCHARLEN >= (int)strlen(ptyname))
-                   ptynameptr = ptyname;
-               else
-                   ptynameptr = ptyname + strlen(ptyname) - PTYCHARLEN;
-#else
-               ptynameptr = ptyname + sizeof("/dev/tty")-1;
-#endif
-               (void) strncpy(utmp.ut_id, ptynameptr, sizeof (utmp.ut_id));
+               (void) strncpy(utmp.ut_id, my_pty_id(ttydev), sizeof (utmp.ut_id));
 
                utmp.ut_type = DEAD_PROCESS;
 
@@ -3395,10 +3454,10 @@
                               (pw && pw->pw_name) ? pw->pw_name : "????",
                               sizeof(utmp.ut_user));
 
-               /* why are we copying this string again? look up 16 lines. */
-               (void)strncpy(utmp.ut_id, ptynameptr, sizeof(utmp.ut_id));
+               /* why are we copying this string again?  (see above) */
+               (void) strncpy(utmp.ut_id, my_pty_id(ttydev), sizeof(utmp.ut_id));
                (void) strncpy (utmp.ut_line,
-                       ptyname + strlen("/dev/"), sizeof (utmp.ut_line));
+                       my_pty_name(ttydev), sizeof (utmp.ut_line));
 
 #ifdef HAVE_UTMP_UT_HOST
                (void) strncpy(buf, DisplayString(screen->display),
@@ -3458,7 +3517,7 @@
                            (i = open(etc_utmp, O_WRONLY)) >= 0) {
                                bzero((char *)&utmp, sizeof(utmp));
                                (void) strncpy(utmp.ut_line,
-                                              ttydev + strlen("/dev/"),
+                                              my_pty_name(ttydev),
                                               sizeof(utmp.ut_line));
                                (void) strncpy(utmp.ut_name, pw->pw_name,
                                               sizeof(utmp.ut_name));
@@ -3510,8 +3569,8 @@
                if (term->misc.login_shell &&
                (i = open(etc_lastlog, O_WRONLY)) >= 0) {
                    bzero((char *)&lastlog, sizeof (struct lastlog));
-                   (void) strncpy(lastlog.ll_line, ttydev +
-                       sizeof("/dev"),
+                   (void) strncpy(lastlog.ll_line,
+                       my_pty_name(ttydev),
                        sizeof (lastlog.ll_line));
                    (void) strncpy(lastlog.ll_host,
                          XDisplayString (screen->display),
@@ -3676,10 +3735,7 @@
                 *(ptr = pw->pw_shell) == 0))
 #endif /* HAVE_UTMP */
                        ptr = "/bin/sh";
-               if ((shname = strrchr(ptr, '/')) != 0)
-                       shname++;
-               else
-                       shname = ptr;
+               shname = x_basename(ptr);
                shname_minus = (char *)malloc(strlen(shname) + 2);
                (void) strcpy(shname_minus, "-");
                (void) strcat(shname_minus, shname);
@@ -3734,7 +3790,7 @@
                         * another one.
                         */
                        (void) close(screen->respond);
-                       if (get_pty(&screen->respond)) {
+                       if (get_pty(&screen->respond, XDisplayString(screen->display))) {
                            /* no more ptys! */
                            fprintf(stderr,
                                    "%s: child process can find no available ptys: %s\n",
@@ -3875,10 +3931,7 @@
 
        if ((path = getenv("PATH")) == NULL)
            path = DEF_PATH;
-       if ((name = strrchr(program, '/')) != NULL)
-           name++;
-       else
-           name = program;
+       name = x_basename(program);
 
        do {
            register char *p = programpath;
@@ -4103,11 +4156,7 @@
 
        if ((shell = getenv("SHELL")) == NULL)
            shell = DEF_SHELL; /* "cannot happen" */
-       if ((shname = strrchr(shell, '/')) != NULL)
-           shname++;
-       else
-           shname = shell;
-
+       shname = x_basename(shell);
        shname_minus = malloc(strlen(shname) + 2);
        (void) strcpy(shname_minus, "-");
        (void) strcat(shname_minus, shname);
@@ -4192,11 +4241,8 @@
        struct utmp utmp;
        struct utmp *utptr;
 #endif
-       char* ptyname;
-       char* ptynameptr = 0;
 #if defined(WTMP) && !defined(SVR4) && !(defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)))
        int fd;                 /* for /etc/wtmp */
-       int i;
 #endif
 
        /* don't do this more than once */
@@ -4205,7 +4251,7 @@
        xterm_exiting = True;
 
 #ifdef PUCC_PTYD
-       closepty(ttydev, ptydev, (resource.utmpInhibit ?  OPTY_NOP : OPTY_LOGIN), Ptyfd);
+       closepty(ttydev, ptydev, (resource.utmpInhibit ?  OPTY_NOP : OPTY_LOGIN), screen->respond);
 #endif /* PUCC_PTYD */
 
        /* cleanup the utmp entry we forged earlier */
@@ -4214,13 +4260,8 @@
            && added_utmp_entry
 #endif /* USE_HANDSHAKE */
            ) {
-           ptyname = ttydev;
            utmp.ut_type = USER_PROCESS;
-           if (PTYCHARLEN >= (int)strlen(ptyname))
-               ptynameptr = ptyname;
-           else
-               ptynameptr = ptyname + strlen(ptyname) - PTYCHARLEN;
-           (void) strncpy(utmp.ut_id, ptynameptr, sizeof(utmp.ut_id));
+           (void) strncpy(utmp.ut_id, my_pty_id(ttydev), sizeof(utmp.ut_id));
            (void) setutent();
            utptr = getutid(&utmp);
            /* write it out only if it exists, and the pid's match */
@@ -4249,8 +4290,8 @@
                    /* set wtmp entry if wtmp file exists */
                    if (term->misc.login_shell &&
                        (fd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
-                     i = write(fd, utptr, sizeof(*utptr));
-                     i = close(fd);
+                       write(fd, utptr, sizeof(*utptr));
+                       close(fd);
                    }
 #endif
 #endif
@@ -4263,7 +4304,7 @@
        struct utmp utmp;
 
        if (!resource.utmpInhibit && added_utmp_entry &&
-           (!am_slave && tslot > 0 && (wfd = open(etc_utmp, O_WRONLY)) >= 0)){
+           (am_slave < 0 && tslot > 0 && (wfd = open(etc_utmp, O_WRONLY)) >= 0)){
                bzero((char *)&utmp, sizeof(utmp));
                lseek(wfd, (long)(tslot * sizeof(utmp)), 0);
                write(wfd, (char *)&utmp, sizeof(utmp));
@@ -4271,12 +4312,12 @@
 #ifdef WTMP
                if (term->misc.login_shell &&
                    (wfd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
-                       register int i;
-                       (void) strncpy(utmp.ut_line, ttydev +
-                           sizeof("/dev"), sizeof (utmp.ut_line));
+                       (void) strncpy(utmp.ut_line,
+                           my_pty_name(ttydev),
+                           sizeof (utmp.ut_line));
                        time(&utmp.ut_time);
-                       i = write(wfd, (char *)&utmp, sizeof(utmp));
-                       i = close(wfd);
+                       write(wfd, (char *)&utmp, sizeof(utmp));
+                       close(wfd);
                }
 #endif /* WTMP */
        }
@@ -4291,10 +4332,10 @@
 #endif
 
 #ifndef AMOEBA
-       if (!am_slave) {
+       if (am_slave < 0) {
                /* restore ownership of tty and pty */
                set_owner (ttydev, 0, 0, 0666);
-#if (!defined(__sgi) && !defined(__osf__) && !defined(__hpux))
+#if (defined(USE_PTY_DEVICE) && !defined(__sgi) && !defined(__hpux))
                set_owner (ptydev, 0, 0, 0666);
 #endif
        }
@@ -4314,13 +4355,13 @@
        register char *temp;
 
        TRACE(("resize %s\n", oldtc));
-       if ((ptr1 = strindex (oldtc, "co#")) == NULL){
+       if ((ptr1 = x_strindex (oldtc, "co#")) == NULL){
                strcat (oldtc, "co#80:");
-               ptr1 = strindex (oldtc, "co#");
+               ptr1 = x_strindex (oldtc, "co#");
        }
-       if ((ptr2 = strindex (oldtc, "li#")) == NULL){
+       if ((ptr2 = x_strindex (oldtc, "li#")) == NULL){
                strcat (oldtc, "li#24:");
-               ptr2 = strindex (oldtc, "li#");
+               ptr2 = x_strindex (oldtc, "li#");
        }
        if(ptr1 > ptr2) {
                li_first++;
Index: menu.c
--- xterm-144+/menu.c   Mon Aug 28 14:56:36 2000
+++ xterm-145/menu.c    Mon Sep 11 05:36:24 2000
@@ -469,7 +469,7 @@
 
     if ((mw = obtain_menu(w, me)) == 0
      || sizeof_menu(w, me) == 0) {
-       mw = create_menu (w, term, me);
+       mw = create_menu (w, term, (MenuIndex) me);
        created = (mw != 0);
     }
     if (mw == 0)
Index: misc.c
--- xterm-144+/misc.c   Mon Aug 28 14:56:36 2000
+++ xterm-145/misc.c    Wed Sep  6 19:00:40 2000
@@ -1976,23 +1976,6 @@
        environ [++envindex] = NULL;
 }
 
-/*
- * returns a pointer to the first occurrence of s2 in s1,
- * or NULL if there are none.
- */
-char *strindex ( register char *s1, register char *s2)
-{
-       register char   *s3;
-       size_t s2len = strlen (s2);
-
-       while ((s3=strchr(s1, *s2)) != NULL) {
-               if (strncmp(s3, s2, s2len) == 0)
-                       return (s3);
-               s1 = ++s3;
-       }
-       return (NULL);
-}
-
 /*ARGSUSED*/
 int
 xerror(Display *d, register XErrorEvent *ev)
Index: os2main.c
--- xterm-144+/os2main.c        Mon Aug 28 14:56:36 2000
+++ xterm-145/os2main.c Sat Sep  9 11:18:39 2000
@@ -89,6 +89,7 @@
 #include <error.h>
 #include <menu.h>
 #include <main.h>
+#include <xstrings.h>
 
 #include <sys/termio.h>
 
@@ -107,7 +108,6 @@
 #include <signal.h>
 
 static SIGNAL_T reapchild (int n);
-static char *base_name (char *name);
 static int spawn (void);
 static void get_terminal (void);
 static void resize (TScreen *s, char *oldtc, char *newtc);
@@ -869,7 +869,7 @@
        ptydev = (char *) malloc (PTMS_BUFSZ);
        if (!ttydev || !ptydev) {
            fprintf (stderr,
-                    "%s:  unable to allocate memory for ttydev or ptydev\n",
+                    "%s:  unable to allocate memory for ttydev or ptydev\n",
                     ProgramName);
            exit (1);
        }
@@ -884,14 +884,14 @@
        */
        d_tio.c_iflag = ICRNL|IXON;
        d_tio.c_oflag = OPOST|ONLCR|TAB3;
-       d_tio.c_cflag = B38400|CS8|CREAD|PARENB|HUPCL;
-       d_tio.c_lflag = ISIG|ICANON|ECHO|ECHOE|ECHOK;
+       d_tio.c_cflag = B38400|CS8|CREAD|PARENB|HUPCL;
+       d_tio.c_lflag = ISIG|ICANON|ECHO|ECHOE|ECHOK;
        d_tio.c_line = 0;
        d_tio.c_cc[VINTR] = CONTROL('C');       /* '^C' */
        d_tio.c_cc[VERASE] = 0x7f;              /* DEL  */
        d_tio.c_cc[VKILL] = CONTROL('U');       /* '^U' */
        d_tio.c_cc[VQUIT] = CQUIT;              /* '^\' */
-       d_tio.c_cc[VEOF] = CEOF;                /* '^D' */
+       d_tio.c_cc[VEOF] = CEOF;                /* '^D' */
        d_tio.c_cc[VEOL] = CEOL;                /* '^@' */
 
        /* Init the Toolkit. */
@@ -1051,7 +1051,7 @@
 
            if (!resource.title) {
                if (command_to_exec) {
-                   resource.title = base_name (command_to_exec[0]);
+                   resource.title = x_basename (command_to_exec[0]);
                } /* else not reached */
            }
 
@@ -1078,7 +1078,7 @@
         so the debug feature is disabled by default. */
        int i = -1;
        if(debug) {
-               creat_as (getuid(), getgid(), True, "xterm.debug.log", 0666);
+               creat_as (getuid(), getgid(), True, "xterm.debug.log", 0666);
                i = open ("xterm.debug.log", O_WRONLY | O_TRUNC, 0666);
        }
        if(i >= 0) {
@@ -1100,7 +1100,7 @@
 
        /* Realize procs have now been executed */
 
-       if (am_slave) { /* Write window id so master end can read and use */
+       if (am_slave >= 0) { /* Write window id so master end can read and use */
            char buf[80];
 
            buf[0] = '\0';
@@ -1150,15 +1150,6 @@
        return 0;
 }
 
-static char *
-base_name(char *name)
-{
-       register char *cp;
-
-       cp = strrchr(name, '/');
-       return(cp ? cp + 1 : name);
-}
-
 /*
  * Called from get_pty to iterate over likely pseudo terminals
  * we might allocate.  Used on those systems that do not have
@@ -1175,7 +1166,7 @@
        if (fd && ptioctl(fd,PTMS_GETPTY,namebuf)==0) {
                strcpy(ttydev,namebuf);
                strcpy(ptydev,namebuf);
-               ttydev[5] = 't';
+               *x_basename(ttydev) = 't';
                close (fd);
                if ((*pty = open(ptydev, O_RDWR)) >= 0) {
 #ifdef PTYDEBUG
@@ -1187,24 +1178,25 @@
        return 1;
 }
 
-/* This function opens up a pty master and stuffs its value into pty.
+/*
+ * This function opens up a pty master and stuffs its value into pty.
+ *
  * If it finds one, it returns a value of 0.  If it does not find one,
  * it returns a value of !0.  This routine is designed to be re-entrant,
  * so that if a pty master is found and later, we find that the slave
  * has problems, we can re-enter this function and get another one.
  */
-
 static int
 get_pty (int *pty)
 {
        return pty_search(pty);
 }
 
-static void
-get_terminal (void)
 /*
  * sets up X and initializes the terminal structure except for term.buf.fildes.
  */
+static void
+get_terminal (void)
 {
        register TScreen *screen = &term->screen;
 
@@ -1332,12 +1324,12 @@
        screen->uid = getuid();
        screen->gid = getgid();
 
-       if (am_slave) {
+       if (am_slave >= 0) {
                screen->respond = am_slave;
-               ptydev[strlen(ptydev) - 2] = ttydev[strlen(ttydev) - 2] =
-                       passedPty[0];
-               ptydev[strlen(ptydev) - 1] = ttydev[strlen(ttydev) - 1] =
-                       passedPty[1];
+               ptydev[strlen(ptydev) - 2] =
+               ttydev[strlen(ttydev) - 2] = passedPty[0];
+               ptydev[strlen(ptydev) - 1] =
+               ttydev[strlen(ttydev) - 1] = passedPty[1];
 
                setgid (screen->gid);
                setuid (screen->uid);
@@ -1384,8 +1376,8 @@
                         * if started directly from xdm or xinit,
                         * in which case we just use the defaults as above.
                         */
-/**/                   if(ioctl(tty, TCGETA, &tio) == -1)
-                               tio = d_tio;
+/**/                   if(ioctl(tty, TCGETA, &tio) == -1)
+                               tio = d_tio;
 
                        close (tty);
                        /* tty is no longer an open fd! */
@@ -1482,7 +1474,7 @@
                ws.ws_ypixel = FullHeight(screen);
        }
 
-       if (!am_slave) {
+       if (am_slave < 0) {
 
                char sema[40];
                HEV sev;
@@ -1516,7 +1508,7 @@
                        if ((tty = open(ttydev, O_RDWR, 0)) < 0) {
                                /* dumm gelaufen */
                                fprintf(stderr, "Cannot open slave side of PTY\n");
-                               exit(1);
+                               exit(1);
                        }
 
                        /* use the same tty name that everyone else will use
@@ -1662,13 +1654,7 @@
                        if (!ptr) ptr = getenv("OS2_SHELL");
                        if (!ptr) ptr = "SORRY_NO_SHELL_FOUND";
 
-                       if (shname = strrchr(ptr, '/'))
-                               shname++;
-                       else if (shname = strrchr(ptr,'\\'))
-                               shname++;
-                       else
-                               shname = ptr;
-
+                       shname = x_basename(ptr);
                        if (command_to_exec) {
                                char *exargv[10]; /*XXX*/
 
@@ -1734,7 +1720,7 @@
        if(screen->logging)
                CloseLog(screen);
 #endif
-       if (!am_slave) {
+       if (am_slave < 0) {
                /* restore ownership of tty and pty */
                chown (ttydev, 0, 0);
                chown (ptydev, 0, 0);
Index: ptydata.c
--- xterm-144+/ptydata.c        Wed Jun 14 15:50:37 2000
+++ xterm-145/ptydata.c Sun Sep 10 22:16:38 2000
@@ -134,6 +134,10 @@
                              screen->utf_char <<= 6;
                              screen->utf_char |= (c & 0x3f);
                            }
+                           if ((screen->utf_char >= 0xd800 && screen->utf_char <= 0xdfff) ||
+                               (screen->utf_char == 0xfffe) || (screen->utf_char == 0xffff)) {
+                             screen->utf_char = UCS_REPL;
+                           }
                            screen->utf_count--;
                            if (screen->utf_count == 0)
                                data->buf2[j++] = screen->utf_char;
Index: ptyx.h
--- xterm-144+/ptyx.h   Mon Aug 28 14:56:36 2000
+++ xterm-145/ptyx.h    Fri Sep  8 07:12:56 2000
@@ -95,6 +95,16 @@
 ** System V definitions
 */
 
+#ifdef att
+#define ATT
+#endif
+
+#ifdef SVR4
+#undef  SYSV                   /* predefined on Solaris 2.4 */
+#define SYSV                   /* SVR4 is (approx) superset of SVR3 */
+#define ATT
+#endif
+
 #ifdef SYSV
 #ifdef X_NOT_POSIX
 #ifndef CRAY
@@ -105,6 +115,35 @@
 #endif /* SYSV */
 
 /*
+** Definitions to simplify ifdef's for pty's.
+*/
+#define USE_PTY_DEVICE 1
+#define USE_PTY_SEARCH 1
+
+#if defined(__osf__) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1))
+#undef USE_PTY_DEVICE
+#undef USE_PTY_SEARCH
+#define USE_PTS_DEVICE 1
+#elif defined(VMS)
+#undef USE_PTY_DEVICE
+#undef USE_PTY_SEARCH
+#elif defined(PUCC_PTYD)
+#undef USE_PTY_SEARCH
+#endif
+
+#if defined(SYSV) && defined(i386) && !defined(SVR4)
+#define ATT
+#define USE_HANDSHAKE
+#define USE_ISPTS_FLAG 1
+#endif
+
+#if (defined(ATT) && !defined(__sgi)) || defined(__MVS__) || (defined(SYSV) && defined(i386)) || (defined (__GLIBC__) && ((__GLIBC__ > 2) || (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
+#define USE_USG_PTYS
+#else
+#define USE_HANDSHAKE
+#endif
+
+/*
 ** allow for mobility of the pty master/slave directories
 */
 #ifndef PTYDEV
@@ -112,7 +151,7 @@
 #define        PTYDEV          "/dev/ptym/ptyxx"
 #elif defined(__MVS__)
 #define        PTYDEV          "/dev/ptypxxxx"
-#elif !defined(__osf__)
+#else
 #define        PTYDEV          "/dev/ptyxx"
 #endif
 #endif /* !PTYDEV */
@@ -122,8 +161,8 @@
 #define TTYDEV         "/dev/pty/ttyxx"
 #elif defined(__MVS__)
 #define TTYDEV         "/dev/ptypxxxx"
-#elif defined(__osf__) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1))
-#define TTYDEV         "/dev/ttydirs/xxx/xxxxxxxxxxxxxx"
+#elif defined(USE_PTS_DEVICE)
+#define TTYDEV         "/dev/pts/0"
 #else
 #define        TTYDEV          "/dev/ttyxx"
 #endif
@@ -172,6 +211,16 @@
 #define PTYFORMAT "/dev/ptyp%d"
 #endif
 #endif /* PTYFORMAT */
+
+#ifndef PTYCHARLEN
+#ifdef CRAY
+#define PTYCHARLEN 3
+#elif defined(__MVS__)
+#define PTYCHARLEN 4
+#else
+#define PTYCHARLEN 2
+#endif
+#endif
 
 #ifndef MAXPTTYS
 #ifdef CRAY
Index: resize.c
--- xterm-144+/resize.c Wed May 24 11:39:17 2000
+++ xterm-145/resize.c  Mon Sep 11 05:38:55 2000
@@ -43,12 +43,14 @@
 #include <X11/Xos.h>
 #include <stdio.h>
 #include <ctype.h>
+#include <xstrings.h>
 
 #if defined(att)
 #define ATT
 #endif
 
 #if defined(sgi) && defined(SVR4)
+#undef SYSV
 #undef SVR4
 #define SYSV
 #endif
@@ -293,10 +295,6 @@
 #endif /* HAVE_TERMCAP_H  */
 #endif
 
-#ifdef USE_TERMCAP
-static char *strindex (char *s1, char *s2);
-#endif
-
 #define TERMCAP_SIZE 1500              /* 1023 is standard; 'screen' exceeds */
 
 /*
@@ -340,9 +338,7 @@
        extern char *ttyname();
 #endif
 
-       ptr = strrchr(myname = argv[0], '/');
-       if(ptr)
-               myname = ptr + 1;
+       myname = x_basename(argv[0]);
        if(strcmp(myname, sunname) == 0)
                emu = SUN;
        for(argv++, argc-- ; argc > 0 && **argv == '-' ; argv++, argc--) {
@@ -373,11 +369,7 @@
                        /* this is the same default that xterm uses */
                        ptr = "/bin/sh";
 
-               shell = strrchr(ptr, '/');
-               if(shell)
-                       shell++;
-               else
-                       shell = ptr;
+               shell = x_basename(ptr);
 
                /* now that we know, what kind is it? */
                for (i = 0; shell_list[i].name; i++)
@@ -535,7 +527,7 @@
        if (ok_tcap) {
                /* update termcap string */
                /* first do columns */
-               if ((ptr = strindex (termcap, "co#")) == NULL) {
+               if ((ptr = x_strindex (termcap, "co#")) == NULL) {
                        fprintf(stderr, "%s: No `co#'\n", myname);
                        exit (1);
                }
@@ -547,7 +539,7 @@
                strcat (newtc, ptr);
 
                /* now do lines */
-               if ((ptr = strindex (newtc, "li#")) == NULL) {
+               if ((ptr = x_strindex (newtc, "li#")) == NULL) {
                        fprintf(stderr, "%s: No `li#'\n", myname);
                        exit (1);
                }
@@ -586,26 +578,6 @@
        }
        exit(0);
 }
-
-#ifdef USE_TERMCAP
-static char *
-strindex (register char *s1, register char *s2)
-/*
-   returns a pointer to the first occurrence of s2 in s1, or NULL if there are
-   none.
- */
-{
-       register char *s3;
-       size_t s2len = strlen (s2);
-
-       while ((s3 = strchr(s1, *s2)) != NULL)
-       {
-               if (strncmp (s3, s2, s2len) == 0) return (s3);
-               s1 = ++s3;
-       }
-       return (NULL);
-}
-#endif
 
 static int
 checkdigits(register char *str)
Index: screen.c
--- xterm-144+/screen.c Mon Aug 28 14:56:36 2000
+++ xterm-145/screen.c  Sun Sep 10 22:06:31 2000
@@ -66,19 +66,11 @@
 
 #include <signal.h>
 
-#ifdef att
-#define ATT
-#endif
-
 #ifdef SVR4
-#undef SYSV
-#define SYSV
 #include <termios.h>
-#else
-#ifndef __CYGWIN__
+#elif !defined(__CYGWIN__)
 #include <sys/ioctl.h>
 #endif
-#endif
 
 #if defined(__CYGWIN__) && !defined(TIOCSPGRP)
 #include <termios.h>
@@ -89,10 +81,6 @@
 #include <sys/termio.h>
 #endif
 
-#if (defined(ATT) && !defined(__sgi)) || (defined(SYSV) && defined(i386)) || (defined (__GLIBC__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1))
-#define USE_USG_PTYS
-#endif
-
 #ifdef SYSV
 #if !defined(DGUX)                     /* Intel DG/ux uses termios.h */
 #include <sys/termio.h>
@@ -821,24 +809,23 @@
           })
 
           if_OPT_WIDE_CHARS(screen,{
-          /* This fixes an infinite recursion bug, that leads
-              to display anomalies. It seems to be related to 
-              problems with the selection. */
-           if (recurse < 3) {
-                   /* adjust to redraw all of a widechar if we just wanted 
-                      to draw the right hand half */
-                  if (iswide(chars[leftcol - 1] | (widec[leftcol -1]<<8)) &&
-                       (chars[leftcol] | (widec[leftcol]<<8))==HIDDEN_CHAR)
-                  {
+               /* This fixes an infinite recursion bug, that leads
+                  to display anomalies. It seems to be related to 
+                  problems with the selection. */
+               if (recurse < 3) {
+                   /* adjust to redraw all of a widechar if we just wanted 
+                     to draw the right hand half */
+                   if (iswide(chars[leftcol - 1] | (widec[leftcol -1]<<8)) &&
+                       (chars[leftcol] | (widec[leftcol]<<8))==HIDDEN_CHAR)
+                   {
                        leftcol--;
                        ncols++;
                        col = leftcol;
-                  }
-           } else {
-               fprintf(stderr, "This should not happen. Why is it so?\n");
-          }
-          }
-           )
+                   }
+              } else {
+                   fprintf(stderr, "This should not happen. Why is it so?\n");
+              }
+          })
 
           if (row < screen->startHRow || row > screen->endHRow ||
               (row == screen->startHRow && maxcol < screen->startHCol) ||
@@ -986,9 +973,9 @@
                   x = drawXtermText(screen, flags, gc, x, y,
                        cs,
                        PAIRED_CHARS(&chars[lastind], WIDEC_PTR(lastind)),
-                       col - lastind);
+                       col - lastind, 0);
  
- if_OPT_WIDE_CHARS(screen, 
+                  if_OPT_WIDE_CHARS(screen, 
                   {
                        int i;
                        Char *comb1l = BUF_COM1L(screen->visbuf, row + topline);
@@ -996,19 +983,22 @@
                        Char *comb1h = BUF_COM1H(screen->visbuf, row + topline);
                        Char *comb2h = BUF_COM2H(screen->visbuf, row + topline);
                        for (i = lastind ; i < col; i++) {
-                               int my_x = CurCursorX(screen, row + topline, i);
-                               int comb1 = comb1l[i] | (comb1h[i] << 8);
-                               int comb2 = comb2l[i] | (comb2h[i] << 8);
- 
-                               if (comb1 != 0) {
-                                       drawXtermText(screen, flags, gc, my_x, y, cs,
-                                                     PAIRED_CHARS(comb1l+i, comb1h+i), 1);
-                               }
- 
-                               if (comb2 != 0) {
-                                       drawXtermText(screen, flags, gc, my_x, y, cs,
-                                                     PAIRED_CHARS(comb2l+i, comb2h+i), 1);
-                               }
+                           int my_x = CurCursorX(screen, row + topline, i);
+                           int base = chars[i] | (widec[i] << 8);
+                           int comb1 = comb1l[i] | (comb1h[i] << 8);
+                           int comb2 = comb2l[i] | (comb2h[i] << 8);
+
+                           if (iswide(base)) my_x = CurCursorX(screen, row + topline, i-1);
+
+                           if (comb1 != 0) {
+                                   drawXtermText(screen, flags, gc, my_x, y, cs,
+                                                 PAIRED_CHARS(comb1l+i, comb1h+i), 1, iswide(base));
+                           }
+
+                           if (comb2 != 0) {
+                                   drawXtermText(screen, flags, gc, my_x, y, cs,
+                                                 PAIRED_CHARS(comb2l+i, comb2h+i), 1, iswide(base));
+                           }
                        }
                   })
  
@@ -1056,29 +1046,32 @@
           drawXtermText(screen, flags, gc, x, y,
                cs,
                PAIRED_CHARS(&chars[lastind], WIDEC_PTR(lastind)),
-               col - lastind);
-
-if_OPT_WIDE_CHARS(screen,         {
-                       int i;
-                       Char *comb1l = BUF_COM1L(screen->visbuf, row + topline);
-                       Char *comb2l = BUF_COM2L(screen->visbuf, row + topline);
-                       Char *comb1h = BUF_COM1H(screen->visbuf, row + topline);
-                       Char *comb2h = BUF_COM2H(screen->visbuf, row + topline);
-                       for (i = lastind ; i < col; i++) {
-                               int my_x = CurCursorX(screen, row + topline, i);
-                               int comb1 = comb1l[i] | (comb1h[i] << 8);
-                               int comb2 = comb2l[i] | (comb2h[i] << 8);
-
-                               if (comb1 != 0) {
-                                       drawXtermText(screen, flags, gc, my_x, y, cs,
-                                                     PAIRED_CHARS(comb1l+i, comb1h+i), 1);
-                               }
+               col - lastind, 0);
 
-                               if (comb2 != 0) {
-                                       drawXtermText(screen, flags, gc, my_x, y, cs,
-                                                     PAIRED_CHARS(comb2l+i, comb2h+i), 1);
-                               }
-                       }
+          if_OPT_WIDE_CHARS(screen, {
+               int i;
+               Char *comb1l = BUF_COM1L(screen->visbuf, row + topline);
+               Char *comb2l = BUF_COM2L(screen->visbuf, row + topline);
+               Char *comb1h = BUF_COM1H(screen->visbuf, row + topline);
+               Char *comb2h = BUF_COM2H(screen->visbuf, row + topline);
+               for (i = lastind ; i < col; i++) {
+                   int my_x = CurCursorX(screen, row + topline, i);
+                   int base = chars[i] | (widec[i] << 8);
+                   int comb1 = comb1l[i] | (comb1h[i] << 8);
+                   int comb2 = comb2l[i] | (comb2h[i] << 8);
+
+                   if (iswide(base)) my_x = CurCursorX(screen, row + topline, i-1);
+
+                   if (comb1 != 0) {
+                           drawXtermText(screen, flags, gc, my_x, y, cs,
+                                         PAIRED_CHARS(comb1l+i, comb1h+i), 1, iswide(base));
+                   }
+
+                   if (comb2 != 0) {
+                           drawXtermText(screen, flags, gc, my_x, y, cs,
+                                         PAIRED_CHARS(comb2l+i, comb2h+i), 1, iswide(base));
+                   }
+               }
           })
 
           resetXtermGC(screen, flags, hilite);
Index: termcap
--- xterm-144+/termcap  Wed Mar  1 02:22:43 2000
+++ xterm-145/termcap   Tue Sep  5 21:46:13 2000
@@ -17,33 +17,27 @@
 #      the resolved length of each entry in a comment at the end - T.Dickey
 #
 xf|xterm-xfree86|XFree86 xterm:\
-       :is=\E[!p\E[?3;4l\E[4l\E>:\
-       :rs=\E[!p\E[?3;4l\E[4l\E>:\
-       :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:DO=\E[%dB:UP=\E[%dA:\
-       :LE=\E[%dD:RI=\E[%dC:\
-       :al=\E[L:am:bl=^G:\
-       :cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:co#80:\
-       :cs=\E[%i%d;%dr:ct=\E[3g:\
-       :dc=\E[P:dl=\E[M:ho=\E[H:\
-       :im=\E[4h:ei=\E[4l:mi:\
-       :ks=\E[?1h\E=:ke=\E[?1l\E>:\
        :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
        :k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
        :k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:\
-       :kn#12:km:\
-       :kH=\EOF::@7=\EOF:kh=\EOH:\
-       :@0=\EOH:kI=\E[2~:kD=\E[3~:\
-       :*6=\EOF:kP=\E[5~:kN=\E[6~:\
-       :kb=^H:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\
-       :li#24:md=\E[1m:me=\E[m^O:mr=\E[7m:ms:nd=\E[C:\
-       :eA=\E)0:as=^N:ae=^O:ml=\El:mu=\Em:\
-       :sc=\E7:rc=\E8:sf=\n:so=\E[7m:se=\E[27m:sr=\EM:st=\EH:\
-       :ti=\E[?1049h:te=\E[?1049l:\
-       :vi=\E[?25l:ve=\E[?25h:\
-       :up=\E[A:us=\E[4m:ue=\E[24m:xn:\
-       :ut:Co#8:op=\E[39;49m:AB=\E[4%dm:AF=\E[3%dm:\
-       :pa#64:Sf=\E[3%dm:Sb=\E[4%dm:
-#
+       :kH=\EOF:@7=\EOF:kI=\E[2~:\
+       :kh=\EOH:*6=\EOF:kP=\E[5~:kN=\E[6~:\
+       :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:Km=\E[M:tc=xterm-basic:
+#
+# This chunk is used for building the VT220/Sun/PC keyboard variants.
+xb|xterm-basic|xterm common (XFree86):\
+       :li#24:co#80:am:kn#12:km:mi:ms:xn:bl=^G:\
+       :is=\E[!p\E[?3;4l\E[4l\E>:rs=\E[!p\E[?3;4l\E[4l\E>:\
+       :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:al=\E[L:dc=\E[P:dl=\E[M:\
+       :UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:\
+       :ho=\E[H:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cs=\E[%i%d;%dr:\
+       :im=\E[4h:ei=\E[4l:ks=\E[?1h\E=:ke=\E[?1l\E>:kD=\E[3~:kb=^H:\
+       :sf=\n:sr=\EM:st=\EH:ct=\E[3g:sc=\E7:rc=\E8:\
+       :eA=\E(B\E)0:as=^N:ae=^O:ml=\El:mu=\Em:up=\E[A:nd=\E[C:\
+       :md=\E[1m:me=\E[m^O:mr=\E[7m:so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\
+       :ti=\E[?1049h:te=\E[?1049l:vi=\E[?25l:ve=\E[?25h:\
+       :ut:Co#8:pa#64:op=\E[39;49m:AB=\E[4%dm:AF=\E[3%dm:\
+
 # The xterm-xfree86 description has all of the features, but is not completely
 # compatible with vt220.  If you are using a Sun or PC keyboard, set the
 # sunKeyboard resource to true:
@@ -54,9 +48,7 @@
 #      + uses DEC-style control sequences for the application keypad.
 #
 vt|xterm-vt220|xterm emulating vt220:\
-       :kH=\E[4~::@7=\E[4~:*6=\E[4~:\
-       :kh=\E[1~:\
-       :tc=xterm-xfree86:
+       :kH=\E[4~::@7=\E[4~:*6=\E[4~:kh=\E[1~:Km=\E[M:tc=xterm-basic:
 
 v1|xterm-24|xterms|vs100|24x80 xterm:\
        :li#24:\
@@ -64,7 +56,7 @@
 v2|xterm-65|65x80 xterm:\
        :li#65:tc=xterm:
 vb|xterm-bold|xterm with bold for underline:\
-       :us=\E[1m:tc=xterm:
+       :so=\E[7m:us=\E[1m:tc=xterm:
 vb|xterm-boldso|xterm with bold for standout:\
        :se=\E[m:so=\E[1m:tc=xterm:
 vm|xtermm|monochrome xterm:\
@@ -79,19 +71,18 @@
        kl=\E[D:kd=\E[B:kr=\E[C:ku=\E[A:ks=\E=:ke=\E>:ti@:te@:tc=xterm:
 #
 # This should work for the commonly used "color xterm" variations (XFree86
-# xterm, color_xterm, nxterm, rxvt).  You may have trouble with this using
-# conventional termcap because ncurses reports it is longer than 1023
-# characters.  That is because resolving it adds the alternate character-set
-# (you can suppress it with "ac@").
+# xterm, color_xterm, nxterm, rxvt).  Note that it does not set 'bce', so for
+# XFree86 and and rxvt, some applications that use colors will be less
+# efficient, and in a few special cases (with "smart" optimization) the wrong
+# color will be painted in spots.
 vc|xterm-color|generic "ANSI" color xterm:\
-       :Co#8:NC@:pa#64:op=\E[m:AB=\E[4%dm:AF=\E[3%dm:tc=xterm-r6:
+       :Co#8:NC@:pa#64:op=\E[m:AB=\E[4%dm:AF=\E[3%dm:ac@:tc=xterm-r6:
 #
 # These aliases are for compatibility with the terminfo; termcap cannot provide
 # the extra features, but termcap applications still want the names.
-v5|xterm-vt52|xterm alias:tc=vt52:
-x1|xterm-16color|xterm alias:tc=xterm:
-x2|xterm-88color|xterm alias:tc=xterm:
-x3|xterm-256color|xterm alias:tc=xterm:
+x1|xterm-16color|xterm alias:tc=xterm-xfree86:
+x2|xterm-88color|xterm alias:tc=xterm-256color:
+x3|xterm-256color|xterm alias:tc=xterm-xfree86:
 xm|xterm-mono|xterm alias:tc=xtermm:
 xn|xterm-nrc|xterm alias:tc=xterm:
 xr|xterm-rep|xterm alias:tc=xterm:
@@ -100,12 +91,12 @@
 # An 8-bit description is doable with termcap, but there are probably no
 # termcap (or BSD curses) applications that are able to use it.
 x8|xterm-8bit|xterm terminal emulator 8-bit controls (X Window System):\
-       :am:km:mi:ms:xn:\
-       :co#80:it#8:li#24:\
+       :co#80:li#24:\
+       :it#8:am:km:mi:ms:xn:\
        :AL=\233%dL:DC=\233%dP:DL=\233%dM:DO=\233%dB:IC=\233%d@:LE=\233%dD:\
        :RI=\233%dC:UP=\233%dA:ae=^O:al=\233L:as=^N:bl=^G:bt=\233Z:\
        :cd=\233J:ce=\233K:cl=\233H\2332J:cm=\233%i%d;%dH:cr=^M:\
-       :cs=\233%i%d;%dr:ct=\2333g:dc=\233P:dl=\233M:do=^J:\
+       :cs=\233%i%d;%dr:ct=\2333g:dc=\233P:dl=\233M:do=^J:up=\233A:nd=\233C:\
        :ei=\2334l:ho=\233H:im=\2334h:\
        :is=\E7\E G\233r\233m\233?7h\233?1;3;4;6l\2334l\E8\E>:\
        :k1=\23311~:k2=\23312~:k3=\23313~:k4=\23314~:k5=\23315~:\
@@ -113,57 +104,64 @@
        :kI=\2332~:kN=\2336~:kP=\2335~:kb=^H:kd=\217B:\
        :ke=\233?1l\E>:kh=\2331~:kl=\217D:kr=\217C:ks=\233?1h\E=:\
        :ku=\217A:le=^H:mb=\2335m:md=\2331m:me=\233m^O:mr=\2337m:\
-       :nd=\233C:rc=\E8:sc=\E7:se=\23327m:sf=^J:so=\2337m:sr=\215:\
-       :st=\210:ta=^I:te=\233?1049l:ti=\233?1049h:ue=\23324m:\
-       :up=\233A:us=\2334m:vb=\233?5h\233?5l:ve=\233?25h:\
-       :vi=\233?25l:
+       :rc=\E8:sc=\E7:se=\23327m:sf=^J:so=\2337m:sr=\215:\
+       :st=\210:ta=^I:te=\233?1049l:ti=\233?1049h:ue=\23324m:us=\2334m:\
+       :vb=\233?5h\233?5l:ve=\233?25h:vi=\233?25l:Km=\233M:
 #
 hp|xterm-hp|XFree86 xterm with hpterm function keys:\
-       :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:\
-       :k6=\Eu:k7=\Ev:k8=\Ew:\
-       :kC=\EJ:kD=\EP:@7=\EF:\
-       :kI=\EQ:kN=\ES:kP=\ET:kh=\Eh:\
-       :kd=\EB:kl=\ED:kr=\EC:ku=\EA:tc=xterm:
+       :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:\
+       :kC=\EJ:kD=\EP:@7=\EF:kI=\EQ:kN=\ES:kP=\ET:kh=\Eh:\
+       :kd=\EB:kl=\ED:kr=\EC:ku=\EA:tc=xterm-basic:
+#
+xS|xterm-sco|XFree86 xterm with SCO function keys:\
+       :kl=\E[D:kd=\E[B:kr=\E[C:ku=\E[A:@7=\E[F:\
+       :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:\
+       :k6=\E[R:k7=\E[S:k8=\E[T:k9=\E[U:k;=\E[V:\
+       :F1=\E[W:F2=\E[X:F3=\E[Y:F5=\E[a:F6=\E[b:\
+       :F7=\E[c:F8=\E[d:F9=\E[e:FA=\E[f:FB=\E[g:\
+       :FC=\E[h:FD=\E[i:FE=\E[j:FF=\E[k:\
+       :kh=\E[H:kI=\E[L:kN=\E[G:kP=\E[I:ac@:tc=xterm-basic:
+#
+v5|xterm-vt52|xterm emulating vt52:\
+       :bs:\
+       :co#80:it#8:li#24:\
+       :ae=\EG:as=\EF:bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :\
+       :cr=^M:do=\EB:ho=\EH:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:\
+       :le=\ED:nd=\EC:nw=^M^J:sf=^J:sr=\EI:ta=^I:up=\EA:
 #
-# This won't come close to fitting unless we cancel the alternate character set.
-# The function keys F1-F12, plus editing keypad are then usable:
 xs|xterm-sun|xterm with Sun functionkeys:\
        :k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:\
        :k5=\E[228z:k6=\E[229z:k7=\E[230z:k8=\E[231z:\
        :k9=\E[232z:k;=\E[233z:F1=\E[192z:F2=\E[193z:\
        :%1=\E[196z:&8=\E[195z:@0=\E[200z:kI=\E[2z:\
-       :kN=\E[222z:kP=\E[216z:kh=\E[214z:kD=^?:as@:ae@:ac@:tc=xterm:
+       :kN=\E[222z:kP=\E[216z:kh=\E[214z:kD=^?:\
+       :Km=\E[M:@5=\E[197z::@7=\E[220z:\
+       :tc=xterm-basic:
 #
 # vi may work better with this entry, because vi doesn't use insert mode much.
 # |xterm-ic|xterm-vi|xterm with insert character instead of insert mode:\
 vi|xterm-ic|xterm-vi|xterm with insert char:\
        :im@:ei@:mi@:ic=\E[@:IC=\E[%d@:tc=xterm:
 #
-# Compatible with the R6 xterm
+# Compatible with the X11R6.3 xterm
 r6|xterm-r6|xterm-old|X11R6 xterm:\
        :is=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>:\
        :rs=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>:\
        :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:DO=\E[%dB:UP=\E[%dA:\
-       :LE=\E[%dD:RI=\E[%dC:\
-       :al=\E[L:am:bl=^G:\
+       :LE=\E[%dD:RI=\E[%dC:al=\E[L:am:bl=^G:\
        :bs:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:co#80:\
        :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:ho=\E[H:\
-       :im=\E[4h:ei=\E[4l:mi:\
-       :ks=\E[?1h\E=:ke=\E[?1l\E>:@7=\E[4~:kh=\E[1~:\
+       :im=\E[4h:ei=\E[4l:mi:ks=\E[?1h\E=:ke=\E[?1l\E>:@7=\E[4~:kh=\E[1~:\
        :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
        :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
        :F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:\
        :F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:\
-       :kn#20:km:\
-       :@0=\E[1~:kI=\E[2~:kD=^?:\
-       :*6=\E[4~:kP=\E[5~:kN=\E[6~:\
+       :kn#20:km:@0=\E[1~:kI=\E[2~:kD=^?:*6=\E[4~:kP=\E[5~:kN=\E[6~:\
        :kb=^H:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\
        :li#24:md=\E[1m:me=\E[m:mr=\E[7m:ms:nd=\E[C:pt:\
-       :eA=\E)0:as=^N:ae=^O:\
-       :ml=\El:mu=\Em:\
+       :eA=\E)0:as=^N:ae=^O:ml=\El:mu=\Em:\
        :sc=\E7:rc=\E8:sf=\n:so=\E[7m:se=\E[m:sr=\EM:\
-       :ti=\E7\E[?47h:te=\E[2J\E[?47l\E8:\
-       :up=\E[A:us=\E[4m:ue=\E[m:xn:
+       :ti=\E7\E[?47h:te=\E[2J\E[?47l\E8:up=\E[A:us=\E[4m:ue=\E[m:xn:
 #
 # Compatible with the R5 xterm
 r5|xterm-r5|X11R5 xterm X11R5:\
Index: terminfo
--- xterm-144+/terminfo Wed Jun 14 15:50:37 2000
+++ xterm-145/terminfo  Tue Sep  5 21:38:19 2000
@@ -406,6 +406,51 @@
        knp=\ES,
        kpp=\ET,
        use=xterm-basic,
+xterm-sco|XFree86 xterm with SCO function keys,
+       kcub1=\E[D,
+       kcud1=\E[B,
+       kcuf1=\E[C,
+       kcuu1=\E[A,
+       kend=\E[F,
+       kf1=\E[M,
+       kf2=\E[N,
+       kf3=\E[O,
+       kf4=\E[P,
+       kf5=\E[Q,
+       kf6=\E[R,
+       kf7=\E[S,
+       kf8=\E[T,
+       kf9=\E[U,
+       kf10=\E[V,
+       kf11=\E[W,
+       kf12=\E[X,
+       kf13=\E[Y,
+       kf15=\E[a,
+       kf16=\E[b,
+       kf17=\E[c,
+       kf18=\E[d,
+       kf19=\E[e,
+       kf20=\E[f,
+       kf21=\E[g,
+       kf22=\E[h,
+       kf23=\E[i,
+       kf24=\E[j,
+       kf25=\E[k,
+       kf26=\E[l,
+       kf27=\E[m,
+       kf28=\E[n,
+       kf29=\E[o,
+       kf30=\E[p,
+       kf31=\E[q,
+       kf32=\E[r,
+       kf33=\E[s,
+       kf34=\E[t,
+       kf35=\E[u,
+       khome=\E[H,
+       kich1=\E[L,
+       knp=\E[G,
+       kpp=\E[I,
+       use=xterm-basic,
 #
 # Other variants:
 xterm-24|xterms|vs100|xterm terminal emulator (X Window System),
@@ -422,8 +467,9 @@
        rmso=\E[m,
        smso=\E[1m,
        use=xterm,
-xterm-mono|monochrome xterm (X Window System),
+xtermm|monochrome xterm,
        colors@,
+       bce@,
        ncv@,
        pairs@,
        op@,
@@ -433,6 +479,8 @@
        setf@,
        sgr@,
        use=xterm,
+xterm-mono|monochrome xterm (X Window System),
+       use=xtermm,
 #
 # VTxxx terminals are usually set up so that full-screen applications will use
 # the cursor application mode strings.  This is good for full-screen
Index: trace.h
--- xterm-144+/trace.h  Wed Jun 14 15:50:37 2000
+++ xterm-145/trace.h   Thu Sep  7 21:09:38 2000
@@ -33,10 +33,6 @@
 #ifndef        included_trace_h
 #define        included_trace_h
 
-#ifdef HAVE_CONFIG_H
-#include <xtermcfg.h>
-#endif
-
 #include <ptyx.h>
 
 #if OPT_TRACE
Index: util.c
--- xterm-144+/util.c   Mon Aug 28 14:56:36 2000
+++ xterm-145/util.c    Mon Sep 11 05:38:22 2000
@@ -1164,7 +1164,6 @@
 ChangeColors(XtermWidget tw, ScrnColors *pNew)
 {
        TScreen *screen = &tw->screen;
-       Bool    newCursor=      TRUE;
 #if OPT_TEK4014
        Window tek = TWindow(screen);
 #endif
@@ -1180,7 +1179,6 @@
                 (COLOR_DEFINED(pNew,TEXT_FG))) {
            screen->cursorcolor=        COLOR_VALUE(pNew,TEXT_FG);
        }
-       else newCursor= FALSE;
 
        if (COLOR_DEFINED(pNew,TEXT_FG)) {
            Pixel       fg=     COLOR_VALUE(pNew,TEXT_FG);
@@ -1383,7 +1381,8 @@
        int y,
        int chrset,
        PAIRED_CHARS(Char *text, Char *text2),
-       Cardinal len)
+       Cardinal len,
+       int on_wide)
 {
        int real_length = len;
 #if OPT_WIDE_CHARS
@@ -1479,14 +1478,14 @@
                                        x = drawXtermText(screen, flags, gc2,
                                                x, y, 0,
                                                PAIRED_CHARS(text++, text2++),
-                                               1);
+                                               1, on_wide);
                                        x += FontWidth(screen);
                                }
                        } else {
                                x = drawXtermText(screen, flags, gc2,
                                        x, y, 0,
                                        PAIRED_CHARS(text, text2),
-                                       len);
+                                       len, on_wide);
                                x += len * FontWidth(screen);
                        }
 
@@ -1511,7 +1510,7 @@
                                temp[n++] = *text++;
                                temp[n++] = ' ';
                        }
-                       x = drawXtermText(screen, flags, gc, x, y, 0, PAIRED_CHARS(temp, wide), n);
+                       x = drawXtermText(screen, flags, gc, x, y, 0, PAIRED_CHARS(temp, wide), n, on_wide);
                        free(temp);
                        if_OPT_WIDE_CHARS(screen,{
                                free(wide);
@@ -1558,7 +1557,7 @@
                        adj = (FontWidth(screen) - width) / 2;
                        (void)drawXtermText(screen, flags, gc, x + adj, y,
                                            chrset,
-                                           PAIRED_CHARS(text++, text2++), 1);
+                                           PAIRED_CHARS(text++, text2++), 1, on_wide);
                        x += FontWidth(screen);
                }
                screen->fnt_prop = True;
@@ -1580,7 +1579,7 @@
                        static Cardinal slen;
                        Cardinal n;
                        int ch = text[0] | (text2[0] << 8);
-                       int wideness = (iswide(ch)!=0) && (screen->fnt_dwd!=NULL);
+                       int wideness = (on_wide || iswide(ch)!=0) && (screen->fnt_dwd!=NULL);
                        unsigned char *endtext = text + len;
                        if (slen < len) {
                                slen = (len + 1) * 2;
@@ -1628,7 +1627,7 @@
                {
                XDrawImageString(screen->display, VWindow(screen), gc,
                        x, y,  (char *)text, len);
-#ifndef OPT_WIDE_CHARS
+#if !OPT_WIDE_CHARS
                /* FIXME: This is rather broken with wide chars. It should
                 * use XDrawString16 where appropriate.
                 */
@@ -1669,7 +1668,7 @@
                }
 #if OPT_BOX_CHARS
 #define DrawX(col) x + (col * (screen->fnt_wide))
-#define DrawSegment(first,last) (void)drawXtermText(screen, flags, gc, DrawX(first), y, chrset, PAIRED_CHARS(text+first, text2+first), last-first)
+#define DrawSegment(first,last) (void)drawXtermText(screen, flags, gc, DrawX(first), y, chrset, PAIRED_CHARS(text+first, text2+first), last-first, on_wide)
        } else {        /* fill in missing box-characters */
                XFontStruct *font = (flags & BOLD)
                                  ? screen->fnt_bold
@@ -1684,7 +1683,7 @@
                        if (text2 != 0)
                                ch |= (text2[last] << 8);
                        isMissing = xtermMissingChar(ch,
-                                       (iswide(ch) && screen->fnt_dwd)
+                                       ((on_wide || iswide(ch)) && screen->fnt_dwd)
                                        ? screen->fnt_dwd
                                        : font);
 #else
@@ -1933,7 +1932,8 @@
  */
 void addXtermCombining (TScreen *screen, int row, int col, int ch)
 {
-    if (!SCRN_BUF_COM1L(screen, row)[col]) {
+    if (!SCRN_BUF_COM1L(screen, row)[col]
+     && !SCRN_BUF_COM1H(screen, row)[col]) {
            SCRN_BUF_COM1L(screen, row)[col] = ch & 0xff;
            SCRN_BUF_COM1H(screen, row)[col] = ch >> 8;
     } else if (!SCRN_BUF_COM2H(screen, row)[col]) {
Index: version.h
--- xterm-144+/version.h        Mon Aug 28 14:56:36 2000
+++ xterm-145/version.h Mon Sep 11 05:44:25 2000
@@ -6,5 +6,5 @@
  * XFree86 to which this version of xterm has been built.  The number in
  * parentheses is my patch number (T.Dickey).
  */
-#define XTERM_PATCH   144
-#define XFREE86_VERSION "XFree86 4.0.1b"
+#define XTERM_PATCH   145
+#define XFREE86_VERSION "XFree86 4.0.1c"
Index: xstrings.c
--- /dev/null   Sun Jul 17 19:46:18 1994
+++ xterm-145/xstrings.c        Wed Sep  6 19:02:05 2000
@@ -0,0 +1,68 @@
+/* $XFree86$ */
+
+/************************************************************
+
+Copyright 2000 by Thomas E. Dickey
+
+                        All Rights Reserved
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name(s) of the above copyright
+holders shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization.
+
+********************************************************/
+
+#include <sys/types.h>
+#include <string.h>
+#include <xstrings.h>
+
+char *
+x_basename(char *name)
+{
+    char *cp;
+
+    cp = strrchr(name, '/');
+#ifdef __EMX__
+    if (cp == 0)
+       cp = strrchr(name, '\\');
+#endif
+    return (cp ? cp + 1 : name);
+}
+
+/*
+ * Returns a pointer to the first occurrence of s2 in s1,
+ * or NULL if there are none.
+ */
+char *
+x_strindex(char *s1, char *s2)
+{
+    char *s3;
+    size_t s2len = strlen(s2);
+
+    while ((s3 = strchr(s1, *s2)) != NULL) {
+       if (strncmp(s3, s2, s2len) == 0)
+           return (s3);
+       s1 = ++s3;
+    }
+    return (NULL);
+}
Index: xstrings.h
--- /dev/null   Sun Jul 17 19:46:18 1994
+++ xterm-145/xstrings.h        Wed Sep  6 19:08:20 2000
@@ -0,0 +1,41 @@
+/* $XFree86$ */
+
+/************************************************************
+
+Copyright 2000 by Thomas E. Dickey
+
+                        All Rights Reserved
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name(s) of the above copyright
+holders shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization.
+
+********************************************************/
+
+#ifndef included_xstrings_h
+#define included_xstrings_h 1
+
+extern char *x_basename(char *name);
+extern char *x_strindex(char *s1, char *s2);
+
+#endif /* included_xstrings_h */
Index: xterm.h
--- xterm-144+/xterm.h  Mon Aug 28 14:56:36 2000
+++ xterm-145/xterm.h   Sun Sep 10 21:59:45 2000
@@ -576,7 +576,6 @@
 /* misc.c */
 extern Cursor make_colored_cursor (unsigned cursorindex, unsigned long fg, unsigned long bg);
 extern char *SysErrorMsg (int n);
-extern char *strindex (char *s1, char *s2);
 extern char *udk_lookup (int keycode, int *len);
 extern int XStrCmp (char *s1, char *s2);
 extern int creat_as (int uid, int gid, Boolean append, char *pathname, int mode);
@@ -707,7 +706,7 @@
 extern int AddToRefresh (TScreen *screen);
 extern int HandleExposure (TScreen *screen, XEvent *event);
 extern int char2lower(int ch);
-extern int drawXtermText (TScreen *screen, unsigned flags, GC gc, int x, int y, int chrset, PAIRED_CHARS(Char *text, Char *text2), Cardinal len);
+extern int drawXtermText (TScreen *screen, unsigned flags, GC gc, int x, int y, int chrset, PAIRED_CHARS(Char *text, Char *text2), Cardinal len, int on_wide);
 extern void ChangeAnsiColors (XtermWidget tw);
 extern void ChangeColors (XtermWidget tw, ScrnColors *pNew);
 extern void ClearRight (TScreen *screen, int n);
Index: xterm.log.html
--- xterm-144+/xterm.log.html   Mon Aug 28 14:56:36 2000
+++ xterm-145/xterm.log.html    Mon Sep 11 05:40:01 2000
@@ -42,6 +42,7 @@
 xc/programs/Xserver/hw/xfree86).
 
 <UL>
+<LI><A HREF="#xterm_145">Patch #145 - 2000/9/11 - XFree86 4.0.1c</A>
 <LI><A HREF="#xterm_144">Patch #144 - 2000/8/23 - XFree86 4.0.1b</A>
 <LI><A HREF="#xterm_143">Patch #143 - 2000/8/19 - XFree86 4.0.1b</A>
 <LI><A HREF="#xterm_142">Patch #142 - 2000/8/18 - XFree86 4.0.1b</A>
@@ -188,6 +189,78 @@
 <LI><A HREF="#xterm_02">Patch #2 - 1996/1/7</A>
 <LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
 </UL>
+
+<H1><A NAME="xterm_145">Patch #145 - 2000/9/11 - XFree86 4.0.1c</A></H1>
+<ul>
+       <li>several changes from Robert Brady for UTF-8 configuration:
+       <ul>
+         <li>doublewide characters don't lose their accents when the cursor
+           moves onto or from them (a visual bug)
+
+         <li>fix logic in addXtermCombining, which mean that if the low byte
+           of a cell's first combining char was 0, a following combining char
+           would go into combining slot 1, not 2.
+
+         <li>modify logic for cut-buffers so UTF-8 data is first converted
+           to Latin1.
+
+         <li>collapse surrogates, 0xfffe, 0xffff to UCS_REPL.
+
+         <li>modify to allow xterm to to show combining characters
+          attached to doublewidth characters.
+
+         <li>correct bug in linewrap with -u8 option (reported by
+           Andreas Koenig &lt;andreas.koenig@anima.de&gt;).
+       </ul>
+
+       <li>several changes to PTY logic (based on request by Tim Ryan
+         &lt;timryan@nortelnetworks.com&gt;).
+       <ul>
+         <li>modify treatment of <code>-S</code> option to to make it work with
+           Unix98 PTY's.
+
+         <li>restore sense of IsPts flag in <code>get_pty()</code>, which was
+           lost in Unix98 changes.
+
+         <li>use new functions <code>my_pty_id()</code> and
+           <code>my_pty_name()</code> to simplify/fix strings used for utmp,
+           wtmp identifiers.
+
+         <li>simplify <code>get_pty()</code> function, making it have a single
+           return point so its inputs/outputs can be identified.
+       </ul>
+
+       <li>update config.guess and config.sub and scripts to my 20000819 patch,
+          adding cases for OS/2 EMX.
+
+       <li>add special case for os390 compiler options to configure script
+         (patch by Paul Gilmartin)
+
+       <li>fix some unused-variable compiler warnings (reported by
+         Zdenek Sekera).
+
+       <li>split-out some string functions into xstrings.c, to use them
+         more consistently among main.c, os2main.c and resize.c
+
+       <li>align termcap/terminfo files, adding entries to make them match.
+         The termcap entries are necessarily less complete than the terminfo,
+         to fit within 1023 character per entry.
+
+       <li>add terminfo entry for xterm-sco (SCO function keys).
+
+       <li>modify <code>same_font_name()</code> to properly handle wildcard
+         introduced in <code>bold_font_name()</code>, making comparison for
+         different fonts succeed when only the normal font is specified.  This
+         is needed to decide if 1-pixel offset should be used.  (reported
+         in a newsgroup by Bart Oldeman &lt;enbeo@enbeo.resnet.bris.ac.uk&gt;)
+
+       <li>correct preprocessor line for OPT_WIDE_CHARS in drawXtermText()
+         from patch #141 which resulted in overstriking for bold fonts not
+         working.
+
+       <li>correct Imakefile from 4.0.1c resync so UTF-8 modules are in
+         UTF8SRC, UTF8OBJ lists, allowing build without UTF-8 support.
+</ul>
 
 <H1><A NAME="xterm_144">Patch #144 - 2000/8/23 - XFree86 4.0.1b</A></H1>
 <ul>
Index: xterm.man
--- xterm-144+/xterm.man        Mon Aug 28 14:56:36 2000
+++ xterm-145/xterm.man Fri Sep  8 19:41:34 2000
@@ -649,12 +649,22 @@
 ownership of the console device in order to get this option to work.
 .TP 8
 .B \-S\fIccn\fP
-This option specifies the last two letters of the name of a pseudo-terminal
-to use in slave mode, plus the number of the inherited file descriptor.
-The option is parsed ``%c%c%d''.
-This allows \fIxterm\fP to be used as an input and
+This option allows \fIxterm\fP to be used as an input and
 output channel for an existing program and is sometimes used in specialized
 applications.
+The option value specifies the last few letters of the name of a pseudo-terminal
+to use in slave mode, plus the number of the inherited file descriptor.
+If the option contains a ``/'' character, that delimits the characters
+used for the pseudo-terminal name from the file descriptor.
+Otherwise, exactly two characters are used from the option for
+the pseudo-terminal name, the remainder is the file descriptor.
+Examples:
+.nf
+.RS 15
+-S123/45
+-Sab34
+.RE
+.fi
 .PP
 The following command line arguments are provided for compatibility with
 older versions.  They may not be supported in the next release as the X