xterm-50.patch.txt

XFree86 3.9m - xterm patch #50 - 1997/8/22 - T.Dickey <dickey@clark.net>
 
This is a collection of small fixes, and a couple of minor enhancements:
 
        + plug a security hole in the implementation of Media Copy (print)
          by invoking setuid just before the main loop.
 
        + add an ifdef'd include for <sys/termio.h> for HP-UX, which allows
          the program to process SIGWINCH events (this is a bug in X11R6.3)  
 
        + add state-table entries for VT52 emulation to enter/exit keypad
          application mode.
 
        + disable the popup-menu entry for 8-bit controls when the terminal-id
          is less than 200 (e.g., VT52 or VT100).
 
        + ensure that the popup-menu entry for 8-bit controls is updated when
          the application enables/disables this mode, including the response
          to a full-reset.
 
        + implement VT300 DECBKM feature: set interpretation of the backarrow
          key to either backspace or delete.  The initial setting is via
          resource; it can also be modified in the main popup menu.
 
        + implement VTxxx KAM (ISO AM), which allows a keyboard to be locked
          (i.e., the terminal discards input).
 
        + implement VTxxx SRM, which is used to control local echoing of
          input on the terminal.
 
        + add terminfo and termcap entries for xterm-8bit, a variation of
          the xterm description that uses 8-bit control characters.
 
        + add fallback definitions for Imakefile to allow it to work on some
          X11R5 systems that have no SpecialCObjectRule or ProgramTargetName
          macros.
 
        + add .c.o and .c.i rules to standalone Makefile.in
 
        + correct order of -lXmu and -lXext in standalone configure script.
 
        + add configure script options to allow selective disabling of
          active-icon, input-method and i18n code (mainly for users with X11R5
          or an incomplete X11R6 configuration).
 
        + change menu-indices from #define's to enum values, thereby making
          it work better with the ifdef's for logging and active-icon (the
          X11R6.3 active-icon code is incorrectly ifdef'd; this corrects an
          error introduced by incorporating that code).
 
        + correct minor compile errors in the configuration where active-icon
          is not used.
 
        + add configure option to suppress echoing of long compiler commands
 
        + correct spelling of decTerminalID in configure script help message
 
        + use gcc __attribute__((unused)) to quiet warnings about unused
          parameters when compiling with -W (to make it simpler to find the
          real problems).
 
-------------------------------------------------------------------------------
 doc/specs/xterm/ctlseqs.ms  |    6 
 programs/xterm/Imakefile    |    9 
 programs/xterm/Makefile.in  |   13 +
 programs/xterm/Tekproc.c    |   12 -
 programs/xterm/VTPrsTbl.c   |    4 
 programs/xterm/XTerm.ad     |    5 
 programs/xterm/aclocal.m4   |   19 +
 programs/xterm/button.c     |   54 ++---
 programs/xterm/charproc.c   |  113 ++++++-----
 programs/xterm/configure    |  435 ++++++++++++++++++++++++++++----------------
 programs/xterm/configure.in |   40 +++-
 programs/xterm/input.c      |   16 +
 programs/xterm/main.c       |   31 +--
 programs/xterm/menu.c       |  312 +++++++++++++++++--------------
 programs/xterm/menu.h       |  144 ++++++++------
 programs/xterm/misc.c       |   56 ++---
 programs/xterm/ptyx.h       |   29 ++
 programs/xterm/resize.c     |    6 
 programs/xterm/screen.c     |    4 
 programs/xterm/scrollbar.c  |   14 -
 programs/xterm/terminfo     |  135 +++++++++++++
 programs/xterm/trace.c      |   21 ++
 programs/xterm/xterm.h      |    5 
 programs/xterm/xterm.man    |    9 
 programs/xterm/xtermcfg.hin |    6 
 25 files changed, 1001 insertions, 497 deletions
