xterm-116.patch.txt

# ------------------------------------------------------------------------------
#  INSTALL        |   11 
#  VTPrsTbl.c     |  335 ++++++++++++++++++++++++
#  VTparse.def    |    5 
#  VTparse.h      |    8 
#  aclocal.m4     |  143 ++++++++++
#  button.c       |  484 +++++++++++++++++++++++++++++++++++-
#  charproc.c     |   97 +++++++
#  configure      |  739 +++++++++++++++++++++++++++++++++++++------------------
#  configure.in   |   18 +
#  ctlseqs.ms     |  349 +++++++++++++++++--------
#  data.c         |    1 
#  data.h         |    1 
#  main.c         |  115 ++------
#  menu.c         |    4 
#  misc.c         |   17 +
#  print.c        |    6 
#  ptyx.h         |   15 +
#  resize.c       |    2 
#  version.h      |    2 
#  xcharmouse.h   |   24 +
#  xterm.h        |   25 +
#  xterm.log.html |   56 ++++
#  xterm.man      |   20 +
#  xtermcfg.hin   |    6 
#  24 files changed, 2017 insertions, 466 deletions
# ------------------------------------------------------------------------------
Index: INSTALL
--- xterm-115+/INSTALL  Fri Sep 17 06:26:32 1999
+++ xterm-116/INSTALL   Sat Sep 25 10:22:40 1999
@@ -190,6 +190,17 @@
 
        Compile-in code that interprets SGR 38 and 48 for 88-colors.
 
+  --enable-dec-locator    enable DECterm Locator support
+       Add support for for DEC Locator control sequences for xterm:
+
+               DECEFR - Enable Filter Rectangle
+               DECELR - Enable Locator Reports
+               DECSLE - Select Locator Events
+               DECRQLP - Request Locator Position
+
+       This allows the xterm mouse to be used with applications that use the
+       DEC Locator sequences, such as VAX Tpu, or SMG$ based applications.
+
   --enable-hp-fkeys       enable support for HP-style function keys
 
        Compile-in code to support HP-style function keys.
Index: VTPrsTbl.c
--- xterm-115+/VTPrsTbl.c       Sun Jul 18 16:29:08 1999
+++ xterm-116/VTPrsTbl.c        Sat Sep 25 10:31:43 1999
@@ -70,6 +70,11 @@
 
 #include <VTparse.h>
 
+#if !OPT_DEC_LOCATOR
+#undef  CASE_CSI_TICK_STATE,
+#define CASE_CSI_TICK_STATE CASE_ESC_IGNORE
+#endif
+
 #if !OPT_WIDE_CHARS
 #undef  CASE_ESC_PERCENT
 #define CASE_ESC_PERCENT CASE_ESC_IGNORE
@@ -455,7 +460,7 @@
 CASE_ESC_IGNORE,
 CASE_ESC_IGNORE,
 CASE_ESC_IGNORE,
-CASE_ESC_IGNORE,
+CASE_CSI_TICK_STATE,
 /*     (               )               *               +       */
 CASE_ESC_IGNORE,
 CASE_ESC_IGNORE,
@@ -728,7 +733,7 @@
 CASE_GROUND_STATE,
 };
 
-Const PARSE_T csi_ex_table[] =         /* ESC ! */
+Const PARSE_T csi_ex_table[] =         /* CSI ! */
 {
 /*     NUL             SOH             STX             ETX     */
 CASE_IGNORE,
@@ -1375,6 +1380,332 @@
 CASE_GROUND_STATE,
 CASE_GROUND_STATE,
 };
