xterm-90.patch.txt

# ------------------------------------------------------------------------------
#  INSTALL        |    2 
#  Makefile.in    |    6 
#  XTerm.ad       |    6 
#  charproc.c     |  200 ++++++++++++-----------
#  config.guess   |  280 +++++++++++++++++++++++++++-----
#  config.sub     |  123 ++++++++------
#  configure      |  478 ++++++++++++++++++++++++++++++-------------------------
#  configure.in   |   18 ++
#  ctlseqs.ms     |    9 -
#  cursor.c       |   16 +
#  data.c         |    6 
#  data.h         |    3 
#  fontutils.c    |  321 +++++++++++++++++++++++++++++++++++-
#  fontutils.h    |    7 
#  input.c        |   47 +++++
#  main.c         |   19 ++
#  menu.c         |  239 +++++++++++++++++++++------
#  menu.h         |   53 +++++-
#  os2main.c      |   19 ++
#  ptyx.h         |   57 ++++--
#  screen.c       |   10 -
#  termcap        |    2 
#  terminfo       |   10 -
#  util.c         |  117 +++++++++++--
#  version.h      |    2 
#  xterm.h        |    5 
#  xterm.log.html |  127 +++++++++++---
#  xterm.man      |   74 ++++++++
#  xtermcfg.hin   |    2 
#  29 files changed, 1713 insertions, 545 deletions
# ------------------------------------------------------------------------------
Index: INSTALL
--- xterm-89+/INSTALL   Fri Jun  5 16:23:53 1998
+++ xterm-90/INSTALL    Wed Dec  9 21:14:12 1998
@@ -36,6 +36,7 @@
   --disable-active-icon   disable X11R6.3 active-icon feature (default: on)
   --disable-ansi-color    disable ANSI color (default: on)
   --disable-bold-color    disable PC-style mapping of bold colors (default: on)
+  --disable-boxchars      disable fallback-support for box chars
   --disable-color-mode    disable default colorMode resource (default: on)
   --disable-doublechars   disable support for double-size chars (default: on)
   --disable-echo          test: display "compiling" commands (default: on)
@@ -48,6 +49,7 @@
   --disable-tek4014       disable tek4014 emulation (default: on)
   --disable-vt52          disable VT52 emulation (default: on)
   --disable-ziconbeep     disable -ziconbeep option (default: on)
+  --enable-hp-fkeys       enable support for HP-style function keys (default: off)
   --enable-logfile-exec   enable exec'd logfile filter (default: off)
   --enable-logging        enable logging (default: off)
   --enable-trace          test: set to enable debugging traces (default: off)
Index: Makefile.in
--- xterm-89+/Makefile.in       Sun Oct 25 13:31:39 1998
+++ xterm-90/Makefile.in        Sun Dec 13 19:07:42 1998
@@ -21,7 +21,7 @@
 EXTRA_LOADFLAGS        = @IMAKE_LOADFLAGS@
 
 CPPFLAGS       = -I. -I$(srcdir) -DHAVE_CONFIG_H $(X_CFLAGS) $(IMAKE_CFLAGS)
-CFLAGS         = @CFLAGS@ $(EXTRA_CFLAGS) 
+CFLAGS         = @CFLAGS@ $(EXTRA_CFLAGS)
 LIBS           = @LIBS@
 
 prefix         = @prefix@
@@ -37,7 +37,7 @@
 SHELL          = /bin/sh
 RM              = rm -f
 
-LDFLAGS                = 
+LDFLAGS                =
 
 INSTALL_DIRS    = $(bindir) $(libdir) $(mandir)
 
@@ -77,7 +77,7 @@
 
 main.o: version.h
 
-$(OBJS1) : ptyx.h
+$(OBJS1) : ptyx.h xtermcfg.h
 
 xterm : $(OBJS1)
        @ECHO_LD@$(LINK) $(LDFLAGS) -o $@ $(OBJS1) $(X_LIBS) $(X_EXTRA_LIBS) $(LIBS) $(EXTRA_LOADFLAGS)
Index: XTerm.ad
--- xterm-89+/XTerm.ad  Tue Apr 28 15:01:01 1998
+++ xterm-90/XTerm.ad   Sun Dec 13 16:40:48 1998
@@ -25,6 +25,7 @@
 *mainMenu*backarrow key*Label: Backarrow Key
 *mainMenu*sun function-keys*Label: Sun Function-Keys
 *mainMenu*sun keyboard*Label: Sun/PC Keyboard
+*mainMenu*hp function-keys*Label: HP Function-Keys
 *mainMenu*suspend*Label:  Send STOP Signal
 *mainMenu*continue*Label:  Send CONT Signal
 *mainMenu*interrupt*Label:  Send INT Signal
@@ -48,7 +49,7 @@
 *vtMenu*cursesemul*Label:  Enable Curses Emulation
 *vtMenu*visualbell*Label:  Enable Visual Bell
 *vtMenu*marginbell*Label:  Enable Margin Bell
-*vtMenu*altscreen*Label:  Show Alternate Screen
+*vtMenu*titeInhibit*Label:  Enable Alternate Screen Switching
 *vtMenu*activeicon*Label: Enable Active Icon
 *vtMenu*softreset*Label:  Do Soft Reset
 *vtMenu*hardreset*Label:  Do Full Reset
@@ -56,6 +57,7 @@
 *vtMenu*tekshow*Label:  Show Tek Window
 *vtMenu*tekmode*Label:  Switch to Tek Mode
 *vtMenu*vthide*Label:  Hide VT Window
+*vtMenu*altscreen*Label:  Show Alternate Screen
 
 *fontMenu.Label:  VT Fonts
 *fontMenu*fontdefault*Label:   Default
@@ -75,6 +77,8 @@
 *fontMenu*fontescape*Label:    Escape Sequence
 *fontMenu*fontsel*Label:               Selection
 !fontescape and fontsel overridden by application
+*fontMenu*font-doublesize*Label: Doublesized Characters
+*fontMenu*font-loadable*Label: VT220 Soft Fonts
 
 *tekMenu.Label:  Tek Options
 *tekMenu*tektextlarge*Label:  Large Characters
Index: charproc.c
--- xterm-89+/charproc.c        Sun Nov 22 13:07:22 1998
+++ xterm-90/charproc.c Sun Dec 13 19:06:49 1998
@@ -147,6 +147,7 @@
 
 #define XtNallowSendEvents     "allowSendEvents"
 #define XtNalwaysHighlight     "alwaysHighlight"
+#define XtNanswerbackString    "answerbackString"
 #define XtNappcursorDefault    "appcursorDefault"
 #define XtNappkeypadDefault    "appkeypadDefault"
 #define XtNautoWrap            "autoWrap"
@@ -191,10 +192,17 @@
 #define XtNeightBitControl     "eightBitControl"
 #define XtNeightBitInput       "eightBitInput"
 #define XtNeightBitOutput      "eightBitOutput"
+#define XtNfontDoublesize       "fontDoublesize"
+#define XtNgeometry            "geometry"
+#define XtNhighlightColor      "highlightColor"
 #define XtNhighlightSelection  "highlightSelection"
 #define XtNhpLowerleftBugCompat        "hpLowerleftBugCompat"
 #define XtNinternalBorder      "internalBorder"
 #define XtNjumpScroll          "jumpScroll"
+#define XtNkeyboardDialect      "keyboardDialect"
+#define XtNlogFile             "logFile"
+#define XtNlogInhibit          "logInhibit"
+#define XtNlogging             "logging"
 #define XtNloginShell          "loginShell"
 #define XtNmarginBell          "marginBell"
 #define XtNmultiClickTime      "multiClickTime"
@@ -232,22 +240,9 @@
 #define XtNxmcInline           "xmcInline"
 #define XtNxmcMoveSGR          "xmcMoveSGR"
 
-#ifdef ALLOWLOGGING
-#define XtNlogFile             "logFile"
-#define XtNlogInhibit          "logInhibit"
-#define XtNlogging             "logging"
-#endif
-
-#ifdef NO_ACTIVE_ICON
-#define XtNgeometry            "geometry"
-#endif
-
-#if OPT_HIGHLIGHT_COLOR
-#define XtNhighlightColor      "highlightColor"
-#endif
-
 #define XtCAllowSendEvents     "AllowSendEvents"
 #define XtCAlwaysHighlight     "AlwaysHighlight"
+#define XtCAnswerbackString    "AnswerbackString"
 #define XtCAppcursorDefault    "AppcursorDefault"
 #define XtCAppkeypadDefault    "AppkeypadDefault"
 #define XtCAutoWrap            "AutoWrap"
@@ -268,9 +263,14 @@
 #define XtCEightBitControl     "EightBitControl"
 #define XtCEightBitInput       "EightBitInput"
 #define XtCEightBitOutput      "EightBitOutput"
+#define XtCFontDoublesize       "FontDoublesize"
+#define XtCGeometry            "Geometry"
 #define XtCHighlightSelection  "HighlightSelection"
 #define XtCHpLowerleftBugCompat        "HpLowerleftBugCompat"
 #define XtCJumpScroll          "JumpScroll"
+#define XtCLogInhibit          "LogInhibit"
+#define XtCLogfile             "Logfile"
+#define XtCLogging             "Logging"
 #define XtCLoginShell          "LoginShell"
 #define XtCMarginBell          "MarginBell"
 #define XtCMultiClickTime      "MultiClickTime"
@@ -301,16 +301,7 @@
 #define XtCXmcGlitch           "XmcGlitch"
 #define XtCXmcInline           "XmcInline"
 #define XtCXmcMoveSGR          "XmcMoveSGR"
-
-#ifdef ALLOWLOGGING
-#define XtCLogInhibit          "LogInhibit"
-#define XtCLogfile             "Logfile"
-#define XtCLogging             "Logging"
-#endif
-
-#ifdef NO_ACTIVE_ICON
-#define XtCGeometry            "Geometry"
-#endif
+#define XtCkeyboardDialect      "KeyboardDialect"
 
 #define        doinput()               (bcnt-- > 0 ? *bptr++ : in_put())
 
@@ -342,7 +333,10 @@
  */
 
 /* Defaults */
+#define DFT_KBD_DIALECT "B"
+#if OPT_ISO_COLORS
 static  Boolean        defaultCOLORMODE   = DFT_COLORMODE;
+#endif
 static  Boolean        defaultFALSE       = FALSE;
 static  Boolean        defaultTRUE        = TRUE;
 static  int    defaultZERO        = 0;
@@ -352,7 +346,7 @@
 static  int    defaultNMarginBell = N_MARGINBELL;
 static  int    defaultMultiClickTime = MULTICLICKTIME;
 static  int    defaultBellSuppressTime = BELLSUPPRESSMSEC;
-static int     default_DECID = DFT_DECID;
+static int     default_DECID      = DFT_DECID;
 static char *  _Font_Selected_ = "yes";  /* string is arbitrary */
 
 #if OPT_BLINK_CURS
@@ -400,58 +394,71 @@
 ";
 
 static XtActionsRec actionsList[] = {
+    { "allow-send-events",     HandleAllowSends },
     { "bell",                  HandleBell },
+    { "clear-saved-lines",     HandleClearSavedLines },
     { "create-menu",           HandleCreateMenu },
+    { "dired-button",          DiredButton },
+    { "hard-reset",            HandleHardReset },
     { "ignore",                HandleIgnore },
     { "insert",                HandleKeyPressed },  /* alias for insert-seven-bit */
-    { "insert-seven-bit",      HandleKeyPressed },
     { "insert-eight-bit",      HandleEightBitKeyPressed },
     { "insert-selection",      HandleInsertSelection },
+    { "insert-seven-bit",      HandleKeyPressed },
     { "keymap",                HandleKeymapChange },
     { "popup-menu",            HandlePopupMenu },
+    { "print",                         HandlePrint },
+    { "quit",                  HandleQuit },
+    { "redraw",                HandleRedraw },
+    { "scroll-back",           HandleScrollBack },
+    { "scroll-forw",           HandleScrollForward },
     { "secure",                HandleSecure },
-    { "select-start",          HandleSelectStart },
-    { "select-extend",         HandleSelectExtend },
+    { "select-cursor-end",     HandleKeyboardSelectEnd },
+    { "select-cursor-start",   HandleKeyboardSelectStart },
     { "select-end",            HandleSelectEnd },
+    { "select-extend",         HandleSelectExtend },
     { "select-set",            HandleSelectSet },
-    { "select-cursor-start",   HandleKeyboardSelectStart },
-    { "select-cursor-end",     HandleKeyboardSelectEnd },
-    { "set-vt-font",           HandleSetFont },
-    { "start-extend",          HandleStartExtend },
-    { "start-cursor-extend",   HandleKeyboardStartExtend },
-    { "string",                HandleStringEvent },
-    { "scroll-forw",           HandleScrollForward },
-    { "scroll-back",           HandleScrollBack },
-    /* menu actions */
-    { "allow-send-events",     HandleAllowSends },
-    { "set-visual-bell",       HandleSetVisualBell },
-#ifdef ALLOWLOGGING
-    { "set-logging",           HandleLogging },
-#endif
-    { "print",                         HandlePrint },
-    { "redraw",                HandleRedraw },
+    { "select-start",          HandleSelectStart },
     { "send-signal",           HandleSendSignal },
-    { "quit",                  HandleQuit },
     { "set-8-bit-control",     Handle8BitControl },
+    { "set-allow132",          HandleAllow132 },
+    { "set-altscreen",         HandleAltScreen },
+    { "set-appcursor",         HandleAppCursor },
+    { "set-appkeypad",         HandleAppKeypad },
+    { "set-autolinefeed",      HandleAutoLineFeed },
+    { "set-autowrap",          HandleAutoWrap },
     { "set-backarrow",         HandleBackarrow },
-    { "set-sun-function-keys", HandleSunFunctionKeys },
-    { "set-scrollbar",         HandleScrollbar },
+    { "set-cursesemul",        HandleCursesEmul },
     { "set-jumpscroll",        HandleJumpscroll },
+    { "set-marginbell",        HandleMarginBell },
     { "set-reverse-video",     HandleReverseVideo },
-    { "set-autowrap",          HandleAutoWrap },
     { "set-reversewrap",       HandleReverseWrap },
-    { "set-autolinefeed",      HandleAutoLineFeed },
-    { "set-appcursor",         HandleAppCursor },
-    { "set-appkeypad",         HandleAppKeypad },
     { "set-scroll-on-key",     HandleScrollKey },
     { "set-scroll-on-tty-output", HandleScrollTtyOutput },
-    { "set-allow132",          HandleAllow132 },
-    { "set-cursesemul",        HandleCursesEmul },
-    { "set-marginbell",        HandleMarginBell },
-    { "set-altscreen",         HandleAltScreen },
+    { "set-scrollbar",         HandleScrollbar },
+    { "set-sun-function-keys", HandleSunFunctionKeys },
+    { "set-sun-keyboard",      HandleSunKeyboard },
+    { "set-titeInhibit",       HandleTiteInhibit },
+    { "set-visual-bell",       HandleSetVisualBell },
+    { "set-vt-font",           HandleSetFont },
     { "soft-reset",            HandleSoftReset },
-    { "hard-reset",            HandleHardReset },
-    { "clear-saved-lines",     HandleClearSavedLines },
+    { "start-cursor-extend",   HandleKeyboardStartExtend },
+    { "start-extend",          HandleStartExtend },
+    { "string",                HandleStringEvent },
+    { "vi-button",             ViButton },
+    { "visual-bell",           HandleVisualBell },
+#ifdef ALLOWLOGGING
+    { "set-logging",           HandleLogging },
+#endif
+#if OPT_DEC_CHRSET
+    { "set-font-doublesize",   HandleFontDoublesize },
+#endif
+#if OPT_DEC_SOFTFONT
+    { "set-font-loading",      HandleFontLoading },
+#endif
+#if OPT_HP_FUNC_KEYS
+    { "set-hp-function-keys",  HandleHpFunctionKeys },
+#endif
 #if OPT_TEK4014
     { "set-terminal-type",     HandleSetTerminalType },
     { "set-visibility",        HandleVisibility },
@@ -460,9 +467,6 @@
     { "tek-reset",             HandleTekReset },
     { "tek-copy",              HandleTekCopy },
 #endif
-    { "visual-bell",           HandleVisualBell },
-    { "dired-button",          DiredButton },
-    { "vi-button",             ViButton },
 };
 
 static XtResource resources[] = {
@@ -521,6 +525,9 @@
        XtOffsetOf(XtermWidgetRec, screen.cursor_blink),
         XtRInt, (XtPointer) &defaultBlinkTime},
 #endif
+{XtNkeyboardDialect, XtCkeyboardDialect, XtRString, sizeof(String),
+       XtOffsetOf(XtermWidgetRec, screen.keyboard_dialect),
+       XtRString, (XtPointer) DFT_KBD_DIALECT},
 {XtNeightBitInput, XtCEightBitInput, XtRBoolean, sizeof(Boolean),
        XtOffsetOf(XtermWidgetRec, screen.input_eight_bits),
        XtRBoolean, (XtPointer) &defaultTRUE},
@@ -586,6 +593,9 @@
 {XtNpointerShape,XtCCursor, XtRCursor, sizeof(Cursor),
        XtOffsetOf(XtermWidgetRec, screen.pointer_cursor),
        XtRString, (XtPointer) "xterm"},
+{XtNanswerbackString,XtCAnswerbackString, XtRString, sizeof(String),
+       XtOffsetOf(XtermWidgetRec, screen.answer_back),
+       XtRString, (XtPointer) DFT_TERMTYPE},
 #ifdef OPT_PRINT_COLORS
 {XtNprintAttributes,XtCPrintAttributes, XtRInt, sizeof(int),
        XtOffsetOf(XtermWidgetRec, screen.print_attributes),
@@ -691,6 +701,11 @@
 {"font6", "Font6", XtRString, sizeof(String),
        XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font6]),
        XtRString, (XtPointer) NULL},
+#if OPT_DEC_CHRSET
+{XtNfontDoublesize, XtCFontDoublesize, XtRBoolean, sizeof(Boolean),
+       XtOffsetOf(XtermWidgetRec, screen.font_doublesize),
+       XtRBoolean, (XtPointer) &defaultTRUE},
+#endif
 #if OPT_INPUT_METHOD
 {XtNinputMethod, XtCInputMethod, XtRString, sizeof(char*),
        XtOffsetOf(XtermWidgetRec, misc.input_method),
@@ -967,6 +982,7 @@
 void resetCharsets(TScreen *screen)
 {
        screen->gsets[0] = 'B';                 /* ASCII_G              */
+       screen->gsets[0] = screen->keyboard_dialect[0]; /* e.g., ASCII_G */
        screen->gsets[1] = '0';                 /* line drawing         */
        screen->gsets[2] = 'B';                 /* DEC supplemental.    */
        screen->gsets[3] = 'B';
@@ -1025,7 +1041,7 @@
                } else if (string_used+1 >= string_size) {
                        string_size += string_size;
                        string_area = (Char *)realloc(string_area, string_size);
-                       if (string_area == NULL) 
+                       if (string_area == NULL)
                            SysError(ERROR_VTREALLOC);
                }
                string_area[string_used++] = c;
@@ -1118,8 +1134,8 @@
                        break;
 
                 case CASE_ENQ:
-                       for (count = 0; xterm_name[count] != 0; count++)
-                               unparseputc(xterm_name[count], screen->respond);
+                       for (count = 0; screen->answer_back[count] != 0; count++)
+                               unparseputc(screen->answer_back[count], screen->respond);
                        break;
 
                 case CASE_BELL:
@@ -1805,13 +1821,13 @@
 
                 case CASE_DECSC:
                        /* DECSC */
-                       CursorSave(term, &screen->sc);
+                       CursorSave(term);
                        parsestate = groundtable;
                        break;
 
                 case CASE_DECRC:
                        /* DECRC */
-                       CursorRestore(term, &screen->sc);
+                       CursorRestore(term);
                        if_OPT_ISO_COLORS(screen,{setExtendedFG();})
                        parsestate = groundtable;
                        break;
@@ -2835,6 +2851,18 @@
 #endif /* ALLOWLOGFILEONOFF */
                        break;
 #endif
+               case 1049:              /* alternate buffer & cursor */
+                       if (!termw->misc.titeInhibit) {
+                           if(func == bitset) {
+                               CursorSave(termw);
+                               ToAlternate(screen);
+                               ClearScreen(screen);
+                           } else {
+                               FromAlternate(screen);
+                               CursorRestore(termw);
+                           }
+                       }
+                       break;
                case 1047:
                case 47:                /* alternate buffer */
                        if (!termw->misc.titeInhibit) {
@@ -2880,9 +2908,9 @@
                case 1048:
                        if (!termw->misc.titeInhibit) {
                                if(func == bitset)
-                                       CursorSave(termw, &screen->sc);
+                                       CursorSave(termw);
                                else
-                                       CursorRestore(termw, &screen->sc);
+                                       CursorRestore(termw);
                        }
                        break;
                }
@@ -2956,7 +2984,7 @@
                        break;
                case 1048:
                        if (!termw->misc.titeInhibit) {
-                               CursorSave(termw, &screen->sc);
+                               CursorSave(termw);
                        }
                        break;
                }