-------------------------------------------------------------------------------
Index: ctlseqs.ms
--- XFree86-3.9m/xc/doc/specs/xterm/ctlseqs.ms  Wed Aug 13 09:29:16 1997
+++ XFree86-current/xc/doc/specs/xterm/ctlseqs.ms       Fri Aug 22 06:17:58 1997
@@ -597,7 +597,9 @@
 .
 .IP \\*(Cs\\*(Pm\\*s\\*h
 Set Mode (SM)
+  \*(Ps = \*2 \(-> Keyboard Action Mode (AM)
   \*(Ps = \*4 \(-> Insert Mode (IRM)
+  \*(Ps = \*1\*2 \(-> Send/receive (SRM)
   \*(Ps = \*2\*0 \(-> Automatic Newline (LNM)
 .
 .IP \\*(Cs\\*(Pm\\*s\\*i
@@ -614,7 +616,9 @@
 .
 .IP \\*(Cs\\*(Pm\\*s\\*l
 Reset Mode (RM)
+  \*(Ps = \*2 \(-> Keyboard Action Mode (AM)
   \*(Ps = \*4 \(-> Replace Mode (IRM)
+  \*(Ps = \*1\*2 \(-> Send/receive (SRM)
   \*(Ps = \*2\*0 \(-> Normal Linefeed (LNM)
 .
 .IP \\*(Cs\\*(Pm\\*s\\*m
@@ -773,6 +777,7 @@
 (normally disabled by a compile-time option)
   \*(Ps = \*4\*7 \(-> Use Alternate Screen Buffer (unless
 disabled by the \fBtiteInhibit\fP resource)
+  \*(Ps = \*6\*7 \(-> Backarrow key (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.
@@ -799,6 +804,7 @@
   \*(Ps = \*4\*6 \(-> Stop Logging
 (normally disabled by a compile-time option)
   \*(Ps = \*4\*7 \(-> Use Normal Screen Buffer
+  \*(Ps = \*6\*7 \(-> Backarrow key (DECBKM)
   \*(Ps = \*1\*0\*0\*0 \(-> Don't Send Mouse X & Y on button press and
 release
   \*(Ps = \*1\*0\*0\*1 \(-> Don't Use Hilite Mouse Tracking
Index: Imakefile
--- XFree86-3.9m/xc/programs/xterm/Imakefile    Wed Aug 13 09:29:16 1997
+++ XFree86-current/xc/programs/xterm/Imakefile Tue Aug 19 19:08:54 1997
@@ -24,6 +24,15 @@
 #define XkbClientLibs /**/
 #endif
 
+#ifndef SpecialCObjectRule
+#define SpecialCObjectRule(module,ignore,defines) \
+module.o: ; $(CC) -c defines $(CFLAGS) module.c
+#endif
+
+#ifndef ProgramTargetName
+#define ProgramTargetName(program) program
+#endif
+
 /*
  * add -DWTMP and -DLASTLOG if you want them; make sure that bcopy can
  * handle overlapping copies before using it.
Index: Makefile.in
--- XFree86-3.9m/xc/programs/xterm/Makefile.in  Wed Aug 13 09:29:16 1997
+++ XFree86-current/xc/programs/xterm/Makefile.in       Thu Aug 21 19:25:50 1997
@@ -4,6 +4,7 @@
 VPATH                  = @srcdir@
 
 CC             = @CC@
+CPP            = @CPP@
 LINK           = $(CC) $(CFLAGS)
 INSTALL                = @INSTALL@
 INSTALL_PROGRAM        = @INSTALL_PROGRAM@
@@ -54,6 +55,16 @@
 
 all:   $(PROGRAMS)
 
+.SUFFIXES : .i
+
+.c.o:
+@SHOW_CC@
+       @ECHO_CC@$(CC) $(CPPFLAGS) $(CFLAGS) -c $(srcdir)/$*.c
+
+.c.i:
+@SHOW_CC@
+       @ECHO_CC@$(CPP) -C $(CPPFLAGS) $*.c >$@
+
 xterm : $(OBJS1)
        $(LINK) $(LDFLAGS) -o $@ $(OBJS1) $(X_LIBS) $(LIBS)
 
@@ -76,7 +87,7 @@
                $(mandir)/resize.$(manext)
 
 mostlyclean:
-       -$(RM) *.o core *~ *.BAK
+       -$(RM) *.[oi] core *~ *.BAK
 
 clean: mostlyclean
        -$(RM) $(PROGRAMS)
Index: Tekproc.c
--- XFree86-3.9m/xc/programs/xterm/Tekproc.c    Tue Jun  3 16:05:50 1997
+++ XFree86-current/xc/programs/xterm/Tekproc.c Wed Aug 20 05:55:20 1997
@@ -865,9 +865,9 @@
 /*ARGSUSED*/
 void
 TekExpose(w, event, region)
-    Widget w;
-    XEvent *event;
-    Region region;
+    Widget w GCC_UNUSED;
+    XEvent *event GCC_UNUSED;
+    Region region GCC_UNUSED;
 {
        register TScreen *screen = &term->screen;
 
@@ -1269,9 +1269,9 @@
  */
 
 static void TekInitialize(request, new, args, num_args)
-    Widget request, new;
-    ArgList args;
-    Cardinal *num_args;
+    Widget request, new GCC_UNUSED;
+    ArgList args GCC_UNUSED;
+    Cardinal *num_args GCC_UNUSED;
 {
     /* look for focus related events on the shell, because we need
      * to care about the shell's border being part of our focus.
Index: VTPrsTbl.c
--- XFree86-3.9m/xc/programs/xterm/VTPrsTbl.c   Wed Aug 13 09:29:16 1997
+++ XFree86-current/xc/programs/xterm/VTPrsTbl.c        Thu Aug 21 20:40:04 1997
@@ -5309,8 +5309,8 @@
 CASE_IGNORE,
 /*     <               =               >               ?       */
 CASE_ANSI_LEVEL_1,
-CASE_IGNORE,
-CASE_IGNORE,
+CASE_DECKPAM,
+CASE_DECKPNM,
 CASE_IGNORE, 
 /*     @               A               B               C       */
 CASE_IGNORE,
Index: XTerm.ad
--- XFree86-3.9m/xc/programs/xterm/XTerm.ad     Tue Jun  3 16:05:50 1997
+++ XFree86-current/xc/programs/xterm/XTerm.ad  Fri Aug 22 06:51:43 1997
@@ -14,11 +14,15 @@
 *SimpleMenu*Sme.height:        16
 
 *SimpleMenu*Cursor: left_ptr
+
 *mainMenu.Label:  Main Options
 *mainMenu*securekbd*Label:  Secure Keyboard
 *mainMenu*allowsends*Label:  Allow SendEvents
 *mainMenu*logging*Label:  Log to File
 *mainMenu*redraw*Label:  Redraw Window
+*mainMenu*8-bit control*Label: 8-Bit Controls
+*mainMenu*backarrow key*Label: Backarrow Key
+*mainMenu*sun function keys*Label: Sun Function-Keys
 *mainMenu*suspend*Label:  Send STOP Signal
 *mainMenu*continue*Label:  Send CONT Signal
 *mainMenu*interrupt*Label:  Send INT Signal
@@ -26,7 +30,6 @@
 *mainMenu*terminate*Label:  Send TERM Signal
 *mainMenu*kill*Label:  Send KILL Signal
 *mainMenu*quit*Label:  Quit
-*mainMenu*eightBit*Label: 8-Bit Controls
 
 *vtMenu.Label:  VT Options
 *vtMenu*scrollbar*Label:  Enable Scrollbar
Index: aclocal.m4
--- XFree86-3.9m/xc/programs/xterm/aclocal.m4   Tue Jul 29 15:13:30 1997
+++ XFree86-current/xc/programs/xterm/aclocal.m4        Thu Aug 21 19:34:31 1997
@@ -111,6 +111,21 @@
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl You can always use "make -n" to see the actual options, but it's hard to
+dnl pick out/analyze warning messages when the compile-line is long.
+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],
+       [SHOW_CC='      @echo compiling [$]@'
+    ECHO_CC='@'],
+       [SHOW_CC='# compiling'
+    ECHO_CC=''])
+AC_MSG_RESULT($enableval)
+AC_SUBST(SHOW_CC)
+AC_SUBST(ECHO_CC)
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl Check for memmove, or a bcopy that can handle overlapping copy.  If neither
 dnl is found, add our own version of memmove to the list of objects.
 AC_DEFUN([CF_FUNC_MEMMOVE],
@@ -432,9 +447,9 @@
 AC_DEFUN([CF_X_ATHENA],
 [AC_REQUIRE([CF_X_TOOLKIT])
 AC_CHECK_HEADERS(X11/Xaw/SimpleMenu.h)
+AC_CHECK_LIB(Xext,XextCreateExtension)
 AC_CHECK_LIB(Xmu, XmuClientWindow)
-AC_CHECK_LIB(Xext,XextCreateExtension,[LIBS="-lXext $LIBS"])
-AC_CHECK_LIB(Xaw, XawSimpleMenuAddGlobalActions, [LIBS="-lXaw $LIBS"],
+AC_CHECK_LIB(Xaw, XawSimpleMenuAddGlobalActions,,
        AC_ERROR(
 [Unable to successfully link Athena library (-lXaw)]),
        [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])
Index: button.c
--- XFree86-3.9m/xc/programs/xterm/button.c     Thu Jul 31 15:20:25 1997
+++ XFree86-current/xc/programs/xterm/button.c  Wed Aug 20 05:55:28 1997
@@ -193,10 +193,10 @@
 
 void
 DiredButton(w, event, params, num_params)
-Widget w;
+Widget w GCC_UNUSED;
 XEvent *event;                 /* must be XButtonEvent */
-String *params;                        /* selections */
-Cardinal *num_params;
+String *params GCC_UNUSED;     /* selections */
+Cardinal *num_params GCC_UNUSED;
 {      /* ^XM-G<line+' '><col+' '> */
        register TScreen *screen = &term->screen;
        int pty = screen->respond;
@@ -217,10 +217,10 @@
 
 void
 ViButton(w, event, params, num_params)
-Widget w;
+Widget w GCC_UNUSED;
 XEvent *event;                 /* must be XButtonEvent */
-String *params;                        /* selections */
-Cardinal *num_params;
+String *params GCC_UNUSED;     /* selections */
+Cardinal *num_params GCC_UNUSED;
 {      /* ^XM-G<line+' '><col+' '> */
        register TScreen *screen = &term->screen;
        int pty = screen->respond;
@@ -252,8 +252,8 @@
 void HandleSelectExtend(w, event, params, num_params)
 Widget w;
 XEvent *event;                 /* must be XMotionEvent */
-String *params;                        /* unused */
-Cardinal *num_params;          /* unused */
+String *params GCC_UNUSED;
+Cardinal *num_params GCC_UNUSED;
 {
        register TScreen *screen = &((XtermWidget)w)->screen;
        int row, col;
@@ -375,10 +375,10 @@
                              value, length, format)
 Widget w;
 XtPointer client_data;
-Atom *selection, *type;
+Atom *selection GCC_UNUSED, *type;
 XtPointer value;
 unsigned long *length;
-int *format;
+int *format GCC_UNUSED;
 {
     int pty = ((XtermWidget)w)->screen.respond;        /* file descriptor of pty */
     register char *lag, *cp, *end;
@@ -466,8 +466,8 @@
 HandleSelectStart(w, event, params, num_params)
 Widget w;
 XEvent *event;                 /* must be XButtonEvent* */
-String *params;                        /* unused */
-Cardinal *num_params;          /* unused */
+String *params GCC_UNUSED;
+Cardinal *num_params GCC_UNUSED;
 {
        register TScreen *screen = &((XtermWidget)w)->screen;
        int startrow, startcol;
@@ -484,8 +484,8 @@
 HandleKeyboardSelectStart(w, event, params, num_params)
 Widget w;
 XEvent *event;                 /* must be XButtonEvent* */
-String *params;                        /* unused */
-Cardinal *num_params;          /* unused */
+String *params GCC_UNUSED;
+Cardinal *num_params GCC_UNUSED;
 {
        register TScreen *screen = &((XtermWidget)w)->screen;
 
@@ -635,8 +635,8 @@
 /* ARGSUSED */
 static void
 SelectSet (w, event, params, num_params)
-    Widget     w;
-    XEvent     *event;
+    Widget     w GCC_UNUSED;
+    XEvent     *event GCC_UNUSED;
     String     *params;
     Cardinal    num_params;
 {
@@ -654,8 +654,8 @@
 static void do_start_extend (w, event, params, num_params, use_cursor_loc)
 Widget w;
 XEvent *event;                 /* must be XButtonEvent* */
-String *params;                        /* unused */
-Cardinal *num_params;          /* unused */
+String *params GCC_UNUSED;
+Cardinal *num_params GCC_UNUSED;
 Bool use_cursor_loc;
 {
        TScreen *screen = &((XtermWidget)w)->screen;
@@ -793,7 +793,7 @@
 /*ARGSUSED*/
 void
 ResizeSelection (screen, rows, cols)
-    TScreen *screen;
+    TScreen *screen GCC_UNUSED;
     int rows, cols;
 {
     rows--;                            /* decr to get 0-max */
@@ -1322,8 +1322,8 @@
 
 /* ARGSUSED */
 static void SelectionDone(w, selection, target)
-Widget w;
-Atom *selection, *target;
+Widget w GCC_UNUSED;
+Atom *selection GCC_UNUSED, *target GCC_UNUSED;
 {
     /* empty proc so Intrinsics know we want to keep storage */
 }
@@ -1418,7 +1418,7 @@
 static int
 Length(screen, row, scol, ecol)
     register int row, scol, ecol;
-    register TScreen *screen;
+    register TScreen *screen GCC_UNUSED;
 {
         register int lastcol = LastTextCol(row);
 
@@ -1514,8 +1514,8 @@
 
 /*ARGSUSED*/
 void HandleGINInput (w, event, param_list, nparamsp)
-    Widget w;
-    XEvent *event;
+    Widget w GCC_UNUSED;
+    XEvent *event GCC_UNUSED;
     String *param_list;
     Cardinal *nparamsp;
 {
@@ -1539,10 +1539,10 @@
 
 /* ARGSUSED */
 void HandleSecure(w, event, params, param_count)
-    Widget w;
+    Widget w GCC_UNUSED;
     XEvent *event;             /* unused */
-    String *params;            /* [0] = volume */
-    Cardinal *param_count;     /* 0 or 1 */
+    String *params GCC_UNUSED;         /* [0] = volume */
+    Cardinal *param_count GCC_UNUSED;  /* 0 or 1 */
 {
     Time ev_time = CurrentTime;
 
Index: charproc.c
--- XFree86-3.9m/xc/programs/xterm/charproc.c   Wed Aug 13 09:29:16 1997
+++ XFree86-current/xc/programs/xterm/charproc.c        Fri Aug 22 17:06:13 1997
@@ -68,7 +68,7 @@
 #include <X11/Xmu/CharSet.h>
 #include <X11/Xmu/Converters.h>
 
-#if XtSpecificationRelease >= 6
+#if OPT_INPUT_METHOD
 #include <X11/Xaw/XawImP.h>
 #endif
 
@@ -175,6 +175,7 @@
 #define XtNalwaysHighlight "alwaysHighlight"
 #define XtNappcursorDefault "appcursorDefault"
 #define XtNappkeypadDefault "appkeypadDefault"
+#define XtNbackarrowKey "backarrowKey"
 #define XtNbellSuppressTime "bellSuppressTime"
 #define XtNboldFont "boldFont"
 #define XtNc132 "c132"
@@ -261,6 +262,7 @@
 #define XtCAlwaysHighlight "AlwaysHighlight"
 #define XtCAppcursorDefault "AppcursorDefault"
 #define XtCAppkeypadDefault "AppkeypadDefault"
+#define XtCBackarrowKey "BackarrowKey"
 #define XtCBellSuppressTime "BellSuppressTime"
 #define XtCBoldFont "BoldFont"
 #define XtCC132 "C132"
@@ -430,6 +432,7 @@
     { "send-signal",           HandleSendSignal },
     { "quit",                  HandleQuit },
     { "set-8-bit-control",     Handle8BitControl },
+    { "set-backarrow",         HandleBackarrow },
     { "set-sun-function-keys", HandleSunFunctionKeys },
     { "set-scrollbar",         HandleScrollbar },
     { "set-jumpscroll",                HandleJumpscroll },
@@ -536,6 +539,9 @@
 {XtNappkeypadDefault,XtCAppkeypadDefault,XtRBoolean,
         sizeof(Boolean),XtOffsetOf(XtermWidgetRec, misc.appkeypadDefault),
         XtRBoolean, (XtPointer) &defaultFALSE},
+{XtNbackarrowKey, XtCBackarrowKey, XtRBoolean, sizeof(Boolean),
+        XtOffsetOf(XtermWidgetRec, screen.backarrow_key),
+        XtRBoolean, (XtPointer) &defaultTRUE},
 {XtNbellSuppressTime, XtCBellSuppressTime, XtRInt, sizeof(int),
         XtOffsetOf(XtermWidgetRec, screen.bellSuppressTime),
         XtRInt, (XtPointer) &defaultBellSuppressTime},
@@ -664,7 +670,7 @@
 {"font6", "Font6", XtRString, sizeof(String),
        XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font6]),
        XtRString, (XtPointer) NULL},
-#if XtSpecificationRelease >= 6
+#if OPT_INPUT_METHOD
 {XtNinputMethod, XtCInputMethod, XtRString, sizeof(char*),
        XtOffsetOf(XtermWidgetRec, misc.input_method),
        XtRString, (XtPointer)NULL},
@@ -773,7 +779,7 @@
 static void VTDestroy PROTO((Widget w));
 static Boolean VTSetValues PROTO((Widget cur, Widget request, Widget new, ArgList args, Cardinal *num_args));
 
-#if XtSpecificationRelease >= 6
+#if OPT_I18N_SUPPORT
 static void VTInitI18N PROTO((void));
 #endif
 
@@ -1776,7 +1782,7 @@
                 case CASE_ANSI_LEVEL_1:
                        if (screen->terminal_id >= 100) {
                                screen->ansi_level = 1;
-                               screen->control_eight_bits = False;
+                               show_8bit_control(False);
 #if OPT_VT52_MODE
                                groundtable =
                                parsestate = ansi_table;
@@ -1797,9 +1803,9 @@
                                screen->ansi_level = param[0] - 60;
                                if (param[0] > 61) {
                                        if (param[1] == 1)
-                                               screen->control_eight_bits = False;
+                                               show_8bit_control(False);
                                        else if (param[1] == 0 || param[1] == 2)
-                                               screen->control_eight_bits = True;
+                                               show_8bit_control(True);
                                }
                        }
                        parsestate = groundtable;
@@ -1971,7 +1977,7 @@
                        break;
 
                 case CASE_S7C1T:
-                       screen->control_eight_bits = False;
+                       show_8bit_control(False);
                        parsestate = groundtable;
                        break;
 
@@ -1980,7 +1986,7 @@
                        if (screen->ansi_level <= 1)
                                break;
 #endif
-                       screen->control_eight_bits = True;
+                       show_8bit_control(True);
                        parsestate = groundtable;
                        break;
 
@@ -2553,7 +2559,7 @@
        for (i=0; i<nparam; ++i) {
                switch (param[i]) {
                case 2:                 /* KAM (if set, keyboard locked */
-                       /* FIXME */
+                       (*func)(&termw->keyboard.flags, MODE_KAM);
                        break;
 
                case 4:                 /* IRM                          */
@@ -2561,7 +2567,7 @@
                        break;
 
                case 12:                /* SRM (if set, local echo      */
-                       /* FIXME */
+                       (*func)(&termw->keyboard.flags, MODE_SRM);
                        break;
 
                case 20:                /* LNM                          */
@@ -2724,10 +2730,12 @@
                        }
                        break;
                case 66:        /* DECNKM */
-                       /* FIXME: numeric keypad */
+                       /* FIXME: VT300 numeric keypad */
                        break;
                case 67:        /* DECBKM */
-                       /* FIXME: back-arrow mapped to backspace or delete(D)*/
+                       /* back-arrow mapped to backspace or delete(D)*/
+                       (*func)(&termw->keyboard.flags, MODE_DECBKM);
+                       update_decbkm();
                        break;
                case 1000:              /* xterm bogus sequence         */
                        if(func == bitset)
@@ -3197,6 +3205,12 @@
                i++;
        }
        v_write(fd, buf, i);
+
+       /* If send/receive mode is reset, we echo characters locally */
+       if ((term->keyboard.flags & MODE_SRM) == 0) {
+               register TScreen *screen = &term->screen;
+               dotext(screen, screen->gsets[(int)(screen->curgl)], buf, buf+i);
+       }
 }
 
 static void
@@ -3307,9 +3321,9 @@
 
 /*ARGSUSED*/
 static void VTExpose(w, event, region)
-    Widget w;
+    Widget w GCC_UNUSED;
     XEvent *event;
-    Region region;
+    Region region GCC_UNUSED;
 {
        register TScreen *screen = &term->screen;
 
@@ -3346,10 +3360,10 @@
 
 /*ARGSUSED*/
 static void VTNonMaskableEvent (w, closure, event, cont)
-Widget w;                      /* unused */
-XtPointer closure;             /* unused */
+Widget w GCC_UNUSED;
+XtPointer closure GCC_UNUSED;
 XEvent *event;
-Boolean *cont;                 /* unused */
+Boolean *cont GCC_UNUSED;
 {
     switch (event->type) {
        case GraphicsExpose:
@@ -3480,8 +3494,8 @@
 /* ARGSUSED */
 static void VTInitialize (wrequest, wnew, args, num_args)
    Widget wrequest, wnew;
-   ArgList args;
-   Cardinal *num_args;
+   ArgList args GCC_UNUSED;
+   Cardinal *num_args GCC_UNUSED;
 {
    XtermWidget request = (XtermWidget) wrequest;
    XtermWidget new     = (XtermWidget) wnew;
@@ -3549,6 +3563,7 @@
    new->screen.input_eight_bits = request->screen.input_eight_bits;
    new->screen.output_eight_bits = request->screen.output_eight_bits;
    new->screen.control_eight_bits = request->screen.control_eight_bits;
+   new->screen.backarrow_key = request->screen.backarrow_key;
    new->screen.allowSendEvents = request->screen.allowSendEvents;
 #ifndef NO_ACTIVE_ICON
    new->screen.fnt_icon = request->screen.fnt_icon;
@@ -3595,12 +3610,15 @@
    new->cur_foreground = 0;
    new->cur_background = 0;
 
+   new->keyboard.flags = MODE_SRM;
+   if (new->screen.backarrow_key)
+          new->keyboard.flags |= MODE_DECBKM;
+
     /*
      * The definition of -rv now is that it changes the definition of 
      * XtDefaultForeground and XtDefaultBackground.  So, we no longer
      * need to do anything special.
      */
-   new->keyboard.flags = 0;
    new->screen.display = new->core.screen->display;
    new->core.height = new->core.width = 1;
       /* dummy values so that we don't try to Realize the parent shell 
@@ -3784,7 +3802,6 @@
                InputOutput, CopyFromParent,    
                *valuemask|CWBitGravity, values);
 
-#if XtSpecificationRelease >= 6
 #ifndef NO_ACTIVE_ICON
        if (term->misc.active_icon && screen->fnt_icon) {
            int iconX=0, iconY=0;
@@ -3852,6 +3869,7 @@
        }
 #endif /* NO_ACTIVE_ICON */
 
+#if OPT_I18N_SUPPORT
        VTInitI18N();
 #else
        term->screen.xic = NULL;
@@ -3894,7 +3912,7 @@
        return;
 }
 
-#if XtSpecificationRelease >= 6
+#if OPT_I18N_SUPPORT
 static void VTInitI18N()
 {
     int                i;
@@ -4015,9 +4033,9 @@
 
 
 static Boolean VTSetValues (cur, request, new, args, num_args)
-    Widget cur, request, new;
-    ArgList args;
-    Cardinal *num_args;
+    Widget cur, request GCC_UNUSED, new;
+    ArgList args GCC_UNUSED;
+    Cardinal *num_args GCC_UNUSED;
 {
     XtermWidget curvt = (XtermWidget) cur;
     XtermWidget newvt = (XtermWidget) new; 
@@ -4321,9 +4339,13 @@
 
        if (full) {     /* RIS */
                TabReset (term->tabs);
-               term->keyboard.flags = 0;
+               term->keyboard.flags = MODE_SRM;
+               if (term->screen.backarrow_key)
+                       term->keyboard.flags |= MODE_DECBKM;
                update_appcursor();
                update_appkeypad();
+               update_decbkm();
+               show_8bit_control(False);
 
                FromAlternate(screen);
                ClearScreen(screen);
@@ -4361,9 +4383,9 @@
                 * We reset autowrap to the resource values rather than turning
                 * it off.
                 *
-                * FIXME: also reset AM, DECNKM when they're implemented.
+                * FIXME: also reset DECNKM when it's implemented.
                 */
-               term->keyboard.flags &= ~(MODE_DECCKM);
+               term->keyboard.flags &= ~(MODE_DECCKM|MODE_KAM);
                bitcpy(&term->flags, term->initflags, WRAPAROUND|REVERSEWRAP);
                bitclr(&term->flags, INSERT|INVERSE|BOLD|UNDERLINE|INVISIBLE);
                if_OPT_ISO_COLORS(screen,{reset_SGR_Colors();})
@@ -4486,7 +4508,7 @@
 /* ARGSUSED */
 static void HandleKeymapChange(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -4519,7 +4541,7 @@
 /* ARGSUSED */
 static void HandleBell(w, event, params, param_count)
     Widget w;
-    XEvent *event;             /* unused */
+    XEvent *event GCC_UNUSED;
     String *params;            /* [0] = volume */
     Cardinal *param_count;     /* 0 or 1 */
 {
@@ -4536,10 +4558,10 @@
 
 /* ARGSUSED */
 static void HandleVisualBell(w, event, params, param_count)
-    Widget w;
-    XEvent *event;             /* unused */
-    String *params;            /* unused */
-    Cardinal *param_count;     /* unused */
+    Widget w GCC_UNUSED;
+    XEvent *event GCC_UNUSED;
+    String *params GCC_UNUSED;
+    Cardinal *param_count GCC_UNUSED;
 {
     VisualBell();
 }
@@ -4548,9 +4570,9 @@
 /* ARGSUSED */
 static void HandleIgnore(w, event, params, param_count)
     Widget w;
-    XEvent *event;             /* unused */
-    String *params;            /* unused */
-    Cardinal *param_count;     /* unused */
+    XEvent *event;
+    String *params GCC_UNUSED;
+    Cardinal *param_count GCC_UNUSED;
 {
     /* do nothing, but check for funny escape sequences */
     (void) SendMousePosition(w, event);
@@ -4560,11 +4582,12 @@
 /* ARGSUSED */
 static void
 DoSetSelectedFont(w, client_data, selection, type, value, length, format)
-    Widget w;
-    XtPointer client_data;
-    Atom *selection, *type;
+    Widget w GCC_UNUSED;
+    XtPointer client_data GCC_UNUSED;
+    Atom *selection GCC_UNUSED;
+    Atom *type;
     XtPointer value;
-    unsigned long *length;
+    unsigned long *length GCC_UNUSED;
     int *format;
 {
     char *val = (char *)value;
@@ -4624,10 +4647,10 @@
 /* ARGSUSED */
 static void
 HandleSetFont(w, event, params, param_count)
-    Widget w;
-    XEvent *event;             /* unused */
-    String *params;            /* unused */
-    Cardinal *param_count;     /* unused */
+    Widget w GCC_UNUSED;
+    XEvent *event GCC_UNUSED;
+    String *params;
+    Cardinal *param_count;
 {
     int fontnum;
     char *name1 = NULL, *name2 = NULL;
Index: configure
--- XFree86-3.9m/xc/programs/xterm/configure    Tue Jul 29 15:13:30 1997
+++ XFree86-current/xc/programs/xterm/configure Thu Aug 21 19:36:13 1997
@@ -18,7 +18,9 @@
 ac_help="$ac_help
   --without-imake         disable use of imake for definitions (default: on)"
 ac_help="$ac_help
-  --with-terminal-id[=V]  set default decTerminalId (default: vt100)"
+  --with-terminal-id[=V]  set default decTerminalID (default: vt100)"
+ac_help="$ac_help
+  --disable-active-icon   disable X11R6.3 active-icon feature (default: on)"
 ac_help="$ac_help
   --disable-ansi-color    disable ANSI color (default: on)"
 ac_help="$ac_help
@@ -28,12 +30,18 @@
 ac_help="$ac_help
   --disable-doublechars   disable support for double-size chars (default: on)"
 ac_help="$ac_help
-  --enable-logging        set to enable logging (default: off)"
+  --disable-input-method  disable input-method (default: on)"
+ac_help="$ac_help
+  --disable-i18n          disable internationalization (default: on)"
+ac_help="$ac_help
+  --enable-logging        enable logging (default: off)"
 ac_help="$ac_help
   --enable-trace          test: set to enable debugging traces (default: off)"
 ac_help="$ac_help
   --disable-vt52          disable VT52 emulation (default: on)"
 ac_help="$ac_help
+  --disable-echo          test: display \"compiling\" commands (default: on)"
+ac_help="$ac_help
   --enable-xmc-glitch     test: enable xmc magic-cookie emulation (default: off)"
 ac_help="$ac_help
   --enable-warnings       test: turn on GCC compiler warnings (default: off)"
@@ -574,7 +582,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:578: checking for $ac_word" >&5
+echo "configure:586: 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
@@ -603,7 +611,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:607: checking for $ac_word" >&5
+echo "configure:615: 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
@@ -651,7 +659,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:655: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:663: 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.
@@ -661,11 +669,11 @@
 cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext <<EOF
-#line 665 "configure"
+#line 673 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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
@@ -685,12 +693,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:689: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:697: 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:694: checking whether we are using GNU C" >&5
+echo "configure:702: 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
@@ -699,7 +707,7 @@
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:703: \"$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:711: \"$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
@@ -714,7 +722,7 @@
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS=
   echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:718: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:726: 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
@@ -742,7 +750,7 @@
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:746: checking how to run the C preprocessor" >&5
+echo "configure:754: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -757,13 +765,13 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 761 "configure"
+#line 769 "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:767: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -774,13 +782,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 778 "configure"
+#line 786 "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:784: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:792: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -804,13 +812,13 @@
 
 if test $ac_cv_prog_gcc = yes; then
     echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:808: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:816: 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 814 "configure"
+#line 822 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
@@ -828,7 +836,7 @@
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat > conftest.$ac_ext <<EOF
-#line 832 "configure"
+#line 840 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
@@ -879,7 +887,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:883: checking for a BSD compatible install" >&5
+echo "configure:891: 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
@@ -931,9 +939,9 @@
 
 ###    checks for UNIX variants that set C preprocessor variables
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:935: checking for AIX" >&5
+echo "configure:943: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 937 "configure"
+#line 945 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -955,7 +963,7 @@
 
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:959: checking for POSIXized ISC" >&5
+echo "configure:967: 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
@@ -977,17 +985,17 @@
 
 ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-echo "configure:981: checking for minix/config.h" >&5
+echo "configure:989: 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 986 "configure"
+#line 994 "configure"
 #include "confdefs.h"
 #include <minix/config.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:991: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:999: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1029,12 +1037,12 @@
 
 ###    checks for typedefs
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1033: checking for ANSI C header files" >&5
+echo "configure:1041: 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 1038 "configure"
+#line 1046 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1042,7 +1050,7 @@
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1046: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1054: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1059,7 +1067,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 1063 "configure"
+#line 1071 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1077,7 +1085,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 1081 "configure"
+#line 1089 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1098,7 +1106,7 @@
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1102 "configure"
+#line 1110 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1109,7 +1117,7 @@
 exit (0); }
 
 EOF
-if { (eval echo configure:1113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1133,12 +1141,12 @@
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1137: checking for size_t" >&5
+echo "configure:1145: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1142 "configure"
+#line 1150 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1166,12 +1174,12 @@
 fi
 
 echo $ac_n "checking for time_t""... $ac_c" 1>&6
-echo "configure:1170: checking for time_t" >&5
+echo "configure:1178: 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 1175 "configure"
+#line 1183 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1207,12 +1215,12 @@
        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_func" >&5
+echo "configure:1219: 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 1216 "configure"
+#line 1224 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1235,7 +1243,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -1263,7 +1271,7 @@
 if test ".$ac_cv_func_memmove" != .yes ; then
        if test $ac_cv_func_bcopy = yes ; then
                echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6
-echo "configure:1267: checking if bcopy does overlapping moves" >&5
+echo "configure:1275: 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
@@ -1272,7 +1280,7 @@
   cf_cv_good_bcopy=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 1276 "configure"
+#line 1284 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1285,7 +1293,7 @@
 }
                
 EOF
-if { (eval echo configure:1289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   cf_cv_good_bcopy=yes
 else
@@ -1319,7 +1327,7 @@
 
 
 echo $ac_n "checking for workable tgetent function""... $ac_c" 1>&6
-echo "configure:1323: checking for workable tgetent function" >&5
+echo "configure:1331: checking for workable tgetent function" >&5
 if eval "test \"`echo '$''{'cf_cv_func_tgetent'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1335,7 +1343,7 @@
         cf_cv_func_tgetent=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 1339 "configure"
+#line 1347 "configure"
 #include "confdefs.h"
 
 /* terminfo implementations ignore the buffer argument, making it useless for
@@ -1348,7 +1356,7 @@
        tgetent(buffer, "vt100");
        exit(buffer[0] == 0); }
 EOF
-if { (eval echo configure:1352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   echo "yes, there is a termcap/tgetent present" 1>&5
         cf_cv_func_tgetent=yes
@@ -1369,14 +1377,14 @@
        for cf_termlib in $cf_TERMLIB
        do
                cat > conftest.$ac_ext <<EOF
-#line 1373 "configure"
+#line 1381 "configure"
 #include "confdefs.h"
 
 int main() {
 tgetent(0, 0)
 ; return 0; }
 EOF
-if { (eval echo configure:1380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "there is a terminfo/tgetent present" 1>&5
                         cf_cv_func_tgetent=$cf_termlib
@@ -1402,17 +1410,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1406: checking for $ac_hdr" >&5
+echo "configure:1414: 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 1411 "configure"
+#line 1419 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1416: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1424: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1451,12 +1459,12 @@
 
 ###    checks for compiler characteristics
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1455: checking for working const" >&5
+echo "configure:1463: 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 1460 "configure"
+#line 1468 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1505,7 +1513,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1509: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -1526,7 +1534,7 @@
 fi
 
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:1530: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:1538: 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
@@ -1543,7 +1551,7 @@
 do
        CFLAGS="$cf_save_CFLAGS $cf_arg"
        cat > conftest.$ac_ext <<EOF
-#line 1547 "configure"
+#line 1555 "configure"
 #include "confdefs.h"
 
 #ifndef CC_HAS_PROTOS
@@ -1558,7 +1566,7 @@
 struct s2 {int (*f) (double a);};
 ; return 0; }
 EOF
-if { (eval echo configure:1562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ansi_cc="$cf_arg"; break
 else
@@ -1585,7 +1593,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:1589: checking for X" >&5
+echo "configure:1597: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -1647,12 +1655,12 @@
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 1651 "configure"
+#line 1659 "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:1656: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1664: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1721,14 +1729,14 @@
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1725 "configure"
+#line 1733 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:1732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   LIBS="$ac_save_LIBS"
 # We can link X programs with no special library path.
@@ -1834,17 +1842,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:1838: checking whether -R must be followed by a space" >&5
+echo "configure:1846: 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 1841 "configure"
+#line 1849 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:1848: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -1860,14 +1868,14 @@
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 1864 "configure"
+#line 1872 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:1871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -1899,7 +1907,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:1903: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:1911: 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
@@ -1907,7 +1915,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1911 "configure"
+#line 1919 "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
@@ -1918,7 +1926,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:1922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -1940,7 +1948,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:1944: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:1952: 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
@@ -1948,7 +1956,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet_stub  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1952 "configure"
+#line 1960 "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
@@ -1959,7 +1967,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:1963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -1988,12 +1996,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:1992: checking for gethostbyname" >&5
+echo "configure:2000: 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 1997 "configure"
+#line 2005 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -2016,7 +2024,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_gethostbyname=yes"
 else
@@ -2037,7 +2045,7 @@
 
     if test $ac_cv_func_gethostbyname = no; then
       echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:2041: checking for gethostbyname in -lnsl" >&5
+echo "configure:2049: 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
@@ -2045,7 +2053,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2049 "configure"
+#line 2057 "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
@@ -2056,7 +2064,7 @@
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:2060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2086,12 +2094,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:2090: checking for connect" >&5
+echo "configure:2098: 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 2095 "configure"
+#line 2103 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -2114,7 +2122,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_connect=yes"
 else
@@ -2135,7 +2143,7 @@
 
     if test $ac_cv_func_connect = no; then
       echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:2139: checking for connect in -lsocket" >&5
+echo "configure:2147: 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
@@ -2143,7 +2151,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2147 "configure"
+#line 2155 "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
@@ -2154,7 +2162,7 @@
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:2158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2178,12 +2186,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:2182: checking for remove" >&5
+echo "configure:2190: 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 2187 "configure"
+#line 2195 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -2206,7 +2214,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_remove=yes"
 else
@@ -2227,7 +2235,7 @@
 
     if test $ac_cv_func_remove = no; then
       echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:2231: checking for remove in -lposix" >&5
+echo "configure:2239: 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
@@ -2235,7 +2243,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2239 "configure"
+#line 2247 "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
@@ -2246,7 +2254,7 @@
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:2250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2270,12 +2278,12 @@
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:2274: checking for shmat" >&5
+echo "configure:2282: 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 2279 "configure"
+#line 2287 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -2298,7 +2306,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_shmat=yes"
 else
@@ -2319,7 +2327,7 @@
 
     if test $ac_cv_func_shmat = no; then
       echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:2323: checking for shmat in -lipc" >&5
+echo "configure:2331: 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
@@ -2327,7 +2335,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lipc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2331 "configure"
+#line 2339 "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
@@ -2338,7 +2346,7 @@
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:2342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2371,7 +2379,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:2375: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:2383: 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
@@ -2379,7 +2387,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lICE  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2383 "configure"
+#line 2391 "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
@@ -2390,7 +2398,7 @@
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:2394: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2419,22 +2427,23 @@
 CFLAGS="$CFLAGS $X_CFLAGS"
 
 for ac_hdr in \
+       unistd.h \
        X11/Xpoll.h \
        
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2428: checking for $ac_hdr" >&5
+echo "configure:2437: 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 2433 "configure"
+#line 2442 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2447: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2463,7 +2472,7 @@
 
 
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:2467: checking for XOpenDisplay in -lX11" >&5
+echo "configure:2476: 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
@@ -2471,7 +2480,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2475 "configure"
+#line 2484 "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
@@ -2482,7 +2491,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:2486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2503,7 +2512,7 @@
 fi
 
 echo $ac_n "checking for XtAppInitialize in -lXt""... $ac_c" 1>&6
-echo "configure:2507: checking for XtAppInitialize in -lXt" >&5
+echo "configure:2516: 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
@@ -2511,7 +2520,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2515 "configure"
+#line 2524 "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
@@ -2522,7 +2531,7 @@
 XtAppInitialize()
 ; return 0; }
 EOF
-if { (eval echo configure:2526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2554,17 +2563,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2558: checking for $ac_hdr" >&5
+echo "configure:2567: 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 2563 "configure"
+#line 2572 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2568: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2577: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2590,27 +2599,27 @@
 fi
 done
 
-echo $ac_n "checking for XmuClientWindow in -lXmu""... $ac_c" 1>&6
-echo "configure:2595: checking for XmuClientWindow in -lXmu" >&5
-ac_lib_var=`echo Xmu'_'XmuClientWindow | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for XextCreateExtension in -lXext""... $ac_c" 1>&6
+echo "configure:2604: 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
 else
   ac_save_LIBS="$LIBS"
-LIBS="-lXmu  $LIBS"
+LIBS="-lXext  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2603 "configure"
+#line 2612 "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
     builtin and then its argument prototype would still apply.  */
-char XmuClientWindow();
+char XextCreateExtension();
 
 int main() {
-XmuClientWindow()
+XextCreateExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:2614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2625,39 +2634,39 @@
 fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo Xmu | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    ac_tr_lib=HAVE_LIB`echo Xext | sed -e 's/[^a-zA-Z0-9_]/_/g' \
     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
   cat >> confdefs.h <<EOF
 #define $ac_tr_lib 1
 EOF
 
-  LIBS="-lXmu $LIBS"
+  LIBS="-lXext $LIBS"
 
 else
   echo "$ac_t""no" 1>&6
 fi
 
-echo $ac_n "checking for XextCreateExtension in -lXext""... $ac_c" 1>&6
-echo "configure:2642: checking for XextCreateExtension in -lXext" >&5
-ac_lib_var=`echo Xext'_'XextCreateExtension | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for XmuClientWindow in -lXmu""... $ac_c" 1>&6
+echo "configure:2651: checking for XmuClientWindow in -lXmu" >&5
+ac_lib_var=`echo Xmu'_'XmuClientWindow | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="-lXext  $LIBS"
+LIBS="-lXmu  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2650 "configure"
+#line 2659 "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
     builtin and then its argument prototype would still apply.  */
-char XextCreateExtension();
+char XmuClientWindow();
 
 int main() {
-XextCreateExtension()
+XmuClientWindow()
 ; return 0; }
 EOF
-if { (eval echo configure:2661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2672,13 +2681,20 @@
 fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  LIBS="-lXext $LIBS"
+    ac_tr_lib=HAVE_LIB`echo Xmu | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lXmu $LIBS"
+
 else
   echo "$ac_t""no" 1>&6
 fi
 
 echo $ac_n "checking for XawSimpleMenuAddGlobalActions in -lXaw""... $ac_c" 1>&6
-echo "configure:2682: checking for XawSimpleMenuAddGlobalActions in -lXaw" >&5
+echo "configure:2698: checking for XawSimpleMenuAddGlobalActions in -lXaw" >&5
 ac_lib_var=`echo Xaw'_'XawSimpleMenuAddGlobalActions | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2686,7 +2702,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXaw $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2690 "configure"
+#line 2706 "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
@@ -2697,7 +2713,7 @@
 XawSimpleMenuAddGlobalActions()
 ; return 0; }
 EOF
-if { (eval echo configure:2701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2717: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2712,7 +2728,14 @@
 fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo Xaw | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
   LIBS="-lXaw $LIBS"
+
 else
   echo "$ac_t""no" 1>&6
 { echo "configure: error: Unable to successfully link Athena library (-lXaw)" 1>&2; exit 1; }
@@ -2724,7 +2747,7 @@
 LIBS="$LIBS $X_EXTRA_LIBS"
 
 echo $ac_n "checking if we should use imake to help""... $ac_c" 1>&6
-echo "configure:2728: checking if we should use imake to help" >&5
+echo "configure:2751: 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
   enableval="$enable_imake"
@@ -2749,7 +2772,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:2753: checking for $ac_word" >&5
+echo "configure:2776: 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
@@ -2827,7 +2850,7 @@
 # macros do not work well enough to actually use the Makefile for a build, but
 # the definitions are usable (probably).
 echo $ac_n "checking for compiler options known to imake""... $ac_c" 1>&6
-echo "configure:2831: checking for compiler options known to imake" >&5
+echo "configure:2854: checking for compiler options known to imake" >&5
 if eval "test \"`echo '$''{'cf_cv_imake_cflags'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2877,7 +2900,7 @@
 
 
 echo $ac_n "checking for default terminal-id""... $ac_c" 1>&6
-echo "configure:2881: checking for default terminal-id" >&5
+echo "configure:2904: 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
   withval="$with_terminal_id"
@@ -2897,8 +2920,33 @@
 
 
 ###    checks for optional features
+echo $ac_n "checking if you want active-icons""... $ac_c" 1>&6
+echo "configure:2925: 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
+  enableval="$enable_active_icon"
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
+    enable_active_icon=no 
+  else
+    enable_active_icon=yes
+  fi
+else
+  enableval=yes 
+  enable_active_icon=yes
+  
+fi
+
+echo "$ac_t""$enable_active_icon" 1>&6
+if test $enable_active_icon = no ; then
+       cat >> confdefs.h <<\EOF
+#define NO_ACTIVE_ICON 1
+EOF
+
+fi
+
 echo $ac_n "checking if you want ANSI color""... $ac_c" 1>&6
-echo "configure:2902: checking if you want ANSI color" >&5
+echo "configure:2950: 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
   enableval="$enable_ansi_color"
@@ -2921,7 +2969,7 @@
 
 
 echo $ac_n "checking if you want 16 colors like aixterm""... $ac_c" 1>&6
-echo "configure:2925: checking if you want 16 colors like aixterm" >&5
+echo "configure:2973: 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
   enableval="$enable_16_color"
@@ -2944,7 +2992,7 @@
 
 
 echo $ac_n "checking for default color-mode""... $ac_c" 1>&6
-echo "configure:2948: checking for default color-mode" >&5
+echo "configure:2996: checking for default color-mode" >&5
 # Check whether --enable-color-mode or --disable-color-mode was given.
 if test "${enable_color_mode+set}" = set; then
   enableval="$enable_color_mode"
@@ -2967,7 +3015,7 @@
 
 
 echo $ac_n "checking for doublesize characters""... $ac_c" 1>&6
-echo "configure:2971: checking for doublesize characters" >&5
+echo "configure:3019: checking for doublesize characters" >&5
 # Check whether --enable-doublechars or --disable-doublechars was given.
 if test "${enable_doublechars+set}" = set; then
   enableval="$enable_doublechars"
@@ -2989,8 +3037,58 @@
 EOF
 
 
+echo $ac_n "checking if you want support for input-method""... $ac_c" 1>&6
+echo "configure:3042: 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
+  enableval="$enable_input_method"
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
+    enable_ximp=no 
+  else
+    enable_ximp=yes
+  fi
+else
+  enableval=yes 
+  enable_ximp=yes
+  
+fi
+
+echo "$ac_t""$enable_ximp" 1>&6
+if test $enable_ximp = no ; then
+       cat >> confdefs.h <<\EOF
+#define OPT_INPUT_METHOD 0
+EOF
+
+fi
+
+echo $ac_n "checking if you want support for internationalization""... $ac_c" 1>&6
+echo "configure:3067: checking if you want support for internationalization" >&5
+# Check whether --enable-i18n or --disable-i18n was given.
+if test "${enable_i18n+set}" = set; then
+  enableval="$enable_i18n"
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
+    enable_i18n=no 
+  else
+    enable_i18n=yes
+  fi
+else
+  enableval=yes 
+  enable_i18n=yes
+  
+fi
+
+echo "$ac_t""$enable_i18n" 1>&6
+if test $enable_i18n = no ; then
+       cat >> confdefs.h <<\EOF
+#define OPT_I18N_SUPPORT 0
+EOF
+
+fi
+
 echo $ac_n "checking if you want support for logging""... $ac_c" 1>&6
-echo "configure:2994: checking if you want support for logging" >&5
+echo "configure:3092: checking if you want support for logging" >&5
 # Check whether --enable-logging or --disable-logging was given.
 if test "${enable_logging+set}" = set; then
   enableval="$enable_logging"
@@ -3015,7 +3113,7 @@
 fi
 
 echo $ac_n "checking if you want debugging traces""... $ac_c" 1>&6
-echo "configure:3019: checking if you want debugging traces" >&5
+echo "configure:3117: checking if you want debugging traces" >&5
 # Check whether --enable-trace or --disable-trace was given.
 if test "${enable_trace+set}" = set; then
   enableval="$enable_trace"
@@ -3042,7 +3140,7 @@
 fi
 
 echo $ac_n "checking if you want VT52 emulation""... $ac_c" 1>&6
-echo "configure:3046: checking if you want VT52 emulation" >&5
+echo "configure:3144: checking if you want VT52 emulation" >&5
 # Check whether --enable-vt52 or --disable-vt52 was given.
 if test "${enable_vt52+set}" = set; then
   enableval="$enable_vt52"
@@ -3064,9 +3162,35 @@
 EOF
 
 
-# this is only for testing purposes
+# development/testing aids
+
+echo $ac_n "checking if you want to see long compiling messages""... $ac_c" 1>&6
+echo "configure:3169: 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
+  enableval="$enable_echo"
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
+    SHOW_CC='  @echo compiling $@'
+    ECHO_CC='@' 
+  else
+    SHOW_CC='# compiling'
+    ECHO_CC=''
+  fi
+else
+  enableval=yes 
+  SHOW_CC='# compiling'
+    ECHO_CC=''
+  
+fi
+
+echo "$ac_t""$enableval" 1>&6
+
+
+
+
 echo $ac_n "checking if you want magic cookie emulation""... $ac_c" 1>&6
-echo "configure:3070: checking if you want magic cookie emulation" >&5
+echo "configure:3194: 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
   enableval="$enable_xmc_glitch"
@@ -3092,9 +3216,10 @@
        EXTRAOBJS="$EXTRAOBJS testxmc.o"
 fi
 
+
 if test -n "$GCC" ; then
 echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6
-echo "configure:3098: checking if you want to turn on gcc warnings" >&5
+echo "configure:3223: 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
   enableval="$enable_warnings"
@@ -3133,9 +3258,9 @@
 if test -n "$GCC"
 then
        echo "checking for gcc __attribute__ directives" 1>&6
-echo "configure:3137: checking for gcc __attribute__ directives" >&5
+echo "configure:3262: checking for gcc __attribute__ directives" >&5
        cat > conftest.$ac_ext <<EOF
-#line 3139 "configure"
+#line 3264 "configure"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -3173,7 +3298,7 @@
 EOF
                        ;;
                esac
-               if { (eval echo configure:3177: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:3302: \"$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
@@ -3187,11 +3312,11 @@
 
 
                cat > conftest.$ac_ext <<EOF
-#line 3191 "configure"
+#line 3316 "configure"
 int main(int argc, char *argv[]) { return argv[argc-1] == 0; }
 EOF
                echo "checking for gcc warning options" 1>&6
-echo "configure:3195: checking for gcc warning options" >&5
+echo "configure:3320: checking for gcc warning options" >&5
        cf_save_CFLAGS="$CFLAGS"
        cf_warn_CFLAGS="-W -Wall"
        for cf_opt in \
@@ -3207,7 +3332,7 @@
                Wstrict-prototypes
        do
                CFLAGS="$cf_save_CFLAGS $cf_warn_CFLAGS -$cf_opt"
-               if { (eval echo configure:3211: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:3336: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
                        test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6
                        cf_warn_CFLAGS="$cf_warn_CFLAGS -$cf_opt"
                        test "$cf_opt" = Wcast-qual && cf_warn_CFLAGS="$cf_warn_CFLAGS -DXTSTRINGDEFINES"
@@ -3366,6 +3491,8 @@
 s%@X_EXTRA_LIBS@%$X_EXTRA_LIBS%g
 s%@IMAKE@%$IMAKE%g
 s%@IMAKE_CFLAGS@%$IMAKE_CFLAGS%g
+s%@SHOW_CC@%$SHOW_CC%g
+s%@ECHO_CC@%$ECHO_CC%g
 s%@EXTRASRCS@%$EXTRASRCS%g
 s%@EXTRAOBJS@%$EXTRAOBJS%g
 
Index: configure.in
--- XFree86-3.9m/xc/programs/xterm/configure.in Tue Jul 29 15:13:30 1997
+++ XFree86-current/xc/programs/xterm/configure.in      Thu Aug 21 19:14:50 1997
@@ -73,6 +73,7 @@
 CFLAGS="$CFLAGS $X_CFLAGS"
 
 AC_CHECK_HEADERS( \
+       unistd.h \
        X11/Xpoll.h \
        )
 
@@ -93,7 +94,7 @@
 
 AC_MSG_CHECKING(for default terminal-id)
 AC_ARG_WITH(terminal-id,
-       [  --with-terminal-id[=V]  set default decTerminalId (default: vt100)],
+       [  --with-terminal-id[=V]  set default decTerminalID (default: vt100)],
        [default_termid=$withval],
        [default_termid=vt100])
 AC_MSG_RESULT($default_termid)
@@ -104,6 +105,16 @@
 AC_DEFINE_UNQUOTED(DFT_DECID,$default_termid)
 
 ###    checks for optional features
+AC_MSG_CHECKING(if you want active-icons)
+CF_ARG_DISABLE(active-icon,
+       [  --disable-active-icon   disable X11R6.3 active-icon feature],
+       [enable_active_icon=no],
+       [enable_active_icon=yes])
+AC_MSG_RESULT($enable_active_icon)
+if test $enable_active_icon = no ; then
+       AC_DEFINE(NO_ACTIVE_ICON)
+fi
+
 AC_MSG_CHECKING(if you want ANSI color)
 CF_ARG_DISABLE(ansi-color,
        [  --disable-ansi-color    disable ANSI color],
@@ -136,9 +147,29 @@
 AC_MSG_RESULT($enable_doublechars)
 test $enable_doublechars = no && AC_DEFINE(OPT_DEC_CHRSET,0)
 
+AC_MSG_CHECKING(if you want support for input-method)
+CF_ARG_DISABLE(input-method,
+       [  --disable-input-method  disable input-method],
+       [enable_ximp=no],
+       [enable_ximp=yes])
+AC_MSG_RESULT($enable_ximp)
+if test $enable_ximp = no ; then
+       AC_DEFINE(OPT_INPUT_METHOD,0)
+fi
+
+AC_MSG_CHECKING(if you want support for internationalization)
+CF_ARG_DISABLE(i18n,
+       [  --disable-i18n          disable internationalization],
+       [enable_i18n=no],
+       [enable_i18n=yes])
+AC_MSG_RESULT($enable_i18n)
+if test $enable_i18n = no ; then
+       AC_DEFINE(OPT_I18N_SUPPORT,0)
+fi
+
 AC_MSG_CHECKING(if you want support for logging)
 CF_ARG_ENABLE(logging,
-       [  --enable-logging        set to enable logging],
+       [  --enable-logging        enable logging],
        [enable_logging=yes],
        [enable_logging=no])
 AC_MSG_RESULT($enable_logging)
@@ -166,7 +197,9 @@
 AC_MSG_RESULT($enable_vt52)
 test $enable_vt52 = no && AC_DEFINE(OPT_VT52_MODE,0)
 
-# this is only for testing purposes
+# development/testing aids
+CF_DISABLE_ECHO
+
 AC_MSG_CHECKING(if you want magic cookie emulation)
 CF_ARG_ENABLE(xmc-glitch,
        [  --enable-xmc-glitch     test: enable xmc magic-cookie emulation],
@@ -178,6 +211,7 @@
        EXTRASRCS="$EXTRASRCS testxmc.c"
        EXTRAOBJS="$EXTRAOBJS testxmc.o"
 fi
+
 
 if test -n "$GCC" ; then
 AC_MSG_CHECKING(if you want to turn on gcc warnings)
Index: input.c
--- XFree86-3.9m/xc/programs/xterm/input.c      Tue Jun  3 16:05:50 1997
+++ XFree86-current/xc/programs/xterm/input.c   Thu Aug 21 21:31:24 1997
@@ -89,7 +89,11 @@
        KeySym  keysym = 0;
        ANSI    reply;
 
-#if XtSpecificationRelease >= 6
+       /* Ignore characters typed at the keyboard */
+       if (keyboard->flags & MODE_KAM)
+               return;
+
+#if OPT_I18N_SUPPORT
        if (screen->xic) {
            Status status_return;
            nbytes = XmbLookupString (screen->xic, event, strbuf, STRBUFSIZE,
@@ -109,6 +113,14 @@
        reply.a_nparam = 0;
        reply.a_inters = 0;
 
+       /* VT300 & up: backarrow toggle */
+       if ((nbytes == 1)
+        && !(term->keyboard.flags & MODE_DECBKM)
+        && (keysym == XK_BackSpace)) {
+               keysym = XK_Delete;
+               strbuf[0] = '\177';
+       }
+
 #ifdef XK_KP_Home
        if (keysym >= XK_KP_Home && keysym <= XK_KP_Begin) {
            keysym += XK_Home - XK_KP_Home;
@@ -199,7 +211,7 @@
                 && keysym == XK_KP_Add)
                        keysym = XK_KP_Separator;
 #endif
-               if (keyboard->flags & MODE_DECKPAM)     {
+               if ((keyboard->flags & MODE_DECKPAM) != 0) {
                        reply.a_type   = SS3;
                        reply.a_final = kypd_apl[keysym-XK_KP_Space];
                        VT52_KEYPAD
Index: main.c
--- XFree86-3.9m/xc/programs/xterm/main.c       Tue Jul 29 15:13:30 1997
+++ XFree86-current/xc/programs/xterm/main.c    Fri Aug 22 05:56:25 1997
@@ -985,11 +985,11 @@
 /* ARGSUSED */
 static Boolean
 ConvertConsoleSelection(w, selection, target, type, value, length, format)
-    Widget w;
-    Atom *selection, *target, *type;
-    XtPointer *value;
-    unsigned long *length;
-    int *format;
+    Widget w GCC_UNUSED;
+    Atom *selection GCC_UNUSED, *target GCC_UNUSED, *type GCC_UNUSED;
+    XtPointer *value GCC_UNUSED;
+    unsigned long *length GCC_UNUSED;
+    int *format GCC_UNUSED;
 {
     /* we don't save console output, so can't offer it */
     return False;
@@ -1015,9 +1015,9 @@
 static void
 DeleteWindow(w, event, params, num_params)
     Widget w;
-    XEvent *event;
-    String *params;
-    Cardinal *num_params;
+    XEvent *event GCC_UNUSED;
+    String *params GCC_UNUSED;
+    Cardinal *num_params GCC_UNUSED;
 {
   if (w == toplevel)
     if (term->screen.Tshow)
@@ -1034,10 +1034,10 @@
 /* ARGSUSED */
 static void
 KeyboardMapping(w, event, params, num_params)
-    Widget w;
+    Widget w GCC_UNUSED;
     XEvent *event;
-    String *params;
-    Cardinal *num_params;
+    String *params GCC_UNUSED;
+    Cardinal *num_params GCC_UNUSED;
 {
     switch (event->type) {
        case MappingNotify:
@@ -1064,7 +1064,10 @@
        register TScreen *screen;
        int mode;
 
+       /* This dumps core on HP-UX 9.05 with X11R5 */
+#if OPT_I18N_SUPPORT
        XtSetLanguageProc (NULL, NULL, NULL);
+#endif
 
        ProgramName = argv[0];
 
@@ -1662,6 +1665,8 @@
 #endif /* DEBUG */
        XSetErrorHandler(xerror);
        XSetIOErrorHandler(xioerror);
+
+       (void) setuid (screen->uid); /* we're done with privileges... */
        for( ; ; ) {
                if(screen->TekEmu) {
                        TekRun();
@@ -1916,7 +1921,7 @@
 
 /* ARGSUSED */
 static SIGNAL_T hungtty(i)
-       int i;
+       int i GCC_UNUSED;
 {
        longjmp(env, 1);
        SIGNAL_RETURN;
@@ -3917,7 +3922,7 @@
 
 /* ARGSUSED */
 static SIGNAL_T reapchild (n)
-    int n;
+    int n GCC_UNUSED;
 {
     int pid;
 
Index: menu.c
--- XFree86-3.9m/xc/programs/xterm/menu.c       Tue Jun  3 16:05:50 1997
+++ XFree86-current/xc/programs/xterm/menu.c    Fri Aug 22 17:13:19 1997
@@ -63,6 +63,7 @@
 static void do_appkeypad       PROTO_XT_CALLBACK_ARGS;
 static void do_autolinefeed    PROTO_XT_CALLBACK_ARGS;
 static void do_autowrap        PROTO_XT_CALLBACK_ARGS;
+static void do_backarrow       PROTO_XT_CALLBACK_ARGS;
 static void do_clearsavedlines PROTO_XT_CALLBACK_ARGS;
 static void do_continue        PROTO_XT_CALLBACK_ARGS;
 static void do_cursesemul      PROTO_XT_CALLBACK_ARGS;
@@ -114,6 +115,7 @@
     { "redraw",                do_redraw, NULL },              /*  3 */
     { "line1",         NULL, NULL },                   /*  4 */
     { "8-bit control", do_8bit_control, NULL },        /*  5 */
+    { "backarrow key", do_backarrow, NULL },           /*  5 */
     { "sun function-keys",do_sun_fkeys, NULL },                /*  6 */
     { "line2",         NULL, NULL },                   /*  7 */
     { "suspend",       do_suspend, NULL },             /*  8 */
@@ -226,8 +228,8 @@
 
 /* ARGSUSED */
 static Bool domenu (w, event, params, param_count)
-    Widget w;
-    XEvent *event;              /* unused */
+    Widget w GCC_UNUSED;
+    XEvent *event GCC_UNUSED;
     String *params;             /* mainMenu, vtMenu, or tekMenu */
     Cardinal *param_count;      /* 0 or 1 */
 {
@@ -250,6 +252,12 @@
            update_logging();
 #endif
            update_8bit_control();
+           update_decbkm();
+           if (screen->terminal_id < 200) {
+               set_sensitivity (screen->mainMenu,
+                                mainMenuEntries[mainMenu_8bit_ctrl].widget,
+                                FALSE);
+           }
            update_sun_fkeys();
 #if !defined(SIGTSTP) || defined(AMOEBA)
            set_sensitivity (screen->mainMenu,
@@ -285,7 +293,7 @@
            update_marginbell();
 #ifndef NO_ACTIVE_ICON
            if (!screen->fnt_icon || !screen->iconVwin.window) {
-               set_sensitivity (screen->vtmenu,
+               set_sensitivity (screen->vtMenu,
                                 vtMenuEntries[vtMenu_activeicon].widget,
                                 FALSE);
            }
@@ -397,7 +405,7 @@
 
 /* ARGSUSED */
 static void handle_send_signal (gw, sig)
-    Widget gw;
+    Widget gw GCC_UNUSED;
     int sig;
 {
     register TScreen *screen = &term->screen;
@@ -412,14 +420,14 @@
 
 /* ARGSUSED */
 void DoSecureKeyboard (tp)
-    Time tp;
+    Time tp GCC_UNUSED;
 {
     do_securekbd (term->screen.mainMenu, (XtPointer)0, (XtPointer)0);
 }
 
 static void do_securekbd (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
     Time now = CurrentTime;            /* XXX - wrong */
@@ -443,8 +451,8 @@
 
 
 static void do_allowsends (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -453,8 +461,8 @@
 }
 
 static void do_visualbell (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -479,24 +487,40 @@
 #endif
 
 static void do_redraw (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     Redraw ();
 }
 
 
+void show_8bit_control (value)
+    Bool value;
+{
+    if (term->screen.control_eight_bits != value) {
+       term->screen.control_eight_bits = value;
+       update_8bit_control();
+    }
+}
+
 static void do_8bit_control (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
-    term->screen.control_eight_bits = ! term->screen.control_eight_bits;
-    update_8bit_control();
+    show_8bit_control(! term->screen.control_eight_bits);
+}
+
+static void do_backarrow (gw, closure, data)
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
+{
+    term->keyboard.flags ^= MODE_DECBKM;
+    update_decbkm();
 }
 
 static void do_sun_fkeys (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     sunFunctionKeys = ! sunFunctionKeys;
     update_sun_fkeys();
@@ -512,7 +536,7 @@
 /* ARGSUSED */
 static void do_suspend (gw, closure, data)
     Widget gw;
-    XtPointer closure, data;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
 #if defined(SIGTSTP) && !defined(AMOEBA)
     handle_send_signal (gw, SIGTSTP);
@@ -522,7 +546,7 @@
 /* ARGSUSED */
 static void do_continue (gw, closure, data)
     Widget gw;
-    XtPointer closure, data;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
 #if defined(SIGCONT) && !defined(AMOEBA)
     handle_send_signal (gw, SIGCONT);
@@ -532,7 +556,7 @@
 /* ARGSUSED */
 static void do_interrupt (gw, closure, data)
     Widget gw;
-    XtPointer closure, data;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     handle_send_signal (gw, SIGINT);
 }
@@ -540,7 +564,7 @@
 /* ARGSUSED */
 void do_hangup (gw, closure, data)
     Widget gw;
-    XtPointer closure, data;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     handle_send_signal (gw, SIGHUP);
 }
@@ -548,7 +572,7 @@
 /* ARGSUSED */
 static void do_terminate (gw, closure, data)
     Widget gw;
-    XtPointer closure, data;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     handle_send_signal (gw, SIGTERM);
 }
@@ -556,14 +580,14 @@
 /* ARGSUSED */
 static void do_kill (gw, closure, data)
     Widget gw;
-    XtPointer closure, data;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     handle_send_signal (gw, SIGKILL);
 }
 
 static void do_quit (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     Cleanup (0);
 }
@@ -575,8 +599,8 @@
  */
 
 static void do_scrollbar (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -590,8 +614,8 @@
 
 
 static void do_jumpscroll (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -607,8 +631,8 @@
 
 
 static void do_reversevideo (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     term->flags ^= REVERSE_VIDEO;
     ReverseVideo (term);
@@ -617,8 +641,8 @@
 
 
 static void do_autowrap (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     term->flags ^= WRAPAROUND;
     update_autowrap();
@@ -626,8 +650,8 @@
 
 
 static void do_reversewrap (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     term->flags ^= REVERSEWRAP;
     update_reversewrap();
@@ -635,8 +659,8 @@
 
 
 static void do_autolinefeed (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     term->flags ^= LINEFEED;
     update_autolinefeed();
@@ -644,8 +668,8 @@
 
 
 static void do_appcursor (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     term->keyboard.flags ^= MODE_DECCKM;
     update_appcursor();
@@ -653,8 +677,8 @@
 
 
 static void do_appkeypad (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     term->keyboard.flags ^= MODE_DECKPAM;
     update_appkeypad();
@@ -662,8 +686,8 @@
 
 
 static void do_scrollkey (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -673,8 +697,8 @@
 
 
 static void do_scrollttyoutput (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -684,8 +708,8 @@
 
 
 static void do_allow132 (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -695,8 +719,8 @@
 
 
 static void do_cursesemul (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -706,8 +730,8 @@
 
 
 static void do_marginbell (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -717,7 +741,7 @@
 
 
 static void handle_tekshow (gw, allowswitch)
-    Widget gw;
+    Widget gw GCC_UNUSED;
     Bool allowswitch;
 {
     register TScreen *screen = &term->screen;
@@ -734,7 +758,7 @@
 /* ARGSUSED */
 static void do_tekshow (gw, closure, data)
     Widget gw;
-    XtPointer closure, data;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     handle_tekshow (gw, True);
 }
@@ -742,15 +766,15 @@
 /* ARGSUSED */
 static void do_tekonoff (gw, closure, data)
     Widget gw;
-    XtPointer closure, data;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     handle_tekshow (gw, False);
 }
 
 /* ARGSUSED */
 static void do_altscreen (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     /* do nothing for now; eventually, will want to flip screen */
 }
@@ -758,8 +782,8 @@
 #ifndef NO_ACTIVE_ICON
 /* ARGSUSED */
 static void do_activeicon (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     TScreen *screen = &term->screen;
 
@@ -775,24 +799,24 @@
 #endif /* NO_ACTIVE_ICON */
 
 static void do_softreset (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     VTReset (FALSE);
 }
 
 
 static void do_hardreset (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     VTReset (TRUE);
 }
 
 
 static void do_clearsavedlines (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -803,8 +827,8 @@
 
 
 static void do_tekmode (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -813,8 +837,8 @@
 
 /* ARGSUSED */
 static void do_vthide (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     hide_vt_window();
 }
@@ -825,8 +849,8 @@
  */
 
 static void do_vtfont (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     char *entryname = (char *) closure;
     int i;
@@ -846,32 +870,32 @@
  */
 
 static void do_tektextlarge (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     TekSetFontSize (tekMenu_tektextlarge);
 }
 
 
 static void do_tektext2 (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     TekSetFontSize (tekMenu_tektext2);
 }
 
 
 static void do_tektext3 (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     TekSetFontSize (tekMenu_tektext3);
 }
 
 
 static void do_tektextsmall (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
 
     TekSetFontSize (tekMenu_tektextsmall);
@@ -879,31 +903,31 @@
 
 
 static void do_tekpage (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     TekSimulatePageButton (False);
 }
 
 
 static void do_tekreset (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     TekSimulatePageButton (True);
 }
 
 
 static void do_tekcopy (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     TekCopy ();
 }
 
 
 static void handle_vtshow (gw, allowswitch)
-    Widget gw;
+    Widget gw GCC_UNUSED;
     Bool allowswitch;
 {
     register TScreen *screen = &term->screen;
@@ -920,21 +944,21 @@
 
 static void do_vtshow (gw, closure, data)
     Widget gw;
-    XtPointer closure, data;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     handle_vtshow (gw, True);
 }
 
 static void do_vtonoff (gw, closure, data)
     Widget gw;
-    XtPointer closure, data;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     handle_vtshow (gw, False);
 }
 
 static void do_vtmode (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -944,8 +968,8 @@
 
 /* ARGSUSED */
 static void do_tekhide (gw, closure, data)
-    Widget gw;
-    XtPointer closure, data;
+    Widget gw GCC_UNUSED;
+    XtPointer closure GCC_UNUSED, data GCC_UNUSED;
 {
     hide_tek_window();
 }
@@ -1001,7 +1025,7 @@
 
 void HandleAllowSends(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1011,7 +1035,7 @@
 
 void HandleSetVisualBell(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1034,9 +1058,9 @@
 /* ARGSUSED */
 void HandleRedraw(w, event, params, param_count)
     Widget w;
-    XEvent *event;
-    String *params;
-    Cardinal *param_count;
+    XEvent *event GCC_UNUSED;
+    String *params GCC_UNUSED;
+    Cardinal *param_count GCC_UNUSED;
 {
     do_redraw(w, (XtPointer)0, (XtPointer)0);
 }
@@ -1044,7 +1068,7 @@
 /* ARGSUSED */
 void HandleSendSignal(w, event, params, param_count)
     Widget w;
-    XEvent *event;             /* unused */
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1087,16 +1111,16 @@
 /* ARGSUSED */
 void HandleQuit(w, event, params, param_count)
     Widget w;
-    XEvent *event;
-    String *params;
-    Cardinal *param_count;
+    XEvent *event GCC_UNUSED;
+    String *params GCC_UNUSED;
+    Cardinal *param_count GCC_UNUSED;
 {
     do_quit(w, (XtPointer)0, (XtPointer)0);
 }
 
 void Handle8BitControl(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1104,9 +1128,19 @@
                   params, *param_count, w, (XtPointer)0, (XtPointer)0);
 }
 
+void HandleBackarrow(w, event, params, param_count)
+    Widget w;
+    XEvent *event GCC_UNUSED;
+    String *params;
+    Cardinal *param_count;
+{
+    handle_toggle (do_backarrow, (int) term->keyboard.flags & MODE_DECBKM,
+                  params, *param_count, w, (XtPointer)0, (XtPointer)0);
+}
+
 void HandleSunFunctionKeys(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1116,7 +1150,7 @@
 
 void HandleScrollbar(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1126,7 +1160,7 @@
 
 void HandleJumpscroll(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1136,7 +1170,7 @@
 
 void HandleReverseVideo(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1146,7 +1180,7 @@
 
 void HandleAutoWrap(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1156,7 +1190,7 @@
 
 void HandleReverseWrap(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1166,7 +1200,7 @@
 
 void HandleAutoLineFeed(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1176,7 +1210,7 @@
 
 void HandleAppCursor(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1186,7 +1220,7 @@
 
 void HandleAppKeypad(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1196,7 +1230,7 @@
 
 void HandleScrollKey(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1206,7 +1240,7 @@
 
 void HandleScrollTtyOutput(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1216,7 +1250,7 @@
 
 void HandleAllow132(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1226,7 +1260,7 @@
 
 void HandleCursesEmul(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1236,7 +1270,7 @@
 
 void HandleMarginBell(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1246,7 +1280,7 @@
 
 void HandleAltScreen(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1258,9 +1292,9 @@
 /* ARGSUSED */
 void HandleSoftReset(w, event, params, param_count)
     Widget w;
-    XEvent *event;
-    String *params;
-    Cardinal *param_count;
+    XEvent *event GCC_UNUSED;
+    String *params GCC_UNUSED;
+    Cardinal *param_count GCC_UNUSED;
 {
     do_softreset(w, (XtPointer)0, (XtPointer)0);
 }
@@ -1268,9 +1302,9 @@
 /* ARGSUSED */
 void HandleHardReset(w, event, params, param_count)
     Widget w;
-    XEvent *event;
-    String *params;
-    Cardinal *param_count;
+    XEvent *event GCC_UNUSED;
+    String *params GCC_UNUSED;
+    Cardinal *param_count GCC_UNUSED;
 {
     do_hardreset(w, (XtPointer)0, (XtPointer)0);
 }
@@ -1278,16 +1312,16 @@
 /* ARGSUSED */
 void HandleClearSavedLines(w, event, params, param_count)
     Widget w;
-    XEvent *event;
-    String *params;
-    Cardinal *param_count;
+    XEvent *event GCC_UNUSED;
+    String *params GCC_UNUSED;
+    Cardinal *param_count GCC_UNUSED;
 {
     do_clearsavedlines(w, (XtPointer)0, (XtPointer)0);
 }
 
 void HandleSetTerminalType(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1309,7 +1343,7 @@
 
 void HandleVisibility(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1334,7 +1368,7 @@
 /* ARGSUSED */
 void HandleSetTekText(w, event, params, param_count)
     Widget w;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *param_count;
 {
@@ -1360,9 +1394,9 @@
 /* ARGSUSED */
 void HandleTekPage(w, event, params, param_count)
     Widget w;
-    XEvent *event;
-    String *params;
-    Cardinal *param_count;
+    XEvent *event GCC_UNUSED;
+    String *params GCC_UNUSED;
+    Cardinal *param_count GCC_UNUSED;
 {
     do_tekpage(w, (XtPointer)0, (XtPointer)0);
 }
@@ -1370,9 +1404,9 @@
 /* ARGSUSED */
 void HandleTekReset(w, event, params, param_count)
     Widget w;
-    XEvent *event;
-    String *params;
-    Cardinal *param_count;
+    XEvent *event GCC_UNUSED;
+    String *params GCC_UNUSED;
+    Cardinal *param_count GCC_UNUSED;
 {
     do_tekreset(w, (XtPointer)0, (XtPointer)0);
 }
@@ -1380,9 +1414,9 @@
 /* ARGSUSED */
 void HandleTekCopy(w, event, params, param_count)
     Widget w;
-    XEvent *event;
-    String *params;
-    Cardinal *param_count;
+    XEvent *event GCC_UNUSED;
+    String *params GCC_UNUSED;
+    Cardinal *param_count GCC_UNUSED;
 {
     do_tekcopy(w, (XtPointer)0, (XtPointer)0);
 }
Index: menu.h
--- XFree86-3.9m/xc/programs/xterm/menu.h       Wed Jan  8 18:18:35 1997
+++ XFree86-current/xc/programs/xterm/menu.h    Thu Aug 21 21:07:24 1997
@@ -53,6 +53,7 @@
 extern void HandleAppKeypad        PROTO_XT_ACTIONS_ARGS;
 extern void HandleAutoLineFeed     PROTO_XT_ACTIONS_ARGS;
 extern void HandleAutoWrap         PROTO_XT_ACTIONS_ARGS;
+extern void HandleBackarrow        PROTO_XT_ACTIONS_ARGS;
 extern void HandleClearSavedLines  PROTO_XT_ACTIONS_ARGS;
 extern void HandleCreateMenu       PROTO_XT_ACTIONS_ARGS;
 extern void HandleCursesEmul       PROTO_XT_ACTIONS_ARGS;
@@ -92,90 +93,100 @@
 /*
  * items in primary menu
  */
-#define mainMenu_securekbd  ( 0)
-#define mainMenu_allowsends ( 1)
+typedef enum {
+    mainMenu_securekbd,
+    mainMenu_allowsends,
 #ifdef ALLOWLOGGING
-#define mainMenu_logging    ( 2)
-#define mainMenu_fix1       ( 0)
-#else
-#define mainMenu_fix1       (-1)
+    mainMenu_logging,
 #endif
-#define mainMenu_redraw     ( 3 + mainMenu_fix1)
-#define mainMenu_line1      ( 4 + mainMenu_fix1)
-#define mainMenu_8bit_ctrl  ( 5 + mainMenu_fix1)
-#define mainMenu_sun_fkeys  ( 6 + mainMenu_fix1)
-#define mainMenu_line2      ( 7 + mainMenu_fix1)
-#define mainMenu_suspend    ( 8 + mainMenu_fix1)
-#define mainMenu_continue   ( 9 + mainMenu_fix1)
-#define mainMenu_interrupt  (10 + mainMenu_fix1)
-#define mainMenu_hangup     (11 + mainMenu_fix1)
-#define mainMenu_terminate  (12 + mainMenu_fix1)
-#define mainMenu_kill       (13 + mainMenu_fix1)
-#define mainMenu_line3      (14 + mainMenu_fix1)
-#define mainMenu_quit       (15 + mainMenu_fix1)
+    mainMenu_redraw,
+    mainMenu_line1,
+    mainMenu_8bit_ctrl,
+    mainMenu_backarrow,
+    mainMenu_sun_fkeys,
+    mainMenu_line2,
+    mainMenu_suspend,
+    mainMenu_continue,
+    mainMenu_interrupt,
+    mainMenu_hangup,
+    mainMenu_terminate,
+    mainMenu_kill,
+    mainMenu_line3,
+    mainMenu_quit,
+    mainMenu_LAST
+} mainMenuIndices;
 
 
 /*
  * items in vt100 mode menu
  */
-#define vtMenu_scrollbar 0
-#define vtMenu_jumpscroll 1
-#define vtMenu_reversevideo 2
-#define vtMenu_autowrap 3
-#define vtMenu_reversewrap 4
-#define vtMenu_autolinefeed 5
-#define vtMenu_appcursor 6
-#define vtMenu_appkeypad 7
-#define vtMenu_scrollkey 8
-#define vtMenu_scrollttyoutput 9
-#define vtMenu_allow132 10
-#define vtMenu_cursesemul 11
-#define vtMenu_visualbell 12
-#define vtMenu_marginbell 13
-#define vtMenu_altscreen 14
+typedef enum {
+    vtMenu_scrollbar,
+    vtMenu_jumpscroll,
+    vtMenu_reversevideo,
+    vtMenu_autowrap,
+    vtMenu_reversewrap,
+    vtMenu_autolinefeed,
+    vtMenu_appcursor,
+    vtMenu_appkeypad,
+    vtMenu_scrollkey,
+    vtMenu_scrollttyoutput,
+    vtMenu_allow132,
+    vtMenu_cursesemul,
+    vtMenu_visualbell,
+    vtMenu_marginbell,
+    vtMenu_altscreen,
 #ifndef NO_ACTIVE_ICON
-#define vtMenu_activeicon 15
+    vtMenu_activeicon,
 #endif /* NO_ACTIVE_ICON */
-#define vtMenu_line1 16
-#define vtMenu_softreset 17
-#define vtMenu_hardreset 18
-#define vtMenu_clearsavedlines 19
-#define vtMenu_line2 20
-#define vtMenu_tekshow 21
-#define vtMenu_tekmode 22
-#define vtMenu_vthide 23
+    vtMenu_line1,
+    vtMenu_softreset,
+    vtMenu_hardreset,
+    vtMenu_clearsavedlines,
+    vtMenu_line2,
+    vtMenu_tekshow,
+    vtMenu_tekmode,
+    vtMenu_vthide,
+    vtMenu_LAST
+} vtMenuIndices;
 
 /*
  * items in vt100 font menu
  */
-#define fontMenu_fontdefault 0
-#define fontMenu_font1 1
-#define fontMenu_font2 2
-#define fontMenu_font3 3
-#define fontMenu_font4 4
-#define fontMenu_font5 5
-#define fontMenu_font6 6
+typedef enum {
+    fontMenu_fontdefault,
+    fontMenu_font1,
+    fontMenu_font2,
+    fontMenu_font3,
+    fontMenu_font4,
+    fontMenu_font5,
+    fontMenu_font6,
 #define fontMenu_lastBuiltin fontMenu_font6
-#define fontMenu_fontescape 7
-#define fontMenu_fontsel 8
+    fontMenu_fontescape,
+    fontMenu_fontsel,
+    fontMenu_LAST
+} fontMenuIndices;
 /* number of non-line items should match NMENUFONTS in ptyx.h */
 
 
 /*
  * items in tek4014 mode menu
  */
-#define tekMenu_tektextlarge 0
-#define tekMenu_tektext2 1
-#define tekMenu_tektext3 2
-#define tekMenu_tektextsmall 3
-#define tekMenu_line1 4
-#define tekMenu_tekpage 5
-#define tekMenu_tekreset 6
-#define tekMenu_tekcopy 7
-#define tekMenu_line2 8
-#define tekMenu_vtshow 9
-#define tekMenu_vtmode 10
-#define tekMenu_tekhide 11
+typedef enum {
+    tekMenu_tektextlarge,
+    tekMenu_tektext2,
+    tekMenu_tektext3,
+    tekMenu_tektextsmall,
+    tekMenu_line1,
+    tekMenu_tekpage,
+    tekMenu_tekreset,
+    tekMenu_tekcopy,
+    tekMenu_line2,
+    tekMenu_vtshow,
+    tekMenu_vtmode,
+    tekMenu_tekhide,
+    tekMenu_LAST
+} tekMenuIndices;
 
 
 /*
@@ -220,6 +231,11 @@
   update_menu_item (term->screen.mainMenu, \
                    mainMenuEntries[mainMenu_8bit_ctrl].widget, \
                    term->screen.control_eight_bits)
+
+#define update_decbkm() \
+  update_menu_item (term->screen.mainMenu, \
+                   mainMenuEntries[mainMenu_backarrow].widget, \
+                   term->keyboard.flags & MODE_DECBKM)
 
 #define update_sun_fkeys() \
   update_menu_item (term->screen.mainMenu, \
Index: misc.c
--- XFree86-3.9m/xc/programs/xterm/misc.c       Tue Jun  3 16:05:50 1997
+++ XFree86-current/xc/programs/xterm/misc.c    Wed Aug 20 18:35:56 1997
@@ -178,10 +178,10 @@
 
 /* ARGSUSED */
 void HandleKeyPressed(w, event, params, nparams)
-    Widget w;
+    Widget w GCC_UNUSED;
     XEvent *event;
-    String *params;
-    Cardinal *nparams;
+    String *params GCC_UNUSED;
+    Cardinal *nparams GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -193,10 +193,10 @@
 
 /* ARGSUSED */
 void HandleEightBitKeyPressed(w, event, params, nparams)
-    Widget w;
+    Widget w GCC_UNUSED;
     XEvent *event;
-    String *params;
-    Cardinal *nparams;
+    String *params GCC_UNUSED;
+    Cardinal *nparams GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -208,8 +208,8 @@
 
 /* ARGSUSED */
 void HandleStringEvent(w, event, params, nparams)
-    Widget w;
-    XEvent *event;
+    Widget w GCC_UNUSED;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *nparams;
 {
@@ -258,10 +258,10 @@
 
 /*ARGSUSED*/
 void HandleEnterWindow(w, eventdata, event, cont)
-Widget w;
-XtPointer eventdata;
-XEvent *event;
-Boolean *cont;
+Widget w GCC_UNUSED;
+XtPointer eventdata GCC_UNUSED;
+XEvent *event GCC_UNUSED;
+Boolean *cont GCC_UNUSED;
 {
     /* NOP since we handled it above */
 }
@@ -285,10 +285,10 @@
 
 /*ARGSUSED*/
 void HandleLeaveWindow(w, eventdata, event, cont)
-Widget w;
-XtPointer eventdata;
-XEvent *event;
-Boolean *cont;
+Widget w GCC_UNUSED;
+XtPointer eventdata GCC_UNUSED;
+XEvent *event GCC_UNUSED;
+Boolean *cont GCC_UNUSED;
 {
     /* NOP since we handled it above */
 }
@@ -296,10 +296,10 @@
 
 /*ARGSUSED*/
 void HandleFocusChange(w, eventdata, ev, cont)
-Widget w;
+Widget w GCC_UNUSED;
 XEvent *ev;
-XtPointer eventdata;
-Boolean *cont;
+XtPointer eventdata GCC_UNUSED;
+Boolean *cont GCC_UNUSED;
 {
        register XFocusChangeEvent *event = (XFocusChangeEvent  *)ev;
         register TScreen *screen = &term->screen;
@@ -377,7 +377,7 @@
 
 void
 Bell(which,percent)
-     int which;
+     int which GCC_UNUSED;
      int percent;
 {
     register TScreen *screen = &term->screen;
@@ -471,10 +471,10 @@
 
 /* ARGSUSED */
 void HandleBellPropertyChange(w, data, ev, more)
-    Widget w;
-    XtPointer data;
+    Widget w GCC_UNUSED;
+    XtPointer data GCC_UNUSED;
     XEvent *ev;
-    Boolean *more;
+    Boolean *more GCC_UNUSED;
 {
     register TScreen *screen = &term->screen;
 
@@ -730,7 +730,7 @@
 void
 do_osc(oscbuf, len)
 Char *oscbuf;
-int len;
+int len GCC_UNUSED;
 {
        register int mode;
        register Char *cp;
@@ -1033,7 +1033,7 @@
 
 static Boolean
 UpdateOldColors(pTerm,pNew)
-XtermWidget    pTerm;
+XtermWidget    pTerm GCC_UNUSED;
 ScrnColors     *pNew;
 {
 int    i;
@@ -1190,12 +1190,12 @@
 #endif
 void
 Panic(s, a)
-char   *s;
-int a;
+char   *s GCC_UNUSED;
+int a GCC_UNUSED;
 {
 #ifdef DEBUG
        if(debug) {
-               fprintf(stderr, "%s: PANIC!     ", xterm_name);
+               fprintf(stderr, "%s: PANIC!\t", xterm_name);
                fprintf(stderr, s, a);
                fputs("\r\n", stderr);
                fflush(stderr);
Index: ptyx.h
--- XFree86-3.9m/xc/programs/xterm/ptyx.h       Wed Aug 13 09:29:16 1997
+++ XFree86-current/xc/programs/xterm/ptyx.h    Fri Aug 22 06:39:03 1997
@@ -288,6 +288,12 @@
 
 /***====================================================================***/
 
+#if XtSpecificationRelease < 6
+#ifndef NO_ACTIVE_ICON
+#define NO_ACTIVE_ICON 1 /* Note: code relies on an X11R6 function */
+#endif
+#endif
+
 #ifndef OPT_AIX_COLORS
 #define OPT_AIX_COLORS  1 /* true if xterm is configured with AIX (16) colors */
 #endif
@@ -298,6 +304,22 @@
 #define OPT_DEC_CHRSET  1 /* true if xterm is configured for DEC charset */
 #endif
 
+#ifndef OPT_I18N_SUPPORT
+#if XtSpecificationRelease >= 6
+#define OPT_I18N_SUPPORT 1 /* true if xterm uses internationalization support */
+#else
+#define OPT_I18N_SUPPORT 0
+#endif
+#endif
+
+#ifndef OPT_INPUT_METHOD
+#if XtSpecificationRelease >= 6
+#define OPT_INPUT_METHOD 1 /* true if xterm uses input-method support */
+#else
+#define OPT_INPUT_METHOD 0
+#endif
+#endif
+
 #ifndef OPT_ISO_COLORS
 #define OPT_ISO_COLORS  1 /* true if xterm is configured with ISO colors */
 #endif
@@ -659,6 +681,7 @@
        Boolean         input_eight_bits;/* use 8th bit instead of ESC prefix */
        Boolean         output_eight_bits; /* honor all bits or strip */
        Boolean         control_eight_bits; /* send CSI as 8-bits */
+       Boolean         backarrow_key;          /* backspace/delete */
        Pixmap          menu_item_bitmap;       /* mask for checking items */
        Widget          mainMenu, vtMenu, tekMenu, fontMenu;
        char*           menu_font_names[NMENUFONTS];
@@ -707,7 +730,7 @@
     Boolean tekSmall;  /* start tek window in small size */
     Boolean appcursorDefault;
     Boolean appkeypadDefault;
-#if XtSpecificationRelease >= 6
+#if OPT_INPUT_METHOD
     char* input_method;
     char* preedit_type;
     Boolean open_im;
@@ -734,8 +757,11 @@
 } TekClassRec;
 
 /* define masks for keyboard.flags */
+#define MODE_KAM       0x01    /* keyboard action mode */
 #define MODE_DECKPAM   0x02    /* keypad application mode */
 #define MODE_DECCKM    0x04    /* cursor keys */
+#define MODE_SRM       0x08    /* send-receive mode */
+#define MODE_DECBKM    0x10    /* backarrow */
 
 
 #define N_MARGINBELL   10
@@ -873,6 +899,7 @@
 #define FontWidth(screen)      ((screen)->fullVwin.f_width)
 #define FontHeight(screen)     ((screen)->fullVwin.f_height)
 #define FontAscent(screen)     ((screen)->fnt_norm->ascent)
+#define FontDescent(screen)    ((screen)->fnt_norm->descent)
 #define Scrollbar(screen)      ((screen)->fullVwin.scrollbar)
 #define NormalGC(screen)       ((screen)->fullVwin.normalGC)
 #define ReverseGC(screen)      ((screen)->fullVwin.reverseGC)
Index: resize.c
--- XFree86-3.9m/xc/programs/xterm/resize.c     Sun Jun 15 14:07:12 1997
+++ XFree86-current/xc/programs/xterm/resize.c  Wed Aug 20 18:30:47 1997
@@ -156,6 +156,10 @@
 #endif
 #endif
 
+#ifndef GCC_UNUSED
+#define GCC_UNUSED /* nothing */
+#endif
+
 #define        EMULATIONS      2
 #define        SUN             1
 #define        TIMEOUT         10
@@ -646,7 +650,7 @@
 /* ARGSUSED */
 static SIGNAL_T
 onintr(sig)
-    int sig;
+    int sig GCC_UNUSED;
 {
 #ifdef USE_SYSV_TERMIO
        ioctl (tty, TCSETAW, &tioorig);
Index: screen.c
--- XFree86-3.9m/xc/programs/xterm/screen.c     Tue Jul 29 15:13:30 1997
+++ XFree86-current/xc/programs/xterm/screen.c  Tue Aug 19 19:09:57 1997
@@ -53,6 +53,10 @@
 #include <sys/ioctl.h>
 #endif
 
+#ifdef __hpux
+#include <sys/termio.h>
+#endif
+
 #ifdef att
 #include <sys/termio.h>
 #include <sys/stream.h>                        /* get typedef used in ptem.h */
Index: scrollbar.c
--- XFree86-3.9m/xc/programs/xterm/scrollbar.c  Tue Jun  3 16:05:50 1997
+++ XFree86-current/xc/programs/xterm/scrollbar.c       Wed Aug 20 05:55:22 1997
@@ -224,7 +224,7 @@
 
 static void RealizeScrollBar (sbw, screen)
     Widget sbw;
-    TScreen *screen;
+    TScreen *screen GCC_UNUSED;
 {
     XtRealizeWidget (sbw);
 }
@@ -415,8 +415,8 @@
 
 /*ARGSUSED*/
 static void ScrollTextTo(scrollbarWidget, client_data, call_data)
-       Widget scrollbarWidget;
-       XtPointer client_data;
+       Widget scrollbarWidget GCC_UNUSED;
+       XtPointer client_data GCC_UNUSED;
        XtPointer call_data;
 {
        float *topPercent = (float *) call_data;
@@ -437,8 +437,8 @@
 
 /*ARGSUSED*/
 static void ScrollTextUpDownBy(scrollbarWidget, client_data, call_data)
-       Widget scrollbarWidget;
-       XtPointer client_data;
+       Widget scrollbarWidget GCC_UNUSED;
+       XtPointer client_data GCC_UNUSED;
        XtPointer call_data;
 {
        int pixels = (int) call_data;
@@ -524,7 +524,7 @@
 /*ARGSUSED*/
 void HandleScrollForward (gw, event, params, nparams)
     Widget gw;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *nparams;
 {
@@ -540,7 +540,7 @@
 /*ARGSUSED*/
 void HandleScrollBack (gw, event, params, nparams)
     Widget gw;
-    XEvent *event;
+    XEvent *event GCC_UNUSED;
     String *params;
     Cardinal *nparams;
 {
Index: terminfo
--- XFree86-3.9m/xc/programs/xterm/terminfo     Wed Aug 13 09:29:16 1997
+++ XFree86-current/xc/programs/xterm/terminfo  Tue Aug 19 21:04:08 1997
@@ -197,6 +197,141 @@
        setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
        setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
        use=xterm,
+# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
+# To use it, your decTerminalID resource must be set to 200 or above.
+#
+#      HTS     \E H    \210
+#      RI      \E M    \215
+#      SS3     \E O    \217
+#      CSI     \E [    \233
+#
+xterm-8bit|xterm terminal emulator, 8-bit controls (X Window System),
+       am,
+       bce,
+       km,
+       mc5i,
+       mir,
+       msgr,
+       xenl,
+       colors#8,
+       cols#80,
+       it#8,
+       lines#24,
+       pairs#64,
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+       bel=^G,
+       bold=\2331m,
+       cbt=\233Z,
+       civis=\233?25l,
+       clear=\233H\2332J,
+       cnorm=\233?25h,
+       cr=^M,
+       csr=\233%i%p1%d;%p2%dr,
+       cub=\233%p1%dD,
+       cub1=^H,
+       cud=\233%p1%dB,
+       cud1=^J,
+       cuf=\233%p1%dC,
+       cuf1=\233C,
+       cup=\233%i%p1%d;%p2%dH,
+       cuu=\233%p1%dA,
+       cuu1=\233A,
+       cvvis=\233?25h,
+       dch=\233%p1%dP,
+       dch1=\233P,
+       dl=\233%p1%dM,
+       dl1=\233M,
+       ech=\233%p1%dX,
+       ed=\233J,
+       el=\233K,
+       el1=\2331K,
+       enacs=\E(B\E)0,
+       flash=\233?5h\233?5l,
+       home=\233H,
+       hpa=\233%i%p1%dG,
+       ht=^I,
+       hts=\210,
+       ich=\233%p1%d@,
+       ich1=\233@,
+       il=\233%p1%dL,
+       il1=\233L,
+       ind=^J,
+       is2=\E7\E\sG\233r\233m\233?7h\233?1;3;4;6l\2334l\E8\E>,
+       ka1=\217w,
+       ka3=\217u,
+       kb2=\217y,
+       kbeg=\217E,
+       kbs=^H,
+       kc1=\217q,
+       kc3=\217s,
+       kcub1=\217D,
+       kcud1=\217B,
+       kcuf1=\217C,
+       kcuu1=\217A,
+       kdch1=\177,
+       kend=\217F,
+       kent=\217M,
+       kf1=\217P,
+       kf10=\23321~,
+       kf11=\23323~,
+       kf12=\23324~,
+       kf13=\23325~,
+       kf14=\23326~,
+       kf15=\23328~,
+       kf16=\23329~,
+       kf17=\23331~,
+       kf18=\23332~,
+       kf19=\23333~,
+       kf2=\217Q,
+       kf20=\23334~,
+       kf3=\217R,
+       kf4=\217S,
+       kf5=\23315~,
+       kf6=\23317~,
+       kf7=\23318~,
+       kf8=\23319~,
+       kf9=\23320~,
+       kfnd=\2331~,
+       khome=\217H,
+       kich1=\2332~,
+       kmous=\233M,
+       knp=\2336~,
+       kpp=\2335~,
+       kslt=\2334~,
+       mc0=\233i, 
+       mc4=\2334i,
+       mc5=\2335i,
+       meml=\El,
+       memu=\Em,
+       op=\23339;49m,
+       rc=\E8,
+       rev=\2337m,
+       ri=\215,
+       rmacs=^O,
+       rmam=\233?7l,
+       rmcup=\2332J\233?47l\E8,
+       rmir=\2334l,
+       rmkx=\233?1l\E>,
+       rmso=\23327m,
+       rmul=\23324m,
+       rs1=^O,
+       rs2=\E7\E[62"p\E\sG\233r\233m\233?7h\233?1;3;4;6l\2334l\E8\E>,
+       sc=\E7,
+       setab=\2334%p1%dm,
+       setaf=\2333%p1%dm,
+       setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+       setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+       sgr=\2330%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+       sgr0=\233m\017,
+       smacs=^N,
+       smam=\233?7h,
+       smcup=\E7\233?47h,
+       smir=\2334h,
+       smkx=\233?1h\E=,
+       smso=\2337m,
+       smul=\2334m,
+       tbc=\2333g,
+       vpa=\233%i%p1%dd,
 #
 # Compatible with the R6 xterm
 xterm-r6|xterm-old|xterm X11R6 version,
Index: trace.c
--- XFree86-3.9m/xc/programs/xterm/trace.c      Tue Jun  3 16:05:50 1997
+++ XFree86-current/xc/programs/xterm/trace.c   Wed Aug 20 06:48:10 1997
@@ -35,6 +35,9 @@
 #endif
 
 #include <stdio.h>
+#include <time.h>
+#include <unistd.h>
+#include <sys/types.h>
 #include "trace.h"
 
 #if __STDC__ || CC_HAS_PROTOS
@@ -59,8 +62,24 @@
        static  FILE    *fp;
        va_list ap;
 
-       if (!fp)
+       if (!fp) {
                fp = fopen("Trace.out", "w");
+               if (fp != 0) {
+#if HAVE_UNISTD_H
+                       time_t now;
+                       fprintf(fp, "process %d real (%d/%d) effective (%d/%d) -- %s",
+                               getpid(),
+                               getuid(), getgid(),
+                               geteuid(), getegid(),
+                               ctime(&now));
+#else
+                       time_t now;
+                       fprintf(fp, "process %d -- %s",
+                               getpid(),
+                               ctime(&now));
+#endif
+               }
+       }
        if (!fp)
                abort();
 
Index: xterm.h
--- XFree86-3.9m/xc/programs/xterm/xterm.h      Wed Aug 13 09:29:16 1997
+++ XFree86-current/xc/programs/xterm/xterm.h   Tue Aug 19 20:18:59 1997
@@ -5,6 +5,10 @@
 #ifndef        included_xterm_h
 #define        included_xterm_h
 
+#ifndef GCC_UNUSED
+#define GCC_UNUSED /* nothing */
+#endif
+
 #include "proto.h"
 
 /* Tekproc.c */
@@ -101,6 +105,7 @@
 
 /* menu.c */
 extern void do_hangup          PROTO_XT_CALLBACK_ARGS;
+extern void show_8bit_control  PROTO((Bool value));
 
 /* misc.c */
 extern Cursor make_colored_cursor PROTO((unsigned cursorindex, unsigned long fg, unsigned long bg));
Index: xterm.man
--- XFree86-3.9m/xc/programs/xterm/xterm.man    Wed Aug 13 09:29:16 1997
+++ XFree86-current/xc/programs/xterm/xterm.man Fri Aug 22 17:06:46 1997
@@ -625,6 +625,12 @@
 await input (i.e., to support the Xaw3d arrow scrollbar).
 The default is ``false.''
 .TP 8
+.B "backarrowKey (\fPclass\fB BackarrowKey)"
+Specifies whether the backarrow key transmits
+a backspace
+or delete character.
+The default (backspace) is ``true.''
+.TP 8
 .B "bellSuppressTime (\fPclass\fB BellSuppressTime)"
 Number of milliseconds after a bell command is sent during which additional
 bells will be suppressed.  Default is 200.  If set non-zero,
@@ -1029,6 +1035,9 @@
 .TP 8
 .B "8-bit-control (\fPclass\fB SmeBSB)"
 This entry invokes the \fBset-8-bit-control(toggle)\fP action.
+.TP 8
+.B "backarrow key (\fPclass\fB SmeBSB)"
+This entry invokes the \fBset-backarrow(toggle)\fP action.
 .TP 8
 .B "sun-function-keys (\fPclass\fB SmeBSB)"
 This entry invokes the \fBsun-function-keys(toggle)\fP action.
Index: xtermcfg.hin
--- XFree86-3.9m/xc/programs/xterm/xtermcfg.hin Tue Jul 29 15:13:30 1997
+++ XFree86-current/xc/programs/xterm/xtermcfg.hin      Fri Aug 22 18:16:47 1997
@@ -35,9 +35,13 @@
 #undef DFT_DECID       /* AC_ARG_WITH(default-terminal-id) */
 #undef HAVE_STRERROR   /* AC_CHECK_FUNCS(strerror) */
 #undef HAVE_TERMCAP_H  /* AC_CHECK_HEADERS(termcap.h) */
+#undef HAVE_UNISTD_H   /* AC_CHECK_HEADERS(unistd.h) */
 #undef HAVE_X11_XPOLL_H        /* AC_CHECK_HEADERS(X11/Xpoll.h) */
+#undef NO_ACTIVE_ICON  /* CF_ARG_DISABLE(active-icon) */
 #undef OPT_AIX_COLORS  /* CF_ARG_DISABLE(16-color) */
 #undef OPT_DEC_CHRSET  /* CF_ARG_DISABLE(doublechars) */
+#undef OPT_I18N_SUPPORT        /* CF_ARG_DISABLE(i18n) */
+#undef OPT_INPUT_METHOD        /* CF_ARG_DISABLE(input-method) */
 #undef OPT_ISO_COLORS  /* CF_ARG_DISABLE(ansi-color) */
 #undef OPT_TRACE       /* CF_ARG_ENABLE(trace) */
 #undef OPT_VT52_MODE   /* CF_ARG_DISABLE(vt52) */
@@ -48,6 +52,8 @@
 #undef const           /* AC_CONST */
 #undef size_t          /* AC_TYPE_SIZE_T */
 #undef time_t          /* AC_CHECK_TYPE(time_t, long) */
+
+#undef GCC_UNUSED
 
 #if USE_OK_BCOPY
 #define memmove(d,s,n) bcopy(s,d,n)