+
+#if OPT_DEC_LOCATOR
+Const PARSE_T csi_tick_table[] =       /* CSI ... ' */
+{
+/*     NUL             SOH             STX             ETX     */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     EOT             ENQ             ACK             BEL     */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_BELL,
+/*     BS              HT              NL              VT      */
+CASE_BS,
+CASE_TAB,
+CASE_VMOT,
+CASE_VMOT,
+/*     NP              CR              SO              SI      */
+CASE_VMOT,
+CASE_CR,
+CASE_SO,
+CASE_SI,
+/*     DLE             DC1             DC2             DC3     */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     DC4             NAK             SYN             ETB     */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     CAN             EM              SUB             ESC     */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_ESC,
+/*     FS              GS              RS              US      */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     SP              !               "               #       */
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*     $               %               &               '       */
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*     (               )               *               +       */
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*     ,               -               .               /       */
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+CASE_ESC_IGNORE,
+/*     0               1               2               3       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     4               5               6               7       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     8               9               :               ;       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     <               =               >               ?       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     @               A               B               C       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     D               E               F               G       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     H               I               J               K       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     L               M               N               O       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     P               Q               R               S       */
+CASE_IGNORE_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     T               U               V               W       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     X               Y               Z               [       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     \               ]               ^               _       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     `               a               b               c       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     d               e               f               g       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     h               i               j               k       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     l               m               n               o       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     p               q               r               s       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     t               u               v               w       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_DECEFR,
+/*     x               y               z               {       */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_DECELR,
+CASE_DECSLE,
+/*     |               }               ~               DEL     */
+CASE_DECRQLP,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     0x80            0x81            0x82            0x83    */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     0x84            0x85            0x86            0x87    */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     0x88            0x89            0x8a            0x8b    */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     0x8c            0x8d            0x8e            0x8f    */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     0x90            0x91            0x92            0x93    */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     0x94            0x95            0x96            0x97    */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     0x98            0x99            0x9a            0x9b    */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     0x9c            0x9d            0x9e            0x9f    */
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+CASE_IGNORE,
+/*     nobreakspace    exclamdown      cent            sterling        */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     currency        yen             brokenbar       section         */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     diaeresis       copyright       ordfeminine     guillemotleft   */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     notsign         hyphen          registered      macron          */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     degree          plusminus       twosuperior     threesuperior   */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     acute           mu              paragraph       periodcentered  */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     cedilla         onesuperior     masculine       guillemotright  */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     onequarter      onehalf         threequarters   questiondown    */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     Agrave          Aacute          Acircumflex     Atilde          */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     Adiaeresis      Aring           AE              Ccedilla        */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     Egrave          Eacute          Ecircumflex     Ediaeresis      */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     Igrave          Iacute          Icircumflex     Idiaeresis      */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     Eth             Ntilde          Ograve          Oacute          */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     Ocircumflex     Otilde          Odiaeresis      multiply        */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     Ooblique        Ugrave          Uacute          Ucircumflex     */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     Udiaeresis      Yacute          Thorn           ssharp          */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     agrave          aacute          acircumflex     atilde          */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     adiaeresis      aring           ae              ccedilla        */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     egrave          eacute          ecircumflex     ediaeresis      */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     igrave          iacute          icircumflex     idiaeresis      */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     eth             ntilde          ograve          oacute          */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     ocircumflex     otilde          odiaeresis      division        */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     oslash          ugrave          uacute          ucircumflex     */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+/*     udiaeresis      yacute          thorn           ydiaeresis      */
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+CASE_GROUND_STATE,
+};
+#endif /* OPT_DEC_LOCATOR */
 
 Const PARSE_T dec_table[] =            /* CSI ? */
 {
Index: VTparse.def
--- xterm-115+/VTparse.def      Sun Apr 11 16:38:14 1999
+++ xterm-116/VTparse.def       Sat Sep 25 10:30:01 1999
@@ -123,3 +123,8 @@
 CASE_DEC_MC
 CASE_ESC_PERCENT
 CASE_UTF8
+CASE_CSI_TICK_STATE
+CASE_DECELR
+CASE_DECRQLP
+CASE_DECEFR
+CASE_DECSLE
Index: VTparse.h
--- xterm-115+/VTparse.h        Sun Apr 11 16:38:14 1999
+++ xterm-116/VTparse.h Sat Sep 25 10:51:16 1999
@@ -45,6 +45,9 @@
 extern Const PARSE_T ansi_table[];
 extern Const PARSE_T csi_ex_table[];
 extern Const PARSE_T csi_quo_table[];
+#if OPT_DEC_LOCATOR
+extern Const PARSE_T csi_tick_table[];
+#endif /* OPT_DEC_LOCATOR */
 extern Const PARSE_T csi_table[];
 extern Const PARSE_T dec2_table[];
 extern Const PARSE_T dec3_table[];
@@ -190,5 +193,10 @@
 #define CASE_DEC_MC 113
 #define CASE_ESC_PERCENT 114
 #define CASE_UTF8 115
+#define CASE_CSI_TICK_STATE 116
+#define CASE_DECELR 117
+#define CASE_DECRQLP 118
+#define CASE_DECEFR 119
+#define CASE_DECSLE 120
 
 #endif /* included_VTparse_h */
Index: aclocal.m4
--- xterm-115+/aclocal.m4       Wed Sep 15 22:08:52 1999
+++ xterm-116/aclocal.m4        Fri Sep 24 20:15:42 1999
@@ -209,7 +209,7 @@
 AC_DEFUN([CF_DISABLE_ECHO],[
 AC_MSG_CHECKING(if you want to see long compiling messages)
 CF_ARG_DISABLE(echo,
-       [  --disable-echo          test: display "compiling" commands],
+       [  --disable-echo          display "compiling" commands],
        [
     ECHO_LD='@echo linking [$]@;'
     RULE_CC='  @echo compiling [$]<'
@@ -657,6 +657,48 @@
 test $cf_cv_type_size_t = no && AC_DEFINE(size_t, unsigned)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl Check if this is a SYSV flavor of UTMP
+AC_DEFUN([CF_SYSV_UTMP],
+[
+AC_REQUIRE([CF_UTMP])
+AC_CACHE_CHECK(if $cf_cv_have_utmp is SYSV flavor,cf_cv_sysv_utmp,[
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <${cf_cv_have_utmp}.h>],[
+struct $cf_cv_have_utmp x;
+       setutent ();
+       getutid(&x);
+       pututline(&x);
+       endutent();],
+       [cf_cv_sysv_utmp=yes],
+       [cf_cv_sysv_utmp=no])
+])
+test $cf_cv_sysv_utmp = yes && AC_DEFINE(USE_SYSV_UTMP)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl Check if the system has a tty-group defined.  This is used in xterm when
+dnl setting pty ownership.
+AC_DEFUN([CF_TTY_GROUP],
+[
+AC_CACHE_CHECK(for tty group,cf_cv_tty_group,[
+AC_TRY_RUN([
+#include <sys/types.h>
+#include <grp.h>
+int main()
+{
+       struct group *ttygrp;
+       int code = (ttygrp = getgrnam("tty")) == 0;
+       endgrent();
+       exit(code);
+}
+       ],
+       [cf_cv_tty_group=yes],
+       [cf_cv_tty_group=no],
+       [cf_cv_tty_group=unknown])
+])
+test $cf_cv_tty_group = yes && AC_DEFINE(USE_TTY_GROUP)
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl Check for the declaration of fd_set.  Some platforms declare it in
 dnl <sys/types.h>, and some in <sys/select.h>, which requires <sys/types.h>
 AC_DEFUN([CF_TYPE_FD_SET],
@@ -688,6 +730,54 @@
 changequote([,])dnl
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl Check for UTMP/UTMPX headers
+AC_DEFUN([CF_UTMP],
+[
+AC_CACHE_CHECK(for utmp implementation,cf_cv_have_utmp,[
+       AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <utmp.h>],
+       [struct utmp x],
+       [cf_cv_have_utmp=utmp],
+       [AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <utmpx.h>],
+               [struct utmpx x],
+               [cf_cv_have_utmp=utmpx],
+               [cf_cv_have_utmp=no])
+               ])
+       ])
+
+if test $cf_cv_have_utmp != no ; then
+       AC_DEFINE(HAVE_UTMP)
+       test $cf_cv_have_utmp = utmpx && AC_DEFINE(UTMPX_FOR_UTMP)
+       CF_UTMP_UT_HOST
+       CF_SYSV_UTMP
+fi
+])
+dnl ---------------------------------------------------------------------------
+dnl Check if UTMP/UTMPX struct defines ut_host member
+AC_DEFUN([CF_UTMP_UT_HOST],
+[
+AC_REQUIRE([CF_UTMP])
+AC_MSG_CHECKING(if utmp.ut_host is declared)
+AC_CACHE_VAL(cf_cv_have_utmp_ut_host,[
+       AC_TRY_COMPILE([
+#include <sys/types.h>
+#ifdef UTMPX_FOR_UTMP
+#include <utmpx.h>
+#define utmp utmpx
+#else
+#include <utmp.h>
+#endif],
+       [struct utmp x; char *y = &x.ut_host[0]],
+       [cf_cv_have_utmp_ut_host=yes],
+       [cf_cv_have_utmp_ut_host=no])
+       ])
+AC_MSG_RESULT($cf_cv_have_utmp_ut_host)
+test $cf_cv_have_utmp_ut_host != no && AC_DEFINE(HAVE_UTMP_UT_HOST)
+])
+dnl ---------------------------------------------------------------------------
 dnl Use AC_VERBOSE w/o the warnings
 AC_DEFUN([CF_VERBOSE],
 [test -n "$verbose" && echo "  $1" 1>&AC_FD_MSG
@@ -702,22 +792,65 @@
 XTERM_GRP=
 AC_MSG_CHECKING(for presumed installation-mode)
 if test -f "$XTERM_PATH" ; then
-       ls -Llg $XTERM_PATH >conftest.out
-       read cf_mode cf_links XTERM_USR XTERM_GRP cf_rest <conftest.out
+       cf_option="-l -L"
+
+       # Expect listing to have fields like this:
+       #-r--r--r--   1 user      group       34293 Jul 18 16:29 pathname
+       ls $cf_option $XTERM_PATH >conftest.out
+       read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out
+       echo "if \"$cf_rest\" is null, try the -g option" 1>&AC_FD_CC
+       if test -z "$cf_rest" ; then
+               cf_option="$cf_option -g"
+               ls $cf_option $XTERM_PATH >conftest.out
+               read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out
+       fi
+
+       # If we have a pathname, and the date fields look right, assume we've
+       # captured the group as well.
+       echo "if \"$cf_rest\" is null, we do not look for group" 1>&AC_FD_CC
+       if test -n "$cf_rest" ; then
+changequote(,)dnl
+               cf_test=`echo "${cf_date2}${cf_date3}" | sed -e 's/[0-9:]//g'`
+changequote([,])dnl
+               echo "if we have date in proper columns ($cf_date1 $cf_date2 $cf_date3), \"$cf_test\" is null" 1>&AC_FD_CC
+               if test -z "$cf_test" ; then
+                       XTERM_USR=$cf_usr;
+                       XTERM_GRP=$cf_grp;
+               fi
+       fi
+       echo "derived user \"$XTERM_USR\", group \"$XTERM_GRP\" of previously-installed xterm" 1>&AC_FD_CC
+
+       echo "see if mode \"$cf_mode\" has s-bit set" 1>&AC_FD_CC
        case ".$cf_mode" in #(vi
        .???s*) #(vi
                XTERM_MODE=4711
+               XTERM_GRP=
                ;;
        .??????s*)
                XTERM_MODE=2711
+               XTERM_USR=
                ;;
        esac
 fi
-test "$XTERM_USR" = "root" && XTERM_USR=""
-test "$XTERM_GRP" = "root" && XTERM_GRP=""
+
+if test -n "${XTERM_USR}${XTERM_GRP}" ; then
+changequote(,)dnl
+       cf_usr=`id | sed -e 's/^[^(]*(//' -e 's/).*$//'`
+       cf_grp=`id | sed -e 's/^.* gid=[^(]*(//' -e 's/).*$//'`
+changequote([,])dnl
+       echo "configuring as user \"$cf_usr\", group \"$cf_grp\" of previously-installed xterm" 1>&AC_FD_CC
+       test "$XTERM_USR" = "$cf_usr" && XTERM_USR=""
+       test "$XTERM_USR" = "root"    && XTERM_USR=""
+       test "$XTERM_GRP" = "$cf_grp" && XTERM_GRP=""
+       test "$XTERM_GRP" = "root"    && XTERM_GRP=""
+       test "$XTERM_GRP" = "wheel"   && XTERM_GRP=""
+fi
+
 AC_MSG_RESULT($XTERM_MODE $XTERM_USR $XTERM_GRP)
+
 test -n "$XTERM_USR" && XTERM_USR="-o $XTERM_USR"
 test -n "$XTERM_GRP" && XTERM_GRP="-g $XTERM_GRP"
+
 AC_SUBST(XTERM_MODE)
 AC_SUBST(XTERM_USR)
 AC_SUBST(XTERM_GRP)
Index: button.c
--- xterm-115+/button.c Sat Sep 18 14:09:11 1999
+++ xterm-116/button.c  Sat Sep 25 11:14:56 1999
@@ -152,6 +152,12 @@
     if (screen->send_mouse_pos == MOUSE_OFF)
        return False;
 
+#if OPT_DEC_LOCATOR
+    if (screen->send_mouse_pos == DEC_LOCATOR) {
+       return( SendLocatorPosition( w, event ) );
+    }
+#endif /* OPT_DEC_LOCATOR */
+
     /* Make sure the event is an appropriate type */
     if ((screen->send_mouse_pos != BTN_EVENT_MOUSE)
      && (screen->send_mouse_pos != ANY_EVENT_MOUSE)
@@ -177,14 +183,6 @@
        }
        return False;
 
-      case VT200_MOUSE: /* DEC vt200 compatible */
-
-       if (KeyModifiers == 0 || KeyModifiers == ControlMask) {
-           EditorButton((XButtonEvent *)event);
-           return True;
-       }
-       return False;
-
       case VT200_HIGHLIGHT_MOUSE: /* DEC vt200 hilite tracking */
        if (  event->type == ButtonPress &&
              KeyModifiers == 0 &&
@@ -198,6 +196,8 @@
        }
        return False;
 
+      case VT200_MOUSE:        /* DEC vt200 compatible */
+
       /* xterm extension for motion reporting. June 1998 */
       /* EditorButton() will distinguish between the modes */
       case BTN_EVENT_MOUSE:
@@ -213,6 +213,474 @@
     }
 #undef KeyModifiers
 }
+
+#if OPT_DEC_LOCATOR
+
+#define KeyModifiers \
+    (event->xbutton.state & (ShiftMask | LockMask | ControlMask | Mod1Mask | \
+                            Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask ))
+
+#define        LocatorCoords( row, col, x, y, oor )                    \
+    if( screen->locator_pixels ) {                             \
+       (oor)=FALSE; (row) = (y)+1; (col) = (x)+1;              \
+       /* Limit to screen dimensions */                        \
+       if ((row) < 1) (row) = 1,(oor)=TRUE;                    \
+       else if ((row) > screen->border*2+Height(screen))       \
+           (row) = screen->border*2+Height(screen),(oor)=TRUE; \
+       if ((col) < 1) (col) = 1,(oor)=TRUE;                    \
+       else if ((col) > OriginX(screen)*2+Width(screen))       \
+           (col) = OriginX(screen)*2+Width(screen),(oor)=TRUE; \
+    } else {                                                   \
+       (oor)=FALSE;                                            \
+       /* Compute character position of mouse pointer */       \
+       (row) = ((y) - screen->border) / FontHeight(screen);    \
+       (col) = ((x) - OriginX(screen)) / FontWidth(screen);    \
+       /* Limit to screen dimensions */                        \
+       if ((row) < 0) (row) = 0,(oor)=TRUE;                    \
+       else if ((row) > screen->max_row)                       \
+           (row) = screen->max_row,(oor)=TRUE;                 \
+       if ((col) < 0) (col) = 0,(oor)=TRUE;                    \
+       else if ((col) > screen->max_col)                       \
+           (col) = screen->max_col,(oor)=TRUE;                 \
+       (row)++; (col)++;                                       \
+    }
+
+#define        MotionOff( s, t ) {                                             \
+           (s)->event_mask |= ButtonMotionMask;                        \
+           (s)->event_mask &= ~PointerMotionMask;                      \
+           XSelectInput(XtDisplay((t)), XtWindow((t)), (s)->event_mask); }
+
+#define        MotionOn( s, t ) {                                              \
+           (s)->event_mask &= ~ButtonMotionMask;                       \
+           (s)->event_mask |= PointerMotionMask;                       \
+           XSelectInput(XtDisplay((t)), XtWindow((t)), (s)->event_mask); }
+
+Boolean
+SendLocatorPosition(Widget w, XEvent* event)
+{
+    TScreen    *screen = &((XtermWidget)w)->screen;
+    int                pty = screen->respond;
+    Char       line[20];
+    int                row, col;
+    Boolean    oor;
+    int                button, count = 0;
+    int                state;
+
+    /* Make sure the event is an appropriate type */
+    if ((event->type != ButtonPress &&
+        event->type != ButtonRelease &&
+        !screen->loc_filter) ||
+       (KeyModifiers != 0 && KeyModifiers != ControlMask))
+       return( False );
+
+    if ((event->type == ButtonPress &&
+        !(screen->locator_events & LOC_BTNS_DN)) ||
+       (event->type == ButtonRelease &&
+        !(screen->locator_events & LOC_BTNS_UP)))
+       return( True );
+
+    if( event->type == MotionNotify ) {
+       CheckLocatorPosition( w, event );
+       return( True );
+    }
+
+    /* get button # */
+    button = event->xbutton.button - 1;
+
+    LocatorCoords( row, col, event->xbutton.x, event->xbutton.y, oor );
+
+    /*
+    * DECterm mouse:
+    *
+    * ESCAPE '[' event ; mask ; row ; column '&' 'w'
+    */
+    /* Build key sequence starting with \E[ */
+    if (screen->control_eight_bits) {
+           line[count++] = CSI;
+    } else {
+           line[count++] = ESC;
+           line[count++] = '[';
+    }
+
+    if( oor) {
+       /* Event - 0 = locator unavailable */
+       line[count++] = '0';
+
+       /* Sequence termination */
+       line[count++] = '&';
+       line[count++] = 'w';
+
+       /* Transmit key sequence to process running under xterm */
+       v_write(pty, line, count);
+
+       if( screen->locator_reset ) {
+           MotionOff( screen, term );
+           screen->send_mouse_pos = MOUSE_OFF;
+       }
+       return( True );
+    }
+
+    /*
+    * event:
+    *  1       no buttons
+    *  2       left button down
+    *  3       left button up
+    *  4       middle button down
+    *  5       middle button up
+    *  6       right button down
+    *  7       right button up
+    *  8       M4 down
+    *  9       M4 up
+    */
+    switch(event->type)
+    {
+       case ButtonPress:
+           line[count++] = '2' + (button<<1);
+           break;
+       case ButtonRelease:
+           line[count++] = '3' + (button<<1);
+           break;
+       default:
+           return( True );
+    }
+    line[count++] = ';';
+    /*
+    * mask:
+    * bit 7   bit 6   bit 5   bit 4   bit 3   bit 2       bit 1         bit 0
+    *                                 M4 down left down   middle down   right down
+    *
+    * Notice that Button1 (left) and Button3 (right) are swapped in the mask.
+    * Also, mask should be the state after the button press/release,
+    * X provides the state not including the button press/release.
+    */
+    state = (event->xbutton.state & (Button1Mask | Button2Mask | Button3Mask | Button4Mask)) >> 8;
+    state ^= 1 << button;      /* update mask to "after" state */
+    state = (state & ~(4|1)) | ((state&1)?4:0) | ((state&4)?1:0);      /* swap Button1 & Button3 */
+    sprintf( &(line[count]), "%d;%d;%d&w", state, row, col );
+    count = strlen( line );
+
+    /* Transmit key sequence to process running under xterm */
+    v_write(pty, line, count);
+
+    if( screen->locator_reset ) {
+       MotionOff( screen, term );
+       screen->send_mouse_pos = MOUSE_OFF;
+    }
+
+    /*
+    * DECterm turns the Locator off if a button is pressed while a filter rectangle
+    * is active. This might be a bug, but I don't know, so I'll emulate it anyways.
+    */
+    if( screen->loc_filter ) {
+       screen->send_mouse_pos = MOUSE_OFF;
+       screen->loc_filter = FALSE;
+       screen->locator_events = 0;
+       MotionOff( screen, term );
+    }
+
+    return( True );
+}
+#undef KeyModifiers
+
+#define KeyModifiers \
+    (mask & (ShiftMask | LockMask | ControlMask | Mod1Mask | \
+                            Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask ))
+/*
+* mask:
+* bit 7   bit 6   bit 5   bit 4   bit 3   bit 2       bit 1         bit 0
+*                                 M4 down left down   middle down   right down
+*
+* Button1 (left) and Button3 (right) are swapped in the mask relative to X.
+*/
+#define        ButtonState(state, mask)        \
+{ (state) = ((mask) & (Button1Mask | Button2Mask | Button3Mask | Button4Mask)) >> 8;   \
+  /* swap Button1 & Button3 */                                                         \
+  (state) = ((state) & ~(4|1)) | (((state)&1)?4:0) | (((state)&4)?1:0);                        \
+}
+
+void
+GetLocatorPosition(XtermWidget w)
+{
+    TScreen            *screen = &w->screen;
+    Window             root, child;
+    int                        rx, ry, x, y;
+    unsigned int       mask;
+    Char               line[20];
+    int                        pty = screen->respond;
+    int                        row = 0, col = 0;
+    Boolean            oor = FALSE;
+    Bool               ret = FALSE;
+    int                        count = 0;
+    int                        state;
+
+
+    /*
+    * DECterm turns the Locator off if the position is requested while a filter rectangle
+    * is active.  This might be a bug, but I don't know, so I'll emulate it anyways.
+    */
+    if( screen->loc_filter ) {
+       screen->send_mouse_pos = MOUSE_OFF;
+       screen->loc_filter = FALSE;
+       screen->locator_events = 0;
+       MotionOff( screen, term );
+    }
+
+    /* Build key sequence starting with \E[ */
+    if (screen->control_eight_bits) {
+       line[count++] = CSI;
+    } else {
+       line[count++] = ESC;
+       line[count++] = '[';
+    }
+    if (screen->send_mouse_pos == DEC_LOCATOR) {
+       ret = XQueryPointer( screen->display, VWindow(screen), &root,
+                       &child, &rx, &ry, &x, &y, &mask );
+       if (ret) {
+           LocatorCoords( row, col, x, y, oor );
+       }
+    }
+    if( ret == FALSE || oor /* || (KeyModifiers != 0 && KeyModifiers != ControlMask) */ )
+    {
+       /* Event - 0 = locator unavailable */
+       line[count++] = '0';
+
+       /* Sequence termination */
+       line[count++] = '&';
+       line[count++] = 'w';
+
+       /* Transmit key sequence to process running under xterm */
+       v_write(pty, line, count);
+
+       if( screen->locator_reset ) {
+           MotionOff( screen, term );
+           screen->send_mouse_pos = MOUSE_OFF;
+       }
+       return;
+    }
+
+    /* Event - 1 = response to locator request */
+    line[count++] = '1';
+    line[count++] = ';';
+
+    ButtonState( state, mask );
+    sprintf( &(line[count]), "%d;%d;%d&w", state, row, col );
+    count = strlen( line );
+
+    /* Transmit key sequence to process running under xterm */
+    v_write(pty, line, count);
+
+    if( screen->locator_reset ) {
+       MotionOff( screen, term );
+       screen->send_mouse_pos = MOUSE_OFF;
+    }
+}
+
+void
+InitLocatorFilter( XtermWidget w )
+{
+    TScreen            *screen = &w->screen;
+    Window             root, child;
+    int                        rx, ry, x, y;
+    unsigned int       mask;
+    Char               line[20];
+    int                        pty = screen->respond;
+    int                        row, col;
+    Boolean            oor;
+    Bool               ret;
+    int                        count = 0;
+    int                        state;
+
+
+    ret = XQueryPointer( screen->display, VWindow(screen),
+                           &root, &child, &rx, &ry, &x, &y, &mask );
+    if (ret) {
+       LocatorCoords( row, col, x, y, oor );
+    }
+    if( ret == FALSE || oor )
+    {
+       /* Locator is unavailable */
+
+       if( screen->loc_filter_top != LOC_FILTER_POS ||
+           screen->loc_filter_left != LOC_FILTER_POS ||
+           screen->loc_filter_bottom != LOC_FILTER_POS ||
+           screen->loc_filter_right != LOC_FILTER_POS )
+       {
+           /*
+           * If any explicit coordinates were received,
+           * report immediately with no coordinates.
+           */
+           /* Build key sequence starting with \E[ */
+           if (screen->control_eight_bits) {
+               line[count++] = CSI;
+           } else {
+               line[count++] = ESC;
+               line[count++] = '[';
+           }
+           /* Event - 0 = locator unavailable */
+           line[count++] = '0';
+
+           /* Sequence termination */
+           line[count++] = '&';
+           line[count++] = 'w';
+
+           /* Transmit key sequence to process running under xterm */
+           v_write(pty, line, count);
+
+           if( screen->locator_reset ) {
+               MotionOff( screen, term );
+               screen->send_mouse_pos = MOUSE_OFF;
+           }
+       } else {
+           /*
+           * No explicit coordinates were received, and the pointer is
+           * unavailable.  Report when the pointer re-enters the window.
+           */
+           screen->loc_filter = TRUE;
+           MotionOn( screen, term );
+       }
+       return;
+    }
+
+    /*
+    * Adjust rectangle coordinates:
+    *  1. Replace "LOC_FILTER_POS" with current coordinates
+    *  2. Limit coordinates to screen size
+    *  3. make sure top and left are less than bottom and right, resp.
+    */
+    if( screen->locator_pixels ) {
+       rx = OriginX(screen)*2+Width(screen);
+       ry = screen->border*2+Height(screen);
+    } else {
+       rx = screen->max_col;
+       ry = screen->max_row;
+    }
+
+#define        Adjust( coord, def, max )                               \
+       if( (coord) == LOC_FILTER_POS ) (coord) = (def);        \
+       else if ((coord) < 1)           (coord) = 1;            \
+       else if ((coord) > (max))       (coord) = (max)
+
+    Adjust( screen->loc_filter_top, row, ry );
+    Adjust( screen->loc_filter_left, col, rx );
+    Adjust( screen->loc_filter_bottom, row, ry );
+    Adjust( screen->loc_filter_right, col, rx );
+
+    if( screen->loc_filter_top > screen->loc_filter_bottom ) {
+       ry = screen->loc_filter_top;
+       screen->loc_filter_top = screen->loc_filter_bottom;
+       screen->loc_filter_bottom = ry;
+    }
+
+    if( screen->loc_filter_left > screen->loc_filter_right ) {
+       rx = screen->loc_filter_left;
+       screen->loc_filter_left = screen->loc_filter_right;
+       screen->loc_filter_right = rx;
+    }
+
+    if( (col < screen->loc_filter_left) ||
+       (col > screen->loc_filter_right) ||
+       (row < screen->loc_filter_top) ||
+       (row > screen->loc_filter_bottom) )
+    {
+       /* Pointer is already outside the rectangle - report immediately */
+       /* Build key sequence starting with \E[ */
+       if (screen->control_eight_bits) {
+           line[count++] = CSI;
+       } else {
+           line[count++] = ESC;
+           line[count++] = '[';
+       }
+       /* Event - 10 = locator outside filter */
+       line[count++] = '1';
+       line[count++] = '0';
+       line[count++] = ';';
+
+       ButtonState( state, mask );
+       sprintf( &(line[count]), "%d;%d;%d&w", state, row, col );
+       count = strlen( line );
+
+       /* Transmit key sequence to process running under xterm */
+       v_write(pty, line, count);
+
+       if( screen->locator_reset ) {
+           MotionOff( screen, term );
+           screen->send_mouse_pos = MOUSE_OFF;
+       }
+       return;
+    }
+
+    /*
+    * Rectangle is set up.  Allow pointer tracking
+    * to detect if the mouse leaves the rectangle.
+    */
+    screen->loc_filter = TRUE;
+    MotionOn( screen, term );
+}
+
+void
+CheckLocatorPosition( Widget w, XEvent *event )
+{
+    TScreen            *screen = &((XtermWidget)w)->screen;
+    Char               line[20];
+    int                        pty = screen->respond;
+    int                        row, col;
+    Boolean            oor;
+    int                        count = 0;
+    int                        state;
+
+    LocatorCoords( row, col, event->xbutton.x, event->xbutton.y, oor );
+
+    /*
+    * Send report if the pointer left the filter rectangle, if
+    * the pointer left the window, or if the filter rectangle
+    * had no coordinates and the pointer re-entered the window.
+    */
+    if (oor || (screen->loc_filter_top == LOC_FILTER_POS) ||
+       (col < screen->loc_filter_left) ||
+       (col > screen->loc_filter_right) ||
+       (row < screen->loc_filter_top) ||
+       (row > screen->loc_filter_bottom))
+    {
+       /* Filter triggered - disable it */
+       screen->loc_filter = FALSE;
+       MotionOff( screen, term );
+
+       /* Build key sequence starting with \E[ */
+       if (screen->control_eight_bits) {
+           line[count++] = CSI;
+       } else {
+           line[count++] = ESC;
+           line[count++] = '[';
+       }
+
+       if (oor) {
+           /* Event - 0 = locator unavailable */
+           line[count++] = '0';
+
+           /* Sequence termination */
+           line[count++] = '&';
+           line[count++] = 'w';
+       } else {
+           /* Event - 10 = locator outside filter */
+           line[count++] = '1';
+           line[count++] = '0';
+           line[count++] = ';';
+
+           ButtonState( state, event->xbutton.state );
+           sprintf( &(line[count]), "%d;%d;%d&w", state, row, col );
+           count = strlen( line );
+       }
+       /* Transmit key sequence to process running under xterm */
+       v_write(pty, line, count);
+
+       if( screen->locator_reset ) {
+           MotionOff( screen, term );
+           screen->send_mouse_pos = MOUSE_OFF;
+       }
+    }
+}
+#undef KeyModifiers
+#endif /* OPT_DEC_LOCATOR */
 
 void
 DiredButton(
Index: charproc.c
--- xterm-115+/charproc.c       Sat Sep 18 12:40:04 1999
+++ xterm-116/charproc.c        Sat Sep 25 10:28:07 1999
@@ -940,6 +940,13 @@
                        memcpy(new_string, area, used * sizeof(type)); \
                }
 
+#define        MotionOff( s, t )                                                       \
+       if ((s)->event_mask & PointerMotionMask) {                              \
+           (s)->event_mask |= ButtonMotionMask;                                \
+           (s)->event_mask &= ~PointerMotionMask;                              \
+           XSelectInput(XtDisplay((t)), XtWindow((t)), (s)->event_mask);       \
+       }
+
 static void VTparse(void)
 {
        /* Buffer for processing printable text */
@@ -2104,10 +2111,92 @@
                        break;
 
                 case CASE_CSI_EX_STATE:
-                       /* esc exclamation */
+                       /* csi exclamation */
                        parsestate = csi_ex_table;
                        break;
 
+#if OPT_DEC_LOCATOR
+                case CASE_CSI_TICK_STATE:
+                       /* csi tick (') */
+                       parsestate = csi_tick_table;
+                       break;
+
+                case CASE_DECEFR:
+                       /* DECEFR - Enable Filter Rectangle */
+                       if (screen->send_mouse_pos == DEC_LOCATOR) {
+                           MotionOff( screen, term );
+                           if((screen->loc_filter_top = param[0]) < 1)
+                               screen->loc_filter_top = LOC_FILTER_POS;
+                           if(nparam < 2 || (screen->loc_filter_left = param[1]) < 1)
+                               screen->loc_filter_left = LOC_FILTER_POS;
+                           if(nparam < 3 || (screen->loc_filter_bottom = param[2]) < 1)
+                               screen->loc_filter_bottom = LOC_FILTER_POS;
+                           if(nparam < 4 || (screen->loc_filter_right = param[3]) < 1)
+                               screen->loc_filter_right = LOC_FILTER_POS;
+                           InitLocatorFilter( term );
+                       }
+                       parsestate = groundtable;
+                       break;
+
+                case CASE_DECELR:
+                       /* DECELR - Enable Locator Reports */
+                       MotionOff( screen, term );
+                       if (param[0] <= 0 || param[0] > 2) {
+                           screen->send_mouse_pos = MOUSE_OFF;
+                       } else {
+                           screen->send_mouse_pos = DEC_LOCATOR;
+                           if (param[0] == 2) {
+                               screen->locator_reset = TRUE;
+                           } else {
+                               screen->locator_reset = FALSE;
+                           }
+                           if (nparam < 2 || param[1] != 1) {
+                               screen->locator_pixels = FALSE;
+                           } else {
+                               screen->locator_pixels = TRUE;
+                           }
+                           screen->loc_filter = FALSE;
+                       }
+                       parsestate = groundtable;
+                       break;
+
+                case CASE_DECSLE:
+                       /* DECSLE - Select Locator Events */
+                       for (count=0; count<nparam; ++count) {
+                           switch (param[count]) {
+                               case DEFAULT:
+                               case 0:
+                                   MotionOff( screen, term );
+                                   screen->loc_filter = FALSE;
+                                   screen->locator_events = 0;
+                                   break;
+                               case 1:
+                                   screen->locator_events |= LOC_BTNS_DN;
+                                   break;
+                               case 2:
+                                   screen->locator_events &= ~LOC_BTNS_DN;
+                                   break;
+                               case 3:
+                                   screen->locator_events |= LOC_BTNS_UP;
+                                   break;
+                               case 4:
+                                   screen->locator_events &= ~LOC_BTNS_UP;
+                                   break;
+                           }
+                       }
+                       parsestate = groundtable;
+                       break;
+
+                case CASE_DECRQLP:
+                       /* DECRQLP - Request Locator Position */
+                       if( param[0] < 2 ) {
+                           /* Issue DECLRP Locator Position Report */
+                           GetLocatorPosition( term );
+                       }
+                       parsestate = groundtable;
+                       break;
+#endif /* OPT_DEC_LOCATOR */
+
                 case CASE_S7C1T:
                        show_8bit_control(False);
                        parsestate = groundtable;
@@ -2881,6 +2970,7 @@
                        /* ignore autorepeat */
                        break;
                case SET_X10_MOUSE:     /* MIT bogus sequence           */
+                       MotionOff( screen, termw );
                        set_mousemode(X10_MOUSE);
                        break;
                case 18:                /* DECPFF: print form feed */
@@ -2986,13 +3076,16 @@
                        (*func)(&termw->keyboard.flags, MODE_DECBKM);
                        update_decbkm();
                        break;
-               case SET_VT200_MOUSE:   /* xterm bogus sequence         */
+               case SET_VT200_MOUSE:   /* xterm bogus sequence         */
+                       MotionOff( screen, termw );
                        set_mousemode(VT200_MOUSE);
                        break;
                case SET_VT200_HIGHLIGHT_MOUSE: /* xterm sequence w/hilite tracking */
+                       MotionOff( screen, termw );
                        set_mousemode(VT200_HIGHLIGHT_MOUSE);
                        break;
                case SET_BTN_EVENT_MOUSE:
+                       MotionOff( screen, termw );
                        set_mousemode(BTN_EVENT_MOUSE);
                        break;
                case SET_ANY_EVENT_MOUSE:
Index: configure
--- xterm-115+/configure        Fri Sep 17 06:57:26 1999
+++ xterm-116/configure Sat Sep 25 11:08:11 1999
@@ -219,13 +219,14 @@
   --enable-toolbar        compile-in toolbar for pulldown menus
   --disable-vt52          disable VT52 emulation
   --enable-wide-chars     enable wide-character support
+  --enable-dec-locator    enable DECterm Locator support
   --disable-ziconbeep     disable -ziconbeep option
   --enable-trace          test: set to enable debugging traces
-  --disable-echo          test: display "compiling" commands
+  --disable-echo          display "compiling" commands
   --enable-xmc-glitch     test: enable xmc magic-cookie emulation
-  --enable-warnings       test: turn on GCC compiler warnings
 EOF
 cat <<EOF
+  --enable-warnings       test: turn on GCC compiler warnings
 EOF
     exit 0 ;;
 
@@ -593,7 +594,7 @@
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:597: checking host system type" >&5
+echo "configure:598: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -644,7 +645,7 @@
 # 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:648: checking for $ac_word" >&5
+echo "configure:649: 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
@@ -674,7 +675,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:678: checking for $ac_word" >&5
+echo "configure:679: 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
@@ -725,7 +726,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:729: checking for $ac_word" >&5
+echo "configure:730: 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
@@ -757,7 +758,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:761: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:762: 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.
@@ -768,12 +769,12 @@
 
 cat > conftest.$ac_ext << EOF
 
-#line 772 "configure"
+#line 773 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:778: \"$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
@@ -799,12 +800,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:803: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:804: 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:808: checking whether we are using GNU C" >&5
+echo "configure:809: 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
@@ -813,7 +814,7 @@
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:817: \"$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:818: \"$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
@@ -832,7 +833,7 @@
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:836: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:837: 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
@@ -864,7 +865,7 @@
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:868: checking how to run the C preprocessor" >&5
+echo "configure:869: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -879,13 +880,13 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 883 "configure"
+#line 884 "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:889: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:890: \"$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
   :
@@ -896,13 +897,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 900 "configure"
+#line 901 "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:906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:907: \"$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
   :
@@ -913,13 +914,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 917 "configure"
+#line 918 "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:923: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:924: \"$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
   :
@@ -945,13 +946,13 @@
 
 if test $ac_cv_prog_gcc = yes; then
     echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:949: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:950: 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 955 "configure"
+#line 956 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
@@ -969,7 +970,7 @@
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat > conftest.$ac_ext <<EOF
-#line 973 "configure"
+#line 974 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
@@ -1002,7 +1003,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:1006: checking for a BSD compatible install" >&5
+echo "configure:1007: 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
@@ -1057,9 +1058,9 @@
 
 ###    checks for UNIX variants that set C preprocessor variables
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:1061: checking for AIX" >&5
+echo "configure:1062: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 1063 "configure"
+#line 1064 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -1081,7 +1082,7 @@
 
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1085: checking for POSIXized ISC" >&5
+echo "configure:1086: 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
@@ -1103,17 +1104,17 @@
 
 ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-echo "configure:1107: checking for minix/config.h" >&5
+echo "configure:1108: 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 1112 "configure"
+#line 1113 "configure"
 #include "confdefs.h"
 #include <minix/config.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1117: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1118: \"$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*
@@ -1152,21 +1153,25 @@
 
 
 ###    checks for header files
-for ac_hdr in stdlib.h termios.h unistd.h
+for ac_hdr in \
+stdlib.h \
+termios.h \
+unistd.h \
+
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1160: checking for $ac_hdr" >&5
+echo "configure:1165: 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 1165 "configure"
+#line 1170 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1175: \"$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*
@@ -1196,13 +1201,13 @@
 ###    checks for typedefs
 
 echo $ac_n "checking for size_t in <sys/types.h> or <stdio.h>""... $ac_c" 1>&6
-echo "configure:1200: checking for size_t in <sys/types.h> or <stdio.h>" >&5
+echo "configure:1205: 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 1206 "configure"
+#line 1211 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1215,7 +1220,7 @@
 size_t x
 ; return 0; }
 EOF
-if { (eval echo configure:1219: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_size_t=yes
 else
@@ -1235,12 +1240,12 @@
 
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1239: checking for ANSI C header files" >&5
+echo "configure:1244: 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 1244 "configure"
+#line 1249 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1248,7 +1253,7 @@
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1257: \"$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*
@@ -1265,7 +1270,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 1269 "configure"
+#line 1274 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1283,7 +1288,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 1287 "configure"
+#line 1292 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1304,7 +1309,7 @@
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1308 "configure"
+#line 1313 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1315,7 +1320,7 @@
 exit (0); }
 
 EOF
-if { (eval echo configure:1319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1339,12 +1344,12 @@
 fi
 
 echo $ac_n "checking for time_t""... $ac_c" 1>&6
-echo "configure:1343: checking for time_t" >&5
+echo "configure:1348: 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 1348 "configure"
+#line 1353 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1382,12 +1387,12 @@
        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1386: checking for $ac_func" >&5
+echo "configure:1391: 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 1391 "configure"
+#line 1396 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1410,7 +1415,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1419: \"$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
@@ -1436,12 +1441,12 @@
 
 
 echo $ac_n "checking for memmove""... $ac_c" 1>&6
-echo "configure:1440: checking for memmove" >&5
+echo "configure:1445: 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 1445 "configure"
+#line 1450 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char memmove(); below.  */
@@ -1464,7 +1469,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1473: \"$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
@@ -1483,12 +1488,12 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for bcopy""... $ac_c" 1>&6
-echo "configure:1487: checking for bcopy" >&5
+echo "configure:1492: 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 1492 "configure"
+#line 1497 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char bcopy(); below.  */
@@ -1511,7 +1516,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1520: \"$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
@@ -1527,7 +1532,7 @@
   echo "$ac_t""yes" 1>&6
   
        echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6
-echo "configure:1531: checking if bcopy does overlapping moves" >&5
+echo "configure:1536: 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
@@ -1536,7 +1541,7 @@
   cf_cv_good_bcopy=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 1540 "configure"
+#line 1545 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1549,7 +1554,7 @@
 }
                
 EOF
-if { (eval echo configure:1553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1558: \"$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
@@ -1587,7 +1592,7 @@
 
 
 echo $ac_n "checking for full tgetent function""... $ac_c" 1>&6
-echo "configure:1591: checking for full tgetent function" >&5
+echo "configure:1596: 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
@@ -1602,7 +1607,7 @@
   echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&5
 else
   cat > conftest.$ac_ext <<EOF
-#line 1606 "configure"
+#line 1611 "configure"
 #include "confdefs.h"
 
 /* terminfo implementations ignore the buffer argument, making it useless for
@@ -1616,7 +1621,7 @@
        tgetent(buffer, "vt100");
        exit(buffer[0] == 0); }
 EOF
-if { (eval echo configure:1620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1625: \"$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
@@ -1651,17 +1656,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1655: checking for $ac_hdr" >&5
+echo "configure:1660: 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 1660 "configure"
+#line 1665 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1665: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1670: \"$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*
@@ -1694,7 +1699,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:1698: checking for partial tgetent function" >&5
+echo "configure:1703: 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
@@ -1703,14 +1708,14 @@
        for cf_termlib in $cf_TERMLIB ; do
                LIBS="$cf_save_LIBS -l$cf_termlib"
                cat > conftest.$ac_ext <<EOF
-#line 1707 "configure"
+#line 1712 "configure"
 #include "confdefs.h"
 
 int main() {
 tgetent(0, 0)
 ; return 0; }
 EOF
-if { (eval echo configure:1714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1719: \"$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"
@@ -1733,17 +1738,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1737: checking for $ac_hdr" >&5
+echo "configure:1742: 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 1742 "configure"
+#line 1747 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1747: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1752: \"$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*
@@ -1780,16 +1785,163 @@
 fi
 
 
+echo $ac_n "checking for utmp implementation""... $ac_c" 1>&6
+echo "configure:1790: 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
+  
+       cat > conftest.$ac_ext <<EOF
+#line 1796 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <utmp.h>
+int main() {
+struct utmp x
+; return 0; }
+EOF
+if { (eval echo configure:1805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  cf_cv_have_utmp=utmp
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cat > conftest.$ac_ext <<EOF
+#line 1813 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <utmpx.h>
+int main() {
+struct utmpx x
+; return 0; }
+EOF
+if { (eval echo configure:1822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  cf_cv_have_utmp=utmpx
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cf_cv_have_utmp=no
+fi
+rm -f conftest*
+               
+fi
+rm -f conftest*
+       
+fi
+
+echo "$ac_t""$cf_cv_have_utmp" 1>&6
+
+if test $cf_cv_have_utmp != no ; then
+       cat >> confdefs.h <<\EOF
+#define HAVE_UTMP 1
+EOF
+
+       test $cf_cv_have_utmp = utmpx && cat >> confdefs.h <<\EOF
+#define UTMPX_FOR_UTMP 1
+EOF
+
+       
+
+echo $ac_n "checking if utmp.ut_host is declared""... $ac_c" 1>&6
+echo "configure:1852: 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 1858 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#ifdef UTMPX_FOR_UTMP
+#include <utmpx.h>
+#define utmp utmpx
+#else
+#include <utmp.h>
+#endif
+int main() {
+struct utmp x; char *y = &x.ut_host[0]
+; return 0; }
+EOF
+if { (eval echo configure:1872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  cf_cv_have_utmp_ut_host=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cf_cv_have_utmp_ut_host=no
+fi
+rm -f conftest*
+       
+fi
+
+echo "$ac_t""$cf_cv_have_utmp_ut_host" 1>&6
+test $cf_cv_have_utmp_ut_host != no && cat >> confdefs.h <<\EOF
+#define HAVE_UTMP_UT_HOST 1
+EOF
+
+
+       
+
+echo $ac_n "checking if $cf_cv_have_utmp is SYSV flavor""... $ac_c" 1>&6
+echo "configure:1894: 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
+  
+cat > conftest.$ac_ext <<EOF
+#line 1900 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <${cf_cv_have_utmp}.h>
+int main() {
+
+struct $cf_cv_have_utmp x;
+       setutent ();
+       getutid(&x);
+       pututline(&x);
+       endutent();
+; return 0; }
+EOF
+if { (eval echo configure:1914: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  cf_cv_sysv_utmp=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cf_cv_sysv_utmp=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$ac_t""$cf_cv_sysv_utmp" 1>&6
+test $cf_cv_sysv_utmp = yes && cat >> confdefs.h <<\EOF
+#define USE_SYSV_UTMP 1
+EOF
+
+
+fi
+
+
 ###    checks for structures
 
 echo $ac_n "checking for declaration of fd_set""... $ac_c" 1>&6
-echo "configure:1787: checking for declaration of fd_set" >&5
+echo "configure:1939: 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
   
 cat > conftest.$ac_ext <<EOF
-#line 1793 "configure"
+#line 1945 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1797,7 +1949,7 @@
 fd_set x
 ; return 0; }
 EOF
-if { (eval echo configure:1801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1953: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_fd_set=sys/types.h
 else
@@ -1805,7 +1957,7 @@
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 1809 "configure"
+#line 1961 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1814,7 +1966,7 @@
 fd_set x
 ; return 0; }
 EOF
-if { (eval echo configure:1818: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_fd_set=sys/select.h
 else
@@ -1838,14 +1990,14 @@
 
 
 echo $ac_n "checking if POSIX VDISABLE symbol should be used""... $ac_c" 1>&6
-echo "configure:1842: checking if POSIX VDISABLE symbol should be used" >&5
+echo "configure:1994: checking if POSIX VDISABLE symbol should be used" >&5
 if eval "test \"`echo '$''{'cf_cv_posix_vdisable'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 1849 "configure"
+#line 2001 "configure"
 #include "confdefs.h"
 
 #if HAVE_TERMIOS_H && HAVE_TCGETATTR
@@ -1863,7 +2015,7 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:1867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_posix_vdisable=yes
 else
@@ -1875,7 +2027,7 @@
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 1879 "configure"
+#line 2031 "configure"
 #include "confdefs.h"
 
 #if HAVE_TERMIOS_H && HAVE_TCGETATTR
@@ -1888,7 +2040,7 @@
 int main() { exit(_POSIX_VDISABLE == -1); }
 #endif
 EOF
-if { (eval echo configure:1892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cf_cv_posix_vdisable=yes
 else
@@ -1914,13 +2066,13 @@
 
 
 echo $ac_n "checking if external errno is declared""... $ac_c" 1>&6
-echo "configure:1918: checking if external errno is declared" >&5
+echo "configure:2070: 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 1924 "configure"
+#line 2076 "configure"
 #include "confdefs.h"
 
 #if HAVE_STDLIB_H
@@ -1933,7 +2085,7 @@
 long x = (long) errno
 ; return 0; }
 EOF
-if { (eval echo configure:1937: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2089: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval 'cf_cv_dcl_'errno'=yes'
 else
@@ -1964,13 +2116,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:1968: checking if external errno exists" >&5
+echo "configure:2120: 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 1974 "configure"
+#line 2126 "configure"
 #include "confdefs.h"
 
 #undef errno
@@ -1980,7 +2132,7 @@
 errno = 2
 ; return 0; }
 EOF
-if { (eval echo configure:1984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2136: \"$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
@@ -2011,14 +2163,60 @@
 
 
 
+echo $ac_n "checking for tty group""... $ac_c" 1>&6
+echo "configure:2168: checking for tty group" >&5
+if eval "test \"`echo '$''{'cf_cv_tty_group'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+if test "$cross_compiling" = yes; then
+  cf_cv_tty_group=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2177 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <grp.h>
+int main()
+{
+       struct group *ttygrp;
+       int code = (ttygrp = getgrnam("tty")) == 0;
+       endgrent();
+       exit(code);
+}
+       
+EOF
+if { (eval echo configure:2191: \"$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
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  cf_cv_tty_group=no
+fi
+rm -fr conftest*
+fi
+
+
+fi
+
+echo "$ac_t""$cf_cv_tty_group" 1>&6
+test $cf_cv_tty_group = yes && cat >> confdefs.h <<\EOF
+#define USE_TTY_GROUP 1
+EOF
+
+
+
 ###    checks for compiler characteristics
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:2017: checking for working const" >&5
+echo "configure:2215: 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 2022 "configure"
+#line 2220 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -2067,7 +2265,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2071: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2269: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -2089,7 +2287,7 @@
 
 
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:2093: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:2291: 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
@@ -2113,7 +2311,7 @@
 do
        CFLAGS="$cf_save_CFLAGS $cf_arg"
        cat > conftest.$ac_ext <<EOF
-#line 2117 "configure"
+#line 2315 "configure"
 #include "confdefs.h"
 
 #ifndef CC_HAS_PROTOS
@@ -2129,7 +2327,7 @@
        struct s2 {int (*f) (double a);};
 ; return 0; }
 EOF
-if { (eval echo configure:2133: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ansi_cc="$cf_arg"; break
 else
@@ -2159,12 +2357,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:2163: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:2361: 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 2168 "configure"
+#line 2366 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -2180,7 +2378,7 @@
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:2184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2382: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -2206,7 +2404,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:2210: checking for X" >&5
+echo "configure:2408: checking for X" >&5
 
 
 # Check whether --with-x or --without-x was given.
@@ -2269,12 +2467,12 @@
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 2273 "configure"
+#line 2471 "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:2278: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2476: \"$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*
@@ -2343,14 +2541,14 @@
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2347 "configure"
+#line 2545 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:2354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2552: \"$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.
@@ -2450,7 +2648,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:2454: checking for open in -lc_s" >&5
+echo "configure:2652: 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
@@ -2458,7 +2656,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lc_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2462 "configure"
+#line 2660 "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
@@ -2469,7 +2667,7 @@
 open()
 ; return 0; }
 EOF
-if { (eval echo configure:2473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2671: \"$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
@@ -2486,7 +2684,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:2490: checking for gethostname in -lbsd" >&5
+echo "configure:2688: 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
@@ -2494,7 +2692,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lbsd  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2498 "configure"
+#line 2696 "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
@@ -2505,7 +2703,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:2509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2707: \"$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
@@ -2522,7 +2720,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:2526: checking for gethostname in -lnsl_s" >&5
+echo "configure:2724: 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
@@ -2530,7 +2728,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2534 "configure"
+#line 2732 "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
@@ -2541,7 +2739,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:2545: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2743: \"$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
@@ -2558,7 +2756,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:2562: checking for XOpenDisplay in -lX11_s" >&5
+echo "configure:2760: 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
@@ -2566,7 +2764,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lX11_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2570 "configure"
+#line 2768 "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
@@ -2577,7 +2775,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:2581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2779: \"$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
@@ -2594,7 +2792,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:2598: checking for XtAppInitialize in -lXt_s" >&5
+echo "configure:2796: 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
@@ -2602,7 +2800,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXt_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2606 "configure"
+#line 2804 "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
@@ -2613,7 +2811,7 @@
 XtAppInitialize()
 ; return 0; }
 EOF
-if { (eval echo configure:2617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2815: \"$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
@@ -2654,7 +2852,7 @@
        ;;
 *)
        echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:2658: checking for socket in -lsocket" >&5
+echo "configure:2856: 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
@@ -2662,7 +2860,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2666 "configure"
+#line 2864 "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
@@ -2673,7 +2871,7 @@
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:2677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2875: \"$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
@@ -2701,7 +2899,7 @@
 fi
 
        echo $ac_n "checking for gethostname in -lnsl""... $ac_c" 1>&6
-echo "configure:2705: checking for gethostname in -lnsl" >&5
+echo "configure:2903: 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
@@ -2709,7 +2907,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2713 "configure"
+#line 2911 "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
@@ -2720,7 +2918,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:2724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2922: \"$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
@@ -2771,17 +2969,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:2775: checking whether -R must be followed by a space" >&5
+echo "configure:2973: 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 2778 "configure"
+#line 2976 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -2797,14 +2995,14 @@
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 2801 "configure"
+#line 2999 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -2836,7 +3034,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:2840: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:3038: 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
@@ -2844,7 +3042,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2848 "configure"
+#line 3046 "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
@@ -2855,7 +3053,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:2859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3057: \"$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
@@ -2877,7 +3075,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:2881: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:3079: 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
@@ -2885,7 +3083,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet_stub  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2889 "configure"
+#line 3087 "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
@@ -2896,7 +3094,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:2900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3098: \"$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
@@ -2925,12 +3123,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:2929: checking for gethostbyname" >&5
+echo "configure:3127: 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 2934 "configure"
+#line 3132 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -2953,7 +3151,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3155: \"$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
@@ -2974,7 +3172,7 @@
 
     if test $ac_cv_func_gethostbyname = no; then
       echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:2978: checking for gethostbyname in -lnsl" >&5
+echo "configure:3176: 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
@@ -2982,7 +3180,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2986 "configure"
+#line 3184 "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
@@ -2993,7 +3191,7 @@
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:2997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3195: \"$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
@@ -3023,12 +3221,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:3027: checking for connect" >&5
+echo "configure:3225: 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 3032 "configure"
+#line 3230 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -3051,7 +3249,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3253: \"$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
@@ -3072,7 +3270,7 @@
 
     if test $ac_cv_func_connect = no; then
       echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:3076: checking for connect in -lsocket" >&5
+echo "configure:3274: 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
@@ -3080,7 +3278,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3084 "configure"
+#line 3282 "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
@@ -3091,7 +3289,7 @@
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:3095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3293: \"$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
@@ -3115,12 +3313,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:3119: checking for remove" >&5
+echo "configure:3317: 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 3124 "configure"
+#line 3322 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -3143,7 +3341,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3345: \"$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
@@ -3164,7 +3362,7 @@
 
     if test $ac_cv_func_remove = no; then
       echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:3168: checking for remove in -lposix" >&5
+echo "configure:3366: 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
@@ -3172,7 +3370,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3176 "configure"
+#line 3374 "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
@@ -3183,7 +3381,7 @@
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:3187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3385: \"$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
@@ -3207,12 +3405,12 @@
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:3211: checking for shmat" >&5
+echo "configure:3409: 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 3216 "configure"
+#line 3414 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -3235,7 +3433,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3437: \"$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
@@ -3256,7 +3454,7 @@
 
     if test $ac_cv_func_shmat = no; then
       echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:3260: checking for shmat in -lipc" >&5
+echo "configure:3458: 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
@@ -3264,7 +3462,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lipc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3268 "configure"
+#line 3466 "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
@@ -3275,7 +3473,7 @@
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:3279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3477: \"$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
@@ -3308,7 +3506,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:3312: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:3510: 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
@@ -3316,7 +3514,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3320 "configure"
+#line 3518 "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
@@ -3327,7 +3525,7 @@
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:3331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3529: \"$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
@@ -3354,7 +3552,7 @@
        LDFLAGS="$LDFLAGS $X_LIBS"
        CFLAGS="$CFLAGS $X_CFLAGS"
        echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:3358: checking for XOpenDisplay in -lX11" >&5
+echo "configure:3556: 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
@@ -3362,7 +3560,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3366 "configure"
+#line 3564 "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
@@ -3373,7 +3571,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:3377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3575: \"$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
@@ -3394,7 +3592,7 @@
 fi
 
        echo $ac_n "checking for XtAppInitialize in -lXt""... $ac_c" 1>&6
-echo "configure:3398: checking for XtAppInitialize in -lXt" >&5
+echo "configure:3596: 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
@@ -3402,7 +3600,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3406 "configure"
+#line 3604 "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
@@ -3413,7 +3611,7 @@
 XtAppInitialize()
 ; return 0; }
 EOF
-if { (eval echo configure:3417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3615: \"$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
@@ -3469,17 +3667,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3473: checking for $ac_hdr" >&5
+echo "configure:3671: 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 3478 "configure"
+#line 3676 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3483: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3681: \"$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*
@@ -3527,7 +3725,7 @@
 
 
 echo $ac_n "checking for XextCreateExtension in -lXext""... $ac_c" 1>&6
-echo "configure:3531: checking for XextCreateExtension in -lXext" >&5
+echo "configure:3729: 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
@@ -3535,7 +3733,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXext  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3539 "configure"
+#line 3737 "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
@@ -3546,7 +3744,7 @@
 XextCreateExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:3550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3748: \"$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
@@ -3582,13 +3780,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:3586: checking for $cf_test in $cf_path" >&5
+echo "configure:3784: checking for $cf_test in $cf_path" >&5
                else
                        echo $ac_n "checking for $cf_test""... $ac_c" 1>&6
-echo "configure:3589: checking for $cf_test" >&5
+echo "configure:3787: checking for $cf_test" >&5
                fi
                cat > conftest.$ac_ext <<EOF
-#line 3592 "configure"
+#line 3790 "configure"
 #include "confdefs.h"
 
 #include <X11/Intrinsic.h>
@@ -3597,7 +3795,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3601: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3799: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_result=yes
 else
@@ -3623,21 +3821,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:3627: checking for $cf_lib in $cf_path" >&5
+echo "configure:3825: 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:3631: checking for $cf_test in $cf_lib" >&5
+echo "configure:3829: checking for $cf_test in $cf_lib" >&5
                        fi
                        cat > conftest.$ac_ext <<EOF
-#line 3634 "configure"
+#line 3832 "configure"
 #include "confdefs.h"
 
 int main() {
 $cf_test()
 ; return 0; }
 EOF
-if { (eval echo configure:3641: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_result=yes
 else
@@ -3683,12 +3881,12 @@
 for ac_func in grantpt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3687: checking for $ac_func" >&5
+echo "configure:3885: 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 3692 "configure"
+#line 3890 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3711,7 +3909,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3913: \"$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
@@ -3733,7 +3931,7 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6
-echo "configure:3737: checking for openpty in -lutil" >&5
+echo "configure:3935: 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
@@ -3741,7 +3939,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lutil  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3745 "configure"
+#line 3943 "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
@@ -3752,7 +3950,7 @@
 openpty()
 ; return 0; }
 EOF
-if { (eval echo configure:3756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3954: \"$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
@@ -3787,7 +3985,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:3791: checking for $ac_word" >&5
+echo "configure:3989: 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
@@ -3823,22 +4021,60 @@
 XTERM_USR=
 XTERM_GRP=
 echo $ac_n "checking for presumed installation-mode""... $ac_c" 1>&6
-echo "configure:3827: checking for presumed installation-mode" >&5
+echo "configure:4025: checking for presumed installation-mode" >&5
 if test -f "$XTERM_PATH" ; then
-       ls -Llg $XTERM_PATH >conftest.out
-       read cf_mode cf_links XTERM_USR XTERM_GRP cf_rest <conftest.out
+       cf_option="-l -L"
+
+       # Expect listing to have fields like this:
+       #-r--r--r--   1 user      group       34293 Jul 18 16:29 pathname
+       ls $cf_option $XTERM_PATH >conftest.out
+       read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out
+       echo "if \"$cf_rest\" is null, try the -g option" 1>&5
+       if test -z "$cf_rest" ; then
+               cf_option="$cf_option -g"
+               ls $cf_option $XTERM_PATH >conftest.out
+               read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out
+       fi
+
+       # If we have a pathname, and the date fields look right, assume we've
+       # captured the group as well.
+       echo "if \"$cf_rest\" is null, we do not look for group" 1>&5
+       if test -n "$cf_rest" ; then
+               cf_test=`echo "${cf_date2}${cf_date3}" | sed -e 's/[0-9:]//g'`
+               echo "if we have date in proper columns ($cf_date1 $cf_date2 $cf_date3), \"$cf_test\" is null" 1>&5
+               if test -z "$cf_test" ; then
+                       XTERM_USR=$cf_usr;
+                       XTERM_GRP=$cf_grp;
+               fi
+       fi
+       echo "derived user \"$XTERM_USR\", group \"$XTERM_GRP\" of previously-installed xterm" 1>&5
+
+       echo "see if mode \"$cf_mode\" has s-bit set" 1>&5
        case ".$cf_mode" in #(vi
        .???s*) #(vi
                XTERM_MODE=4711
+               XTERM_GRP=
                ;;
        .??????s*)
                XTERM_MODE=2711
+               XTERM_USR=
                ;;
        esac
 fi
-test "$XTERM_USR" = "root" && XTERM_USR=""
-test "$XTERM_GRP" = "root" && XTERM_GRP=""
+
+if test -n "${XTERM_USR}${XTERM_GRP}" ; then
+       cf_usr=`id | sed -e 's/^[^(]*(//' -e 's/).*$//'`
+       cf_grp=`id | sed -e 's/^.* gid=[^(]*(//' -e 's/).*$//'`
+       echo "configuring as user \"$cf_usr\", group \"$cf_grp\" of previously-installed xterm" 1>&5
+       test "$XTERM_USR" = "$cf_usr" && XTERM_USR=""
+       test "$XTERM_USR" = "root"    && XTERM_USR=""
+       test "$XTERM_GRP" = "$cf_grp" && XTERM_GRP=""
+       test "$XTERM_GRP" = "root"    && XTERM_GRP=""
+       test "$XTERM_GRP" = "wheel"   && XTERM_GRP=""
+fi
+
 echo "$ac_t""$XTERM_MODE $XTERM_USR $XTERM_GRP" 1>&6
+
 test -n "$XTERM_USR" && XTERM_USR="-o $XTERM_USR"
 test -n "$XTERM_GRP" && XTERM_GRP="-g $XTERM_GRP"
 
@@ -3846,17 +4082,18 @@
 
 
 
+
 for ac_func in \
        XkbStdBell \
        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3855: checking for $ac_func" >&5
+echo "configure:4092: 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 3860 "configure"
+#line 4097 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3879,7 +4116,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:4120: \"$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
@@ -3905,7 +4142,7 @@
 
 
 echo $ac_n "checking if we should use imake to help""... $ac_c" 1>&6
-echo "configure:3909: checking if we should use imake to help" >&5
+echo "configure:4146: 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
@@ -3930,7 +4167,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:3934: checking for $ac_word" >&5
+echo "configure:4171: 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
@@ -4069,7 +4306,7 @@
 
 
 echo $ac_n "checking for default terminal-id""... $ac_c" 1>&6
-echo "configure:4073: checking for default terminal-id" >&5
+echo "configure:4310: 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
@@ -4090,7 +4327,7 @@
 
 
 echo $ac_n "checking for default terminal-type""... $ac_c" 1>&6
-echo "configure:4094: checking for default terminal-type" >&5
+echo "configure:4331: 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
@@ -4107,7 +4344,7 @@
 
 
 echo $ac_n "checking for private terminfo-directory""... $ac_c" 1>&6
-echo "configure:4111: checking for private terminfo-directory" >&5
+echo "configure:4348: 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
@@ -4144,7 +4381,7 @@
 
 ###    checks for optional features
 echo $ac_n "checking if you want active-icons""... $ac_c" 1>&6
-echo "configure:4148: checking if you want active-icons" >&5
+echo "configure:4385: 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
@@ -4170,7 +4407,7 @@
 fi
 
 echo $ac_n "checking if you want ANSI color""... $ac_c" 1>&6
-echo "configure:4174: checking if you want ANSI color" >&5
+echo "configure:4411: 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
@@ -4196,7 +4433,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:4200: checking if you want 16 colors like aixterm" >&5
+echo "configure:4437: 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
@@ -4220,7 +4457,7 @@
 
 
        echo $ac_n "checking if you want 256 colors""... $ac_c" 1>&6
-echo "configure:4224: checking if you want 256 colors" >&5
+echo "configure:4461: 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
@@ -4247,7 +4484,7 @@
 
        else
        echo $ac_n "checking if you want 88 colors""... $ac_c" 1>&6
-echo "configure:4251: checking if you want 88 colors" >&5
+echo "configure:4488: 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
@@ -4278,7 +4515,7 @@
 fi
 
 echo $ac_n "checking if you want blinking cursor""... $ac_c" 1>&6
-echo "configure:4282: checking if you want blinking cursor" >&5
+echo "configure:4519: 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
@@ -4304,7 +4541,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:4308: checking if you want bold colors mapped like IBM PC" >&5
+echo "configure:4545: 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
@@ -4328,7 +4565,7 @@
 
 
        echo $ac_n "checking if you want color-mode enabled by default""... $ac_c" 1>&6
-echo "configure:4332: checking if you want color-mode enabled by default" >&5
+echo "configure:4569: 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
@@ -4354,7 +4591,7 @@
 fi
 
 echo $ac_n "checking if you want support for color highlighting""... $ac_c" 1>&6
-echo "configure:4358: checking if you want support for color highlighting" >&5
+echo "configure:4595: 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
@@ -4378,7 +4615,7 @@
 
 
 echo $ac_n "checking if you want support for doublesize characters""... $ac_c" 1>&6
-echo "configure:4382: checking if you want support for doublesize characters" >&5
+echo "configure:4619: 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
@@ -4402,7 +4639,7 @@
 
 
 echo $ac_n "checking if you want fallback-support for box characters""... $ac_c" 1>&6
-echo "configure:4406: checking if you want fallback-support for box characters" >&5
+echo "configure:4643: 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
@@ -4426,7 +4663,7 @@
 
 
 echo $ac_n "checking if you want support for HP-style function keys""... $ac_c" 1>&6
-echo "configure:4430: checking if you want support for HP-style function keys" >&5
+echo "configure:4667: 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
@@ -4452,7 +4689,7 @@
 fi
 
 echo $ac_n "checking if you want support for internationalization""... $ac_c" 1>&6
-echo "configure:4456: checking if you want support for internationalization" >&5
+echo "configure:4693: checking if you want support for internationalization" >&5
 
 # Check whether --enable-i18n or --disable-i18n was given.
 if test "${enable_i18n+set}" = set; then
@@ -4478,7 +4715,7 @@
 fi
 
 echo $ac_n "checking if you want support for initial-erase setup""... $ac_c" 1>&6
-echo "configure:4482: checking if you want support for initial-erase setup" >&5
+echo "configure:4719: 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
@@ -4504,7 +4741,7 @@
 fi
 
 echo $ac_n "checking if you want support for input-method""... $ac_c" 1>&6
-echo "configure:4508: checking if you want support for input-method" >&5
+echo "configure:4745: 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
@@ -4524,13 +4761,13 @@
 echo "$ac_t""$enable_ximp" 1>&6
 
 echo $ac_n "checking if X libraries support input-method""... $ac_c" 1>&6
-echo "configure:4528: checking if X libraries support input-method" >&5
+echo "configure:4765: 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 4534 "configure"
+#line 4771 "configure"
 #include "confdefs.h"
 
 #include <X11/IntrinsicP.h>
@@ -4557,7 +4794,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_input_method=yes
 else
@@ -4580,7 +4817,7 @@
 fi
 
 echo $ac_n "checking if you want support for logging""... $ac_c" 1>&6
-echo "configure:4584: checking if you want support for logging" >&5
+echo "configure:4821: checking if you want support for logging" >&5
 
 # Check whether --enable-logging or --disable-logging was given.
 if test "${enable_logging+set}" = set; then
@@ -4604,7 +4841,7 @@
 EOF
 
        echo $ac_n "checking if you want to allow logging via a pipe""... $ac_c" 1>&6
-echo "configure:4608: checking if you want to allow logging via a pipe" >&5
+echo "configure:4845: 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
@@ -4631,7 +4868,7 @@
 fi
 
 echo $ac_n "checking if you want support for iconify/maximize translations""... $ac_c" 1>&6
-echo "configure:4635: checking if you want support for iconify/maximize translations" >&5
+echo "configure:4872: 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
@@ -4655,7 +4892,7 @@
 
 
 echo $ac_n "checking if you want NumLock to override keyboard tables""... $ac_c" 1>&6
-echo "configure:4659: checking if you want NumLock to override keyboard tables" >&5
+echo "configure:4896: 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
@@ -4679,7 +4916,7 @@
 
 
 echo $ac_n "checking if you want support for right-scrollbar""... $ac_c" 1>&6
-echo "configure:4683: checking if you want support for right-scrollbar" >&5
+echo "configure:4920: 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
@@ -4705,7 +4942,7 @@
 fi
 
 echo $ac_n "checking if you want check for redundant name-change""... $ac_c" 1>&6
-echo "configure:4709: checking if you want check for redundant name-change" >&5
+echo "configure:4946: 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
@@ -4729,7 +4966,7 @@
 
 
 echo $ac_n "checking if you want support for tek4014""... $ac_c" 1>&6
-echo "configure:4733: checking if you want support for tek4014" >&5
+echo "configure:4970: checking if you want support for tek4014" >&5
 
 # Check whether --enable-tek4014 or --disable-tek4014 was given.
 if test "${enable_tek4014+set}" = set; then
@@ -4759,7 +4996,7 @@
 fi
 
 echo $ac_n "checking if you want pulldown menus with a toolbar""... $ac_c" 1>&6
-echo "configure:4763: checking if you want pulldown menus with a toolbar" >&5
+echo "configure:5000: 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
@@ -4783,7 +5020,7 @@
 
 
 echo $ac_n "checking if you want VT52 emulation""... $ac_c" 1>&6
-echo "configure:4787: checking if you want VT52 emulation" >&5
+echo "configure:5024: checking if you want VT52 emulation" >&5
 
 # Check whether --enable-vt52 or --disable-vt52 was given.
 if test "${enable_vt52+set}" = set; then
@@ -4807,7 +5044,7 @@
 
 
 echo $ac_n "checking if you want wide-character support""... $ac_c" 1>&6
-echo "configure:4811: checking if you want wide-character support" >&5
+echo "configure:5048: 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
@@ -4835,8 +5072,34 @@
        EXTRAOBJS="$EXTRAOBJS keysym2ucs.o"
 fi
 
+echo $ac_n "checking if you want DECterm Locator support""... $ac_c" 1>&6
+echo "configure:5077: 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
+  enableval="$enable_dec_locator"
+  test "$enableval" != yes && enableval=no
+  if test "$enableval" != "no" ; then
+    enable_dec_locator=yes 
+  else
+    enable_dec_locator=no
+  fi
+else
+  enableval=no 
+  enable_dec_locator=no
+  
+fi
+
+echo "$ac_t""$enable_dec_locator" 1>&6
+if test $enable_dec_locator = yes ; then
+       cat >> confdefs.h <<\EOF
+#define OPT_DEC_LOCATOR 1
+EOF
+
+fi
+
 echo $ac_n "checking if you want -ziconbeep option""... $ac_c" 1>&6
-echo "configure:4840: checking if you want -ziconbeep option" >&5
+echo "configure:5103: checking if you want -ziconbeep option" >&5
 
 # Check whether --enable-ziconbeep or --disable-ziconbeep was given.
 if test "${enable_ziconbeep+set}" = set; then
@@ -4861,7 +5124,7 @@
 
 # development/testing aids
 echo $ac_n "checking if you want debugging traces""... $ac_c" 1>&6
-echo "configure:4865: checking if you want debugging traces" >&5
+echo "configure:5128: checking if you want debugging traces" >&5
 
 # Check whether --enable-trace or --disable-trace was given.
 if test "${enable_trace+set}" = set; then
@@ -4890,7 +5153,7 @@
 
 
 echo $ac_n "checking if you want to see long compiling messages""... $ac_c" 1>&6
-echo "configure:4894: checking if you want to see long compiling messages" >&5
+echo "configure:5157: 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
@@ -4930,7 +5193,7 @@
 
 
 echo $ac_n "checking if you want magic cookie emulation""... $ac_c" 1>&6
-echo "configure:4934: checking if you want magic cookie emulation" >&5
+echo "configure:5197: 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
@@ -4959,7 +5222,7 @@
 
 if test -n "$GCC" ; then
 echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6
-echo "configure:4963: checking if you want to turn on gcc warnings" >&5
+echo "configure:5226: 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
@@ -4999,9 +5262,9 @@
 if test -n "$GCC"
 then
        echo "checking for gcc __attribute__ directives" 1>&6
-echo "configure:5003: checking for gcc __attribute__ directives" >&5
+echo "configure:5266: checking for gcc __attribute__ directives" >&5
        cat > conftest.$ac_ext <<EOF
-#line 5005 "configure"
+#line 5268 "configure"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -5039,7 +5302,7 @@
 EOF
                        ;;
                esac
-               if { (eval echo configure:5043: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:5306: \"$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
@@ -5056,11 +5319,11 @@
 if test -n "$GCC"
 then
                cat > conftest.$ac_ext <<EOF
-#line 5060 "configure"
+#line 5323 "configure"
 int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
                echo "checking for gcc warning options" 1>&6
-echo "configure:5064: checking for gcc warning options" >&5
+echo "configure:5327: checking for gcc warning options" >&5
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="-W -Wall"
        cf_warn_CONST=""
@@ -5078,7 +5341,7 @@
                Wstrict-prototypes $cf_warn_CONST
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo configure:5082: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:5345: \"$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"
Index: configure.in
--- xterm-115+/configure.in     Fri Sep 17 06:25:56 1999
+++ xterm-116/configure.in      Sat Sep 25 11:07:49 1999
@@ -44,7 +44,11 @@
 AC_MINIX
 
 ###    checks for header files
-AC_CHECK_HEADERS(stdlib.h termios.h unistd.h)
+AC_CHECK_HEADERS( \
+stdlib.h \
+termios.h \
+unistd.h \
+)
 
 ###    checks for typedefs
 CF_SIZE_T
@@ -60,6 +64,7 @@
        )
 CF_FUNC_MEMMOVE
 CF_FUNC_TGETENT
+CF_UTMP
 
 ###    checks for structures
 CF_TYPE_FD_SET
@@ -67,6 +72,7 @@
 
 ###    checks for external data
 CF_ERRNO
+CF_TTY_GROUP
 
 ###    checks for compiler characteristics
 AC_CONST
@@ -412,6 +418,16 @@
        EXTRAHDRS="$EXTRAHDRS keysym2ucs.h"
        EXTRASRCS="$EXTRASRCS keysym2ucs.c"
        EXTRAOBJS="$EXTRAOBJS keysym2ucs.o"
+fi
+
+AC_MSG_CHECKING(if you want DECterm Locator support)
+CF_ARG_ENABLE(dec-locator,
+       [  --enable-dec-locator    enable DECterm Locator support],
+       [enable_dec_locator=yes],
+       [enable_dec_locator=no])
+AC_MSG_RESULT($enable_dec_locator)
+if test $enable_dec_locator = yes ; then
+       AC_DEFINE(OPT_DEC_LOCATOR,1)
 fi
 
 AC_MSG_CHECKING(if you want -ziconbeep option)
Index: ctlseqs.ms
--- xterm-115+/ctlseqs.ms       Fri Sep 17 06:04:56 1999
+++ xterm-116/ctlseqs.ms        Sat Sep 25 12:50:47 1999
@@ -200,6 +200,7 @@
 .[] [[ [
 .[] ]] ]
 .[] bS \\e
+.[] { {
 .[] ] ]
 .[] ^ ^
 .[] _ _
@@ -228,6 +229,7 @@
 .[] w w
 .[] x x
 .[] y y
+.[] z z
 .[] | |
 .[] } }
 .[] ! !
@@ -238,11 +240,15 @@
 .ds Cb \fIC\v'.3m'\h'-.2m'\s-2b\s0\v'-.3m'\fP
 .ds Cx \fIC\v'.3m'\h'-.2m'\s-2x\s0\v'-.3m'\fP
 .ds Cy \fIC\v'.3m'\h'-.2m'\s-2y\s0\v'-.3m'\fP
+.ds Pb \fIP\v'.3m'\h'-.2m'\s-2b\s0\v'-.3m'\fP
 .ds Pc \fIP\v'.3m'\h'-.2m'\s-2c\s0\v'-.3m'\fP
+.ds Pl \fIP\v'.3m'\h'-.2m'\s-2l\s0\v'-.3m'\fP
 .ds Pm \fIP\v'.3m'\h'-.2m'\s-2m\s0\v'-.3m'\fP
 .ds Pp \fIP\v'.3m'\h'-.2m'\s-2p\s0\v'-.3m'\fP
+.ds Pr \fIP\v'.3m'\h'-.2m'\s-2r\s0\v'-.3m'\fP
 .ds Ps \fIP\v'.3m'\h'-.2m'\s-2s\s0\v'-.3m'\fP
 .ds Pt \fIP\v'.3m'\h'-.2m'\s-2t\s0\v'-.3m'\fP
+.ds Pu \fIP\v'.3m'\h'-.2m'\s-2u\s0\v'-.3m'\fP
 .ds Pv \fIP\v'.3m'\h'-.2m'\s-2v\s0\v'-.3m'\fP
 .ds Ix \fIx\fP
 .ds Iy \fIy\fP
@@ -351,7 +357,9 @@
 .
 .St
 .\"
-.\" Single-character functions
+.LP
+.B
+Single-character functions
 .\"
 .IP \\*(Be
 Bell (Ctrl-G)
@@ -389,10 +397,14 @@
 .IP \\*(Si
 Shift In (Ctrl-O) \(-> Switch to Standard Character Set: invokes the
 G0 character set (the default).
-.sp
+.Ed
 .\"
-.\" Controls beginning with ESC (other than those where ESC is part of a 7-bit
-.\" equivalent to 8-bit C1 controls), ordered by the final character(s).
+.\"
+.\"
+.St
+.LP
+.B
+Controls beginning with ESC (other than those where ESC is part of a 7-bit equivalent to 8-bit C1 controls), ordered by the final character(s).
 .\"
 .IP \\*(Es\\*(Sp\\*F
 7-bit controls (S7C1T).
@@ -496,16 +508,21 @@
 .
 .IP \\*(Es\\*(c~
 Invoke the G1 Character Set as GR (LS1R).  Has no visible effect in \fIxterm\fP.
+.Ed
 .
-.sp
+.St
+.LP
+.B
+Application Program-Control functions
 .IP \\*(AP\\*(Pt\\*s\\*(ST
 \fIxterm\fP implements no APC functions; \*(Pt is ignored.
 \*(Pt need not be printable characters.
+.Ed
 .
-.sp
-.\"
-.\" Device-Control functions
-.\"
+.St
+.LP
+.B
+Device-Control functions
 .IP \\*(Dc\\*(Ps\\*;\\*(Ps\\*|\\*(Pt\\*s\\*(ST
 User-Defined Keys (DECUDK).
 The first parameter:
@@ -535,14 +552,56 @@
 or
 \*(Dc\*0\*$\*r\*(Pt\*s\*(ST
 for invalid requests.
-.
-.sp
-.\"
-.\" Functions using CSI, ordered by the final character(s)
+.Ed
 .\"
+.St
+.LP
+.B
+Functions using CSI, ordered by the final character(s)
 .IP \\*(Cs\\*(Ps\\*s\\*@
 Insert \*(Ps (Blank) Character(s) (default = 1) (ICH)
 .
+.IP \\*(Cs\\*(Ps\\*s\\*'\\*s\\*|
+Request Locator Position (DECRQLP)
+.br
+Valid values for the parameter are:
+  \*(Ps = \*0, 1 or omitted \(-> transmit a single DECLRP locator report
+.sp
+If Locator Reporting has been enabled by a DECELR, xterm will respond
+with a DECLRP Locator Report.  This report is also generated on button
+up and down events if they have been enabled with a DECSLE, or when
+the locator is detected outside of a filter rectangle, if filter rectangles
+have been enabled with a DECEFR.
+.sp
+  \(-> \*(Cs\*(Ps\*s\*;\*(Ps\*s\*;\*(Ps\*s\*;\*(Ps\*s\*;\*(Ps\*s\\&\*s\*w
+.sp
+Parameters are [event;button;row;column;page].
+.br
+Valid values for the event:
+  \*(Ps = \*0 \(-> locator unavailable - no other parameters sent
+  \*(Ps = \*1 \(-> request - xterm received a DECRQLP
+  \*(Ps = \*2 \(-> left button down
+  \*(Ps = \*3 \(-> left button up
+  \*(Ps = \*4 \(-> middle button down
+  \*(Ps = \*5 \(-> middle button up
+  \*(Ps = \*6 \(-> right button down
+  \*(Ps = \*7 \(-> right button up
+  \*(Ps = \*8 \(-> M4 button down
+  \*(Ps = \*9 \(-> M4 button up
+  \*(Ps = \*1\*0 \(-> locator outside filter rectangle
+.br
+``button'' parameter is a bitmask indicating which buttons are pressed:
+  \*(Ps = \*0 \(-> no buttons down
+  \*(Ps & \*1 \(-> right button down
+  \*(Ps & \*2 \(-> middle button down
+  \*(Ps & \*4 \(-> left button down
+  \*(Ps & \*8 \(-> M4 button down
+.br
+``row'' and ``column'' parameters are the coordinates of the locator
+position in the xterm window, encoded as ASCII decimal.
+.br
+The ``page'' parameter is not used by xterm, and will be omitted.
+.
 .IP \\*(Cs\\*(Ps\\*s\\*A
 Cursor Up \*(Ps Times (default = 1) (CUU)
 .
@@ -679,6 +738,55 @@
   \*(Ps = \*1\*2 \(-> Send/receive (SRM)
   \*(Ps = \*2\*0 \(-> Automatic Newline (LNM)
 .
+.IP \\*(Cs\\*?\\*(Pm\\*s\\*h
+DEC Private Mode Set (DECSET)
+  \*(Ps = \*1 \(-> Application Cursor Keys (DECCKM)
+  \*(Ps = \*2 \(-> Designate USASCII for character sets G0-G3 (DECANM),
+and set VT100 mode.
+  \*(Ps = \*3 \(-> 132 Column Mode (DECCOLM)
+  \*(Ps = \*4 \(-> Smooth (Slow) Scroll (DECSCLM)
+  \*(Ps = \*5 \(-> Reverse Video (DECSCNM)
+  \*(Ps = \*6 \(-> Origin Mode (DECOM)
+  \*(Ps = \*7 \(-> Wraparound Mode (DECAWM)
+  \*(Ps = \*8 \(-> Auto-repeat Keys (DECARM)
+  \*(Ps = \*9 \(-> Send Mouse X & Y on button press.
+See the section \fBMouse Tracking\fP.
+  \*(Ps = \*1\*8 \(-> Print form feed (DECPFF)
+  \*(Ps = \*1\*9 \(-> Set print extent to full screen (DECPEX)
+  \*(Ps = \*2\*5 \(-> Show Cursor (DECTCEM)
+  \*(Ps = \*3\*0 \(-> Show scrollbar (rxvt).
+  \*(Ps = \*3\*5 \(-> Enable shifted key-functions (rxvt).
+  \*(Ps = \*3\*8 \(-> Enter Tektronix Mode (DECTEK)
+  \*(Ps = \*4\*0 \(-> Allow 80 \z\(<-\(-> 132 Mode
+  \*(Ps = \*4\*1 \(-> \fImore\fP(1) fix (see \fIcurses\fP resource)
+  \*(Ps = \*4\*2 \(-> Enable Nation Replacement Character sets (DECNRCM)
+  \*(Ps = \*4\*4 \(-> Turn On Margin Bell
+  \*(Ps = \*4\*5 \(-> Reverse-wraparound Mode
+  \*(Ps = \*4\*6 \(-> Start Logging
+(normally disabled by a compile-time option)
+  \*(Ps = \*4\*7 \(-> Use Alternate Screen Buffer (unless
+disabled by the \fBtiteInhibit\fP resource)
+  \*(Ps = \*6\*6 \(-> Application keypad (DECNKM)
+  \*(Ps = \*6\*7 \(-> Backarrow key sends delete (DECBKM)
+  \*(Ps = \*1\*0\*0\*0 \(-> Send Mouse X & Y on button press and release.
+See the section \fBMouse Tracking\fP.
+  \*(Ps = \*1\*0\*0\*1 \(-> Use Hilite Mouse Tracking.
+  \*(Ps = \*1\*0\*0\*2 \(-> Use Cell Motion Mouse Tracking.
+  \*(Ps = \*1\*0\*0\*3 \(-> Use All Motion Mouse Tracking.
+  \*(Ps = \*1\*0\*1\*0 \(-> Scroll to bottom on tty output (rxvt).
+  \*(Ps = \*1\*0\*1\*1 \(-> Scroll to bottom on key press (rxvt).
+  \*(Ps = \*1\*0\*3\*5 \(-> Enable special modifiers for Alt and NumLock keys.
+  \*(Ps = \*1\*0\*4\*7 \(-> Use Alternate Screen Buffer (unless
+disabled by the \fBtiteInhibit\fP resource)
+  \*(Ps = \*1\*0\*4\*8 \(-> Save cursor as in DECSC (unless
+disabled by the \fBtiteInhibit\fP resource)
+  \*(Ps = \*1\*0\*4\*9 \(-> Save cursor as in DECSC
+and use Alternate Screen Buffer, clearing it first (unless
+disabled by the \fBtiteInhibit\fP resource)
+  \*(Ps = \*1\*0\*5\*1 \(-> Set Sun function-key mode.
+  \*(Ps = \*1\*0\*5\*2 \(-> Set HP function-key mode.
+  \*(Ps = \*1\*0\*6\*1 \(-> Set Sun/PC keyboard mode.
+.
 .IP \\*(Cs\\*(Pm\\*s\\*i
 Media Copy (MC)
   \*(Ps = \*0 \(-> Print screen (default)
@@ -698,6 +806,53 @@
   \*(Ps = \*1\*2 \(-> Send/receive (SRM)
   \*(Ps = \*2\*0 \(-> Normal Linefeed (LNM)
 .
+.IP \\*(Cs\\*?\\*(Pm\\*s\\*l
+DEC Private Mode Reset (DECRST)
+  \*(Ps = \*1 \(-> Normal Cursor Keys (DECCKM)
+  \*(Ps = \*2 \(-> Designate VT52 mode (DECANM).
+  \*(Ps = \*3 \(-> 80 Column Mode (DECCOLM)
+  \*(Ps = \*4 \(-> Jump (Fast) Scroll (DECSCLM)
+  \*(Ps = \*5 \(-> Normal Video (DECSCNM)
+  \*(Ps = \*6 \(-> Normal Cursor Mode (DECOM)
+  \*(Ps = \*7 \(-> No Wraparound Mode (DECAWM)
+  \*(Ps = \*8 \(-> No Auto-repeat Keys (DECARM)
+  \*(Ps = \*9 \(-> Don't Send Mouse X & Y on button press
+  \*(Ps = \*1\*8 \(-> Don't print form feed (DECPFF)
+  \*(Ps = \*1\*9 \(-> Limit print to scrolling region (DECPEX)
+  \*(Ps = \*2\*5 \(-> Hide Cursor (DECTCEM)
+  \*(Ps = \*3\*0 \(-> Don't show scrollbar (rxvt).
+  \*(Ps = \*3\*5 \(-> Disable shifted key-functions (rxvt).
+  \*(Ps = \*4\*0 \(-> Disallow 80 \z\(<-\(-> 132 Mode
+  \*(Ps = \*4\*1 \(-> No \fImore\fP(1) fix (see \fIcurses\fP resource)
+  \*(Ps = \*4\*2 \(-> Disable Nation Replacement Character sets (DECNRCM)
+  \*(Ps = \*4\*4 \(-> Turn Off Margin Bell
+  \*(Ps = \*4\*5 \(-> No Reverse-wraparound Mode
+  \*(Ps = \*4\*6 \(-> Stop Logging
+(normally disabled by a compile-time option)
+  \*(Ps = \*4\*7 \(-> Use Normal Screen Buffer
+  \*(Ps = \*6\*6 \(-> Numeric keypad (DECNKM)
+  \*(Ps = \*6\*7 \(-> Backarrow key sends backspace (DECBKM)
+  \*(Ps = \*1\*0\*0\*0 \(-> Don't Send Mouse X & Y on button press and
+release.
+See the section \fBMouse Tracking\fP.
+  \*(Ps = \*1\*0\*0\*1 \(-> Don't Use Hilite Mouse Tracking
+  \*(Ps = \*1\*0\*0\*2 \(-> Don't Use Cell Motion Mouse Tracking
+  \*(Ps = \*1\*0\*0\*3 \(-> Don't Use All Motion Mouse Tracking
+  \*(Ps = \*1\*0\*1\*0 \(-> Don't scroll to bottom on tty output (rxvt).
+  \*(Ps = \*1\*0\*1\*1 \(-> Don't scroll to bottom on key press (rxvt).
+  \*(Ps = \*1\*0\*3\*5 \(-> Disable special modifiers for Alt and NumLock keys.
+  \*(Ps = \*1\*0\*4\*7 \(-> Use Normal Screen Buffer, clearing screen
+first if in the Alternate Screen (unless
+disabled by the \fBtiteInhibit\fP resource)
+  \*(Ps = \*1\*0\*4\*8 \(-> Restore cursor as in DECRC (unless
+disabled by the \fBtiteInhibit\fP resource)
+  \*(Ps = \*1\*0\*4\*9 \(-> Use Normal Screen Buffer and restore cursor
+as in DECRC (unless
+disabled by the \fBtiteInhibit\fP resource)
+  \*(Ps = \*1\*0\*5\*1 \(-> Reset Sun function-key mode.
+  \*(Ps = \*1\*0\*5\*2 \(-> Reset HP function-key mode.
+  \*(Ps = \*1\*0\*6\*1 \(-> Reset Sun/PC keyboard mode.
+.
 .IP \\*(Cs\\*(Pm\\*s\\*m
 Character Attributes (SGR)
   \*(Ps = \*0 \(-> Normal (default)
@@ -764,6 +919,7 @@
 Device Status Report (DSR)
   \*(Ps = \*5 \(-> Status Report \*(Cs\*0\*n (``OK'')
   \*(Ps = \*6 \(-> Report Cursor Position (CPR) [row;column] as
+.br
 \*(Cs\*(Ir\*s\*;\*(Ic\*s\*R
 .
 .IP \\*(Cs\\*?\\*(Ps\\*s\\*n
@@ -780,6 +936,7 @@
 or
 \*(Cs\*?\*2\*1\*s\*n (locked)
   \*(Ps = \*2\*6 \(-> Report Keyboard status as
+.br
 \*(Cs\*?\*2\*7\*s\*;\*s\*1\*s\*;\*s\*0\*s\*;\*s\*0\*s\*n (North American)
 .
 .IP \\*(Cs\\*s\\*!\\*p
@@ -806,7 +963,14 @@
 .IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*r
 Set Scrolling Region [top;bottom] (default = full size of window) (DECSTBM)
 .
-.IP \\*(Cs\\*(Ps\\*s\\*;\\*s\\*(Ps\\*s\\*;\\*(Ps\\*s\\*t
+.IP \\*(Cs\\*?\\*(Pm\\*s\\*r
+Restore DEC Private Mode Values.  The value of \*(Ps previously saved is
+restored.  \*(Ps values are the same as for DECSET.
+.
+.IP \\*(Cs\\*?\\*(Pm\\*s\\*(cs
+Save DEC Private Mode Values.  \*(Ps values are the same as for DECSET.
+.
+.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*;\\*(Ps\\*s\\*t
 Window manipulation (from \fIdtterm\fP, as well as extensions).
 Valid values for the first (and any additional parameters) are:
   \*(Ps = \*1 \(-> De-iconify window.
@@ -836,113 +1000,54 @@
 \*(Os\*s\*l\*s\fItitle\fP\*s\*(ST
   \*(Ps >= \*2\*4 \(-> Resize to \*(Ps lines (DECSLPP)
 .
+.IP \\*(Cs\\*(Pt\\*s\\*;\\*(Pl\\*s\\*;\\*s\\*(Pb\\*s\\*;\\*s\\*(Pr\\*s\\*s\\*'\\*s\\*w
+Enable Filter Rectangle (DECEFR)
+.br
+Parameters are [top;left;bottom;right].
+.br
+Defines the coordinates of a filter rectangle and activates it.
+Anytime the locator is detected outside of the filter rectangle,
+an outside rectangle event is generated and the rectangle is disabled.
+Filter rectangles are always treated as "one-shot" events.
+Any parameters that are omitted default to the current locator position.
+If all parameters are omitted, any locator motion will be reported.
+DECELR always cancels any prevous rectangle definition.
+.
 .IP \\*(Cs\\*(Ps\\*s\\*x
 Request Terminal Parameters (DECREQTPARM)
 .
-.IP \\*(Cs\\*?\\*(Pm\\*s\\*h
-DEC Private Mode Set (DECSET)
-  \*(Ps = \*1 \(-> Application Cursor Keys (DECCKM)
-  \*(Ps = \*2 \(-> Designate USASCII for character sets G0-G3 (DECANM),
-and set VT100 mode.
-  \*(Ps = \*3 \(-> 132 Column Mode (DECCOLM)
-  \*(Ps = \*4 \(-> Smooth (Slow) Scroll (DECSCLM)
-  \*(Ps = \*5 \(-> Reverse Video (DECSCNM)
-  \*(Ps = \*6 \(-> Origin Mode (DECOM)
-  \*(Ps = \*7 \(-> Wraparound Mode (DECAWM)
-  \*(Ps = \*8 \(-> Auto-repeat Keys (DECARM)
-  \*(Ps = \*9 \(-> Send Mouse X & Y on button press.
-See the section \fBMouse Tracking\fP.
-  \*(Ps = \*1\*8 \(-> Print form feed (DECPFF)
-  \*(Ps = \*1\*9 \(-> Set print extent to full screen (DECPEX)
-  \*(Ps = \*2\*5 \(-> Show Cursor (DECTCEM)
-  \*(Ps = \*3\*0 \(-> Show scrollbar (rxvt).
-  \*(Ps = \*3\*5 \(-> Enable shifted key-functions (rxvt).
-  \*(Ps = \*3\*8 \(-> Enter Tektronix Mode (DECTEK)
-  \*(Ps = \*4\*0 \(-> Allow 80 \z\(<-\(-> 132 Mode
-  \*(Ps = \*4\*1 \(-> \fImore\fP(1) fix (see \fIcurses\fP resource)
-  \*(Ps = \*4\*2 \(-> Enable Nation Replacement Character sets (DECNRCM)
-  \*(Ps = \*4\*4 \(-> Turn On Margin Bell
-  \*(Ps = \*4\*5 \(-> Reverse-wraparound Mode
-  \*(Ps = \*4\*6 \(-> Start Logging
-(normally disabled by a compile-time option)
-  \*(Ps = \*4\*7 \(-> Use Alternate Screen Buffer (unless
-disabled by the \fBtiteInhibit\fP resource)
-  \*(Ps = \*6\*6 \(-> Application keypad (DECNKM)
-  \*(Ps = \*6\*7 \(-> Backarrow key sends delete (DECBKM)
-  \*(Ps = \*1\*0\*0\*0 \(-> Send Mouse X & Y on button press and release.
-See the section \fBMouse Tracking\fP.
-  \*(Ps = \*1\*0\*0\*1 \(-> Use Hilite Mouse Tracking.
-  \*(Ps = \*1\*0\*0\*2 \(-> Use Cell Motion Mouse Tracking.
-  \*(Ps = \*1\*0\*0\*3 \(-> Use All Motion Mouse Tracking.
-  \*(Ps = \*1\*0\*1\*0 \(-> Scroll to bottom on tty output (rxvt).
-  \*(Ps = \*1\*0\*1\*1 \(-> Scroll to bottom on key press (rxvt).
-  \*(Ps = \*1\*0\*3\*5 \(-> Enable special modifiers for Alt and NumLock keys.
-  \*(Ps = \*1\*0\*4\*7 \(-> Use Alternate Screen Buffer (unless
-disabled by the \fBtiteInhibit\fP resource)
-  \*(Ps = \*1\*0\*4\*8 \(-> Save cursor as in DECSC (unless
-disabled by the \fBtiteInhibit\fP resource)
-  \*(Ps = \*1\*0\*4\*9 \(-> Save cursor as in DECSC
-and use Alternate Screen Buffer, clearing it first (unless
-disabled by the \fBtiteInhibit\fP resource)
-  \*(Ps = \*1\*0\*5\*1 \(-> Set Sun function-key mode.
-  \*(Ps = \*1\*0\*5\*2 \(-> Set HP function-key mode.
-  \*(Ps = \*1\*0\*6\*1 \(-> Set Sun/PC keyboard mode.
-.
-.IP \\*(Cs\\*?\\*(Pm\\*s\\*l
-DEC Private Mode Reset (DECRST)
-  \*(Ps = \*1 \(-> Normal Cursor Keys (DECCKM)
-  \*(Ps = \*2 \(-> Designate VT52 mode (DECANM).
-  \*(Ps = \*3 \(-> 80 Column Mode (DECCOLM)
-  \*(Ps = \*4 \(-> Jump (Fast) Scroll (DECSCLM)
-  \*(Ps = \*5 \(-> Normal Video (DECSCNM)
-  \*(Ps = \*6 \(-> Normal Cursor Mode (DECOM)
-  \*(Ps = \*7 \(-> No Wraparound Mode (DECAWM)
-  \*(Ps = \*8 \(-> No Auto-repeat Keys (DECARM)
-  \*(Ps = \*9 \(-> Don't Send Mouse X & Y on button press
-  \*(Ps = \*1\*8 \(-> Don't print form feed (DECPFF)
-  \*(Ps = \*1\*9 \(-> Limit print to scrolling region (DECPEX)
-  \*(Ps = \*2\*5 \(-> Hide Cursor (DECTCEM)
-  \*(Ps = \*3\*0 \(-> Don't show scrollbar (rxvt).
-  \*(Ps = \*3\*5 \(-> Disable shifted key-functions (rxvt).
-  \*(Ps = \*4\*0 \(-> Disallow 80 \z\(<-\(-> 132 Mode
-  \*(Ps = \*4\*1 \(-> No \fImore\fP(1) fix (see \fIcurses\fP resource)
-  \*(Ps = \*4\*2 \(-> Disable Nation Replacement Character sets (DECNRCM)
-  \*(Ps = \*4\*4 \(-> Turn Off Margin Bell
-  \*(Ps = \*4\*5 \(-> No Reverse-wraparound Mode
-  \*(Ps = \*4\*6 \(-> Stop Logging
-(normally disabled by a compile-time option)
-  \*(Ps = \*4\*7 \(-> Use Normal Screen Buffer
-  \*(Ps = \*6\*6 \(-> Numeric keypad (DECNKM)
-  \*(Ps = \*6\*7 \(-> Backarrow key sends backspace (DECBKM)
-  \*(Ps = \*1\*0\*0\*0 \(-> Don't Send Mouse X & Y on button press and
-release.
-See the section \fBMouse Tracking\fP.
-  \*(Ps = \*1\*0\*0\*1 \(-> Don't Use Hilite Mouse Tracking
-  \*(Ps = \*1\*0\*0\*2 \(-> Don't Use Cell Motion Mouse Tracking
-  \*(Ps = \*1\*0\*0\*3 \(-> Don't Use All Motion Mouse Tracking
-  \*(Ps = \*1\*0\*1\*0 \(-> Don't scroll to bottom on tty output (rxvt).
-  \*(Ps = \*1\*0\*1\*1 \(-> Don't scroll to bottom on key press (rxvt).
-  \*(Ps = \*1\*0\*3\*5 \(-> Disable special modifiers for Alt and NumLock keys.
-  \*(Ps = \*1\*0\*4\*7 \(-> Use Normal Screen Buffer, clearing screen
-first if in the Alternate Screen (unless
-disabled by the \fBtiteInhibit\fP resource)
-  \*(Ps = \*1\*0\*4\*8 \(-> Restore cursor as in DECRC (unless
-disabled by the \fBtiteInhibit\fP resource)
-  \*(Ps = \*1\*0\*4\*9 \(-> Use Normal Screen Buffer and restore cursor
-as in DECRC (unless
-disabled by the \fBtiteInhibit\fP resource)
-  \*(Ps = \*1\*0\*5\*1 \(-> Reset Sun function-key mode.
-  \*(Ps = \*1\*0\*5\*2 \(-> Reset HP function-key mode.
-  \*(Ps = \*1\*0\*6\*1 \(-> Reset Sun/PC keyboard mode.
+.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Pu\\*s\\*s\\*'\\*s\\*z
+Enable Locator Reporting (DECELR)
+.br
+Valid values for the first parameter:
+  \*(Ps = \*0 \(-> Locator disabled (default)
+  \*(Ps = \*1 \(-> Locator enabled
+  \*(Ps = \*2 \(-> Locator enabled for one report, then disabled
+.br
+The second parameter specifies the coordinate unit for locator reports.
+.br
+Valid values for the second parameter:
+  \*(Pu = \*0 or omitted \(-> default to character cells
+  \*(Pu = \*1 \(-> device physical pixels
+  \*(Pu = \*2 \(-> character cells
 .
-.IP \\*(Cs\\*?\\*(Pm\\*s\\*r
-Restore DEC Private Mode Values.  The value of \*(Ps previously saved is
-restored.  \*(Ps values are the same as for DECSET.
+.IP \\*(Cs\\*(Pm\\*s\\*s\\*'\\*s\\*{
+Select Locator Events (DECSLE)
+.br
+Valid values for the first (and any additional parameters) are:
+  \*(Ps = \*0 \(-> only respond to explicit host requests (DECRQLP)
+             (default) also cancels any filter rectangle
+  \*(Ps = \*1 \(-> report button down transitions
+  \*(Ps = \*2 \(-> do not report button down transitions
+  \*(Ps = \*3 \(-> report button up transitions
+  \*(Ps = \*4 \(-> do not report button up transitions
+.Ed
 .
-.IP \\*(Cs\\*?\\*(Pm\\*s\\*(cs
-Save DEC Private Mode Values.  \*(Ps values are the same as for DECSET.
+.St
+.LP
+.B
+Operating System Controls
 .
-.sp
 .IP \\*(Os\\*(Ps\\*s\\*;\\*(Pt\\*s\\*(ST
 .IP \\*(Os\\*(Ps\\*s\\*;\\*(Pt\\*s\\*(Be
 Set Text Parameters.
@@ -975,15 +1080,17 @@
 next character is a plus or minus sign) or absolute.  A number is
 expected but not required after the sign (the default is the current
 entry for relative, zero for absolute indexing).
+.Ed
 .
-.sp
+.St
+.LP
+.B
+Privacy Message
 .IP \\*(PM\\*(Pt\\*s\\*(ST
 \fIxterm\fP implements no PM functions; \*(Pt is ignored.
 \*(Pt need not be printable characters.
-.
 .Ed
 .
-.
 .SH
 PC-Style Function Keys
 .ds RH Function Keys
@@ -1241,8 +1348,10 @@
 the mouse.
 .
 .LP
-There are five mutually exclusive modes, each enabled (or disabled)
-by a different parameter in the
+There are six mutually exclusive modes.  One is DEC Locator mode, enabled by the
+DECELR \*(Cs\*(Ps\*s\*;\*(Ps\*s\*s\*'\*s\*z
+control sequence, and is not described here.  The remaining five
+modes are each enabled (or disabled) by a different parameter in 
 DECSET \*(Cs\*?\*(Pm\*s\*h
 or
 DECRST \*(Cs\*?\*(Pm\*s\*l
Index: data.c
--- xterm-115+/data.c   Sat Sep 18 14:23:33 1999
+++ xterm-116/data.c    Sat Sep 25 09:42:53 1999
@@ -61,6 +61,7 @@
 XtermWidget term;      /* master data structure for client */
 char *xterm_name;      /* argv[0] */
 Boolean sunFunctionKeys;
+int hold_screen;
 
 #if OPT_HP_FUNC_KEYS
 Boolean hpFunctionKeys;
Index: data.h
--- xterm-115+/data.h   Sat Sep 18 14:22:43 1999
+++ xterm-116/data.h    Sat Sep 25 09:42:48 1999
@@ -55,6 +55,7 @@
 extern char *ttydev;
 extern char *xterm_name;
 extern Boolean sunFunctionKeys;
+extern int hold_screen;
 
 #if OPT_HP_FUNC_KEYS
 extern Boolean hpFunctionKeys;
Index: main.c
--- xterm-115+/main.c   Wed Sep 15 21:51:12 1999
+++ xterm-116/main.c    Sat Sep 25 15:46:54 1999
@@ -110,7 +110,6 @@
 
 #define setpgrp(pid, pgid) setpgid(pid, pgid)
 #define USE_TERMIOS
-#define HAS_UTMP_UT_HOST
 #define MNX_LASTLOG
 #define WTMP
 /* Remap or define non-existing termios flags */
@@ -129,7 +128,6 @@
 #endif
 
 #ifdef __osf__
-#define USE_SYSV_UTMP
 #define USE_SYSV_SIGNALS
 #endif
 
@@ -137,15 +135,12 @@
 #undef  SYSV                   /* predefined on Solaris 2.4 */
 #define SYSV                   /* SVR4 is (approx) superset of SVR3 */
 #define ATT
-#define USE_SYSV_UTMP
 #ifndef __sgi
 #define USE_TERMIOS
 #endif
-#define HAS_UTMP_UT_HOST
 #endif
 
 #if defined(SYSV) && defined(i386) && !defined(SVR4)
-#define USE_SYSV_UTMP
 #define ATT
 #define USE_HANDSHAKE
 static Bool IsPts = False;
@@ -174,9 +169,7 @@
 #ifdef linux
 #define USE_TERMIOS
 #define USE_SYSV_PGRP
-#define USE_SYSV_UTMP
 #define USE_SYSV_SIGNALS
-#define HAS_UTMP_UT_HOST
 #define LASTLOG
 #define WTMP
 #undef  HAS_LTCHARS
@@ -190,11 +183,8 @@
 #define USE_POSIX_TERMIOS
 #define USE_USG_PTYS
 #define USE_SYSV_PGRP
-#define USE_SYSV_UTMP
 #define USE_SYSV_SIGNALS
-#define USE_TTY_GROUP
-#define UTMP
-#define HAS_UTMP_UT_HOST
+#define HAVE_UTMP
 #define ut_name ut_user
 #define ut_xtime ut_tv.tv_sec
 #undef  HAS_LTCHARS
@@ -227,7 +217,6 @@
 #define USE_SYSV_PGRP
 #define WTMP
 #define HAS_BSD_GROUPS
-#define USE_TTY_GROUP
 #endif
 
 #ifdef USE_TTY_GROUP
@@ -252,10 +241,9 @@
 #endif
 #endif
 
-#ifdef USE_POSIX_TERMIOS
+#if defined(USE_POSIX_TERMIOS)
 #include <termios.h>
-#else
-#ifdef USE_TERMIOS
+#elif defined(USE_TERMIOS)
 #include <termios.h>
 /* this hacked termios support only works on SYSV */
 #define USE_SYSV_TERMIO
@@ -264,18 +252,13 @@
 #define TCGETA TCGETS
 #undef TCSETA
 #define TCSETA TCSETS
-#else /* USE_TERMIOS */
-#ifdef SYSV
+#elif defined(SYSV)
 #include <sys/termio.h>
-#else /* SYSV */
-#if defined(sun) && !defined(SVR4)
+#elif defined(sun) && !defined(SVR4)
 #include <sys/ttycom.h>
 #ifdef TIOCSWINSZ
 #undef TIOCSSIZE
 #endif
-#endif
-#endif /* SYSV */
-#endif /* USE_TERMIOS else */
 #endif /* USE_POSIX_TERMIOS */
 
 #ifdef SVR4
@@ -312,14 +295,10 @@
  * now get system-specific includes
  */
 #ifdef CRAY
-#define USE_SYSV_UTMP
-#define HAS_UTMP_UT_HOST
 #define HAS_BSD_GROUPS
 #endif
 
 #ifdef macII
-#define USE_SYSV_UTMP
-#define HAS_UTMP_UT_HOST
 #define HAS_BSD_GROUPS
 #include <sys/ttychars.h>
 #undef USE_SYSV_ENVVARS
@@ -331,15 +310,11 @@
 #endif
 
 #ifdef SCO
-#define USE_SYSV_UTMP
 #define USE_POSIX_WAIT
-#define HAS_UTMP_UT_HOST
 #endif /* SCO */
 
 #ifdef __hpux
 #define HAS_BSD_GROUPS
-#define USE_SYSV_UTMP
-#define HAS_UTMP_UT_HOST
 #define USE_POSIX_WAIT
 #include <sys/ptyio.h>
 #endif /* __hpux */
@@ -353,11 +328,6 @@
 #include <sys/strredir.h>
 #endif
 
-#ifdef AIXV3
-#define USE_SYSV_UTMP
-#define HAS_UTMP_UT_HOST
-#endif
-
 #else /* } !SYSV { */                  /* BSD systems */
 
 #ifdef MINIX /* { */
@@ -382,10 +352,8 @@
 #else
 #include <resource.h>
 #endif
-#define HAS_UTMP_UT_HOST
 #define HAS_BSD_GROUPS
 #ifdef __osf__
-#define USE_SYSV_UTMP
 #define setpgrp setpgid
 #endif
 #endif /* !linux */
@@ -445,7 +413,9 @@
 #include <sys/filio.h>
 #endif
 
-#if (defined(SVR4) || defined(SCO325)) && !defined(__CYGWIN32__)
+#include <sys/types.h>
+
+#if defined(UTMPX_FOR_UTMP)
 
 #include <utmpx.h>
 #define setutent setutxent
@@ -454,16 +424,8 @@
 #define endutent endutxent
 #define pututline pututxline
 
-#else
+#elif defined(HAVE_UTMP)
 
-#ifdef ISC
-#include <sys/types.h>
-#endif
-#ifdef Lynx
-#ifdef UTMP
-#undef UTMP
-#endif
-#endif
 #include <utmp.h>
 #if defined(_CRAY) && (OSMAJORVERSION < 8)
 extern struct utmp *getutid __((struct utmp *_Id));
@@ -471,14 +433,9 @@
 
 #endif
 
-#ifndef ISC
-#if defined(UTMP) && !defined(__MVS__)
-#include <utmp.h>
-#endif
 #if defined(LASTLOG) && (!defined(BSD) || (BSD < 199103))
 #include <lastlog.h>
 #endif
-#endif
 
 #ifdef  PUCC_PTYD
 #include <local/openpty.h>
@@ -803,6 +760,7 @@
     char *icon_name;
     char *term_name;
     char *tty_modes;
+    Boolean hold_screen;       /* true if we keep window open  */
     Boolean utmpInhibit;
     Boolean sunFunctionKeys;   /* %%% should be widget resource? */
 #if OPT_SUNPC_KBD
@@ -846,6 +804,8 @@
        offset(term_name), XtRString, (caddr_t) NULL},
     {"ttyModes", "TtyModes", XtRString, sizeof(char *),
        offset(tty_modes), XtRString, (caddr_t) NULL},
+    {"hold", "Hold", XtRBoolean, sizeof (Boolean),
+       offset(hold_screen), XtRString, "false"},
     {"utmpInhibit", "UtmpInhibit", XtRBoolean, sizeof (Boolean),
        offset(utmpInhibit), XtRString, "false"},
     {"sunFunctionKeys", "SunFunctionKeys", XtRBoolean, sizeof (Boolean),
@@ -939,6 +899,8 @@
 {"-hf",                "*hpKeyboard",  XrmoptionNoArg,         (caddr_t) "on"},
 {"+hf",                "*hpKeyboard",  XrmoptionNoArg,         (caddr_t) "off"},
 #endif
+{"-hold",      "*hold",        XrmoptionNoArg,         (caddr_t) "on"},
+{"+hold",      "*hold",        XrmoptionNoArg,         (caddr_t) "off"},
 #if OPT_INITIAL_ERASE
 {"-ie",                "*ptyInitialErase", XrmoptionNoArg,     (caddr_t) "on"},
 {"+ie",                "*ptyInitialErase", XrmoptionNoArg,     (caddr_t) "off"},
@@ -1067,6 +1029,7 @@
 #if OPT_HP_FUNC_KEYS
 { "-/+hf",                 "turn on/off HP Function Key escape codes" },
 #endif
+{ "-/+hold",              "turn on/off logic that retains window after exit" },
 #if OPT_INITIAL_ERASE
 { "-/+ie",                "turn on/off initialization of 'erase' from pty" },
 #endif
@@ -1111,7 +1074,7 @@
 #if OPT_WIDE_CHARS
 { "-/+u8",                 "turn on/off UTF-8 mode (implies wide-characters)" },
 #endif
-#ifdef UTMP
+#ifdef HAVE_UTMP
 { "-/+ut",                 "turn on/off utmp inhibit" },
 #else
 { "-/+ut",                 "turn on/off utmp inhibit (not supported)" },
@@ -1662,6 +1625,7 @@
 #if OPT_SAME_NAME
        sameName = resource.sameName;
 #endif
+       hold_screen = resource.hold_screen ? 1 : 0;
        xterm_name = resource.xterm_name;
        sunFunctionKeys = resource.sunFunctionKeys;
 #if OPT_SUNPC_KBD
@@ -1810,7 +1774,7 @@
        if(i >= 0) {
 #if defined(USE_SYSV_TERMIO) && !defined(SVR4) && !defined(linux)
                /* SYSV has another pointer which should be part of the
-               ** FILE structure but is actually a seperate array.
+               ** FILE structure but is actually a separate array.
                */
                unsigned char *old_bufend;
 
@@ -2283,7 +2247,8 @@
 set_owner(char *device, int uid, int gid, int mode)
 {
        if (chown (device, uid, gid) < 0) {
-               if (getuid() == 0) {
+               if (errno != ENOENT
+                && getuid() == 0) {
                        fprintf(stderr, "Cannot chown %s to %d,%d: %s\n",
                                device, uid, gid, strerror(errno));
                }
@@ -2345,7 +2310,7 @@
        struct winsize ws;
 #endif
        struct passwd *pw = NULL;
-#ifdef UTMP
+#ifdef HAVE_UTMP
 #if (defined(SVR4) || defined(SCO325)) && !defined(__CYGWIN32__)
        struct utmpx utmp;
 #else
@@ -2354,7 +2319,7 @@
 #ifdef LASTLOG
        struct lastlog lastlog;
 #endif /* LASTLOG */
-#endif /* UTMP */
+#endif /* HAVE_UTMP */
 
        screen->uid = getuid();
        screen->gid = getgid();
@@ -2671,7 +2636,7 @@
 #else
                int pgrp = getpid();
 #endif
-#if defined(UTMP) && defined(USE_SYSV_UTMP)
+#if defined(HAVE_UTMP) && defined(USE_SYSV_UTMP)
                char* ptyname;
                char* ptynameptr = 0;
 #endif
@@ -3177,14 +3142,14 @@
                /* compute number of Setenv() calls below */
                envsize = 1;    /* (NULL terminating entry) */
                envsize += 3;   /* TERM, WINDOWID, DISPLAY */
-#ifdef UTMP
+#ifdef HAVE_UTMP
                envsize += 1;   /* LOGNAME */
-#endif /* UTMP */
+#endif /* HAVE_UTMP */
 #ifdef USE_SYSV_ENVVARS
                envsize += 2;   /* COLUMNS, LINES */
-#ifdef UTMP
+#ifdef HAVE_UTMP
                envsize += 2;   /* HOME, SHELL */
-#endif /* UTMP */
+#endif /* HAVE_UTMP */
 #ifdef OWN_TERMINFO_DIR
                envsize += 1;   /* TERMINFO */
 #endif
@@ -3276,7 +3241,7 @@
                }
 #endif
 
-#ifdef UTMP
+#ifdef HAVE_UTMP
                pw = getpwuid(screen->uid);
                if (pw && pw->pw_name)
                    Setenv ("LOGNAME=", pw->pw_name); /* for POSIX */
@@ -3335,7 +3300,7 @@
                (void) strncpy (utmp.ut_line,
                        ptyname + strlen("/dev/"), sizeof (utmp.ut_line));
 
-#ifdef HAS_UTMP_UT_HOST
+#ifdef HAVE_UTMP_UT_HOST
                (void) strncpy(buf, DisplayString(screen->display),
                               sizeof(buf));
 #ifndef linux
@@ -3384,7 +3349,7 @@
 
 #else  /* USE_SYSV_UTMP */
                /* We can now get our ttyslot!  We can also set the initial
-                * UTMP entry.
+                * utmp entry.
                 */
                tslot = ttyslot();
                added_utmp_entry = False;
@@ -3401,7 +3366,7 @@
                                utmp.ut_pid = getpid();
                                utmp.ut_type = USER_PROCESS;
 #endif /* MINIX */
-#ifdef HAS_UTMP_UT_HOST
+#ifdef HAVE_UTMP_UT_HOST
                                (void) strncpy(utmp.ut_host,
                                               XDisplayString (screen->display),
                                               sizeof(utmp.ut_host));
@@ -3471,7 +3436,7 @@
                strcpy(handshake.buffer, ttydev);
                (void)write(cp_pipe[1], (char *)&handshake, sizeof(handshake));
 #endif /* USE_HANDSHAKE */
-#endif/* UTMP */
+#endif/* HAVE_UTMP */
 
                (void) setgid (screen->gid);
 #ifdef HAS_BSD_GROUPS
@@ -3526,14 +3491,14 @@
                sprintf (numbuf, "%d", screen->max_row + 1);
                Setenv("LINES=", numbuf);
                }
-#ifdef UTMP
+#ifdef HAVE_UTMP
                if (pw) {       /* SVR4 doesn't provide these */
                    if (!getenv("HOME"))
                        Setenv("HOME=", pw->pw_dir);
                    if (!getenv("SHELL"))
                        Setenv("SHELL=", pw->pw_shell);
                }
-#endif /* UTMP */
+#endif /* HAVE_UTMP */
 #ifdef OWN_TERMINFO_DIR
                Setenv("TERMINFO=", OWN_TERMINFO_DIR);
 #endif
@@ -3592,15 +3557,15 @@
                signal (SIGHUP, SIG_DFL);
 #endif
 
-#ifdef UTMP
+#ifdef HAVE_UTMP
                if(((ptr = getenv("SHELL")) == NULL || *ptr == 0) &&
                 ((pw == NULL && (pw = getpwuid(screen->uid)) == NULL) ||
                 *(ptr = pw->pw_shell) == 0))
-#else  /* UTMP */
+#else  /* HAVE_UTMP */
                if(((ptr = getenv("SHELL")) == NULL || *ptr == 0) &&
                 ((pw = getpwuid(screen->uid)) == NULL ||
                 *(ptr = pw->pw_shell) == 0))
-#endif /* UTMP */
+#endif /* HAVE_UTMP */
                        ptr = "/bin/sh";
                if ((shname = strrchr(ptr, '/')) != 0)
                        shname++;
@@ -4116,9 +4081,9 @@
 Exit(int n)
 {
        register TScreen *screen = &term->screen;
-#ifdef UTMP
+#ifdef HAVE_UTMP
 #ifdef USE_SYSV_UTMP
-#if defined(SVR4) || defined(SCO325)
+#if defined(UTMPX_FOR_UTMP)
        struct utmpx utmp;
        struct utmpx *utptr;
 #else
@@ -4214,7 +4179,7 @@
 #endif /* WTMP */
        }
 #endif /* USE_SYSV_UTMP */
-#endif /* UTMP */
+#endif /* HAVE_UTMP */
 #ifndef AMOEBA
        close(screen->respond); /* close explicitly to avoid race with slave side */
 #endif
Index: menu.c
--- xterm-115+/menu.c   Sat Sep 18 12:46:02 1999
+++ xterm-116/menu.c    Sat Sep 25 09:44:21 1999
@@ -589,6 +589,7 @@
 {
     register TScreen *screen = &term->screen;
 
+    if (hold_screen > 1) hold_screen = 0;
     if (screen->pid > 1) kill_process_group (screen->pid, sig);
 }
 
@@ -1966,8 +1967,9 @@
                                boxWidgetClass,         *forms,
                                XtNorientation,         XtorientHorizontal,
                                XtNtop,                 XawChainTop,
+                               XtNbottom,              XawChainTop,
                                XtNleft,                XawChainLeft,
-                               XtNright,               XawChainRight,
+                               XtNright,               XawChainLeft,
                                NULL);
 
        if (shell == toplevel) {        /* vt100 */
Index: misc.c
--- xterm-115+/misc.c   Fri Sep 17 06:22:45 1999
+++ xterm-116/misc.c    Sat Sep 25 10:16:01 1999
@@ -160,7 +160,11 @@
                else
                if(OUR_EVENT(event, LeaveNotify))
                  DoSpecialLeaveNotify (&event.xcrossing);
-               else if (screen->send_mouse_pos == ANY_EVENT_MOUSE
+               else if ((screen->send_mouse_pos == ANY_EVENT_MOUSE
+#if OPT_DEC_LOCATOR
+                       || screen->send_mouse_pos == DEC_LOCATOR
+#endif /* OPT_DEC_LOCATOR */
+                                                               )
                 && event.xany.type == MotionNotify
                 && event.xcrossing.window == XtWindow(term)) {
                    SendMousePosition((Widget)term, &event);
@@ -1718,7 +1722,6 @@
        Cleanup(i);
 }
 
-
 /*
  * cleanup by sending SIGHUP to client processes
  */
@@ -1727,7 +1730,17 @@
 {
        register TScreen *screen;
 
+       TRACE(("Cleanup %d\n", code))
+
        screen = &term->screen;
+
+       if (hold_screen) {
+               hold_screen = 2;
+               while (hold_screen) {
+                       xevents();
+               }
+       }
+
        if (screen->pid > 1) {
            (void) kill_process_group (screen->pid, SIGHUP);
        }
Index: print.c
--- xterm-115+/print.c  Fri Sep 17 06:42:49 1999
+++ xterm-116/print.c   Sat Sep 25 21:40:39 1999
@@ -96,8 +96,8 @@
        register TScreen *screen = &term->screen;
        Char *c = SCRN_BUF_CHARS(screen, row);
        Char *a = SCRN_BUF_ATTRS(screen, row);
-       Char attr = *a & SGR_MASK;
-       int last = screen->max_col;
+       Char attr = 0;
+       int last = screen->max_col + 1;
        int col;
 #if OPT_ISO_COLORS && OPT_PRINT_COLORS
 #if OPT_EXT_COLORS
@@ -252,7 +252,7 @@
        if (attr & BOLD)
                strcat(msg, ";1");
        if (attr & UNDERLINE)
-               strcat(msg, ";2");
+               strcat(msg, ";4"); /* typo? DEC documents this as '2' */
        if (attr & BLINK)
                strcat(msg, ";5");
        if (attr & INVERSE)     /* typo? DEC documents this as invisible */
Index: ptyx.h
--- xterm-115+/ptyx.h   Sat Sep 18 14:30:12 1999
+++ xterm-116/ptyx.h    Sat Sep 25 10:14:55 1999
@@ -361,6 +361,10 @@
 #define OPT_DEC_CHRSET  1 /* true if xterm is configured for DEC charset */
 #endif
 
+#ifndef OPT_DEC_LOCATOR
+#define        OPT_DEC_LOCATOR 0 /* true if xterm supports VT220-style mouse events */
+#endif
+
 #ifndef OPT_DEC_SOFTFONT
 #define OPT_DEC_SOFTFONT 0 /* true if xterm is configured for VT220 softfonts */
 #endif
@@ -881,6 +885,17 @@
        unsigned long   event_mask;
        unsigned short  send_mouse_pos; /* user wants mouse transition  */
                                        /* and position information     */
+#if OPT_DEC_LOCATOR
+       Boolean         locator_reset;  /* turn mouse off after 1 report? */
+       Boolean         locator_pixels; /* report in pixels?            */
+                                       /* if false, report in cells    */
+       unsigned short  locator_events; /* what events to report        */
+       int             loc_filter;     /* is filter rectangle active?  */
+       int             loc_filter_top; /* filter rectangle for DEC Locator */
+       int             loc_filter_left;
+       int             loc_filter_bottom;
+       int             loc_filter_right;
+#endif /* OPT_DEC_LOCATOR */
        int             mouse_button;   /* current button pressed       */
        int             mouse_row;      /* ...and its row               */
        int             mouse_col;      /* ...and its column            */
Index: resize.c
--- xterm-115+/resize.c Sun Aug 22 14:20:13 1999
+++ xterm-116/resize.c  Fri Sep 24 20:26:32 1999
@@ -76,7 +76,6 @@
 
 #ifdef linux
 #define USE_TERMIOS
-#define USE_SYSV_UTMP
 #endif
 
 #ifdef Lynx
@@ -96,7 +95,6 @@
 
 #if defined(SYSV) || defined(__CYGWIN32__)
 #define USE_SYSV_TERMIO
-#define USE_SYSV_UTMP
 #elif defined(__QNX__)
 #define USE_TERMINFO
 #include <unix.h>
Index: version.h
--- xterm-115+/version.h        Sat Sep 18 12:53:42 1999
+++ xterm-116/version.h Wed Sep 22 06:21:05 1999
@@ -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   115
+#define XTERM_PATCH   116
 #define XFREE86_VERSION "XFree86 3.9.16a"
Index: xcharmouse.h
--- xterm-115+/xcharmouse.h     Sun Aug 30 06:43:03 1998
+++ xterm-116/xcharmouse.h      Sat Sep 25 10:34:10 1999
@@ -43,14 +43,26 @@
 #define SET_BTN_EVENT_MOUSE         1002
 #define SET_ANY_EVENT_MOUSE         1003
 
+#if OPT_DEC_LOCATOR
+
+/* Bit fields for screen->locator_events */
+#define        LOC_BTNS_DN             0x1
+#define        LOC_BTNS_UP             0x2
+
+/* Special values for screen->loc_filter_* */
+#define        LOC_FILTER_POS          -1
+
+#endif /* OPT_DEC_LOCATOR */
+
 /* Values for screen->send_mouse_pos */
 enum {
-       MOUSE_OFF,
-       X10_MOUSE,
-       VT200_MOUSE,
-       VT200_HIGHLIGHT_MOUSE,
-       BTN_EVENT_MOUSE,
-       ANY_EVENT_MOUSE
+       MOUSE_OFF
+       , X10_MOUSE
+       , VT200_MOUSE
+       , VT200_HIGHLIGHT_MOUSE
+       , BTN_EVENT_MOUSE
+       , ANY_EVENT_MOUSE
+       , DEC_LOCATOR
 };
 
 #endif /* included_xcharmouse_h */
Index: xterm.h
--- xterm-115+/xterm.h  Sat Sep 18 12:15:02 1999
+++ xterm-116/xterm.h   Sat Sep 25 10:41:35 1999
@@ -84,6 +84,24 @@
 #define HAVE_TCGETATTR 1
 #endif
 
+#if defined(UTMP)
+#define HAVE_UTMP 1
+#endif
+
+#if (defined(SVR4) || defined(SCO325)) && !defined(__CYGWIN32__)
+#define UTMPX_FOR_UTMP 1
+#endif
+
+#define HAVE_UTMP_UT_HOST 1
+
+#if defined(AIXV3) || defined(CRAY) || defined(SCO) || defined(SVR4) || (defined(SYSV) && defined(i386)) || defined(__MVS__) || defined(__hpux) || defined(__osf__) || defined(linux) || defined(macII)
+#define USE_SYSV_UTMP
+#endif
+
+#if defined(__GNU__) || defined(__MVS__)
+#define USE_TTY_GROUP
+#endif
+
 #endif /* HAVE_CONFIG_H */
 
 /***====================================================================***/
@@ -371,6 +389,13 @@
 extern void TrackMouse (int func, int startrow, int startcol, int firstrow, int lastrow);
 extern void TrackText (int frow, int fcol, int trow, int tcol);
 extern void ViButton                  PROTO_XT_ACTIONS_ARGS;
+
+#if OPT_DEC_LOCATOR
+extern Boolean SendLocatorPosition (Widget w, XEvent* event);
+extern void CheckLocatorPosition (Widget w, XEvent *event);
+extern void GetLocatorPosition (XtermWidget w);
+extern void InitLocatorFilter (XtermWidget w);
+#endif /* OPT_DEC_LOCATOR */
 
 /* charproc.c */
 extern int VTInit (void);
Index: xterm.log.html
--- xterm-115+/xterm.log.html   Sat Sep 18 14:34:32 1999
+++ xterm-116/xterm.log.html    Sat Sep 25 21:56:21 1999
@@ -41,6 +41,7 @@
 xc/programs/Xserver/hw/xfree86).
 
 <UL>
+<LI><A HREF="#xterm_116">Patch #116 - 1999/9/25 - XFree86 3.9.16a</A>
 <LI><A HREF="#xterm_115">Patch #115 - 1999/9/18 - XFree86 3.9.16a</A>
 <LI><A HREF="#xterm_114">Patch #114 - 1999/9/15 - XFree86 3.9.16</A>
 <LI><A HREF="#xterm_113">Patch #113 - 1999/8/15 - XFree86 3.9.15b</A>
@@ -158,6 +159,61 @@
 <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_116">Patch #116 - 1999/9/25 - XFree86 3.9.16a</A></H1>
+<ul>
+       <li>modify warning if change-ownership of PTY fails; some
+         configurations may not happen to have old-style pty's (reported by
+         Bob Maynard).
+
+       <li>improve check in configure script for group ownership of installed
+         xterm; some platforms use the -g option of ls to toggle group off
+         rather than on (reported by Greg Smith).
+
+       <li>minor improvement to toolbar geometry, to make it not resizable. 
+         This still is not satisfactory (but is usable) since the toolbar
+         overlaps the xterm widget if the window is resized to make it
+         smaller.  It appears that some work is needed for the xterm widget's
+         geometry management to make it function properly.
+
+       <li>implement configure script tests for utmp, tty group.
+
+       <li>implement <em>-hold</em> option, allowing users to retain the
+         window after a shell has exited (this is recently an FAQ, but
+         prompted by a comment by Joachim Plaettner-Hochwarth
+         &lt;plaettner@aem.umn.edu&gt; in comp.unix.programmer, that the IRIX
+         winterm provides this option).
+
+       <li>integrated change by Steve Wall to
+         add support for DEC Locator control sequences for xterm: 
+         <pre>
+ 
+               DECEFR - Enable Filter Rectangle 
+               DECELR - Enable Locator Reports 
+               DECSLE - Select Locator Events 
+               DECRQLP - Request Locator Position 
+         </pre>  
+         This allows the xterm mouse to be used with applications that use the 
+         DEC Locator sequences, such as VAX Tpu, or SMG$ based applications. 
+
+       <li>patch from Matthias Baake &lt;Matthias.Baake@gmx.de&gt;, for print
+         action.  From his notes:
+         <ul>
+           <li>Bug 1: 
+             Underlined text is preceded by ESC [0;2m . This should be ESC [0;4m , ESC 
+             [2m doesn't seem to have any effect. (print.c/send_SGR) 
+        
+           <li>Bug 2: 
+             The check for the last non-empty column (while (last &gt; 0) ... in 
+             print.c/printLine) omits the rightmost column of the screen, the loop must 
+             start with last = screen->max_col+1 instead of last = screen->max_col. 
+        
+           <li>Bug 3: 
+             Any attributes of the first character (and of all immediately following 
+             characters with the same attributes) are ignored. The variable attr 
+             (print.c/printLine) should be initialized with 0, not with *a &amp; SGR_MASK. 
+         </ul>
+</ul>
 
 <H1><A NAME="xterm_115">Patch #115 - 1999/9/18 - XFree86 3.9.16a</A></H1>
 <ul>
Index: xterm.man
--- xterm-115+/xterm.man        Sat Sep 18 12:47:47 1999
+++ xterm-116/xterm.man Sat Sep 25 11:02:32 1999
@@ -351,6 +351,16 @@
 This option indicates that HP Function Key escape codes should not be generated
 for function keys.
 .TP 8
+.BI \-hold
+Turn on the \fBhold\fP resource, i.e.,
+xterm will not immediately destroy its window when the shell command completes.
+It will wait until you use the window manager to destroy/kill the window, or
+if you use the menu entries that send a signal, e.g., HUP or KILL.
+.TP 8
+.BI \+hold
+Turn off the \fBhold\fP resource, i.e.,
+xterm will immediately destroy its window when the shell command completes.
+.TP 8
 .B \-ie
 Turn on the \fBptyInitialErase\fP resource, i.e.,
 use the pseudo-terminal's sense of the stty erase value.
@@ -708,6 +718,15 @@
 stty erase is a backspace or delete character.
 The default is ``false'', which disables this feature.
 .TP 8
+.B "hold (\fPclass\fB Hold)"
+If true,
+xterm will not immediately destroy its window when the shell command completes.
+It will wait until you use the window manager to destroy/kill the window, or
+if you use the menu entries that send a signal, e.g., HUP or KILL.
+You may scroll back, select text, etc., to perform most graphical operations.
+Resizing the display will lose data, however, since this involves interaction
+with the shell which is no longer running.
+.TP 8
 .B "hpFunctionKeys (\fPclass\fB HpFunctionKeys)"
 Specifies whether or not HP Function Key escape codes should be generated for
 function keys instead of standard escape sequences.
@@ -2444,5 +2463,6 @@
 Steve Pitschke (Stellar), Ron Newman (MIT-Athena), Jim Fulton (MIT X
 Consortium), Dave Serisky (HP), Jonathan Kamens (MIT-Athena),
 Jason Bacon <acadix@execpc.com>,
+Stephen P. Wall <swall@redcom.com>,
 David Wexelblat, and
 Thomas Dickey (XFree86 Project).
Index: xtermcfg.hin
--- xterm-115+/xtermcfg.hin     Fri Sep 17 06:25:04 1999
+++ xterm-116/xtermcfg.hin      Sat Sep 25 10:12:14 1999
@@ -47,6 +47,8 @@
 #undef HAVE_TERMCAP_H          /* AC_CHECK_HEADERS(termcap.h) */
 #undef HAVE_TERMIOS_H          /* AC_CHECK_HEADERS(termios.h) */
 #undef HAVE_UNISTD_H           /* AC_CHECK_HEADERS(unistd.h) */
+#undef HAVE_UTMP               /* CF_UTMP */
+#undef HAVE_UTMP_UT_HOST       /* CF_UTMP_UT_HOST */
 #undef HAVE_WAITPID            /* AC_CHECK_FUNCS(waitpid) */
 #undef HAVE_X11_DECKEYSYM_H    /* AC_CHECK_HEADERS(X11/DECkeysym.h) */
 #undef HAVE_X11_XPOLL_H                /* AC_CHECK_HEADERS(X11/Xpoll.h) */
@@ -58,6 +60,7 @@
 #undef OPT_BLINK_CURS          /* CF_ARG_DISABLE(blink-cursor) */
 #undef OPT_BOX_CHARS           /* CF_ARG_DISABLE(boxchars) */
 #undef OPT_DEC_CHRSET          /* CF_ARG_DISABLE(doublechars) */
+#undef OPT_DEC_LOCATOR         /* CF_ARG_ENABLE(dec-locator) */
 #undef OPT_HIGHLIGHT_COLOR     /* CF_ARG_DISABLE(highlighting) */
 #undef OPT_HP_FUNC_KEYS                /* CF_ARG_ENABLE(hp-fkeys) */
 #undef OPT_I18N_SUPPORT                /* CF_ARG_DISABLE(i18n) */
@@ -78,8 +81,11 @@
 #undef SCROLLBAR_RIGHT         /* CF_ARG_ENABLE(rightbar) */
 #undef USE_MY_MEMMOVE          /* CF_FUNC_MEMMOVE */
 #undef USE_OK_BCOPY            /* CF_FUNC_MEMMOVE */
+#undef USE_SYSV_UTMP           /* CF_UTMP */
 #undef USE_SYS_SELECT_H                /* CF_TYPE_FD_SET */
 #undef USE_TERMINFO            /* CF_FUNC_TGETENT */
+#undef USE_TTY_GROUP           /* CF_TTY_GROUP */
+#undef UTMPX_FOR_UTMP          /* CF_UTMP */
 #undef const                   /* AC_CONST */
 #undef size_t                  /* AC_TYPE_SIZE_T */
 #undef time_t                  /* AC_CHECK_TYPE(time_t, long) */