@@ -3071,7 +3099,7 @@
                        break;
                case 1048:
                        if (!termw->misc.titeInhibit) {
-                               CursorRestore(termw, &screen->sc);
+                               CursorRestore(termw);
                        }
                        break;
                }
@@ -3362,6 +3390,7 @@
 {
        if(screen->alternate)
                return;
+       TRACE(("ToAlternate\n"))
        if(!screen->altbuf)
                screen->altbuf = Allocate(screen->max_row + 1, screen->max_col
                 + 1, &screen->abuf_address);
@@ -3375,6 +3404,7 @@
 {
        if(!screen->alternate)
                return;
+       TRACE(("FromAlternate\n"))
        screen->alternate = FALSE;
        SwitchBufs(screen);
        update_altscreen();
@@ -3737,6 +3767,8 @@
    wnew->screen.always_highlight = request->screen.always_highlight;
    wnew->screen.pointer_cursor = request->screen.pointer_cursor;
 
+   wnew->screen.answer_back = request->screen.answer_back;
+
    wnew->screen.printer_command = request->screen.printer_command;
    wnew->screen.printer_autoclose = request->screen.printer_autoclose;
    wnew->screen.printer_extent = request->screen.printer_extent;
@@ -3746,6 +3778,7 @@
    wnew->screen.print_attributes = request->screen.print_attributes;
 #endif
 
+   wnew->screen.keyboard_dialect = request->screen.keyboard_dialect;
    wnew->screen.input_eight_bits = request->screen.input_eight_bits;
    wnew->screen.output_eight_bits = request->screen.output_eight_bits;
    wnew->screen.control_eight_bits = request->screen.control_eight_bits;
@@ -3765,6 +3798,10 @@
    wnew->screen.menu_font_names[fontMenu_fontsel] = NULL;
    wnew->screen.menu_font_number = fontMenu_fontdefault;
 
+#if OPT_DEC_CHRSET
+   wnew->screen.font_doublesize = request->screen.font_doublesize;
+#endif
+
 #if OPT_ISO_COLORS
    wnew->screen.boldColors    = request->screen.boldColors;
    wnew->screen.colorAttrMode = request->screen.colorAttrMode;
@@ -4005,19 +4042,7 @@
            XGCValues xgcv;
 
            XtVaGetValues(shell, XtNiconX, &iconX, XtNiconY, &iconY, NULL);
-           screen->iconVwin.f_width = screen->fnt_icon->max_bounds.width;
-           screen->iconVwin.f_height = (screen->fnt_icon->ascent +
-                                        screen->fnt_icon->descent);
-
-           screen->iconVwin.width =
-               (screen->max_col + 1) * screen->iconVwin.f_width;
-           screen->iconVwin.fullwidth = screen->iconVwin.width +
-               2 * screen->border;
-
-           screen->iconVwin.height =
-               (screen->max_row + 1) * screen->iconVwin.f_height;
-           screen->iconVwin.fullheight = screen->iconVwin.height +
-               2 * screen->border;
+           xtermComputeFontInfo (screen, &(screen->iconVwin), screen->fnt_icon, 0);
 
            /* since only one client is permitted to select for Button
             * events, we have to let the window manager get 'em...
@@ -4084,7 +4109,7 @@
        screen->bot_marg = screen->max_row = Height(screen) /
                                screen->fullVwin.f_height - 1;
 
-       screen->sc.row = screen->sc.col = screen->sc.flags = 0;
+       memset(screen->sc, 0, sizeof(screen->sc));
 
        /* Mark screen buffer as unallocated.  We wait until the run loop so
           that the child process does not fork and exec with all the dynamic
@@ -4105,7 +4130,7 @@
                screen->fullVwin.scrollbar = 0;
                ScrollBarOn (term, FALSE, TRUE);
        }
-       CursorSave (term, &screen->sc);
+       CursorSave (term);
        return;
 }
 
@@ -4627,7 +4652,7 @@
                                xevents();
                }
                CursorSet(screen, 0, 0, term->flags);
-               CursorSave(term, &screen->sc);
+               CursorSave(term);
        } else {        /* DECSTR */
                /*
                 * There's a tiny difference, to accommodate usage of xterm.
@@ -4644,9 +4669,8 @@
                update_autowrap();
                update_reversewrap();
 
-               CursorSave(term, &screen->sc);
-               screen->sc.row =
-               screen->sc.col = 0;
+               CursorSave(term);
+               memset(screen->sc, 0, sizeof(screen->sc));
        }
        longjmp(vtjmpbuf, 1);   /* force ground state in parser */
 }
Index: config.guess
--- xterm-89+/config.guess      Sat May 23 18:22:14 1998
+++ xterm-90/config.guess       Sat Nov 21 11:40:42 1998
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
+#   Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -52,11 +52,53 @@
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     alpha:OSF1:*:*)
+       if test $UNAME_RELEASE = "V4.0"; then
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+       fi
        # A Vn.n version is a released version.
        # A Tn.n version is a released field test version.
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
-       echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`
+       cat <<EOF >dummy.s
+       .globl main
+       .ent main
+main:
+       .frame \$30,0,\$26,0
+       .prologue 0
+       .long 0x47e03d80 # implver $0
+       lda \$2,259
+       .long 0x47e20c21 # amask $2,$1
+       srl \$1,8,\$2
+       sll \$2,2,\$2
+       sll \$0,3,\$0
+       addl \$1,\$0,\$0
+       addl \$2,\$0,\$0
+       ret \$31,(\$26),1
+       .end main
+EOF
+       ${CC-cc} dummy.s -o dummy 2>/dev/null
+       if test "$?" = 0 ; then
+               ./dummy
+               case "$?" in
+                       7)
+                               UNAME_MACHINE="alpha"
+                               ;;
+                       15)
+                               UNAME_MACHINE="alphaev5"
+                               ;;
+                       14)
+                               UNAME_MACHINE="alphaev56"
+                               ;;
+                       10)
+                               UNAME_MACHINE="alphapca56"
+                               ;;
+                       16)
+                               UNAME_MACHINE="alphaev6"
+                               ;;
+               esac
+       fi
+       rm -f dummy.s dummy
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
        exit 0 ;;
     21064:Windows_NT:50:3)
        echo alpha-dec-winnt3.5
@@ -68,11 +110,35 @@
       echo m68k-cbm-netbsd${UNAME_RELEASE}
       exit 0 ;;
     amiga:OpenBSD:*:*)
-      echo m68k-cbm-openbsd${UNAME_RELEASE}
-      exit 0 ;;
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    arc64:OpenBSD:*:*)
+       echo mips64el-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    arc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    hkmips:OpenBSD:*:*)
+       echo mips-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    pmax:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sgi:OpenBSD:*:*)
+       echo mips-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
        exit 0;;
+    arm32:NetBSD:*:*)
+       echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+       exit 0 ;;
+    SR2?01:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit 0;;
     Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
        # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
        if test "`(/bin/universe) 2>/dev/null`" = att ; then
@@ -108,6 +174,18 @@
     sun3*:SunOS:*:*)
        echo m68k-sun-sunos${UNAME_RELEASE}
        exit 0 ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit 0 ;;
     aushp:SunOS:*:*)
        echo sparc-auspex-sunos${UNAME_RELEASE}
        exit 0 ;;
@@ -115,19 +193,25 @@
        echo m68k-atari-netbsd${UNAME_RELEASE}
        exit 0 ;;
     atari*:OpenBSD:*:*)
-       echo m68k-atari-openbsd${UNAME_RELEASE}
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
     sun3*:NetBSD:*:*)
        echo m68k-sun-netbsd${UNAME_RELEASE}
        exit 0 ;;
     sun3*:OpenBSD:*:*)
-       echo m68k-sun-openbsd${UNAME_RELEASE}
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
     mac68k:NetBSD:*:*)
        echo m68k-apple-netbsd${UNAME_RELEASE}
        exit 0 ;;
     mac68k:OpenBSD:*:*)
-       echo m68k-apple-openbsd${UNAME_RELEASE}
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+       echo m88k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
     powerpc:machten:*:*)
        echo powerpc-apple-machten${UNAME_RELEASE}
@@ -141,7 +225,7 @@
     VAX*:ULTRIX*:*:*)
        echo vax-dec-ultrix${UNAME_RELEASE}
        exit 0 ;;
-    2020:CLIX:*:*)
+    2020:CLIX:*:* | 2430:CLIX:*:*)
        echo clipper-intergraph-clix${UNAME_RELEASE}
        exit 0 ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
@@ -214,6 +298,10 @@
     i?86:AIX:*:*)
        echo i386-ibm-aix
        exit 0 ;;
+    *:MVS:*:* | *:OS390:*:*|*:OS/390:*:*)
+                              # uname -m gives a processor model number  /* S/390 -- gil -- 1389 */
+       echo s390-ibm-os390    # on R1 and R2, uname -s reports OS390
+       exit 0 ;;              # on R3, uname -s reports OS/390
     *:AIX:2:3)
        if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
                sed 's/^                //' << EOF >dummy.c
@@ -378,8 +466,8 @@
     hp3[0-9][05]:NetBSD:*:*)
        echo m68k-hp-netbsd${UNAME_RELEASE}
        exit 0 ;;
-    hp3[0-9][05]:OpenBSD:*:*)
-       echo m68k-hp-openbsd${UNAME_RELEASE}
+    hp300:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
     i?86:BSD/386:*:* | *:BSD/OS:*:*)
        echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -394,7 +482,10 @@
        echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
     i*:CYGWIN*:*)
-       echo i386-pc-cygwin32
+       echo ${UNAME_MACHINE}-pc-cygwin32
+       exit 0 ;;
+    i*:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
        exit 0 ;;
     p*:CYGWIN*:*)
        echo powerpcle-unknown-cygwin32
@@ -403,43 +494,134 @@
        echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit 0 ;;
     *:GNU:*:*)
-       echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit 0 ;;
     *:Linux:*:*)
+       # uname on the ARM produces all sorts of strangeness, and we need to
+       # filter it out.
+       case "$UNAME_MACHINE" in
+         arm* | sa110*)              UNAME_MACHINE="arm" ;;
+       esac
+
        # The BFD linker knows what the default object file format is, so
        # first see if it will tell us.
        ld_help_string=`ld --help 2>&1`
-       if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then
-         echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then
-         echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then
-         echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then
-         echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then
-         echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then
-         echo "powerpc-unknown-linux-gnu" ; exit 0
-       elif test "${UNAME_MACHINE}" = "alpha" ; then
-         echo alpha-unknown-linux-gnu ; exit 0
-       elif test "${UNAME_MACHINE}" = "sparc" ; then
-         echo sparc-unknown-linux-gnu ; exit 0
-       else
-         # Either a pre-BFD a.out linker (linux-gnuoldld) or one that does not give us
-         # useful --help.  Gcc wants to distinguish between linux-gnuoldld and linux-gnuaout.
-         test ! -d /usr/lib/ldscripts/. \
-           && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+       ld_supported_emulations=`echo $ld_help_string \
+                        | sed -ne '/supported emulations:/!d
+                                   s/[         ][      ]*/ /g
+                                   s/.*supported emulations: *//
+                                   s/ .*//
+                                   p'`
+        case "$ld_supported_emulations" in
+         i?86linux)  echo "${UNAME_MACHINE}-pc-linux-gnuaout"      ; exit 0 ;;
+         i?86coff)   echo "${UNAME_MACHINE}-pc-linux-gnucoff"      ; exit 0 ;;
+         sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+         armlinux)   echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+         m68klinux)  echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+         elf32ppc)   echo "powerpc-unknown-linux-gnu"              ; exit 0 ;;
+       esac
+
+       if test "${UNAME_MACHINE}" = "alpha" ; then
+               sed 's/^        //'  <<EOF >dummy.s
+               .globl main
+               .ent main
+       main:
+               .frame \$30,0,\$26,0
+               .prologue 0
+               .long 0x47e03d80 # implver $0
+               lda \$2,259
+               .long 0x47e20c21 # amask $2,$1
+               srl \$1,8,\$2
+               sll \$2,2,\$2
+               sll \$0,3,\$0
+               addl \$1,\$0,\$0
+               addl \$2,\$0,\$0
+               ret \$31,(\$26),1
+               .end main
+EOF
+               LIBC=""
+               ${CC-cc} dummy.s -o dummy 2>/dev/null
+               if test "$?" = 0 ; then
+                       ./dummy
+                       case "$?" in
+                       7)
+                               UNAME_MACHINE="alpha"
+                               ;;
+                       15)
+                               UNAME_MACHINE="alphaev5"
+                               ;;
+                       14)
+                               UNAME_MACHINE="alphaev56"
+                               ;;
+                       10)
+                               UNAME_MACHINE="alphapca56"
+                               ;;
+                       16)
+                               UNAME_MACHINE="alphaev6"
+                               ;;
+                       esac
+
+                       objdump --private-headers dummy | \
+                         grep ld.so.1 > /dev/null
+                       if test "$?" = 0 ; then
+                               LIBC="libc1"
+                       fi
+               fi
+               rm -f dummy.s dummy
+               echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
+       elif test "${UNAME_MACHINE}" = "mips" ; then
+         cat >dummy.c <<EOF
+main(argc, argv)
+     int argc;
+     char *argv[];
+{
+#ifdef __MIPSEB__
+  printf ("%s-unknown-linux-gnu\n", argv[1]);
+#endif
+#ifdef __MIPSEL__
+  printf ("%sel-unknown-linux-gnu\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+         ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
+         rm -f dummy.c dummy
+       else
+         # Either a pre-BFD a.out linker (linux-gnuoldld)
+         # or one that does not give us useful --help.
+         # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
+         # If ld does not provide *any* "supported emulations:"
+         # that means it is gnuoldld.
+         echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
+         test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+
+         case "${UNAME_MACHINE}" in
+         i?86)
+           VENDOR=pc;
+           ;;
+         *)
+           VENDOR=unknown;
+           ;;
+         esac
          # Determine whether the default compiler is a.out or elf
          cat >dummy.c <<EOF
+#include <features.h>
 main(argc, argv)
-int argc;
-char *argv[];
+     int argc;
+     char *argv[];
 {
 #ifdef __ELF__
-  printf ("%s-pc-linux-gnu\n", argv[1]);
+# ifdef __GLIBC__
+#  if __GLIBC__ >= 2
+    printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
+#  else
+    printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+#  endif
+# else
+   printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+# endif
 #else
-  printf ("%s-pc-linux-gnuaout\n", argv[1]);
+  printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
 #endif
   return 0;
 }
@@ -452,6 +634,14 @@
     i?86:DYNIX/ptx:4*:*)
        echo i386-sequent-sysv4
        exit 0 ;;
+    i?86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit 0 ;;
     # SysVr5/Unixware7
     i?86:*:5*:* | i?86:SYSTEM_V:5*:*)
         if uname -a | grep SCO >/dev/null 2>/dev/null ; then
@@ -487,6 +677,11 @@
                echo ${UNAME_MACHINE}-pc-sysv32
        fi
        exit 0 ;;
+    pc:*:*:*)
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+       echo i386-pc-msdosdjgpp
+        exit 0 ;;
     Intel:Mach:3*:*)
        echo i386-pc-mach3
        exit 0 ;;
@@ -546,6 +741,10 @@
                echo ns32k-sni-sysv
        fi
        exit 0 ;;
+    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                           # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
     *:UNIX_System_V:4*:FTX*)
        # From Gerald Hewes <hewes@openmarket.com>.
        # How about differentiating between stratus architectures? -djm
@@ -558,16 +757,15 @@
     mc68*:A/UX:*:*)
        echo m68k-apple-aux${UNAME_RELEASE}
        exit 0 ;;
+    news*:NEWS-OS:*:6*)
+       echo mips-sony-newsos6
+       exit 0 ;;
     R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
        if [ -d /usr/nec ]; then
                echo mips-nec-sysv${UNAME_RELEASE}
        else
                echo mips-unknown-sysv${UNAME_RELEASE}
        fi
-        exit 0 ;;
-    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                           # says <Richard.M.Bartel@ccMail.Census.GOV>
-        echo i586-unisys-sysv4
         exit 0 ;;
 esac
 
Index: config.sub
--- xterm-89+/config.sub        Fri Sep 19 13:58:52 1997
+++ xterm-90/config.sub Mon Nov 16 18:10:22 1998
@@ -1,9 +1,6 @@
 #! /bin/sh
-#
-# $XFree86: xc/programs/xterm/config.sub,v 1.3 1997/09/19 12:29:31 hohndel Exp $
-#
 # Configuration validation subroutine script, version 1.1.
-#   Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
+#   Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
 # can handle that machine.  It does not imply ALL GNU software can.
@@ -152,19 +149,20 @@
 case $basic_machine in
        # Recognize the basic CPU types without company name.
        # Some are omitted here because they have special meanings below.
-       tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \
-               | arme[lb] | pyramid \
+       tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
+               | arme[lb] | pyramid | mn10200 | mn10300 \
                | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
-               | alpha | we32k | ns16k | clipper | i370 | sh \
-               | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \
-               | pdp11 | mips64el | mips64orion | mips64orionel \
-               | sparc | sparclet | sparclite | sparc64)
+               | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
+               | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
+               | mips64 | mipsel | mips64el | mips64orion | mips64orionel \
+               | mipstx39 | mipstx39el \
+               | sparc | sparclet | sparclite | sparc64 | v850)
                basic_machine=$basic_machine-unknown
                ;;
        # We use `pc' rather than `unknown'
        # because (1) that's what they normally are, and
        # (2) the word "unknown" tends to confuse beginning users.
-       i[3456]86)
+       i[34567]86)
          basic_machine=$basic_machine-pc
          ;;
        # Object if more than one company name word.
@@ -173,14 +171,18 @@
                exit 1
                ;;
        # Recognize the basic CPU types with company name.
-       vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \
-             | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
-             | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
-             | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
-             | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
-             | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
-             | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \
-             | mips64el-* | mips64orion-* | mips64orionel-* | f301-*)
+       vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
+             | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
+             | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
+             | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
+             | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \
+             | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
+             | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
+             | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
+             | sparc64-* | mips64-* | mipsel-* \
+             | mips64el-* | mips64orion-* | mips64orionel-*  \
+             | mipstx39-* | mipstx39el-* \
+             | f301-*)
                ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
@@ -207,9 +209,9 @@
        amiga | amiga-*)
                basic_machine=m68k-cbm
                ;;
-       amigados)
+       amigaos | amigados)
                basic_machine=m68k-cbm
-               os=-amigados
+               os=-amigaos
                ;;
        amigaunix | amix)
                basic_machine=m68k-cbm
@@ -347,20 +349,27 @@
                basic_machine=i370-ibm
                os=-mvs
                ;;
+       s390 | s390-ibm*) 
+# OS/390 support after: 
+#  Linkname: Mortice Kern Systems (MKS) Inc. - OS/390 OpenEdition -- GNU Utilities Downloads 
+#       URL: http://www.mks.com/s390/gnu/download.htm#autoconf 
+               basic_machine=s390-ibm  #  /* S/390 -- gil -- 1419 */ 
+               os=-os390 
+               ;; 
 # I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-       i[3456]86v32)
+       i[34567]86v32)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv32
                ;;
-       i[3456]86v4*)
+       i[34567]86v4*)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv4
                ;;
-       i[3456]86v)
+       i[34567]86v)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv
                ;;
-       i[3456]86sol2)
+       i[34567]86sol2)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-solaris2
                ;;
@@ -392,6 +401,14 @@
        miniframe)
                basic_machine=m68000-convergent
                ;;
+       mipsel*-linux*)
+               basic_machine=mipsel-unknown
+               os=-linux-gnu
+               ;;
+       mips*-linux*)
+               basic_machine=mips-unknown
+               os=-linux-gnu
+               ;;
        mips3*-*)
                basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
                ;;
@@ -459,25 +476,23 @@
         pc532 | pc532-*)
                basic_machine=ns32k-pc532
                ;;
-       pentium | p5)
-               basic_machine=i586-intel
+       pentium | p5 | k5 | nexen)
+               basic_machine=i586-pc
                ;;
-       pentiumpro | p6)
-               basic_machine=i686-intel
+       pentiumpro | p6 | k6 | 6x86)
+               basic_machine=i686-pc
                ;;
-       pentium-* | p5-*)
+       pentiumii | pentium2)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | nexen-*)
                basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       pentiumpro-* | p6-*)
+       pentiumpro-* | p6-* | k6-* | 6x86-*)
                basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       k5)
-               # We don't have specific support for AMD's K5 yet, so just call it a Pentium
-               basic_machine=i586-amd
-               ;;
-       nexen)
-               # We don't have specific support for Nexgen yet, so just call it a Pentium
-               basic_machine=i586-nexgen
+       pentiumii-* | pentium2-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        pn)
                basic_machine=pn-gould
@@ -561,6 +576,12 @@
                basic_machine=i386-sequent
                os=-dynix
                ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
        tower | tower-32)
                basic_machine=m68k-ncr
                ;;
@@ -580,7 +601,7 @@
                basic_machine=vax-dec
                os=-vms
                ;;
-       vpp*|vx|vx-*)
+       vpp*|vx|vx-*)
                basic_machine=f301-fujitsu
                ;;
        vxworks960)
@@ -610,7 +631,11 @@
 # Here we handle the default manufacturer of certain CPU types.  It is in
 # some cases the only manufacturer, in others, it is the most popular.
        mips)
-               basic_machine=mips-mips
+               if [ x$os = x-linux-gnu ]; then
+                       basic_machine=mips-unknown
+               else
+                       basic_machine=mips-mips
+               fi
                ;;
        romp)
                basic_machine=romp-ibm
@@ -671,9 +696,12 @@
        -solaris)
                os=-solaris2
                ;;
-       -unixware* | svr4*)
+       -svr4*)
                os=-sysv4
                ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
        -gnu/linux*)
                os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
                ;;
@@ -684,15 +712,17 @@
        -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
              | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
              | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-             | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* \
+             | -hms* | -mvs* | -os390* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
              | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -linux-gnu* | -uxpv*)
+             | -mingw32* | -linux-gnu* | -uxpv*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -linux*)
@@ -805,6 +835,9 @@
        sparc-* | *-sun)
                os=-sunos4.1.1
                ;;
+       s390-ibm)
+               os=-os390  #  /* S/390 -- gil -- 1451 */
+               ;;
        *-ibm)
                os=-aix
                ;;
@@ -818,7 +851,7 @@
                os=-sysv
                ;;
        *-cbm)
-               os=-amigados
+               os=-amigaos
                ;;
        *-dg)
                os=-dgux
Index: configure
--- xterm-89+/configure Sun Oct 25 13:31:39 1998
+++ xterm-90/configure  Wed Dec  9 21:19:36 1998
@@ -198,6 +198,8 @@
 EOF
 cat <<EOF
   --disable-doublechars   disable support for double-size chars (default: on)
+  --disable-boxchars      disable fallback-support for box chars (default: on)
+  --enable-hp-fkeys       enable support for HP-style function keys (default: off)
   --disable-input-method  disable input-method (default: on)
   --disable-i18n          disable internationalization (default: on)
   --enable-logging        enable logging (default: off)
@@ -207,10 +209,10 @@
   --disable-tek4014       disable tek4014 emulation (default: on)
   --disable-vt52          disable VT52 emulation (default: on)
   --disable-ziconbeep     disable -ziconbeep option (default: on)
-  --enable-trace          test: set to enable debugging traces (default: off)
-  --disable-echo          test: display "compiling" commands (default: on)
 EOF
 cat <<EOF
+  --enable-trace          test: set to enable debugging traces (default: off)
+  --disable-echo          test: display "compiling" commands (default: on)
   --enable-xmc-glitch     test: enable xmc magic-cookie emulation (default: off)
   --enable-warnings       test: turn on GCC compiler warnings (default: off)
 EOF
@@ -578,7 +580,7 @@
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:582: checking host system type" >&5
+echo "configure:584: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -629,7 +631,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:633: checking for $ac_word" >&5
+echo "configure:635: 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
@@ -658,7 +660,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:662: checking for $ac_word" >&5
+echo "configure:664: 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
@@ -706,7 +708,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:710: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:712: 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.
@@ -716,11 +718,11 @@
 cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext <<EOF
-#line 720 "configure"
+#line 722 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:726: \"$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
@@ -740,12 +742,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:744: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:746: 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:749: checking whether we are using GNU C" >&5
+echo "configure:751: 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
@@ -754,7 +756,7 @@
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:758: \"$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:760: \"$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
@@ -769,7 +771,7 @@
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS=
   echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:773: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:775: 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
@@ -797,7 +799,7 @@
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:801: checking how to run the C preprocessor" >&5
+echo "configure:803: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -812,13 +814,13 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 816 "configure"
+#line 818 "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:822: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:824: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -829,13 +831,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 833 "configure"
+#line 835 "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:839: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:841: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -859,13 +861,13 @@
 
 if test $ac_cv_prog_gcc = yes; then
     echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:863: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:865: 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 869 "configure"
+#line 871 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
@@ -883,7 +885,7 @@
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat > conftest.$ac_ext <<EOF
-#line 887 "configure"
+#line 889 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
@@ -915,7 +917,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:919: checking for a BSD compatible install" >&5
+echo "configure:921: 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
@@ -967,9 +969,9 @@
 
 ###    checks for UNIX variants that set C preprocessor variables
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:971: checking for AIX" >&5
+echo "configure:973: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 973 "configure"
+#line 975 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -991,7 +993,7 @@
 
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:995: checking for POSIXized ISC" >&5
+echo "configure:997: 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
@@ -1013,17 +1015,17 @@
 
 ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-echo "configure:1017: checking for minix/config.h" >&5
+echo "configure:1019: 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 1022 "configure"
+#line 1024 "configure"
 #include "confdefs.h"
 #include <minix/config.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1027: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1029: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1066,17 +1068,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1070: checking for $ac_hdr" >&5
+echo "configure:1072: 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 1075 "configure"
+#line 1077 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1080: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1106,13 +1108,13 @@
 ###    checks for typedefs
 
 echo $ac_n "checking for size_t in <sys/types.h> or <stdio.h>""... $ac_c" 1>&6
-echo "configure:1110: checking for size_t in <sys/types.h> or <stdio.h>" >&5
+echo "configure:1112: checking for size_t in <sys/types.h> or <stdio.h>" >&5
 if eval "test \"`echo '$''{'cf_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 1116 "configure"
+#line 1118 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1125,7 +1127,7 @@
 size_t x
 ; return 0; }
 EOF
-if { (eval echo configure:1129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1131: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_size_t=yes
 else
@@ -1145,12 +1147,12 @@
 
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1149: checking for ANSI C header files" >&5
+echo "configure:1151: 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 1154 "configure"
+#line 1156 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1158,7 +1160,7 @@
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1162: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1164: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1175,7 +1177,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 1179 "configure"
+#line 1181 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1193,7 +1195,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 1197 "configure"
+#line 1199 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1214,7 +1216,7 @@
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1218 "configure"
+#line 1220 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1225,7 +1227,7 @@
 exit (0); }
 
 EOF
-if { (eval echo configure:1229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1249,12 +1251,12 @@
 fi
 
 echo $ac_n "checking for time_t""... $ac_c" 1>&6
-echo "configure:1253: checking for time_t" >&5
+echo "configure:1255: 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 1258 "configure"
+#line 1260 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1291,12 +1293,12 @@
        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1295: checking for $ac_func" >&5
+echo "configure:1297: 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 1300 "configure"
+#line 1302 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1319,7 +1321,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -1345,12 +1347,12 @@
 
 
 echo $ac_n "checking for memmove""... $ac_c" 1>&6
-echo "configure:1349: checking for memmove" >&5
+echo "configure:1351: checking for memmove" >&5
 if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1354 "configure"
+#line 1356 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char memmove(); below.  */
@@ -1373,7 +1375,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_memmove=yes"
 else
@@ -1392,12 +1394,12 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for bcopy""... $ac_c" 1>&6
-echo "configure:1396: checking for bcopy" >&5
+echo "configure:1398: checking for bcopy" >&5
 if eval "test \"`echo '$''{'ac_cv_func_bcopy'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1401 "configure"
+#line 1403 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char bcopy(); below.  */
@@ -1420,7 +1422,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_bcopy=yes"
 else
@@ -1436,7 +1438,7 @@
   echo "$ac_t""yes" 1>&6
   
        echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6
-echo "configure:1440: checking if bcopy does overlapping moves" >&5
+echo "configure:1442: 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
@@ -1445,7 +1447,7 @@
   cf_cv_good_bcopy=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 1449 "configure"
+#line 1451 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1458,7 +1460,7 @@
 }
                
 EOF
-if { (eval echo configure:1462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   cf_cv_good_bcopy=yes
 else
@@ -1496,7 +1498,7 @@
 
 
 echo $ac_n "checking for full tgetent function""... $ac_c" 1>&6
-echo "configure:1500: checking for full tgetent function" >&5
+echo "configure:1502: checking for full tgetent function" >&5
 if eval "test \"`echo '$''{'cf_cv_lib_tgetent'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1511,7 +1513,7 @@
   echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&5
 else
   cat > conftest.$ac_ext <<EOF
-#line 1515 "configure"
+#line 1517 "configure"
 #include "confdefs.h"
 
 /* terminfo implementations ignore the buffer argument, making it useless for
@@ -1525,7 +1527,7 @@
        tgetent(buffer, "vt100");
        exit(buffer[0] == 0); }
 EOF
-if { (eval echo configure:1529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1531: \"$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 in $cf_termlib" 1>&5
         if test -n "$cf_termlib" ; then
@@ -1560,17 +1562,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1564: checking for $ac_hdr" >&5
+echo "configure:1566: 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 1569 "configure"
+#line 1571 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1576: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1603,7 +1605,7 @@
         # validate values for the TERM environment variable given to
         # child processes.
        echo $ac_n "checking for partial tgetent function""... $ac_c" 1>&6
-echo "configure:1607: checking for partial tgetent function" >&5
+echo "configure:1609: checking for partial tgetent function" >&5
 if eval "test \"`echo '$''{'cf_cv_lib_part_tgetent'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1612,14 +1614,14 @@
        for cf_termlib in $cf_TERMLIB ; do
                LIBS="$cf_save_LIBS -l$cf_termlib"
                cat > conftest.$ac_ext <<EOF
-#line 1616 "configure"
+#line 1618 "configure"
 #include "confdefs.h"
 
 int main() {
 tgetent(0, 0)
 ; return 0; }
 EOF
-if { (eval echo configure:1623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "there is a terminfo/tgetent in $cf_termlib" 1>&5
                         cf_cv_lib_part_tgetent="-l$cf_termlib"
@@ -1642,17 +1644,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1646: checking for $ac_hdr" >&5
+echo "configure:1648: 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 1651 "configure"
+#line 1653 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 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:1658: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1692,13 +1694,13 @@
 ###    checks for structures
 
 echo $ac_n "checking for declaration of fd_set""... $ac_c" 1>&6
-echo "configure:1696: checking for declaration of fd_set" >&5
+echo "configure:1698: checking for declaration of fd_set" >&5
 if eval "test \"`echo '$''{'cf_cv_type_fd_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 1702 "configure"
+#line 1704 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1706,7 +1708,7 @@
 fd_set x
 ; return 0; }
 EOF
-if { (eval echo configure:1710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1712: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_fd_set=sys/types.h
 else
@@ -1714,7 +1716,7 @@
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 1718 "configure"
+#line 1720 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1723,7 +1725,7 @@
 fd_set x
 ; return 0; }
 EOF
-if { (eval echo configure:1727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1729: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_fd_set=sys/select.h
 else
@@ -1750,13 +1752,13 @@
 
 
 echo $ac_n "checking declaration of errno""... $ac_c" 1>&6
-echo "configure:1754: checking declaration of errno" >&5
+echo "configure:1756: checking declaration of errno" >&5
 if eval "test \"`echo '$''{'cf_cv_dcl_errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 1760 "configure"
+#line 1762 "configure"
 #include "confdefs.h"
 
 #if HAVE_STDLIB_H
@@ -1769,7 +1771,7 @@
 long x = (long) errno
 ; return 0; }
 EOF
-if { (eval echo configure:1773: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval 'cf_cv_dcl_'errno'=yes'
 else
@@ -1799,9 +1801,9 @@
 EOF
 
     echo $ac_n "checking existence of errno""... $ac_c" 1>&6
-echo "configure:1803: checking existence of errno" >&5
+echo "configure:1805: checking existence of errno" >&5
         cat > conftest.$ac_ext <<EOF
-#line 1805 "configure"
+#line 1807 "configure"
 #include "confdefs.h"
 
 #undef errno
@@ -1811,7 +1813,7 @@
 errno = 2
 ; return 0; }
 EOF
-if { (eval echo configure:1815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval 'cf_cv_have_'errno'=yes'
 else
@@ -1842,12 +1844,12 @@
 
 ###    checks for compiler characteristics
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1846: checking for working const" >&5
+echo "configure:1848: 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 1851 "configure"
+#line 1853 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1896,7 +1898,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1902: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -1918,7 +1920,7 @@
 
 
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:1922: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:1924: 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
@@ -1942,7 +1944,7 @@
 do
        CFLAGS="$cf_save_CFLAGS $cf_arg"
        cat > conftest.$ac_ext <<EOF
-#line 1946 "configure"
+#line 1948 "configure"
 #include "confdefs.h"
 
 #ifndef CC_HAS_PROTOS
@@ -1958,7 +1960,7 @@
        struct s2 {int (*f) (double a);};
 ; return 0; }
 EOF
-if { (eval echo configure:1962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ansi_cc="$cf_arg"; break
 else
@@ -1988,12 +1990,12 @@
 ###    checks for system services and user specified options
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:1992: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:1994: checking for sys/wait.h that is POSIX.1 compatible" >&5
 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1997 "configure"
+#line 1999 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -2009,7 +2011,7 @@
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:2013: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -2035,7 +2037,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:2039: checking for X" >&5
+echo "configure:2041: checking for X" >&5
 
 
 # Check whether --with-x or --without-x was given.
@@ -2098,12 +2100,12 @@
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 2102 "configure"
+#line 2104 "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:2107: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2172,14 +2174,14 @@
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2176 "configure"
+#line 2178 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:2183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2185: \"$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.
@@ -2279,7 +2281,7 @@
        # FIXME: modify the library lookup in autoconf to
        # allow _s.a suffix ahead of .a
        echo $ac_n "checking for open in -lc_s""... $ac_c" 1>&6
-echo "configure:2283: checking for open in -lc_s" >&5
+echo "configure:2285: checking for open in -lc_s" >&5
 ac_lib_var=`echo c_s'_'open | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2287,7 +2289,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lc_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2291 "configure"
+#line 2293 "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
@@ -2298,7 +2300,7 @@
 open()
 ; 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:2304: \"$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
@@ -2315,7 +2317,7 @@
   echo "$ac_t""yes" 1>&6
   LIBS="-lc_s $LIBS"
        echo $ac_n "checking for gethostname in -lbsd""... $ac_c" 1>&6
-echo "configure:2319: checking for gethostname in -lbsd" >&5
+echo "configure:2321: checking for gethostname in -lbsd" >&5
 ac_lib_var=`echo bsd'_'gethostname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2323,7 +2325,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lbsd  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2327 "configure"
+#line 2329 "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
@@ -2334,7 +2336,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:2338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2340: \"$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
@@ -2351,7 +2353,7 @@
   echo "$ac_t""yes" 1>&6
   LIBS="-lbsd $LIBS"
        echo $ac_n "checking for gethostname in -lnsl_s""... $ac_c" 1>&6
-echo "configure:2355: checking for gethostname in -lnsl_s" >&5
+echo "configure:2357: checking for gethostname in -lnsl_s" >&5
 ac_lib_var=`echo nsl_s'_'gethostname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2359,7 +2361,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2363 "configure"
+#line 2365 "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
@@ -2370,7 +2372,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:2374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2376: \"$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
@@ -2387,7 +2389,7 @@
   echo "$ac_t""yes" 1>&6
   LIBS="-lnsl_s $LIBS"
        echo $ac_n "checking for XOpenDisplay in -lX11_s""... $ac_c" 1>&6
-echo "configure:2391: checking for XOpenDisplay in -lX11_s" >&5
+echo "configure:2393: checking for XOpenDisplay in -lX11_s" >&5
 ac_lib_var=`echo X11_s'_'XOpenDisplay | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2395,7 +2397,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lX11_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2399 "configure"
+#line 2401 "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
@@ -2406,7 +2408,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:2410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2412: \"$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
@@ -2423,7 +2425,7 @@
   echo "$ac_t""yes" 1>&6
   LIBS="-lX11_s $LIBS"
        echo $ac_n "checking for XtAppInitialize in -lXt_s""... $ac_c" 1>&6
-echo "configure:2427: checking for XtAppInitialize in -lXt_s" >&5
+echo "configure:2429: checking for XtAppInitialize in -lXt_s" >&5
 ac_lib_var=`echo Xt_s'_'XtAppInitialize | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2431,7 +2433,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXt_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2435 "configure"
+#line 2437 "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
@@ -2442,7 +2444,7 @@
 XtAppInitialize()
 ; return 0; }
 EOF
-if { (eval echo configure:2446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2448: \"$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
@@ -2483,7 +2485,7 @@
        ;;
 *)
        echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:2487: checking for socket in -lsocket" >&5
+echo "configure:2489: checking for socket in -lsocket" >&5
 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2491,7 +2493,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2495 "configure"
+#line 2497 "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
@@ -2502,7 +2504,7 @@
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:2506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2508: \"$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
@@ -2530,7 +2532,7 @@
 fi
 
        echo $ac_n "checking for gethostname in -lnsl""... $ac_c" 1>&6
-echo "configure:2534: checking for gethostname in -lnsl" >&5
+echo "configure:2536: checking for gethostname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2538,7 +2540,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2542 "configure"
+#line 2544 "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
@@ -2549,7 +2551,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:2553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2555: \"$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
@@ -2600,17 +2602,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:2604: checking whether -R must be followed by a space" >&5
+echo "configure:2606: 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 2607 "configure"
+#line 2609 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; 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:2616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -2626,14 +2628,14 @@
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 2630 "configure"
+#line 2632 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -2665,7 +2667,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:2669: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:2671: 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
@@ -2673,7 +2675,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2677 "configure"
+#line 2679 "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
@@ -2684,7 +2686,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:2688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2690: \"$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
@@ -2706,7 +2708,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:2710: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:2712: 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
@@ -2714,7 +2716,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet_stub  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2718 "configure"
+#line 2720 "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
@@ -2725,7 +2727,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:2729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2731: \"$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
@@ -2754,12 +2756,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:2758: checking for gethostbyname" >&5
+echo "configure:2760: 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 2763 "configure"
+#line 2765 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -2782,7 +2784,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_gethostbyname=yes"
 else
@@ -2803,7 +2805,7 @@
 
     if test $ac_cv_func_gethostbyname = no; then
       echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:2807: checking for gethostbyname in -lnsl" >&5
+echo "configure:2809: 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
@@ -2811,7 +2813,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2815 "configure"
+#line 2817 "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
@@ -2822,7 +2824,7 @@
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:2826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2828: \"$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
@@ -2852,12 +2854,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:2856: checking for connect" >&5
+echo "configure:2858: 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 2861 "configure"
+#line 2863 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -2880,7 +2882,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_connect=yes"
 else
@@ -2901,7 +2903,7 @@
 
     if test $ac_cv_func_connect = no; then
       echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:2905: checking for connect in -lsocket" >&5
+echo "configure:2907: 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
@@ -2909,7 +2911,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2913 "configure"
+#line 2915 "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
@@ -2920,7 +2922,7 @@
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:2924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2926: \"$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
@@ -2944,12 +2946,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:2948: checking for remove" >&5
+echo "configure:2950: 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 2953 "configure"
+#line 2955 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -2972,7 +2974,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_remove=yes"
 else
@@ -2993,7 +2995,7 @@
 
     if test $ac_cv_func_remove = no; then
       echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:2997: checking for remove in -lposix" >&5
+echo "configure:2999: 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
@@ -3001,7 +3003,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3005 "configure"
+#line 3007 "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
@@ -3012,7 +3014,7 @@
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:3016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3018: \"$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
@@ -3036,12 +3038,12 @@
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:3040: checking for shmat" >&5
+echo "configure:3042: 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 3045 "configure"
+#line 3047 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -3064,7 +3066,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3070: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_shmat=yes"
 else
@@ -3085,7 +3087,7 @@
 
     if test $ac_cv_func_shmat = no; then
       echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:3089: checking for shmat in -lipc" >&5
+echo "configure:3091: 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
@@ -3093,7 +3095,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lipc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3097 "configure"
+#line 3099 "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
@@ -3104,7 +3106,7 @@
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:3108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3110: \"$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
@@ -3137,7 +3139,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:3141: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:3143: 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
@@ -3145,7 +3147,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lICE  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3149 "configure"
+#line 3151 "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
@@ -3156,7 +3158,7 @@
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:3160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3162: \"$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
@@ -3183,7 +3185,7 @@
        LDFLAGS="$LDFLAGS $X_LIBS"
        CFLAGS="$CFLAGS $X_CFLAGS"
        echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:3187: checking for XOpenDisplay in -lX11" >&5
+echo "configure:3189: 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
@@ -3191,7 +3193,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3195 "configure"
+#line 3197 "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
@@ -3202,7 +3204,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:3206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3208: \"$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
@@ -3223,7 +3225,7 @@
 fi
 
        echo $ac_n "checking for XtAppInitialize in -lXt""... $ac_c" 1>&6
-echo "configure:3227: checking for XtAppInitialize in -lXt" >&5
+echo "configure:3229: 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
@@ -3231,7 +3233,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3235 "configure"
+#line 3237 "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
@@ -3242,7 +3244,7 @@
 XtAppInitialize()
 ; return 0; }
 EOF
-if { (eval echo configure:3246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3248: \"$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
@@ -3298,17 +3300,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3302: checking for $ac_hdr" >&5
+echo "configure:3304: 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 3307 "configure"
+#line 3309 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3312: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3314: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3358,17 +3360,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3362: checking for $ac_hdr" >&5
+echo "configure:3364: 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 3367 "configure"
+#line 3369 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3372: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3374: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3396,7 +3398,7 @@
 
 
 echo $ac_n "checking for XmuClientWindow in -lXmu""... $ac_c" 1>&6
-echo "configure:3400: checking for XmuClientWindow in -lXmu" >&5
+echo "configure:3402: 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
@@ -3404,7 +3406,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXmu  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3408 "configure"
+#line 3410 "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
@@ -3415,7 +3417,7 @@
 XmuClientWindow()
 ; return 0; }
 EOF
-if { (eval echo configure:3419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3421: \"$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
@@ -3442,7 +3444,7 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for XmuClientWindow in -lXmu_s""... $ac_c" 1>&6
-echo "configure:3446: checking for XmuClientWindow in -lXmu_s" >&5
+echo "configure:3448: checking for XmuClientWindow in -lXmu_s" >&5
 ac_lib_var=`echo Xmu_s'_'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
@@ -3450,7 +3452,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXmu_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3454 "configure"
+#line 3456 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3461,7 +3463,7 @@
 XmuClientWindow()
 ; return 0; }
 EOF
-if { (eval echo configure:3465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3467: \"$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
@@ -3492,7 +3494,7 @@
 
 
 echo $ac_n "checking for XextCreateExtension in -lXext""... $ac_c" 1>&6
-echo "configure:3496: checking for XextCreateExtension in -lXext" >&5
+echo "configure:3498: 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
@@ -3500,7 +3502,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXext  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3504 "configure"
+#line 3506 "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
@@ -3511,7 +3513,7 @@
 XextCreateExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:3515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3517: \"$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
@@ -3533,7 +3535,7 @@
 
 
 echo $ac_n "checking for XawSimpleMenuAddGlobalActions in -l$cf_x_athena""... $ac_c" 1>&6
-echo "configure:3537: checking for XawSimpleMenuAddGlobalActions in -l$cf_x_athena" >&5
+echo "configure:3539: checking for XawSimpleMenuAddGlobalActions in -l$cf_x_athena" >&5
 ac_lib_var=`echo $cf_x_athena'_'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
@@ -3541,7 +3543,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-l$cf_x_athena  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3545 "configure"
+#line 3547 "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
@@ -3552,7 +3554,7 @@
 XawSimpleMenuAddGlobalActions()
 ; return 0; }
 EOF
-if { (eval echo configure:3556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3558: \"$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
@@ -3572,7 +3574,7 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for XawSimpleMenuAddGlobalActions in -l${cf_x_athena}_s""... $ac_c" 1>&6
-echo "configure:3576: checking for XawSimpleMenuAddGlobalActions in -l${cf_x_athena}_s" >&5
+echo "configure:3578: checking for XawSimpleMenuAddGlobalActions in -l${cf_x_athena}_s" >&5
 ac_lib_var=`echo ${cf_x_athena}_s'_'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
@@ -3580,7 +3582,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-l${cf_x_athena}_s $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3584 "configure"
+#line 3586 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3591,7 +3593,7 @@
 XawSimpleMenuAddGlobalActions()
 ; return 0; }
 EOF
-if { (eval echo configure:3595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3597: \"$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
@@ -3631,7 +3633,7 @@
 # Extract the first word of "xterm", so it can be a program name with args.
 set dummy xterm; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3635: checking for $ac_word" >&5
+echo "configure:3637: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XTERM_PATH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3661,7 +3663,7 @@
 
 XTERM_MODE=755
 echo $ac_n "checking for presumed installation-mode""... $ac_c" 1>&6
-echo "configure:3665: checking for presumed installation-mode" >&5
+echo "configure:3667: checking for presumed installation-mode" >&5
 if test -f "$XTERM_PATH" ; then
        ls -l $XTERM_PATH >conftest.out
        read cf_mode cf_rest <conftest.out
@@ -3680,12 +3682,12 @@
        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3684: checking for $ac_func" >&5
+echo "configure:3686: 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 3689 "configure"
+#line 3691 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3708,7 +3710,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3734,7 +3736,7 @@
 
 
 echo $ac_n "checking if we should use imake to help""... $ac_c" 1>&6
-echo "configure:3738: checking if we should use imake to help" >&5
+echo "configure:3740: 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
@@ -3759,7 +3761,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:3763: checking for $ac_word" >&5
+echo "configure:3765: 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
@@ -3894,7 +3896,7 @@
 
 
 echo $ac_n "checking for default terminal-id""... $ac_c" 1>&6
-echo "configure:3898: checking for default terminal-id" >&5
+echo "configure:3900: 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
@@ -3915,7 +3917,7 @@
 
 
 echo $ac_n "checking for default terminal-type""... $ac_c" 1>&6
-echo "configure:3919: checking for default terminal-type" >&5
+echo "configure:3921: checking for default terminal-type" >&5
 
 # Check whether --with-terminal-type or --without-terminal-type was given.
 if test "${with_terminal_type+set}" = set; then
@@ -3932,7 +3934,7 @@
 
 
 echo $ac_n "checking for private terminfo-directory""... $ac_c" 1>&6
-echo "configure:3936: checking for private terminfo-directory" >&5
+echo "configure:3938: checking for private terminfo-directory" >&5
 
 # Check whether --with-own-terminfo or --without-own-terminfo was given.
 if test "${with_own_terminfo+set}" = set; then
@@ -3957,7 +3959,7 @@
 
 ###    checks for optional features
 echo $ac_n "checking if you want active-icons""... $ac_c" 1>&6
-echo "configure:3961: checking if you want active-icons" >&5
+echo "configure:3963: 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
@@ -3983,7 +3985,7 @@
 fi
 
 echo $ac_n "checking if you want ANSI color""... $ac_c" 1>&6
-echo "configure:3987: checking if you want ANSI color" >&5
+echo "configure:3989: 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
@@ -4007,7 +4009,7 @@
 
 
 echo $ac_n "checking if you want 16 colors like aixterm""... $ac_c" 1>&6
-echo "configure:4011: checking if you want 16 colors like aixterm" >&5
+echo "configure:4013: 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
@@ -4031,7 +4033,7 @@
 
 
 echo $ac_n "checking if you want bold colors mapped like IBM PC""... $ac_c" 1>&6
-echo "configure:4035: checking if you want bold colors mapped like IBM PC" >&5
+echo "configure:4037: checking if you want bold colors mapped like IBM PC" >&5
 
 # Check whether --enable-bold-color or --disable-bold-color was given.
 if test "${enable_bold_color+set}" = set; then
@@ -4055,7 +4057,7 @@
 
 
 echo $ac_n "checking if you want color-mode enabled by default""... $ac_c" 1>&6
-echo "configure:4059: checking if you want color-mode enabled by default" >&5
+echo "configure:4061: checking if you want color-mode enabled by default" >&5
 
 # Check whether --enable-color-mode or --disable-color-mode was given.
 if test "${enable_color_mode+set}" = set; then
@@ -4079,7 +4081,7 @@
 
 
 echo $ac_n "checking if you want support for color highlighting""... $ac_c" 1>&6
-echo "configure:4083: checking if you want support for color highlighting" >&5
+echo "configure:4085: checking if you want support for color highlighting" >&5
 
 # Check whether --enable-highlighting or --disable-highlighting was given.
 if test "${enable_highlighting+set}" = set; then
@@ -4103,7 +4105,7 @@
 
 
 echo $ac_n "checking if you want support for doublesize characters""... $ac_c" 1>&6
-echo "configure:4107: checking if you want support for doublesize characters" >&5
+echo "configure:4109: checking if you want support for doublesize characters" >&5
 
 # Check whether --enable-doublechars or --disable-doublechars was given.
 if test "${enable_doublechars+set}" = set; then
@@ -4126,8 +4128,58 @@
 EOF
 
 
+echo $ac_n "checking if you want fallback-support for box characters""... $ac_c" 1>&6
+echo "configure:4133: checking if you want fallback-support for box characters" >&5
+
+# Check whether --enable-boxchars or --disable-boxchars was given.
+if test "${enable_boxchars+set}" = set; then
+  enableval="$enable_boxchars"
+  test "$enableval" != no && enableval=yes
+  if test "$enableval" != "yes" ; then
+    enable_boxchars=no 
+  else
+    enable_boxchars=yes
+  fi
+else
+  enableval=yes 
+  enable_boxchars=yes
+  
+fi
+
+echo "$ac_t""$enable_boxchars" 1>&6
+test $enable_boxchars = no && cat >> confdefs.h <<\EOF
+#define OPT_BOX_CHARS 0
+EOF
+
+
+echo $ac_n "checking if you want support for HP-style function keys""... $ac_c" 1>&6
+echo "configure:4157: checking if you want support for HP-style function keys" >&5
+
+# Check whether --enable-hp-fkeys or --disable-hp-fkeys was given.
+if test "${enable_hp_fkeys+set}" = set; then
+  enableval="$enable_hp_fkeys"
+  test "$enableval" != yes && enableval=no
+  if test "$enableval" != "no" ; then
+    enable_hp_fkeys=yes 
+  else
+    enable_hp_fkeys=no
+  fi
+else
+  enableval=no 
+  enable_hp_fkeys=no
+  
+fi
+
+echo "$ac_t""$enable_hp_fkeys" 1>&6
+if test $enable_hp_fkeys = yes ; then
+       cat >> confdefs.h <<\EOF
+#define OPT_HP_FUNC_KEYS 1
+EOF
+
+fi
+
 echo $ac_n "checking if you want support for input-method""... $ac_c" 1>&6
-echo "configure:4131: checking if you want support for input-method" >&5
+echo "configure:4183: 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
@@ -4153,7 +4205,7 @@
 fi
 
 echo $ac_n "checking if you want support for internationalization""... $ac_c" 1>&6
-echo "configure:4157: checking if you want support for internationalization" >&5
+echo "configure:4209: checking if you want support for internationalization" >&5
 
 # Check whether --enable-i18n or --disable-i18n was given.
 if test "${enable_i18n+set}" = set; then
@@ -4179,7 +4231,7 @@
 fi
 
 echo $ac_n "checking if you want support for logging""... $ac_c" 1>&6
-echo "configure:4183: checking if you want support for logging" >&5
+echo "configure:4235: checking if you want support for logging" >&5
 
 # Check whether --enable-logging or --disable-logging was given.
 if test "${enable_logging+set}" = set; then
@@ -4203,7 +4255,7 @@
 EOF
 
        echo $ac_n "checking if you want to allow logging via a pipe""... $ac_c" 1>&6
-echo "configure:4207: checking if you want to allow logging via a pipe" >&5
+echo "configure:4259: checking if you want to allow logging via a pipe" >&5
        
 # Check whether --enable-logfile-exec or --disable-logfile-exec was given.
 if test "${enable_logfile_exec+set}" = set; then
@@ -4230,7 +4282,7 @@
 fi
 
 echo $ac_n "checking if you want support for right-scrollbar""... $ac_c" 1>&6
-echo "configure:4234: checking if you want support for right-scrollbar" >&5
+echo "configure:4286: checking if you want support for right-scrollbar" >&5
 
 # Check whether --enable-rightbar or --disable-rightbar was given.
 if test "${enable_rightbar+set}" = set; then
@@ -4256,7 +4308,7 @@
 fi
 
 echo $ac_n "checking if you want check for redundant name-change""... $ac_c" 1>&6
-echo "configure:4260: checking if you want check for redundant name-change" >&5
+echo "configure:4312: checking if you want check for redundant name-change" >&5
 
 # Check whether --enable-samename or --disable-samename was given.
 if test "${enable_samename+set}" = set; then
@@ -4280,7 +4332,7 @@
 
 
 echo $ac_n "checking if you want support for tek4014""... $ac_c" 1>&6
-echo "configure:4284: checking if you want support for tek4014" >&5
+echo "configure:4336: checking if you want support for tek4014" >&5
 
 # Check whether --enable-tek4014 or --disable-tek4014 was given.
 if test "${enable_tek4014+set}" = set; then
@@ -4310,7 +4362,7 @@
 fi
 
 echo $ac_n "checking if you want VT52 emulation""... $ac_c" 1>&6
-echo "configure:4314: checking if you want VT52 emulation" >&5
+echo "configure:4366: checking if you want VT52 emulation" >&5
 
 # Check whether --enable-vt52 or --disable-vt52 was given.
 if test "${enable_vt52+set}" = set; then
@@ -4334,7 +4386,7 @@
 
 
 echo $ac_n "checking if you want -ziconbeep option""... $ac_c" 1>&6
-echo "configure:4338: checking if you want -ziconbeep option" >&5
+echo "configure:4390: checking if you want -ziconbeep option" >&5
 
 # Check whether --enable-ziconbeep or --disable-ziconbeep was given.
 if test "${enable_ziconbeep+set}" = set; then
@@ -4359,7 +4411,7 @@
 
 # development/testing aids
 echo $ac_n "checking if you want debugging traces""... $ac_c" 1>&6
-echo "configure:4363: checking if you want debugging traces" >&5
+echo "configure:4415: checking if you want debugging traces" >&5
 
 # Check whether --enable-trace or --disable-trace was given.
 if test "${enable_trace+set}" = set; then
@@ -4388,7 +4440,7 @@
 
 
 echo $ac_n "checking if you want to see long compiling messages""... $ac_c" 1>&6
-echo "configure:4392: checking if you want to see long compiling messages" >&5
+echo "configure:4444: 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
@@ -4428,7 +4480,7 @@
 
 
 echo $ac_n "checking if you want magic cookie emulation""... $ac_c" 1>&6
-echo "configure:4432: checking if you want magic cookie emulation" >&5
+echo "configure:4484: 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
@@ -4457,7 +4509,7 @@
 
 if test -n "$GCC" ; then
 echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6
-echo "configure:4461: checking if you want to turn on gcc warnings" >&5
+echo "configure:4513: 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
@@ -4497,9 +4549,9 @@
 if test -n "$GCC"
 then
        echo "checking for gcc __attribute__ directives" 1>&6
-echo "configure:4501: checking for gcc __attribute__ directives" >&5
+echo "configure:4553: checking for gcc __attribute__ directives" >&5
        cat > conftest.$ac_ext <<EOF
-#line 4503 "configure"
+#line 4555 "configure"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -4537,7 +4589,7 @@
 EOF
                        ;;
                esac
-               if { (eval echo configure:4541: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:4593: \"$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
@@ -4554,11 +4606,11 @@
 if test -n "$GCC"
 then
                cat > conftest.$ac_ext <<EOF
-#line 4558 "configure"
+#line 4610 "configure"
 int main(int argc, char *argv[]) { return argv[argc-1] == 0; }
 EOF
                echo "checking for gcc warning options" 1>&6
-echo "configure:4562: checking for gcc warning options" >&5
+echo "configure:4614: checking for gcc warning options" >&5
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="-W -Wall"
        cf_warn_CONST=""
@@ -4576,7 +4628,7 @@
                Wstrict-prototypes $cf_warn_CONST
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo configure:4580: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:4632: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
                        test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6
                        EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
                        test "$cf_opt" = Wcast-qual && EXTRA_CFLAGS="$EXTRA_CFLAGS -DXTSTRINGDEFINES"
Index: configure.in
--- xterm-89+/configure.in      Sun Aug 30 06:43:03 1998
+++ xterm-90/configure.in       Wed Dec  9 21:13:15 1998
@@ -210,6 +210,24 @@
 AC_MSG_RESULT($enable_doublechars)
 test $enable_doublechars = no && AC_DEFINE(OPT_DEC_CHRSET,0)
 
+AC_MSG_CHECKING(if you want fallback-support for box characters)
+CF_ARG_DISABLE(boxchars,
+       [  --disable-boxchars      disable fallback-support for box chars],
+       [enable_boxchars=no],
+       [enable_boxchars=yes])
+AC_MSG_RESULT($enable_boxchars)
+test $enable_boxchars = no && AC_DEFINE(OPT_BOX_CHARS,0)
+
+AC_MSG_CHECKING(if you want support for HP-style function keys)
+CF_ARG_ENABLE(hp-fkeys,
+       [  --enable-hp-fkeys       enable support for HP-style function keys],
+       [enable_hp_fkeys=yes],
+       [enable_hp_fkeys=no])
+AC_MSG_RESULT($enable_hp_fkeys)
+if test $enable_hp_fkeys = yes ; then
+       AC_DEFINE(OPT_HP_FUNC_KEYS,1)
+fi
+
 AC_MSG_CHECKING(if you want support for input-method)
 CF_ARG_DISABLE(input-method,
        [  --disable-input-method  disable input-method],
Index: ctlseqs.ms
--- xterm-89+/ctlseqs.ms        Sun Aug 30 06:43:03 1998
+++ xterm-90/ctlseqs.ms Wed Dec  9 21:23:49 1998
@@ -325,7 +325,8 @@
 .
 .IP \\*(En
 Return Terminal Status (Ctrl-E).
-Response is the terminal name, e.g., "xterm".
+Default response is the terminal name, e.g., "xterm", but may be overridden
+by a resource \fIanswerbackString\fP.
 .
 .IP \\*(Ff
 Form Feed or New Page (NP) (Ctrl-L) same as LF
@@ -794,6 +795,9 @@
 disabled by the \fBtiteInhibit\fP resource)
   \*(Ps = \*1\*0\*4\*8 \(-> Save cursor as in DECSC (unless
 disabled by the \fBtiteInhibit\fP resource)
+  \*(Ps = \*1\*0\*4\*9 \(-> Save cursor as in DECSC
+and use Alternate Screen Buffer, clearing it first (unless
+disabled by the \fBtiteInhibit\fP resource)
 .
 .IP \\*(Cs\\*?\\*(Pm\\*s\\*l
 DEC Private Mode Reset (DECRST)
@@ -828,6 +832,9 @@
 first if in the Alternate Screen (unless
 disabled by the \fBtiteInhibit\fP resource)
   \*(Ps = \*1\*0\*4\*8 \(-> Restore cursor as in DECRC (unless
+disabled by the \fBtiteInhibit\fP resource)
+  \*(Ps = \*1\*0\*4\*9 \(-> Use Normal Screen Buffer and restore cursor
+as in DECRC (unless
 disabled by the \fBtiteInhibit\fP resource)
 .
 .IP \\*(Cs\\*?\\*(Pm\\*s\\*r
Index: cursor.c
--- xterm-89+/cursor.c  Sun Oct 25 13:31:39 1998
+++ xterm-90/cursor.c   Sun Dec 13 19:07:56 1998
@@ -107,7 +107,7 @@
        _CheckSelection(screen);
 }
 
-/* 
+/*
  * moves the cursor down n, no scrolling.
  * Won't pass bottom margin or bottom of screen.
  */
@@ -126,7 +126,7 @@
        _CheckSelection(screen);
 }
 
-/* 
+/*
  * moves the cursor up n, no linestarving.
  * Won't pass top margin or top of screen.
  */
@@ -145,7 +145,7 @@
        _CheckSelection(screen);
 }
 
-/* 
+/*
  * Moves cursor down amount lines, scrolls if necessary.
  * Won't leave scrolling region. No carriage return.
  */
@@ -154,7 +154,7 @@
 {
        register int j;
 
-       /* 
+       /*
         * indexing when below scrolling region is cursor down.
         * if cursor high enough, no scrolling necessary.
         */
@@ -205,9 +205,10 @@
  * Save Cursor and Attributes
  */
 void
-CursorSave(register XtermWidget tw, register SavedCursor *sc)
+CursorSave(register XtermWidget tw)
 {
        register TScreen *screen = &tw->screen;
+       register SavedCursor *sc = &screen->sc[screen->alternate != False];
 
        sc->saved = True;
        sc->row = screen->cur_row;
@@ -233,9 +234,10 @@
  * Restore Cursor and Attributes
  */
 void
-CursorRestore(register XtermWidget tw, register SavedCursor *sc)
+CursorRestore(register XtermWidget tw)
 {
        register TScreen *screen = &tw->screen;
+       register SavedCursor *sc = &screen->sc[screen->alternate != False];
 
        /* Restore the character sets, unless we never did a save-cursor op.
         * In that case, we'll reset the character sets.
@@ -270,7 +272,7 @@
 CursorNextLine(TScreen *screen, int count)
 {
        CursorDown(screen, count < 1 ? 1 : count);
-       CarriageReturn(screen);         
+       CarriageReturn(screen);
        do_xevents();
 }
 
Index: data.c
--- xterm-89+/data.c    Sun Oct 25 13:31:39 1998
+++ xterm-90/data.c     Mon Dec  7 21:54:34 1998
@@ -86,9 +86,13 @@
 #endif /* DEBUG */
 
 XtAppContext app_con;
-XtermWidget term;              /* master data structure for client */
+XtermWidget term;      /* master data structure for client */
 char *xterm_name;      /* argv[0] */
 Boolean sunFunctionKeys;
+
+#if OPT_HP_FUNC_KEYS
+Boolean hpFunctionKeys;
+#endif
 
 #if OPT_ZICONBEEP
 int zIconBeep;  /* non-zero means beep; see charproc.c for details -IAN! */
Index: data.h
--- xterm-89+/data.h    Sun Oct 25 13:31:39 1998
+++ xterm-90/data.h     Mon Dec  7 21:54:07 1998
@@ -70,6 +70,9 @@
 extern char *ttydev;
 extern char *xterm_name;
 extern Boolean sunFunctionKeys;
+#if OPT_HP_FUNC_KEYS
+extern Boolean hpFunctionKeys;
+#endif
 #if OPT_ZICONBEEP 
 extern int zIconBeep; 
 extern Boolean zIconBeep_flagged; 
Index: fontutils.c
--- xterm-89+/fontutils.c       Sun Nov 22 13:07:22 1998
+++ xterm-90/fontutils.c        Sun Dec 13 19:07:15 1998
@@ -230,7 +230,7 @@
      return ret;
 }
 
-#ifdef OPT_DEC_CHRSET
+#if OPT_DEC_CHRSET
 /*
  * Take the given font props and try to make a well formed font name specifying
  * the same base font but changed depending on the given attributes and chrset.
@@ -269,7 +269,7 @@
        if (CSET_DOUBLE(chrset))
                res_x *= 2;
 
-       if (chrset == CSET_DHL_TOP 
+       if (chrset == CSET_DHL_TOP
         || chrset == CSET_DHL_BOT) {
                res_y *= 2;
                pixel_size *= 2;
@@ -379,6 +379,7 @@
        Pixel new_revers;
        char *tmpname = NULL;
        Boolean proportional = False;
+       int ch;
 
        if (!nfontname) return 0;
 
@@ -492,6 +493,21 @@
        screen->fnt_norm = nfs;
        screen->fnt_bold = bfs;
        screen->fnt_prop = proportional;
+       screen->fnt_boxes = True;
+
+#if OPT_BOX_CHARS
+       /*
+        * Xterm uses the first 32 character positions of a font for the
+        * line-drawing characters.  Check that they are all present.
+        */
+       for (ch = 0; ch < 32; ch++) {
+               if (xtermMissingChar(ch, nfs)
+                || xtermMissingChar(ch, bfs)) {
+                       screen->fnt_boxes = False;
+                       break;
+               }
+       }
+#endif
 
        screen->enbolden = (nfs == bfs);
        set_menu_font (False);
@@ -547,28 +563,49 @@
 }
 
 /*
+ * Compute useful values for the font/window sizes
+ */
+void
+xtermComputeFontInfo (TScreen *screen, struct _vtwin *win, XFontStruct *font, int sbwidth)
+{
+       int i, j, width, height;
+
+       win->f_width  = (font->max_bounds.width);
+       win->f_height = (font->ascent + font->descent);
+       i = 2 * screen->border + sbwidth;
+       j = 2 * screen->border;
+       width  = (screen->max_col + 1) * win->f_width + i;
+       height = (screen->max_row + 1) * win->f_height + j;
+       win->fullwidth  = width;
+       win->fullheight = height;
+       win->width  = width - i;
+       win->height = height - j;
+}
+
+
+/* save this information as a side-effect for double-sized characters */
+void
+xtermSaveFontInfo (TScreen *screen, XFontStruct *font)
+{
+       screen->fnt_wide = (font->max_bounds.width);
+       screen->fnt_high = (font->ascent + font->descent);
+}
+
+/*
  * After loading a new font, update the structures that use its size.
  */
 void
 xtermUpdateFontInfo (TScreen *screen, Bool doresize)
 {
-       int i, j, width, height, scrollbar_width;
+       int scrollbar_width;
+       struct _vtwin *win = &(screen->fullVwin);
 
-       screen->fullVwin.f_width  = (screen->fnt_norm->max_bounds.width);
-       screen->fullVwin.f_height = (screen->fnt_norm->ascent +
-       screen->fnt_norm->descent);
        scrollbar_width = (term->misc.scrollbar
                        ? screen->scrollWidget->core.width +
                          screen->scrollWidget->core.border_width
                        : 0);
-       i = 2 * screen->border + scrollbar_width;
-       j = 2 * screen->border;
-       width  = (screen->max_col + 1) * screen->fullVwin.f_width + i;
-       height = (screen->max_row + 1) * screen->fullVwin.f_height + j;
-       screen->fullVwin.fullwidth  = width;
-       screen->fullVwin.fullheight = height;
-       screen->fullVwin.width  = width - i;
-       screen->fullVwin.height = height - j;
+       xtermComputeFontInfo (screen, win, screen->fnt_norm, scrollbar_width);
+       xtermSaveFontInfo(screen, screen->fnt_norm);
 
        if (doresize) {
                if (VWindow(screen)) {
@@ -581,3 +618,259 @@
        }
        xtermSetCursorBox (screen);
 }
+
+#if OPT_BOX_CHARS
+/*
+ * Returns true if the given character is missing from the specified font.
+ */
+Bool
+xtermMissingChar(int ch, XFontStruct *font)
+{
+       XCharStruct     *pc = 0;
+
+       if (font != 0
+       && font->per_char != 0
+       && !font->all_chars_exist) {
+               if (ch < (int) font->min_char_or_byte2
+                || ch > (int) font->max_char_or_byte2) {
+                       TRACE(("MissingChar %c\n", ch))
+                       return True;
+               }
+               if (font->min_byte1 == 0
+                && font->max_byte1 == 0) {
+                       pc = font->per_char + (ch - font->min_char_or_byte2);
+               } /* FIXME: this does not handle doublebyte characters */
+               if (pc != 0
+                && (pc->lbearing + pc->rbearing) == 0
+                && (pc->ascent   + pc->descent) == 0
+                && (pc->width == 0)) {
+                       TRACE(("MissingChar %c\n", ch))
+                       return True;
+               }
+       }
+       return False;
+}
+
+/*
+ * The grid is abitrary, enough resolution that nothing's lost in initialization.
+ */
+#define BOX_HIGH 60
+#define BOX_WIDE 60
+
+#define MID_HIGH (BOX_HIGH/2)
+#define MID_WIDE (BOX_WIDE/2)
+
+/*
+ * ...since we'll scale the values anyway.
+ */
+#define SCALE_X(n) n = (n * (screen->fnt_wide-1)) / (BOX_WIDE-1)
+#define SCALE_Y(n) n = (n * (screen->fnt_high-1)) / (BOX_HIGH-1)
+
+/*
+ * Draw the given graphic character, if it is simple enough (i.e., a
+ * line-drawing character).
+ */
+void
+xtermDrawBoxChar(TScreen *screen, int ch, unsigned flags, GC gc, int x, int y)
+{
+       static const short
+               diamond[] = {
+                       MID_WIDE,     BOX_HIGH/4,   3*BOX_WIDE/4, MID_WIDE,
+                       3*BOX_WIDE/4, MID_WIDE,     MID_WIDE,     3*BOX_HIGH/4,
+                       MID_WIDE,     3*BOX_HIGH/4, BOX_WIDE/4,   MID_HIGH,
+                       BOX_WIDE/4,   MID_HIGH,     MID_WIDE,     BOX_HIGH/4,
+                       MID_WIDE,     BOX_HIGH/3,   2*BOX_WIDE/3, MID_WIDE,
+                       2*BOX_WIDE/3, MID_WIDE,     MID_WIDE,     2*BOX_HIGH/3,
+                       MID_WIDE,     2*BOX_HIGH/3, BOX_WIDE/3,   MID_HIGH,
+                       BOX_WIDE/3,   MID_HIGH,     MID_WIDE,     BOX_HIGH/3,
+                       BOX_WIDE/4,   MID_HIGH,     3*BOX_WIDE/4, MID_HIGH,
+                       MID_WIDE,     BOX_HIGH/4,   MID_WIDE,     3*BOX_HIGH/4,
+                       -1
+               },
+               degrees[] = {
+                       MID_WIDE,     BOX_HIGH/4,   2*BOX_WIDE/3, 3*BOX_HIGH/8,
+                       2*BOX_WIDE/3, 3*BOX_HIGH/8, MID_WIDE,     MID_HIGH,
+                       MID_WIDE,     MID_HIGH,     BOX_WIDE/3,   3*BOX_HIGH/8,
+                       BOX_WIDE/3,   3*BOX_HIGH/8, MID_WIDE,     BOX_HIGH/4,
+                       -1
+               },
+               lower_right_corner[] = {
+                       0,            MID_HIGH,     MID_WIDE,     MID_HIGH,
+                       MID_WIDE,     MID_HIGH,     MID_WIDE,     0,
+                       -1
+               },
+               upper_right_corner[] = {
+                       0,            MID_HIGH,     MID_WIDE,     MID_HIGH,
+                       MID_WIDE,     MID_HIGH,     MID_WIDE,     BOX_HIGH,
+                       -1
+               },
+               upper_left_corner[] = {
+                       MID_WIDE,     MID_HIGH,     BOX_WIDE,     MID_HIGH,
+                       MID_WIDE,     MID_HIGH,     MID_WIDE,     BOX_HIGH,
+                       -1
+               },
+               lower_left_corner[] = {
+                       MID_WIDE,     0,            MID_WIDE,     MID_HIGH,
+                       MID_WIDE,     MID_WIDE,     BOX_WIDE,     MID_HIGH,
+                       -1
+               },
+               cross[] = {
+                       0,            MID_HIGH,     BOX_WIDE,     MID_HIGH,
+                       MID_WIDE,     0,            MID_WIDE,     BOX_HIGH,
+                       -1
+               },
+               scan_line_1[] = {
+                       0,            0,            BOX_WIDE,     0,
+                       -1
+               },
+               scan_line_3[] = {
+                       0,            BOX_HIGH/4,   BOX_WIDE,     BOX_HIGH/4,
+                       -1
+               },
+               scan_line_7[] = {
+                       0,            MID_HIGH,     BOX_WIDE,     MID_HIGH,
+                       -1
+               },
+               scan_line_9[] = {
+                       0,            3*BOX_HIGH/4, BOX_WIDE,     3*BOX_HIGH/4,
+                       -1
+               },
+               horizontal_line[] = {
+                       0,            BOX_HIGH,     BOX_WIDE,     BOX_HIGH,
+                       -1
+               },
+               left_tee[] = {
+                       MID_WIDE,     0,            MID_WIDE,     BOX_HIGH,
+                       MID_WIDE,     MID_HIGH,     BOX_WIDE,     MID_HIGH,
+                       -1
+               },
+               right_tee[] = {
+                       MID_WIDE,     0,            MID_WIDE,     BOX_HIGH,
+                       MID_WIDE,     MID_HIGH,     0,            MID_HIGH,
+                       -1
+               },
+               bottom_tee[] = {
+                       0,            MID_HIGH,     BOX_WIDE,     MID_HIGH,
+                       MID_WIDE,     0,            MID_WIDE,     MID_HIGH,
+                       -1
+               },
+               top_tee[] = {
+                       0,            MID_HIGH,     BOX_WIDE,     MID_HIGH,
+                       MID_WIDE,     MID_HIGH,     MID_WIDE,     BOX_HIGH,
+                       -1
+               },
+               vertical_line[] = {
+                       MID_WIDE,     0,            MID_WIDE,     BOX_HIGH,
+                       -1
+               },
+               less_than_or_equal[] = {
+                       5*BOX_WIDE/6, BOX_HIGH/6,   BOX_WIDE/5,   MID_HIGH,
+                       5*BOX_WIDE/6, 5*BOX_HIGH/6, BOX_WIDE/5,   MID_HIGH,
+                       BOX_WIDE/6,   5*BOX_HIGH/6, 5*BOX_WIDE/6, 5*BOX_HIGH/6,
+                       -1
+               },
+               greater_than_or_equal[] = {
+                       BOX_WIDE/6,   BOX_HIGH/6,   5*BOX_WIDE/6, MID_HIGH,
+                       BOX_WIDE/6,   5*BOX_HIGH/6, 5*BOX_WIDE/6, MID_HIGH,
+                       BOX_WIDE/6,   5*BOX_HIGH/6, 5*BOX_WIDE/6, 5*BOX_HIGH/6,
+                       -1
+               };
+
+       static const short *lines[] = {
+               0,                      /* 00 */
+               diamond,                /* 01 */
+               0,                      /* 02 */
+               0,                      /* 03 */
+               0,                      /* 04 */
+               0,                      /* 05 */
+               0,                      /* 06 */
+               degrees,                /* 07 */
+               0,                      /* 08 */
+               0,                      /* 09 */
+               0,                      /* 0A */
+               lower_right_corner,     /* 0B */
+               upper_right_corner,     /* 0C */
+               upper_left_corner,      /* 0D */
+               lower_left_corner,      /* 0E */
+               cross,                  /* 0F */
+               scan_line_1,            /* 10 */
+               scan_line_3,            /* 11 */
+               scan_line_7,            /* 12 */
+               scan_line_9,            /* 13 */
+               horizontal_line,        /* 14 */
+               left_tee,               /* 15 */
+               right_tee,              /* 16 */
+               bottom_tee,             /* 17 */
+               top_tee,                /* 18 */
+               vertical_line,          /* 19 */
+               less_than_or_equal,     /* 1A */
+               greater_than_or_equal,  /* 1B */
+               0,                      /* 1C */
+               0,                      /* 1D */
+               0,                      /* 1E */
+               0,                      /* 1F */
+       };
+
+       XGCValues values;
+       GC gc2;
+       const short *p;
+
+       TRACE(("DRAW_BOX(%d) cell %dx%d at %d,%d%s\n",
+               ch, screen->fnt_high, screen->fnt_wide, y, x,
+               (ch < 0 || ch >= (int)(sizeof(lines)/sizeof(lines[0]))) ? "-BAD": ""))
+
+       if (!XGetGCValues(screen->display, gc, GCBackground, &values))
+               return;
+
+       values.foreground = values.background;
+       gc2 = XCreateGC(screen->display, TextWindow(screen), GCForeground, &values);
+
+       XFillRectangle(
+               screen->display, TextWindow(screen), gc2, x, y,
+               screen->fnt_wide,
+               screen->fnt_high);
+
+       XCopyGC(screen->display, gc, (1<<GCLastBit)-1, gc2);
+       XSetLineAttributes(screen->display, gc2,
+               (flags&BOLD)
+                       ? ((screen->fnt_high > 6)
+                         ? screen->fnt_high/6
+                         : 1)
+                       : ((screen->fnt_high > 8)
+                         ? screen->fnt_high/8
+                         : 1),
+               LineSolid,
+               CapProjecting,
+               JoinMiter);
+
+       if (ch >= 0
+        && ch < (int)(sizeof(lines)/sizeof(lines[0]))
+        && (p = lines[ch]) != 0) {
+               int     coord[4];
+               int     n = 0;
+               while (*p >= 0) {
+                       coord[n++] = *p++;
+                       if (n == 4) {
+                               SCALE_X(coord[0]); SCALE_Y(coord[1]);
+                               SCALE_X(coord[2]); SCALE_Y(coord[3]);
+                               XDrawLine(
+                                       screen->display,
+                                       TextWindow(screen), gc2,
+                                       x + coord[0], y + coord[1],
+                                       x + coord[2], y + coord[3]);
+                               n = 0;
+                       }
+               }
+       }
+#if 0  /* bounding rectangle, for debugging */
+       else {
+               XDrawRectangle(
+                       screen->display, TextWindow(screen), gc, x, y,
+                       screen->fnt_wide-1,
+                       screen->fnt_high-1);
+       }
+#endif
+
+       XFreeGC(screen->display, gc2);
+}
+#endif
Index: fontutils.h
--- xterm-89+/fontutils.h       Sun Nov 22 13:07:22 1998
+++ xterm-90/fontutils.h        Wed Dec  9 20:51:17 1998
@@ -40,11 +40,18 @@
 #include <ptyx.h>
 
 extern int xtermLoadFont (TScreen *screen, char *nfontname, char *bfontname, Bool doresize, int fontnum);
+extern void xtermComputeFontInfo (TScreen *screen, struct _vtwin *win, XFontStruct *font, int sbwidth);
+extern void xtermSaveFontInfo (TScreen *screen, XFontStruct *font);
 extern void xtermUpdateFontInfo (TScreen *screen, Bool doresize);
 extern void xtermSetCursorBox (TScreen *screen);
 
 #if OPT_DEC_CHRSET
 extern char *xtermSpecialFont(unsigned atts, unsigned chrset);
+#endif
+
+#if OPT_BOX_CHARS
+extern Bool xtermMissingChar(int ch, XFontStruct *font);
+extern void xtermDrawBoxChar(TScreen *screen, int ch, unsigned flags, GC gc, int x, int y);
 #endif
 
 #endif /* included_fontutils_h */
Index: input.c
--- xterm-89+/input.c   Sun Oct 25 13:31:39 1998
+++ xterm-90/input.c    Tue Dec  8 06:48:48 1998
@@ -45,6 +45,9 @@
 
 static int decfuncvalue (KeySym keycode);
 static int sunfuncvalue (KeySym keycode);
+#if OPT_HP_FUNC_KEYS
+static int hpfuncvalue (KeySym keycode);
+#endif
 
 static void
 AdjustAfterInput (register TScreen *screen)
@@ -187,6 +190,13 @@
        }
 #endif
 
+#if OPT_HP_FUNC_KEYS
+       if (hpFunctionKeys
+        && (reply.a_final = hpfuncvalue (keysym)) != 0) {
+               reply.a_type = ESC;
+               unparseseq(&reply, pty);
+       } else
+#endif
        if (IsPFKey(keysym)) {
                reply.a_type = SS3;
                reply.a_final = keysym-XK_KP_F1+'P';
@@ -368,6 +378,43 @@
        }
 }
 
+#if OPT_HP_FUNC_KEYS
+static int
+hpfuncvalue (KeySym  keycode)
+{
+       switch (keycode) {
+               case XK_Up:             return('A');
+               case XK_Down:           return('B');
+               case XK_Right:          return('C');
+               case XK_Left:           return('D');
+               case XK_End:            return('F');
+               case XK_Clear:          return('J');
+               case XK_Delete:         return('P');
+               case XK_Insert:         return('Q');
+               case XK_Next:           return('S');
+               case XK_Prior:          return('T');
+               case XK_Home:           return('h');
+               case XK_F1:             return('p');
+               case XK_F2:             return('q');
+               case XK_F3:             return('r');
+               case XK_F4:             return('s');
+               case XK_F5:             return('t');
+               case XK_F6:             return('u');
+               case XK_F7:             return('v');
+               case XK_F8:             return('w');
+#ifdef XK_KP_Insert
+               case XK_KP_Delete:      return('P');
+               case XK_KP_Insert:      return('Q');
+#endif
+#ifdef DXK_Remove
+               case DXK_Remove:        return('P');
+#endif
+               case XK_Select:         return('F');
+               case XK_Find:           return('h');
+               default:                return 0;
+       }
+}
+#endif
 
 static int
 sunfuncvalue (KeySym  keycode)
Index: main.c
--- xterm-89+/main.c    Sun Nov 22 13:07:22 1998
+++ xterm-90/main.c     Tue Dec  8 17:51:25 1998
@@ -732,6 +732,9 @@
 #if OPT_SUNPC_KBD
     Boolean sunKeyboard;
 #endif
+#if OPT_HP_FUNC_KEYS
+    Boolean hpFunctionKeys;
+#endif
     Boolean wait_for_map;
     Boolean useInsertMode;
 #if OPT_ZICONBEEP
@@ -771,6 +774,10 @@
     {"sunKeyboard", "SunKeyboard", XtRBoolean, sizeof (Boolean),
        offset(sunKeyboard), XtRString, "false"},
 #endif
+#if OPT_HP_FUNC_KEYS
+    {"hpFunctionKeys", "HpFunctionKeys", XtRBoolean, sizeof (Boolean),
+       offset(hpFunctionKeys), XtRString, "false"},
+#endif
     {"waitForMap", "WaitForMap", XtRBoolean, sizeof (Boolean),
        offset(wait_for_map), XtRString, "false"},
     {"useInsertMode", "UseInsertMode", XtRBoolean, sizeof (Boolean),
@@ -838,6 +845,10 @@
 #if OPT_HIGHLIGHT_COLOR
 {"-hc",                "*highlightColor", XrmoptionSepArg,     (caddr_t) NULL},
 #endif
+#if OPT_HP_FUNC_KEYS
+{"-hf",                "*hpKeyboard",  XrmoptionNoArg,         (caddr_t) "on"},
+{"+hf",                "*hpKeyboard",  XrmoptionNoArg,         (caddr_t) "off"},
+#endif
 {"-j",         "*jumpScroll",  XrmoptionNoArg,         (caddr_t) "on"},
 {"+j",         "*jumpScroll",  XrmoptionNoArg,         (caddr_t) "off"},
 /* parse logging options anyway for compatibility */
@@ -947,6 +958,9 @@
 #if OPT_HIGHLIGHT_COLOR
 { "-hc",                  "selection background color" },
 #endif
+#if OPT_HP_FUNC_KEYS
+{ "-/+hf",                 "turn on/off HP Function Key escape codes" },
+#endif
 { "-/+im",                "use insert mode for TERMCAP" },
 { "-/+j",                  "turn on/off jump scroll" },
 #ifdef ALLOWLOGGING
@@ -975,7 +989,9 @@
 { "-/+si",                 "turn on/off scroll-on-tty-output inhibit" },
 { "-/+sk",                 "turn on/off scroll-on-keypress" },
 { "-sl number",            "number of scrolled lines to save" },
+#if OPT_SUNPC_KBD
 { "-/+sp",                 "turn on/off Sun/PC Function/Keypad mapping" },
+#endif
 #if OPT_TEK4014
 { "-/+t",                  "turn on/off Tek emulation window" },
 #endif
@@ -1512,6 +1528,9 @@
        sunFunctionKeys = resource.sunFunctionKeys;
 #if OPT_SUNPC_KBD
        sunKeyboard = resource.sunKeyboard;
+#endif
+#if OPT_HP_FUNC_KEYS
+       hpFunctionKeys = resource.hpFunctionKeys;
 #endif
        if (strcmp(xterm_name, "-") == 0) xterm_name = DFT_TERMTYPE;
        if (resource.icon_geometry != NULL) {
Index: menu.c
--- xterm-89+/menu.c    Sun Oct 25 13:31:39 1998
+++ xterm-90/menu.c     Sun Dec 13 16:46:21 1998
@@ -77,9 +77,9 @@
 static void do_securekbd       PROTO_XT_CALLBACK_ARGS;
 static void do_softreset       PROTO_XT_CALLBACK_ARGS;
 static void do_sun_fkeys       PROTO_XT_CALLBACK_ARGS;
-static void do_sun_kbd         PROTO_XT_CALLBACK_ARGS;
 static void do_suspend         PROTO_XT_CALLBACK_ARGS;
 static void do_terminate       PROTO_XT_CALLBACK_ARGS;
+static void do_titeInhibit     PROTO_XT_CALLBACK_ARGS;
 static void do_visualbell      PROTO_XT_CALLBACK_ARGS;
 static void do_vtfont          PROTO_XT_CALLBACK_ARGS;
 
@@ -91,6 +91,22 @@
 static void do_activeicon      PROTO_XT_CALLBACK_ARGS;
 #endif /* NO_ACTIVE_ICON */
 
+#if OPT_DEC_CHRSET
+static void do_font_doublesize PROTO_XT_CALLBACK_ARGS;
+#endif
+
+#if OPT_DEC_SOFTFONT
+static void do_font_loadable   PROTO_XT_CALLBACK_ARGS;
+#endif
+
+#if OPT_HP_FUNC_KEYS
+static void do_hp_fkeys        PROTO_XT_CALLBACK_ARGS;
+#endif
+
+#if OPT_SUNPC_KBD
+static void do_sun_kbd         PROTO_XT_CALLBACK_ARGS;
+#endif
+
 #if OPT_TEK4014
 static void do_tekcopy         PROTO_XT_CALLBACK_ARGS;
 static void do_tekhide         PROTO_XT_CALLBACK_ARGS;
@@ -126,7 +142,12 @@
     { "8-bit control", do_8bit_control, NULL },
     { "backarrow key", do_backarrow,   NULL },
     { "sun function-keys",do_sun_fkeys,        NULL },
+#if OPT_SUNPC_KBD
     { "sun keyboard",  do_sun_kbd,     NULL },
+#endif
+#if OPT_HP_FUNC_KEYS
+    { "hp function-keys",do_hp_fkeys,  NULL },
+#endif
     { "line2",         NULL,           NULL },
     { "suspend",       do_suspend,     NULL },
     { "continue",      do_continue,    NULL },
@@ -138,62 +159,73 @@
     { "quit",          do_quit,        NULL }};
 
 MenuEntry vtMenuEntries[] = {
-    { "scrollbar",     do_scrollbar, NULL },           /*  0 */
-    { "jumpscroll",    do_jumpscroll, NULL },          /*  1 */
-    { "reversevideo",  do_reversevideo, NULL },        /*  2 */
-    { "autowrap",      do_autowrap, NULL },            /*  3 */
-    { "reversewrap",   do_reversewrap, NULL },         /*  4 */
-    { "autolinefeed",  do_autolinefeed, NULL },        /*  5 */
-    { "appcursor",     do_appcursor, NULL },           /*  6 */
-    { "appkeypad",     do_appkeypad, NULL },           /*  7 */
-    { "scrollkey",     do_scrollkey, NULL },           /*  8 */
-    { "scrollttyoutput",do_scrollttyoutput, NULL },    /*  9 */
-    { "allow132",      do_allow132, NULL },            /* 10 */
-    { "cursesemul",    do_cursesemul, NULL },          /* 11 */
-    { "visualbell",    do_visualbell, NULL },          /* 12 */
-    { "marginbell",    do_marginbell, NULL },          /* 13 */
-    { "altscreen",     do_altscreen, NULL },           /* 14 */
+    { "scrollbar",     do_scrollbar,   NULL },
+    { "jumpscroll",    do_jumpscroll,  NULL },
+    { "reversevideo",  do_reversevideo, NULL },
+    { "autowrap",      do_autowrap,    NULL },
+    { "reversewrap",   do_reversewrap, NULL },
+    { "autolinefeed",  do_autolinefeed, NULL },
+    { "appcursor",     do_appcursor,   NULL },
+    { "appkeypad",     do_appkeypad,   NULL },
+    { "scrollkey",     do_scrollkey,   NULL },
+    { "scrollttyoutput",do_scrollttyoutput, NULL },
+    { "allow132",      do_allow132,    NULL },
+    { "cursesemul",    do_cursesemul,  NULL },
+    { "visualbell",    do_visualbell,  NULL },
+    { "marginbell",    do_marginbell,  NULL },
+    { "titeInhibit",   do_titeInhibit, NULL },
 #ifndef NO_ACTIVE_ICON
-    { "activeicon",    do_activeicon, NULL },          /* 15 */
+    { "activeicon",    do_activeicon,  NULL },
 #endif /* NO_ACTIVE_ICON */
-    { "line1",         NULL, NULL },                   /* 16 */
-    { "softreset",     do_softreset, NULL },           /* 17 */
-    { "hardreset",     do_hardreset, NULL },           /* 18 */
-    { "clearsavedlines",do_clearsavedlines, NULL },    /* 19 */
+    { "line1",         NULL,           NULL },
+    { "softreset",     do_softreset,   NULL },
+    { "hardreset",     do_hardreset,   NULL },
+    { "clearsavedlines",do_clearsavedlines, NULL },
+    { "line2",         NULL,           NULL },
 #if OPT_TEK4014
-    { "line2",         NULL, NULL },                   /* 20 */
-    { "tekshow",       do_tekshow, NULL },             /* 21 */
-    { "tekmode",       do_tekmode, NULL },             /* 22 */
-    { "vthide",                do_vthide, NULL },              /* 23 */
+    { "tekshow",       do_tekshow,     NULL },
+    { "tekmode",       do_tekmode,     NULL },
+    { "vthide",                do_vthide,      NULL },
 #endif
+    { "altscreen",     do_altscreen,   NULL },
     };
 
 MenuEntry fontMenuEntries[] = {
-    { "fontdefault",   do_vtfont, NULL },              /*  0 */
-    { "font1",         do_vtfont, NULL },              /*  1 */
-    { "font2",         do_vtfont, NULL },              /*  2 */
-    { "font3",         do_vtfont, NULL },              /*  3 */
-    { "font4",         do_vtfont, NULL },              /*  4 */
-    { "font5",         do_vtfont, NULL },              /*  5 */
-    { "font6",         do_vtfont, NULL },              /*  6 */
-    { "fontescape",    do_vtfont, NULL },              /*  7 */
-    { "fontsel",       do_vtfont, NULL }};             /*  8 */
-    /* this should match NMENUFONTS in ptyx.h */
+    { "fontdefault",   do_vtfont,      NULL },
+    { "font1",         do_vtfont,      NULL },
+    { "font2",         do_vtfont,      NULL },
+    { "font3",         do_vtfont,      NULL },
+    { "font4",         do_vtfont,      NULL },
+    { "font5",         do_vtfont,      NULL },
+    { "font6",         do_vtfont,      NULL },
+    { "fontescape",    do_vtfont,      NULL },
+    { "fontsel",       do_vtfont,      NULL },
+    /* down to here should match NMENUFONTS in ptyx.h */
+#if OPT_DEC_CHRSET || OPT_DEC_SOFTFONT
+    { "line1",         NULL,           NULL },
+#if OPT_DEC_CHRSET
+    { "font-doublesize",do_font_doublesize,NULL },
+#endif
+#if OPT_DEC_SOFTFONT
+    { "font-loadable", do_font_loadable,NULL },
+#endif
+#endif /* toggles for font extensions */
+    };
 
 #if OPT_TEK4014
 MenuEntry tekMenuEntries[] = {
-    { "tektextlarge",  do_tektextlarge, NULL },        /*  0 */
-    { "tektext2",      do_tektext2, NULL },            /*  1 */
-    { "tektext3",      do_tektext3, NULL },            /*  2 */
-    { "tektextsmall",  do_tektextsmall, NULL },        /*  3 */
-    { "line1",         NULL, NULL },                   /*  4 */
-    { "tekpage",       do_tekpage, NULL },             /*  5 */
-    { "tekreset",      do_tekreset, NULL },            /*  6 */
-    { "tekcopy",       do_tekcopy, NULL },             /*  7 */
-    { "line2",         NULL, NULL },                   /*  8 */
-    { "vtshow",                do_vtshow, NULL },              /*  9 */
-    { "vtmode",                do_vtmode, NULL },              /* 10 */
-    { "tekhide",       do_tekhide, NULL }};            /* 11 */
+    { "tektextlarge",  do_tektextlarge, NULL },
+    { "tektext2",      do_tektext2,    NULL },
+    { "tektext3",      do_tektext3,    NULL },
+    { "tektextsmall",  do_tektextsmall, NULL },
+    { "line1",         NULL,           NULL },
+    { "tekpage",       do_tekpage,     NULL },
+    { "tekreset",      do_tekreset,    NULL },
+    { "tekcopy",       do_tekcopy,     NULL },
+    { "line2",         NULL,           NULL },
+    { "vtshow",                do_vtshow,      NULL },
+    { "vtmode",                do_vtmode,      NULL },
+    { "tekhide",       do_tekhide,     NULL }};
 #endif
 
 static Widget create_menu (
@@ -266,12 +298,13 @@
                                 FALSE);
            }
            update_sun_fkeys();
+           update_hp_fkeys();
 #if !defined(SIGTSTP) || defined(AMOEBA)
            set_sensitivity (screen->mainMenu,
                             mainMenuEntries[mainMenu_suspend].widget, FALSE);
 #endif
 #if !defined(SIGCONT) || defined(AMOEBA)
-           set_sensitivity (screen->mainMenu, 
+           set_sensitivity (screen->mainMenu,
                             mainMenuEntries[mainMenu_continue].widget, FALSE);
 #endif
        }
@@ -296,6 +329,8 @@
            update_cursesemul();
            update_visualbell();
            update_marginbell();
+           update_altscreen();
+           update_titeInhibit();
 #ifndef NO_ACTIVE_ICON
            if (!screen->fnt_icon || !screen->iconVwin.window) {
                set_sensitivity (screen->vtMenu,
@@ -312,12 +347,19 @@
        if (!screen->fontMenu) {
            screen->fontMenu = create_menu (term, toplevel, "fontMenu",
                                            fontMenuEntries,
-                                           NMENUFONTS);  
+                                           XtNumber(fontMenuEntries));
            set_menu_font (True);
            set_sensitivity (screen->fontMenu,
                             fontMenuEntries[fontMenu_fontescape].widget,
                             (screen->menu_font_names[fontMenu_fontescape]
                              ? TRUE : FALSE));
+           update_font_doublesize();
+           update_font_loadable();
+#if OPT_DEC_SOFTFONT   /* FIXME: not implemented */
+           set_sensitivity (screen->fontMenu,
+                            fontMenuEntries[fontMenu_font_loadable].widget,
+                            FALSE);
+#endif
        }
        FindFontSelection (NULL, True);
        set_sensitivity (screen->fontMenu,
@@ -400,7 +442,7 @@
     for (; nentries > 0; nentries--, entries++) {
        cb[0].callback = (XtCallbackProc) entries->function;
        cb[0].closure = (caddr_t) entries->name;
-       entries->widget = XtCreateManagedWidget (entries->name, 
+       entries->widget = XtCreateManagedWidget (entries->name,
                                                 (entries->function ?
                                                  smeBSBObjectClass :
                                                  smeLineObjectClass), m,
@@ -547,7 +589,6 @@
     update_sun_fkeys();
 }
 
-
 #if OPT_SUNPC_KBD
 static void do_sun_kbd (
        Widget gw GCC_UNUSED,
@@ -560,6 +601,18 @@
 #endif
 
 
+#if OPT_HP_FUNC_KEYS
+static void do_hp_fkeys (
+       Widget gw GCC_UNUSED,
+       XtPointer closure GCC_UNUSED,
+       XtPointer data GCC_UNUSED)
+{
+    hpFunctionKeys = ! hpFunctionKeys;
+    update_hp_fkeys();
+}
+#endif
+
+
 /*
  * The following cases use the pid instead of the process group so that we
  * don't get hosed by programs that change their process group
@@ -836,6 +889,16 @@
     ToggleAlternate(screen);
 }
 
+/* ARGSUSED */
+static void do_titeInhibit (
+       Widget gw GCC_UNUSED,
+       XtPointer closure GCC_UNUSED,
+       XtPointer data GCC_UNUSED)
+{
+    term->misc.titeInhibit = !term->misc.titeInhibit;
+    update_titeInhibit();
+}
+
 #ifndef NO_ACTIVE_ICON
 /* ARGSUSED */
 static void do_activeicon (
@@ -879,7 +942,7 @@
        XtPointer closure GCC_UNUSED,
        XtPointer data GCC_UNUSED)
 {
-    VTReset (TRUE, TRUE); 
+    VTReset (TRUE, TRUE);
 }
 
 
@@ -926,6 +989,29 @@
     Bell(XkbBI_MinorError, 0);
 }
 
+#if OPT_DEC_CHRSET
+static void do_font_doublesize (
+       Widget gw GCC_UNUSED,
+       XtPointer closure GCC_UNUSED,
+       XtPointer data GCC_UNUSED)
+{
+    term->screen.font_doublesize = ! term->screen.font_doublesize;
+    update_font_doublesize();
+    Redraw ();
+}
+#endif
+
+#if OPT_DEC_SOFTFONT
+static void do_font_loadable (
+       Widget gw GCC_UNUSED,
+       XtPointer closure GCC_UNUSED,
+       XtPointer data GCC_UNUSED)
+{
+    term->misc.font_loadable = ! term->misc.font_loadable;
+    update_font_loadable();
+}
+#endif
+
 
 /*
  * tek menu
@@ -1006,7 +1092,7 @@
        set_vt_visibility (FALSE);
        if (!screen->TekEmu && TekRefresh) dorefresh ();
        end_vt_mode ();                 /* WARNING: this does a longjmp... */
-    } else 
+    } else
       Bell(XkbBI_MinorError, 0);
 }
 
@@ -1244,6 +1330,18 @@
 }
 #endif
 
+#if OPT_HP_FUNC_KEYS
+void HandleHpFunctionKeys(
+       Widget w,
+       XEvent *event GCC_UNUSED,
+       String *params,
+       Cardinal *param_count)
+{
+    handle_toggle (do_hp_fkeys, (int) hpFunctionKeys,
+                  params, *param_count, w, (XtPointer)0, (XtPointer)0);
+}
+#endif
+
 void HandleScrollbar(
        Widget w,
        XEvent *event GCC_UNUSED,
@@ -1385,6 +1483,17 @@
                   params, *param_count, w, (XtPointer)0, (XtPointer)0);
 }
 
+void HandleTiteInhibit(
+       Widget w,
+       XEvent *event GCC_UNUSED,
+       String *params,
+       Cardinal *param_count)
+{
+    /* eventually want to see if sensitive or not */
+    handle_toggle (do_titeInhibit, ! ((int) term->misc.titeInhibit),
+                  params, *param_count, w, (XtPointer)0, (XtPointer)0);
+}
+
 /* ARGSUSED */
 void HandleSoftReset(
        Widget w,
@@ -1414,6 +1523,30 @@
 {
     do_clearsavedlines(w, (XtPointer)0, (XtPointer)0);
 }
+
+#if OPT_DEC_CHRSET
+void HandleFontDoublesize(
+       Widget w,
+       XEvent *event GCC_UNUSED,
+       String *params,
+       Cardinal *param_count)
+{
+    handle_toggle (do_font_doublesize, (int) term->screen.font_doublesize,
+                  params, *param_count, w, (XtPointer)0, (XtPointer)0);
+}
+#endif
+
+#if OPT_DEC_SOFTFONT
+void HandleFontLoading(
+       Widget w,
+       XEvent *event GCC_UNUSED,
+       String *params,
+       Cardinal *param_count)
+{
+    handle_toggle (do_font_loadable, (int) term->misc.font_loadable,
+                  params, *param_count, w, (XtPointer)0, (XtPointer)0);
+}
+#endif
 
 #if OPT_TEK4014
 void HandleSetTerminalType(
Index: menu.h
--- xterm-89+/menu.h    Sun Oct 25 13:31:39 1998
+++ xterm-90/menu.h     Sun Dec 13 16:25:35 1998
@@ -66,7 +66,10 @@
 extern void HandleClearSavedLines  PROTO_XT_ACTIONS_ARGS;
 extern void HandleCreateMenu       PROTO_XT_ACTIONS_ARGS;
 extern void HandleCursesEmul       PROTO_XT_ACTIONS_ARGS;
+extern void HandleFontDoublesize   PROTO_XT_ACTIONS_ARGS;
+extern void HandleFontLoading      PROTO_XT_ACTIONS_ARGS;
 extern void HandleHardReset        PROTO_XT_ACTIONS_ARGS;
+extern void HandleHpFunctionKeys   PROTO_XT_ACTIONS_ARGS;
 extern void HandleJumpscroll       PROTO_XT_ACTIONS_ARGS;
 extern void HandleLogging          PROTO_XT_ACTIONS_ARGS;
 extern void HandleMarginBell       PROTO_XT_ACTIONS_ARGS;
@@ -89,12 +92,13 @@
 extern void HandleTekCopy          PROTO_XT_ACTIONS_ARGS;
 extern void HandleTekPage          PROTO_XT_ACTIONS_ARGS;
 extern void HandleTekReset         PROTO_XT_ACTIONS_ARGS;
+extern void HandleTiteInhibit      PROTO_XT_ACTIONS_ARGS;
 extern void HandleVisibility       PROTO_XT_ACTIONS_ARGS;
 
 extern void DoSecureKeyboard (Time tp);
 
 /*
- * The following definitions MUST match the order of entries given in 
+ * The following definitions MUST match the order of entries given in
  * the mainMenuEntries, vtMenuEntries, and tekMenuEntries arrays in menu.c.
  */
 
@@ -116,6 +120,9 @@
 #if OPT_SUNPC_KBD
     mainMenu_sun_kbd,
 #endif
+#if OPT_HP_FUNC_KEYS
+    mainMenu_hp_fkeys,
+#endif
     mainMenu_line2,
     mainMenu_suspend,
     mainMenu_continue,
@@ -147,7 +154,7 @@
     vtMenu_cursesemul,
     vtMenu_visualbell,
     vtMenu_marginbell,
-    vtMenu_altscreen,
+    vtMenu_titeInhibit,
 #ifndef NO_ACTIVE_ICON
     vtMenu_activeicon,
 #endif /* NO_ACTIVE_ICON */
@@ -159,6 +166,7 @@
     vtMenu_tekshow,
     vtMenu_tekmode,
     vtMenu_vthide,
+    vtMenu_altscreen,
     vtMenu_LAST
 } vtMenuIndices;
 
@@ -176,9 +184,14 @@
 #define fontMenu_lastBuiltin fontMenu_font6
     fontMenu_fontescape,
     fontMenu_fontsel,
+/* number of non-line items down to here should match NMENUFONTS in ptyx.h */
+#if OPT_DEC_CHRSET
+    fontMenu_line1,
+    fontMenu_font_doublesize,
+    fontMenu_font_loadable,
+#endif
     fontMenu_LAST
 } fontMenuIndices;
-/* number of non-line items should match NMENUFONTS in ptyx.h */
 
 
 /*
@@ -261,6 +274,15 @@
                    sunKeyboard)
 #endif
 
+#if OPT_HP_FUNC_KEYS
+#define update_hp_fkeys() \
+  update_menu_item (term->screen.mainMenu, \
+                   mainMenuEntries[mainMenu_hp_fkeys].widget, \
+                   hpFunctionKeys)
+#else
+#define update_hp_fkeys() /*nothing*/
+#endif
+
 #define update_scrollbar() \
   update_menu_item (term->screen.vtMenu, \
                    vtMenuEntries[vtMenu_scrollbar].widget, \
@@ -315,7 +337,7 @@
   update_menu_item (term->screen.vtMenu, \
                    vtMenuEntries[vtMenu_allow132].widget, \
                    term->screen.c132)
-  
+
 #define update_cursesemul() \
   update_menu_item (term->screen.vtMenu, \
                    vtMenuEntries[vtMenu_cursesemul].widget, \
@@ -336,12 +358,35 @@
                    vtMenuEntries[vtMenu_altscreen].widget, \
                    term->screen.alternate)
 
+#define update_titeInhibit() \
+  update_menu_item (term->screen.vtMenu, \
+                   vtMenuEntries[vtMenu_titeInhibit].widget, \
+                   !(term->misc.titeInhibit))
+
 #ifndef NO_ACTIVE_ICON
 #define update_activeicon() \
   update_menu_item (term->screen.vtMenu, \
                    vtMenuEntries[vtMenu_activeicon].widget, \
                    term->misc.active_icon)
 #endif /* NO_ACTIVE_ICON */
+
+#if OPT_DEC_CHRSET
+#define update_font_doublesize() \
+  update_menu_item (term->screen.fontMenu, \
+                   fontMenuEntries[fontMenu_font_doublesize].widget, \
+                   term->screen.font_doublesize)
+#else
+#define update_font_doublesize() /* nothing */
+#endif
+
+#if OPT_DEC_SOFTFONT
+#define update_font_loadable() \
+  update_menu_item (term->screen.fontMenu, \
+                   fontMenuEntries[fontMenu_font_loadable].widget, \
+                   term->misc.font_loadable)
+#else
+#define update_font_loadable() /* nothing */
+#endif
 
 #if OPT_TEK4014
 #define update_tekshow() \
Index: os2main.c
--- xterm-89+/os2main.c Sun Oct 25 13:31:39 1998
+++ xterm-90/os2main.c  Tue Dec  8 17:51:24 1998
@@ -247,6 +247,9 @@
 #if OPT_SUNPC_KBD
     Boolean sunKeyboard;
 #endif
+#if OPT_HP_FUNC_KEYS
+    Boolean hpFunctionKeys;
+#endif
     Boolean wait_for_map;
     Boolean useInsertMode;
 #if OPT_ZICONBEEP
@@ -286,6 +289,10 @@
     {"sunKeyboard", "SunKeyboard", XtRBoolean, sizeof (Boolean),
        offset(sunKeyboard), XtRString, "false"},
 #endif
+#if OPT_HP_FUNC_KEYS
+    {"hpFunctionKeys", "HpFunctionKeys", XtRBoolean, sizeof (Boolean),
+       offset(hpFunctionKeys), XtRString, "false"},
+#endif
     {"waitForMap", "WaitForMap", XtRBoolean, sizeof (Boolean),
         offset(wait_for_map), XtRString, "false"},
     {"useInsertMode", "UseInsertMode", XtRBoolean, sizeof (Boolean),
@@ -353,6 +360,10 @@
 #if OPT_HIGHLIGHT_COLOR
 {"-hc",                "*highlightColor", XrmoptionSepArg,     (caddr_t) NULL},
 #endif
+#if OPT_HP_FUNC_KEYS
+{"-hf",                "*hpKeyboard",  XrmoptionNoArg,         (caddr_t) "on"},
+{"+hf",                "*hpKeyboard",  XrmoptionNoArg,         (caddr_t) "off"},
+#endif
 {"-j",         "*jumpScroll",  XrmoptionNoArg,         (caddr_t) "on"},
 {"+j",         "*jumpScroll",  XrmoptionNoArg,         (caddr_t) "off"},
 /* parse logging options anyway for compatibility */
@@ -462,6 +473,9 @@
 #if OPT_HIGHLIGHT_COLOR
 { "-hc",                  "selection background color" },
 #endif
+#if OPT_HP_FUNC_KEYS
+{ "-/+hf",                 "turn on/off HP Function Key escape codes" },
+#endif
 { "-/+im",                "use insert mode for TERMCAP" },
 { "-/+j",                  "turn on/off jump scroll" },
 #ifdef ALLOWLOGGING
@@ -490,7 +504,9 @@
 { "-/+si",                 "turn on/off scroll-on-tty-output inhibit" },
 { "-/+sk",                 "turn on/off scroll-on-keypress" },
 { "-sl number",            "number of scrolled lines to save" },
+#if OPT_SUNPC_KBD
 { "-/+sp",                 "turn on/off Sun/PC Function/Keypad mapping" },
+#endif
 #if OPT_TEK4014
 { "-/+t",                  "turn on/off Tek emulation window" },
 #endif
@@ -896,6 +912,9 @@
        sunFunctionKeys = resource.sunFunctionKeys;
 #if OPT_SUNPC_KBD
        sunKeyboard = resource.sunKeyboard;
+#endif
+#if OPT_HP_FUNC_KEYS
+       hpFunctionKeys = resource.hpFunctionKeys;
 #endif
        if (strcmp(xterm_name, "-") == 0) xterm_name = DFT_TERMTYPE;
        if (resource.icon_geometry != NULL) {
Index: ptyx.h
--- xterm-89+/ptyx.h    Sun Nov 22 13:07:22 1998
+++ xterm-90/ptyx.h     Sun Dec 13 19:06:20 1998
@@ -90,49 +90,49 @@
 ** allow for mobility of the pty master/slave directories
 */
 #ifndef PTYDEV
-#ifdef __hpux 
+#ifdef __hpux
 #define        PTYDEV          "/dev/ptym/ptyxx"
-#else  /* !__hpux */ 
+#else  /* !__hpux */
 #ifndef __osf__
 #define        PTYDEV          "/dev/ptyxx"
 #endif
-#endif /* !__hpux */ 
+#endif /* !__hpux */
 #endif /* !PTYDEV */
 
 #ifndef TTYDEV
-#ifdef __hpux 
+#ifdef __hpux
 #define TTYDEV         "/dev/pty/ttyxx"
-#else  /* !__hpux */ 
+#else  /* !__hpux */
 #ifdef __osf__
 #define TTYDEV         "/dev/ttydirs/xxx/xxxxxxxxxxxxxx"
 #else
 #define        TTYDEV          "/dev/ttyxx"
 #endif
-#endif /* !__hpux */ 
+#endif /* !__hpux */
 #endif /* !TTYDEV */
 
 #ifndef PTYCHAR1
-#ifdef __hpux 
+#ifdef __hpux
 #define PTYCHAR1       "zyxwvutsrqp"
-#else  /* !__hpux */ 
+#else  /* !__hpux */
 #ifdef __EMX__
 #define PTYCHAR1       "pq"
 #else
 #define        PTYCHAR1        "pqrstuvwxyzPQRSTUVWXYZ"
 #endif  /* !__EMX__ */
-#endif /* !__hpux */ 
+#endif /* !__hpux */
 #endif /* !PTYCHAR1 */
 
 #ifndef PTYCHAR2
-#ifdef __hpux 
+#ifdef __hpux
 #define        PTYCHAR2        "fedcba9876543210"
-#else  /* !__hpux */ 
+#else  /* !__hpux */
 #ifdef __FreeBSD__
 #define        PTYCHAR2        "0123456789abcdefghijklmnopqrstuv"
 #else /* !__FreeBSD__ */
 #define        PTYCHAR2        "0123456789abcdef"
 #endif /* !__FreeBSD__ */
-#endif /* !__hpux */ 
+#endif /* !__hpux */
 #endif /* !PTYCHAR2 */
 
 #ifndef TTYFORMAT
@@ -209,7 +209,7 @@
 #define DFT_DECID 100                  /* default VT100 */
 #endif
 
-#define NMENUFONTS 9                   /* entries in fontMenu */
+#define NMENUFONTS 9                   /* font entries in fontMenu */
 
 #define        NBOX    5                       /* Number of Points in box      */
 #define        NPARAM  10                      /* Max. parameters              */
@@ -308,10 +308,22 @@
 
 #define OPT_BLINK_CURS  0 /* FIXME: do this later (96/7/31) */
 
+#ifndef OPT_BOX_CHARS
+#define OPT_BOX_CHARS  1 /* true if xterm can simulate box-characters */
+#endif
+
 #ifndef OPT_DEC_CHRSET
 #define OPT_DEC_CHRSET  1 /* true if xterm is configured for DEC charset */
 #endif
 
+#ifndef OPT_DEC_SOFTFONT
+#define OPT_DEC_SOFTFONT 0 /* true if xterm is configured for VT220 softfonts */
+#endif
+
+#ifndef OPT_HP_FUNC_KEYS
+#define OPT_HP_FUNC_KEYS 0 /* true if xterm supports HP-style function keys */
+#endif
+
 #ifndef OPT_I18N_SUPPORT
 #if XtSpecificationRelease >= 6
 #define OPT_I18N_SUPPORT 1 /* true if xterm uses internationalization support */
@@ -375,7 +387,13 @@
 /***====================================================================***/
 
 #if OPT_AIX_COLORS && !OPT_ISO_COLORS
-fixme: You must have ANSI/ISO colors to support AIX colors
+/* You must have ANSI/ISO colors to support AIX colors */
+#undef OPT_AIX_COLORS
+#endif
+
+#if OPT_PC_COLORS && !OPT_ISO_COLORS
+/* You must have ANSI/ISO colors to support PC colors */
+#undef OPT_PC_COLORS
 #endif
 
 /***====================================================================***/
@@ -627,6 +645,7 @@
        Pixel           highlightcolor; /* Highlight background color   */
 #endif
 #if OPT_DEC_CHRSET
+       Boolean         font_doublesize;/* enable font-scaling          */
        Char            chrset;         /* character-set index & code   */
        XFontStruct *   double_fs[NUM_CHRSET];
        GC              double_gc[NUM_CHRSET];
@@ -662,6 +681,7 @@
 #endif /* NO_ACTIVE_ICON */
        Cursor pointer_cursor;          /* pointer cursor in window     */
 
+       String  answer_back;            /* response to ENQ              */
        String  printer_command;        /* pipe/shell command string    */
        Boolean printer_autoclose;      /* close printer when offline   */
        Boolean printer_extent;         /* print complete page          */
@@ -672,6 +692,9 @@
 #endif
 
        Boolean         fnt_prop;       /* true if proportional fonts   */
+       Boolean         fnt_boxes;      /* true if font has box-chars   */
+       Dimension       fnt_wide;
+       Dimension       fnt_high;
        XFontStruct     *fnt_norm;      /* normal font of terminal      */
        XFontStruct     *fnt_bold;      /* bold font of terminal        */
 #ifndef NO_ACTIVE_ICON
@@ -731,10 +754,11 @@
        Boolean         multiscroll;    /* true if multi-scroll         */
        int             scrolls;        /* outstanding scroll count,
                                            used only with multiscroll  */
-       SavedCursor     sc;             /* data for restore cursor      */
+       SavedCursor     sc[2];          /* data for restore cursor      */
        int             save_modes[24]; /* save dec/xterm private modes */
 
        /* Improved VT100 emulation stuff.                              */
+       String          keyboard_dialect; /* default keyboard dialect   */
        char            gsets[4];       /* G0 through G3.               */
        char            curgl;          /* Current GL setting.          */
        char            curgr;          /* Current GR setting.          */
@@ -878,6 +902,9 @@
     int icon_border_width;
     Pixel icon_border_pixel;
 #endif /* NO_ACTIVE_ICON */
+#if OPT_DEC_SOFTFONT
+    Boolean font_loadable;
+#endif
 } Misc;
 
 typedef struct {int foo;} XtermClassPart, TekClassPart;
Index: screen.c
--- xterm-89+/screen.c  Sun Dec 13 13:06:59 1998
+++ xterm-90/screen.c   Sun Dec 13 17:21:53 1998
@@ -685,7 +685,10 @@
                 || (cb[col] != cs)
 #endif
                 ) {
-                  TRACE(("%s @%d, calling drawXtermText %d..%d\n", __FILE__, __LINE__, lastind, col))
+                  TRACE(("%s @%d, calling drawXtermText %d..%d:%.*s\n",
+                       __FILE__, __LINE__,
+                       lastind, col,
+                       col - lastind, &chars[lastind]))
                   x = drawXtermText(screen, flags, gc, x, y,
                        cs,
                        &chars[lastind], col - lastind);
@@ -713,7 +716,10 @@
                        chars[col] = ' ';
           }
 
-          TRACE(("%s @%d, calling drawXtermText %d..%d\n", __FILE__, __LINE__, lastind, col))
+          TRACE(("%s @%d, calling drawXtermText %d..%d:%.*s\n",
+               __FILE__, __LINE__,
+               lastind, col,
+               col - lastind, &chars[lastind]))
           drawXtermText(screen, flags, gc, x, y,
                cs,
                &chars[lastind], col - lastind);
Index: termcap
--- xterm-89+/termcap   Sun Oct 11 13:00:35 1998
+++ xterm-90/termcap    Tue Dec  8 17:42:44 1998
@@ -39,7 +39,7 @@
        :li#24:md=\E[1m:me=\E[m^O:mr=\E[7m:ms:nd=\E[C:\
        :eA=\E)0:as=^N:ae=^O:ml=\El:mu=\Em:\
        :sc=\E7:rc=\E8:sf=\n:so=\E[7m:se=\E[27m:sr=\EM:st=\EH:\
-       :ti=\E7\E[?47h:te=\E[2J\E[?47l\E8:\
+       :ti=\E[?1049h:te=\E[?1049l:\
        :vi=\E[?25l:ve=\E[?25h:\
        :up=\E[A:us=\E[4m:ue=\E[24m:xn:\
        :ut:Co#8:op=\E[39;49m:AB=\E[4%dm:AF=\E[3%dm:\
Index: terminfo
--- xterm-89+/terminfo  Sun Oct 25 13:31:39 1998
+++ xterm-90/terminfo   Tue Dec  8 17:48:45 1998
@@ -13,7 +13,7 @@
 # meml locks memory above the cursor; memu unlocks (ala HP terminals).  This
 #      is not recognized by some older (e.g., SVr3) tic programs, but none
 #      do more than warn about it.  Ignore the warning.
-# rmcup clears memory before switching to the alternate screen.  The older
+# smcup clears memory before switching to the alternate screen.  The older
 #      (deprecated) \E[?47h did not do this, requiring applications to
 #      embed a \E[2J in the rmcup string.  However, that behavior cannot
 #      be disabled via titeInhibit, making that resource not function as
@@ -172,7 +172,7 @@
        ri=\EM,
        rmacs=^O,
        rmam=\E[?7l,
-       rmcup=\E[?1047l\E[?1048l,
+       rmcup=\E[?1049l,
        rmir=\E[4l,
        rmkx=\E[?1l\E>,
        rmso=\E[27m,
@@ -188,7 +188,7 @@
        sgr0=\E[m\017,
        smacs=^N,
        smam=\E[?7h,
-       smcup=\E[?1048h\E[?1047h,
+       smcup=\E[?1049h,
        smir=\E[4h,
        smkx=\E[?1h\E=,
        smso=\E[7m,
@@ -420,7 +420,7 @@
        ri=\215,
        rmacs=^O,
        rmam=\233?7l,
-       rmcup=\233?1047l\233?1048l,
+       rmcup=\233?1049l,
        rmir=\2334l,
        rmkx=\233?1l\E>,
        rmso=\23327m,
@@ -436,7 +436,7 @@
        sgr0=\233m^O,
        smacs=^N,
        smam=\233?7h,
-       smcup=\233?1048h\233?1047h,
+       smcup=\233?1049h,
        smir=\2334h,
        smkx=\233?1h\E=,
        smso=\2337m,
Index: util.c
--- xterm-89+/util.c    Sun Nov 22 13:07:22 1998
+++ xterm-90/util.c     Sun Dec 13 19:07:01 1998
@@ -33,6 +33,7 @@
 #include <data.h>
 #include <error.h>
 #include <menu.h>
+#include <fontutils.h>
 
 #include <ctype.h>
 
@@ -1295,6 +1296,16 @@
 }
 
 /*
+ * Set the fnt_wide/fnt_high values to a known state, based on the currently
+ * active font.
+ */
+#ifndef NO_ACTIVE_ICON
+#define SAVE_FONT_INFO(screen) xtermSaveFontInfo (screen, IsIcon(screen) ? screen->fnt_icon : screen->fnt_norm)
+#else
+#define SAVE_FONT_INFO(screen) xtermSaveFontInfo (screen, screen->fnt_norm)
+#endif
+
+/*
  * Draws text with the specified combination of bold/underline
  */
 int
@@ -1310,46 +1321,85 @@
 {
 #if OPT_DEC_CHRSET
        if (CSET_DOUBLE(chrset)) {
-               GC gc2 = xterm_DoubleGC(chrset, flags, gc);
+               GC gc2 = screen->font_doublesize
+                       ? xterm_DoubleGC(chrset, flags, gc)
+                       : 0;
 
                TRACE(("DRAWTEXT%c[%4d,%4d] (%d) %d:%.*s\n",
                        screen->cursor_state == OFF ? ' ' : '*',
                        y, x, chrset, len, len, text))
 
                if (gc2 != 0) { /* draw actual double-sized characters */
+                       XFontStruct *fs = screen->double_fs[chrset % NUM_CHRSET];
                        XRectangle rect, *rp = &rect;
                        Cardinal nr = 1;
+                       int adjust;
+
+                       SAVE_FONT_INFO (screen);
+                       screen->fnt_wide *= 2;
 
                        rect.x = 0;
                        rect.y = 0;
-                       rect.width = 2 * len * FontWidth(screen);
+                       rect.width = len * screen->fnt_wide;
                        rect.height = FontHeight(screen);
 
                        switch (chrset) {
                        case CSET_DHL_TOP:
                                rect.y = - (rect.height / 2);
                                y -= rect.y;
+                               screen->fnt_high *= 2;
                                break;
                        case CSET_DHL_BOT:
                                rect.y = (rect.height / 2);
                                y -= rect.y;
+                               screen->fnt_high *= 2;
                                break;
                        default:
                                nr = 0;
                                break;
                        }
 
+                       /*
+                        * Though it is the right "size", a given bold font may
+                        * be shifted up by a pixel or two.  Shift it back into
+                        * the clipping rectangle.
+                        */
+                       if (nr != 0) {
+                               adjust = fs->ascent
+                                       + fs->descent
+                                       - (2 * FontHeight(screen));
+                               rect.y -= adjust;
+                               y += adjust;
+                       }
+
                        if (nr)
                                XSetClipRectangles(screen->display, gc2,
                                        x, y, rp, nr, YXBanded);
                        else
                                XSetClipMask(screen->display, gc2, None);
 
-                       x = drawXtermText(screen, flags, gc2,
-                               x, y, 0, text, len);
-                       x += len * FontWidth(screen);
+                       /*
+                        * If we're trying to use proportional font, or if the
+                        * font server didn't give us what we asked for wrt
+                        * width, position each character independently.
+                        */
+                       if (screen->fnt_prop
+                        || (fs->min_bounds.width != fs->max_bounds.width)
+                        || (fs->min_bounds.width != 2 * FontWidth(screen)))
+                       {
+                               while (len--) {
+                                       x = drawXtermText(screen, flags, gc2,
+                                               x, y, 0, text++, 1);
+                                       x += FontWidth(screen);
+                               }
+                       } else {
+                               x = drawXtermText(screen, flags, gc2,
+                                       x, y, 0, text, len);
+                               x += len * FontWidth(screen);
+                       }
 
                        TRACE(("drewtext [%4d,%4d]\n", y, x))
+                       SAVE_FONT_INFO (screen);
 
                } else {        /* simulate double-sized characters */
                        Char *temp = (Char *) malloc(2 * len);
@@ -1407,20 +1457,47 @@
                return x;
        }
 
-       TRACE(("drawtext%c[%4d,%4d] (%d) %d:%.*s\n",
-               screen->cursor_state == OFF ? ' ' : '*',
-               y, x, chrset, len, len, text))
-       y += FontAscent(screen);
-       XDrawImageString(screen->display, TextWindow(screen), gc,
-               x, y,  (char *)text, len);
-       if ((flags & (BOLD|BLINK)) && screen->enbolden)
-               XDrawString(screen->display, TextWindow(screen), gc,
-                       x+1, y,  (char *)text, len);
-       if ((flags & UNDERLINE) && screen->underline) {
-               if (FontDescent(screen) > 1)
-                       y++;
-               XDrawLine(screen->display, TextWindow(screen), gc,
-                       x, y, x + len * FontWidth(screen) - 1, y);
+       /* If the font is complete, draw it as-is */
+       if (screen->fnt_boxes) {
+               TRACE(("drawtext%c[%4d,%4d] (%d) %d:%.*s\n",
+                       screen->cursor_state == OFF ? ' ' : '*',
+                       y, x, chrset, len, len, text))
+               y += FontAscent(screen);
+               XDrawImageString(screen->display, TextWindow(screen), gc,
+                       x, y,  (char *)text, len);
+               if ((flags & (BOLD|BLINK)) && screen->enbolden)
+                       XDrawString(screen->display, TextWindow(screen), gc,
+                               x+1, y,  (char *)text, len);
+               if ((flags & UNDERLINE) && screen->underline) {
+                       if (FontDescent(screen) > 1)
+                               y++;
+                       XDrawLine(screen->display, TextWindow(screen), gc,
+                               x, y, x + len * FontWidth(screen) - 1, y);
+               }
+#if OPT_BOX_CHARS
+#define DrawX(col) x + (col * FontWidth(screen))
+#define DrawSegment(first,last) (void)drawXtermText(screen, flags, gc, DrawX(first), y, chrset, text+first, last-first)
+       } else {        /* fill in missing box-characters */
+               XFontStruct *font = (flags & BOLD)
+                                 ? screen->fnt_bold
+                                 : screen->fnt_norm;
+               int last, first = 0;
+
+               screen->fnt_boxes = True;
+               for (last = 0; last < len; last++) {
+                       if (xtermMissingChar(text[last], font)) {
+                               if (last > first) {
+                                       DrawSegment(first,last);
+                               }
+                               xtermDrawBoxChar(screen, text[last], flags, gc, DrawX(last), y);
+                               first = last + 1;
+                       }
+               }
+               if (last > first) {
+                       DrawSegment(first,last);
+               }
+               screen->fnt_boxes = False;
+#endif
        }
 
        return x + len * FontWidth(screen);
@@ -1653,7 +1730,7 @@
                                bfr = (bfr != 0)
                                        ? realloc(bfr, length)
                                        : malloc(length);
-                               if (bfr == NULL) 
+                               if (bfr == NULL)
                                    SysError(ERROR_MMALLOC);
                        }
                        for (j = 0; j < n; j++)
Index: version.h
--- xterm-89+/version.h Sun Nov 22 13:07:22 1998
+++ xterm-90/version.h  Sun Dec 13 16:47:36 1998
@@ -6,4 +6,4 @@
  * version of xterm has been built.  The number in parentheses is my patch
  * number (T.Dickey).
  */
-#define XTERM_VERSION "XFree86 3.9Nm(89)"
+#define XTERM_VERSION "XFree86 3.9Nq(90)"
Index: xterm.h
--- xterm-89+/xterm.h   Sun Nov 22 13:07:22 1998
+++ xterm-90/xterm.h    Thu Dec 10 17:50:50 1998
@@ -156,8 +156,8 @@
 extern void CursorForward (TScreen *screen, int  n);
 extern void CursorNextLine (TScreen *screen, int count);
 extern void CursorPrevLine (TScreen *screen, int count);
-extern void CursorRestore (XtermWidget tw, SavedCursor *sc);
-extern void CursorSave (XtermWidget tw, SavedCursor *sc);
+extern void CursorRestore (XtermWidget tw);
+extern void CursorSave (XtermWidget tw);
 extern void CursorSet (TScreen *screen, int row, int col, unsigned flags);
 extern void CursorUp (TScreen *screen, int  n);
 extern void Index (TScreen *screen, int amount);
@@ -332,6 +332,7 @@
                /* FIXME: Reverse-Video? */
 #define getXtermBackground(flags, color) term->core.background_pixel
 #define getXtermForeground(flags, color) term->screen.foreground
+#define makeColorPair(fg, bg) 0
 #define xtermColorPair() 0
 
 #define useCurBackground(flag) /*nothing*/
Index: xterm.log.html
--- xterm-89+/xterm.log.html    Sun Nov 22 13:07:22 1998
+++ xterm-90/xterm.log.html     Sun Dec 13 19:05:48 1998
@@ -41,6 +41,7 @@
 xc/programs/Xserver/hw/xfree86).
 
 <UL>
+<LI><A HREF="#xterm_90">Patch #90 - 1998/12/13 - XFree86 3.9Nq</A>
 <LI><A HREF="#xterm_89">Patch #89 - 1998/11/20 - XFree86 3.9Nm</A>
 <LI><A HREF="#xterm_88">Patch #88 - 1998/10/31 - XFree86 3.9Nk and 3.3.2h</A>
 <LI><A HREF="#xterm_87">Patch #87 - 1998/10/21 - XFree86 3.9Nj and 3.3.2f</A>
@@ -133,6 +134,84 @@
 <LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
 </UL>
 
+<H1><A NAME="xterm_90">Patch #90 - 1998/12/13 - XFree86 3.9Nq</A></H1>
+This implements several small fixes and enhancements.  The chief one implements
+fallback support for line drawing characters with fonts that do not include
+those characters.  But I implemented that last.
+
+<ul>
+       <li>If any of the glyphs in positions 0-31 (used by xterm to implement
+         the VT100 alternate character set) are zero-sized (i.e., missing),
+         xterm will reserve a normal space for the glyph when drawing.  I
+         implemented a simple stroke-drawing function to draw the line-drawing
+         characters and a couple of the other (simpler) characters such as
+         diamond.  (This was suggested by Vikas Agnihotri).
+
+       <li>Modify the computation of doublesize characters to work around font
+         servers which shift the scaled characters up/down or do not give the
+         correct width.
+
+       <li>Add popup menu item and corresponding resource settings to disable
+         the font-scaling logic for doublesize characters to work around
+         (older) font servers which simply do not draw the fonts scaled to the
+         size that they said they would.  I see this problem on a SunOS system
+         running X11R5; the X11R6 servers seem well behaved.
+
+       <li>Implement new escape sequence, private mode 1049, which combines
+         the switch to/from alternate screen mode with screen clearing and
+         cursor save/restore.  Unlike the existing escape sequence, this
+         clears the alternate screen when switching to it rather than when
+         switching to the normal screen, thus retaining the alternate screen
+         contents for select/paste operations.
+
+       <p>When I implemented the popup menu entry to toggle between the normal
+         and alternate screens, I considered only pasting from the normal
+         screen to the alternate; this improvement allows either direction.
+
+       <li>Changed the termcap and terminfo for xterm-xfree86 and xterm-8bit
+         to use the new 1049 private mode.
+
+       <li>Modify the logic which switches between normal and alternate
+         screens so that the save/restore cursor operations apply only to the
+         current screen.  That means that applications which use the terminfo
+         smcur/rmcur or termcap ti/te capabilities will restore the cursor to
+         the original position on the normal screen rather than to the most
+         recent place where a save-cursor operation was performed.
+
+       <p>I note that a real VT100 terminal would not behave in this way,
+         but it is a moot point since the VT100 does not implement alternate
+         screen, and therefore the save/restore cursor sequence would not be
+         used in this context.  I reviewed the logic which switches between
+         normal and alternate screens based on some recent newsgroup postings
+         as well as a proposed patch in the Debian group which attempts to
+         do this (the patch has a bug, however, so I did not use it).
+
+       <li>Add popup menu entry for toggling the titeInhibit resource.
+
+       <li>Add new resource answerbackString, which overrides the default
+         "xterm" returned by xterm when responding to an ENQ (control/E)
+         character (request by Rajesh Vaidheeswarran &lt;rv@fore.com&gt;).
+
+       <li>Add new resource keyboardDialect for setting the NRC display
+         character set (request by Tomas Vanhala, who notes that I should
+         add logic to translate the keyboard as well).
+
+       <li>Add new command-line option and corresponding resources for making
+         xterm generate escape sequences compatible with HP terminals.  Like
+         the existing Sun escape sequences, this is available as a popup menu
+         item.  It is enabled by the configure script with the option
+         --enable-hp-fkeys (requested by Toni Mueller &lt;sales@oeko.net&gt;).
+
+       <li>Add configure script option --disable-boxchars to disable the
+         fallback support for line drawing characters.
+
+       <li>Fix ifdef's for configure script --disable-ansi-color, and reviewed
+         all configure options to ensure that all can be enabled/disabled
+         appropriately.
+
+       <li>Update config.guess and config.sub, from Lynx.
+</ul>
+
 <H1><A NAME="xterm_89">Patch #89 - 1998/11/20 - XFree86 3.9Nm</A></H1>
 This patch completes the implementation of double-sized character support
 for the VT100 emulation, and fixes a few minor bugs:
@@ -140,7 +219,7 @@
 <ul>
 <li>corrected the cursor position in HideCursor, which did not multiply
 the column by two when in doublesize mode.
-This bug, which did not appear in normal use, 
+This bug, which did not appear in normal use,
 dates back to my original <a href="#xterm_44">changes</a> to partly implement
 double-sized characters.
 I noticed it when cat'ing a typescript from vttest's double-sized character
@@ -213,15 +292,15 @@
 Several small fixes and enhancements, including a patch from
 Bjorn Helgaas:
 <ul>
-       <li>correct initialization of TERMCAP environment variable, which 
-         was frequently set to garbage on non-Linux systems because 
-         "termcap" and "newtc" contained random data from the stack. 
- 
-       <li>remove the LINEWRAPPED attribute from lines as they are cleared. 
-         Previously, the attribute was set but never cleared. 
- 
-       <li>make word and line selections work even when lines are wrapped 
-         by xterm.  Previously, selections were limited to one screen line. 
+       <li>correct initialization of TERMCAP environment variable, which
+         was frequently set to garbage on non-Linux systems because
+         "termcap" and "newtc" contained random data from the stack.
+
+       <li>remove the LINEWRAPPED attribute from lines as they are cleared.
+         Previously, the attribute was set but never cleared.
+
+       <li>make word and line selections work even when lines are wrapped
+         by xterm.  Previously, selections were limited to one screen line.
 </ul>
 as well as
 <ul>
@@ -319,7 +398,7 @@
          (those keys are too valuable to give up for a fine point of
          emulation).
 
-       <li>corrected a couple of places in terminfo where I missed using the 
+       <li>corrected a couple of places in terminfo where I missed using the
          vt220-style editing-keypad codes for Find/Select (mapped to Home/End).
 
        <li>checked termcap file against terminfo, fix several places where it
@@ -331,17 +410,17 @@
 This patch fixes several small bugs:
 <ul>
        <li>use X_EXTRA_LIBS in standalone Makefile.in (patch by Tomas Vanhala).
- 
+
        <li>add new resource 'oldXtermFKeys' which provides backward compatibility
          for F1-F4 control sequences with TOG's xterm.
- 
+
        <li>determine the server's default foreground/background Pixel values,
          needed if the -flipPixels X server option is used (reported by
          David Dawes).
 
        <li>correct logic for F1-F4 function keys so that they generate VT100
          compatible escape sequences in VT220 mode, since that is what the
-         numeric keypad is supposed to do (reported by Ron Johnson, Jr. 
+         numeric keypad is supposed to do (reported by Ron Johnson, Jr.
          &lt;ronjohn@communique.net&gt;).
 
        <li>modify logic for editing keypad to work more like VT220: don't
@@ -407,7 +486,7 @@
 
        <li>document SGR 8, 28 (invisible/visible), add corresponding
          capabilities to terminfo description.
-<p>      
+<p>
          I would also add the 'prot protected capability, but the control
          sequences for that would not be recognized or properly ignored by the
          older xterm programs.
@@ -593,20 +672,20 @@
 <p>
 From his description:
 <blockquote>
- This set of patches is the latest incarnation of patches originally 
-written by Ian! D Allen, then of the University of Waterloo and now of 
-who knows where; I have been carrying them forward from xterm to xterm 
-ever since about X11R4.  What they do is add an option so that when an 
-iconified xterm receives output it prepends '*** ' to its icon title 
-and (optionally) beeps the bell; deiconifying the xterm removes the 
-'*** '. Over the years I've found this to be incredibly convenient for 
-monitoring all sorts of low-activity things. 
+ This set of patches is the latest incarnation of patches originally
+written by Ian! D Allen, then of the University of Waterloo and now of
+who knows where; I have been carrying them forward from xterm to xterm
+ever since about X11R4.  What they do is add an option so that when an
+iconified xterm receives output it prepends '*** ' to its icon title
+and (optionally) beeps the bell; deiconifying the xterm removes the
+'*** '. Over the years I've found this to be incredibly convenient for
+monitoring all sorts of low-activity things.
 </blockquote>
 
 <H1><A NAME="xterm_71">Patch #71 - 1998/4/12 - XFree86 3.9Ag and 3.3.2</A></H1>
 
 This patch is a slightly modified version of one by Richard Braakman, which
-prevents buffer overflow in the input-method and preedit-type parsing in xterm. 
+prevents buffer overflow in the input-method and preedit-type parsing in xterm.
 I changed a couple of details to make the code more maintainable, and looked
 for similar things - copying into a fixed-size buffer (found none, though I did
 spot an unused variable).
Index: xterm.man
--- xterm-89+/xterm.man Sun Nov 22 13:07:22 1998
+++ xterm-90/xterm.man  Sun Dec 13 17:01:06 1998
@@ -129,6 +129,8 @@
 .IR vi (1)
 to switch to the alternate screen for editing and to restore the screen
 on exit.
+A popup menu entry makes it simple to switch between the normal and
+alternate screens for cut and paste.
 .PP
 In either VT102 or Tektronix mode, there are escape sequences to change the
 name of the windows.
@@ -162,7 +164,8 @@
 This causes \fIxterm\fP to print out a verbose message describing its options.
 The message is written to the standard error.
 .PP
-The other options are used to control the appearance and behavior:
+The other options are used to control the appearance and behavior.
+Not all options are necessarily configured into your copy of \fIxterm\fP.
 .TP 8
 .B \-132
 Normally, the VT102 DECCOLM escape sequence that switches between 80 and
@@ -294,6 +297,14 @@
 selected or otherwise highlighted text.  If not specified,
 reverse video is used.
 .TP 8
+.BI \-hf
+This option indicates that HP Function Key escape codes should be generated
+for function keys.
+.TP 8
+.BI \+hf
+This option indicates that HP Function Key escape codes should not be generated
+for function keys.
+.TP 8
 .B \-im
 Turn on the \fBuseInsertMode\fP resource.
 .TP 8
@@ -607,6 +618,10 @@
 classes as well as:
 .\".in +1in
 .TP 8
+.B "hpFunctionKeys (\fPclass\fB HpFunctionKeys)"
+Specifies whether or not HP Function Key escape codes should be generated for
+function keys instead of standard escape sequences.
+.TP 8
 .B "iconGeometry (\fPclass\fB IconGeometry)"
 Specifies the preferred size and position of the application when iconified.
 It is not necessarily obeyed by all window managers.
@@ -692,7 +707,12 @@
 the X protocol SendEvent request) should be interpreted or discarded.
 The default is ``false'' meaning they are discarded.  Note that allowing
 such events creates a very large security hole.
-.sp
+.TP 8
+.B "answerbackString (\fPclass\fB AnswerbackString)"
+Specifies the string that xterm sends in response to an ENQ (control/E)
+character from the host.
+The default is the terminal name, e.g., ``xterm''.
+A hardware VT100 implements this feature as a setup option.
 .TP 8
 .B "alwaysHighlight (\fPclass\fB AlwaysHighlight)"
 Specifies whether or not \fIxterm\fP should always display a highlighted
@@ -905,6 +925,15 @@
 .B "font6 (\fPclass\fB Font6)"
 Specifies the name of the sixth alternative font.
 .TP 8
+.B "fontDoublesize (\fPclass\fB FontDoublesize)"
+Specifies whether \fIxterm\fP should attempt to use font scaling to draw
+doublesize characters.
+Some older font servers cannot do this properly, will return misleading
+font metrics.
+The default is ``true''.
+If disabled, \fIxterm\fP will simulate doublesize characters by drawing
+normal characters with spaces between them.
+.TP 8
 .B "foreground (\fPclass\fB Foreground)"
 Specifies the color to use for displaying text in the window.  Setting the
 class name instead of the instance name is an easy way to have everything
@@ -949,6 +978,13 @@
 .B "jumpScroll (\fPclass\fB JumpScroll)"
 Specifies whether or not jump scroll should be used.  The default is ``true.''
 .TP 8
+.B "keyboardDialect (\fPclass\fB KeyboardDialect)"
+Specifies the initial keyboard dialect, as well as the default value when
+the terminal is reset.
+The value given is the same as the final character in the control sequences
+which change character sets.
+The default is ``B'', which corresponds to US ASCII.
+.TP 8
 .B "loginShell (\fPclass\fB LoginShell)"
 Specifies whether or not the shell to be run in the window should be started
 as a login shell.  The default is ``false.''
@@ -1104,6 +1140,9 @@
 screen-oriented programs) from the TERMCAP string.  If set,
 \fIxterm\fP also ignores the escape sequence to switch to the
 alternate screen.
+\fIXterm\fP supports terminfo in a different way, supporting composite control
+sequences (also known as private modes) 1047, 1048 and 1049 which have the same
+effect as the original 47 control sequence.
 .TP 8
 .B "translations (\fPclass\fB Translations)"
 Specifies the key and button bindings for menus, selections, ``programmed
@@ -1267,8 +1306,8 @@
 .B "marginbell (\fPclass\fB SmeBSB)"
 This entry invokes the \fBset-marginbell(toggle)\fP action.
 .TP 8
-.B "altscreen (\fPclass\fB SmeBSB)"
-This entry invokes the \fBset-altscreen(toggle)\fP action.
+.B "titeInhibit (\fPclass\fB SmeBSB)"
+This entry invokes the \fBset-titeInhibit(toggle)\fP action.
 .TP 8
 .B "activeicon (\fPclass\fB SMeBSB)"
 This entry toggles active icons on and off if this feature was
@@ -1299,6 +1338,9 @@
 .TP 8
 .B "vthide (\fPclass\fB SmeBSB)"
 This entry invokes the \fBset-visibility(vt,off)\fP action.
+.TP 8
+.B "altscreen (\fPclass\fB SmeBSB)"
+This entry invokes the \fBset-altscreen(toggle)\fP action.
 .\".in -1in
 .sp
 .PP
@@ -1827,6 +1869,18 @@
 This action toggles the \fBcurses\fP resource and is also invoked from the
 \fBcursesemul\fP entry in \fIvtMenu\fP.
 .TP 8
+.B "set-font-doublesize(\fIon/off/toggle\fP)"
+This action toggles the \fBfontDoublesize\fP resource and is also invoked by
+the \fBfont-doublesize\fP entry in \fIfontMenu\fP.
+.\" .TP 8
+.\" .B "set-font-loadable(\fIon/off/toggle\fP)"
+.\" This action toggles the \fBfontLoadable\fP resource and is also invoked by
+.\" the \fBfont-loadable\fP entry in \fIfontMenu\fP.
+.TP 8
+.B "set-hp-functionkeys(\fIon/off/toggle\fP)"
+This action toggles the \fBhpFunctionKeys\fP resource and is also invoked by
+the \fBhp function-keys\fP entry in \fImainMenu\fP.
+.TP 8
 .B "set-jumpscroll(\fIon/off/toggle\fP)"
 This action toggles the \fBjumpscroll\fP resource and is also invoked by the
 \fBjumpscroll\fP entry in \fIvtMenu\fP.
@@ -1858,6 +1912,14 @@
 This action toggles the \fBscrollbar\fP resource and is also invoked by
 the \fBscrollbar\fP entry in \fIvtMenu\fP.
 .TP 8
+.B "set-sun-functionkeys(\fIon/off/toggle\fP)"
+This action toggles the \fBsunFunctionKeys\fP resource and is also invoked by
+the \fBsun function-keys\fP entry in \fImainMenu\fP.
+.TP 8
+.B "set-sun-keyboard(\fIon/off/toggle\fP)"
+This action toggles the \fBsunKeyboard\fP resource and is also invoked by
+the \fBsun keyboard\fP entry in \fImainMenu\fP.
+.TP 8
 .B "set-tek-text(\fIlarge/2/3/small\fP)"
 This action sets font used in the Tektronix window to the value of the
 resources \fBtektextlarge\fP, \fBtektext2\fP, \fBtektext3\fP, and
@@ -1869,6 +1931,10 @@
 according to the \fItype\fP string.  It is also invoked by the
 \fBtekmode\fP entry in \fIvtMenu\fP and the \fBvtmode\fP entry in
 \fItekMenu\fP.
+.TP 8
+.B "set-titeInhibit(\fIon/off/toggle\fP)"
+This action toggles the \fBtiteInhibit\fP resource,
+which controls switching between the alternate and current screens.
 .TP 8
 .B "set-visibility(\fIvt/tek\fP,\fIon/off/toggle\fP)"
 This action controls whether or not the \fIvt\fP or \fItek\fP windows are
Index: xtermcfg.hin
--- xterm-89+/xtermcfg.hin      Sun Oct 25 13:31:39 1998
+++ xterm-90/xtermcfg.hin       Wed Dec  9 21:12:29 1998
@@ -51,8 +51,10 @@
 #undef NO_ACTIVE_ICON  /* CF_ARG_DISABLE(active-icon) */
 #undef OWN_TERMINFO_DIR        /* AC_ARG_WITH(own-terminfo) */
 #undef OPT_AIX_COLORS  /* CF_ARG_DISABLE(16-color) */
+#undef OPT_BOX_CHARS   /* CF_ARG_DISABLE(boxchars) */
 #undef OPT_DEC_CHRSET  /* CF_ARG_DISABLE(doublechars) */
 #undef OPT_HIGHLIGHT_COLOR /* CF_ARG_DISABLE(highlighting) */
+#undef OPT_HP_FUNC_KEYS        /* CF_ARG_ENABLE(hp-fkeys) */
 #undef OPT_I18N_SUPPORT        /* CF_ARG_DISABLE(i18n) */
 #undef OPT_INPUT_METHOD        /* CF_ARG_DISABLE(input-method) */
 #undef OPT_ISO_COLORS  /* CF_ARG_DISABLE(ansi-color) */