xterm-111.patch.txt

# ------------------------------------------------------------------------------
#  Tekproc.c                        |    2 
#  button.c                         |   21 -
#  charproc.c                       |  162 +++++++----
#  charsets.c                       |  261 +++++++++---------
#  configure                        |  521 +++++++++++++++++++------------------
#  configure.in                     |   60 ++--
#  ctlseqs.ms                       |    5 
#  cursor.c                         |    4 
#  doublechr.c                      |   15 -
#  input.c                          |   16 -
#  keysym2ucs.c                     |    2 
#  main.c                           |  146 ++++++++--
#  misc.c                           |  149 +++++++++-
#  os2main.c                        |   27 -
#  print.c                          |   31 +-
#  ptyx.h                           |   89 +++++-
#  screen.c                         |  100 +++++--
#  terminfo                         |   16 +
#  unicode/convmap.pl               |    2 
#  util.c                           |   53 +++
#  version.h                        |    4 
#  xterm-111/vttests/256colors.pl   |   11 
#  xterm-111/vttests/256colors2.pl  |   62 ++++
#  xterm-111/vttests/doublechars.sh |   78 +++++
#  xterm.h                          |   10 
#  xterm.log.html                   |   29 ++
#  xterm.man                        |    8 
#  xtermcfg.hin                     |    1 
#  28 files changed, 1314 insertions, 571 deletions
# ------------------------------------------------------------------------------
Index: Tekproc.c
--- xterm-110+/Tekproc.c        Sun May 16 15:55:44 1999
+++ xterm-111/Tekproc.c Sat Jul 10 12:35:07 1999
@@ -400,7 +400,7 @@
 #ifdef ALLOWLOGGING
                        if(screen->logging) {
                                FlushLog(screen);
-                               screen->logstart = VTbuffer.buf;
+                               screen->logstart = DecodedData(&(VTbuffer));
                        }
 #endif
                        return;
Index: button.c
--- xterm-110+/button.c Sun Jun 27 18:23:43 1999
+++ xterm-111/button.c  Fri Jul  9 21:17:55 1999
@@ -77,9 +77,6 @@
 #include <menu.h>
 #include <xcharmouse.h>
 
-#undef  CTRL
-#define        CTRL(c) ((c) & 0x1f)
-
 #define XTERM_CELL(row,col) getXtermCell(screen, row + screen->topline, col)
 
 #define KeyState(x) (((x) & (ShiftMask|ControlMask)) + (((x) & Mod1Mask) ? 2 : 0))
@@ -237,7 +234,7 @@
     if (event->type == ButtonPress || event->type == ButtonRelease) {
        line = ( event->xbutton.y - screen->border ) / FontHeight( screen );
        col  = ( event->xbutton.x - OriginX(screen)) / FontWidth( screen );
-       Line[0] = CTRL('X');
+       Line[0] = CONTROL('X');
        Line[1] = ESC;
        Line[2] = 'G';
        Line[3] = ' ' + col;
@@ -268,9 +265,9 @@
 
            if ( line < 0 ) {
                line = -line;
-               Line[0] = CTRL('n');
+               Line[0] = CONTROL('n');
            } else {
-               Line[0] = CTRL('p');
+               Line[0] = CONTROL('p');
            }
            while ( --line >= 0 )
                v_write(pty, Line, 1 );
@@ -1852,10 +1849,10 @@
     for (i = scol; i < ecol; i++) {
        c = XTERM_CELL(row, i);
        if (c == 0) {
-           c = ' ';
-       } else if (c < ' ') {
-           if (c == '\036')
-               c = '#';        /* char on screen is pound sterling */
+           c = E2A(' ');
+       } else if (c < E2A(' ')) {
+           if (c == XPOUND)
+               c = 0x23;       /* char on screen is pound sterling */
            else
                c += 0x5f;      /* char is from DEC drawing set */
        } else if (c == 0x7f) {
@@ -1866,8 +1863,8 @@
            lp = convertToUTF8(lp, c);
        else
 #endif
-       *lp++ = c;
-       if (c != ' ')
+       *lp++ = A2E(c);
+       if (c != E2A(' '))
            result = lp;
     }
 
Index: charproc.c
--- xterm-110+/charproc.c       Sun Jul  4 15:08:14 1999
+++ xterm-111/charproc.c        Sat Jul 10 12:33:44 1999
@@ -551,10 +551,10 @@
 #if OPT_XMC_GLITCH
 {XtNxmcGlitch, XtCXmcGlitch, XtRInt, sizeof(int),
        XtOffsetOf(XtermWidgetRec, screen.xmc_glitch),
-        XtRString, "0"},
+       XtRString, "0"},
 {XtNxmcAttributes, XtCXmcAttributes, XtRInt, sizeof(int),
        XtOffsetOf(XtermWidgetRec, screen.xmc_attributes),
-        XtRString, "1"},
+       XtRString, "1"},
 {XtNxmcInline, XtCXmcInline, XtRBoolean, sizeof(Boolean),
        XtOffsetOf(XtermWidgetRec, screen.xmc_inline),
        XtRBoolean, (XtPointer) &defaultFALSE},
@@ -569,11 +569,11 @@
        XtOffsetOf(XtermWidgetRec, screen.cutToBeginningOfLine),
        XtRBoolean, (XtPointer) &defaultTRUE},
 {XtNhighlightSelection,XtCHighlightSelection,XtRBoolean,
-        sizeof(Boolean),XtOffsetOf(XtermWidgetRec, screen.highlight_selection),
-        XtRBoolean, (XtPointer) &defaultFALSE},
+       sizeof(Boolean),XtOffsetOf(XtermWidgetRec, screen.highlight_selection),
+       XtRBoolean, (XtPointer) &defaultFALSE},
 {XtNtrimSelection,XtCTrimSelection,XtRBoolean,
-        sizeof(Boolean),XtOffsetOf(XtermWidgetRec, screen.trim_selection),
-        XtRBoolean, (XtPointer) &defaultFALSE},
+       sizeof(Boolean),XtOffsetOf(XtermWidgetRec, screen.trim_selection),
+       XtRBoolean, (XtPointer) &defaultFALSE},
 {XtNbackground, XtCBackground, XtRPixel, sizeof(Pixel),
        XtOffsetOf(XtermWidgetRec, core.background_pixel),
        XtRString, "XtDefaultBackground"},
@@ -610,20 +610,20 @@
        XtOffsetOf(XtermWidgetRec, misc.geo_metry),
        XtRString, (XtPointer) NULL},
 {XtNalwaysHighlight,XtCAlwaysHighlight,XtRBoolean,
-        sizeof(Boolean),XtOffsetOf(XtermWidgetRec, screen.always_highlight),
-        XtRBoolean, (XtPointer) &defaultFALSE},
+       sizeof(Boolean),XtOffsetOf(XtermWidgetRec, screen.always_highlight),
+       XtRBoolean, (XtPointer) &defaultFALSE},
 {XtNappcursorDefault,XtCAppcursorDefault,XtRBoolean,
-        sizeof(Boolean),XtOffsetOf(XtermWidgetRec, misc.appcursorDefault),
-        XtRBoolean, (XtPointer) &defaultFALSE},
+       sizeof(Boolean),XtOffsetOf(XtermWidgetRec, misc.appcursorDefault),
+       XtRBoolean, (XtPointer) &defaultFALSE},
 {XtNappkeypadDefault,XtCAppkeypadDefault,XtRBoolean,
-        sizeof(Boolean),XtOffsetOf(XtermWidgetRec, misc.appkeypadDefault),
-        XtRBoolean, (XtPointer) &defaultFALSE},
+       sizeof(Boolean),XtOffsetOf(XtermWidgetRec, misc.appkeypadDefault),
+       XtRBoolean, (XtPointer) &defaultFALSE},
 {XtNbackarrowKey, XtCBackarrowKey, XtRBoolean, sizeof(Boolean),
-        XtOffsetOf(XtermWidgetRec, screen.backarrow_key),
-        XtRBoolean, (XtPointer) &defaultTRUE},
+       XtOffsetOf(XtermWidgetRec, screen.backarrow_key),
+       XtRBoolean, (XtPointer) &defaultTRUE},
 {XtNbellSuppressTime, XtCBellSuppressTime, XtRInt, sizeof(int),
-        XtOffsetOf(XtermWidgetRec, screen.bellSuppressTime),
-        XtRInt, (XtPointer) &defaultBellSuppressTime},
+       XtOffsetOf(XtermWidgetRec, screen.bellSuppressTime),
+       XtRInt, (XtPointer) &defaultBellSuppressTime},
 {XtNtekGeometry,XtCGeometry, XtRString, sizeof(char *),
        XtOffsetOf(XtermWidgetRec, misc.T_geometry),
        XtRString, (XtPointer) NULL},
@@ -675,7 +675,7 @@
        XtRBoolean, (XtPointer) &defaultFALSE},
 {XtNprinterControlMode, XtCPrinterControlMode, XtRInt, sizeof(int),
        XtOffsetOf(XtermWidgetRec, screen.printer_controlmode),
-        XtRInt, (XtPointer) &defaultZERO},
+       XtRInt, (XtPointer) &defaultZERO},
 {XtNprinterCommand,XtCPrinterCommand, XtRString, sizeof(String),
        XtOffsetOf(XtermWidgetRec, screen.printer_command),
        XtRString, (XtPointer) "lpr"},
@@ -845,6 +845,8 @@
 {XtNcolor15, XtCForeground, XtRPixel, sizeof(Pixel),
        XtOffsetOf(XtermWidgetRec, screen.Acolors[COLOR_15]),
        XtRString, DFT_COLOR("white")},
+/* colors 16-256? should be settable, but surely there's a better way
+   than reproducing this template another 240 times */
 {XtNcolorBD, XtCForeground, XtRPixel, sizeof(Pixel),
        XtOffsetOf(XtermWidgetRec, screen.Acolors[COLOR_BD]),
        XtRString, DFT_COLOR("XtDefaultForeground")},
@@ -1046,7 +1048,7 @@
         * much sense for 16-color applications, but we keep it to retain
         * compatiblity with ANSI-color applications.
         */
-#if OPT_PC_COLORS
+#if OPT_PC_COLORS /* XXXJTL should be settable at runtime (resource or OSC?) */
        if (term->screen.boldColors
         && (fg >= 0)
         && (fg < 8)
@@ -1140,7 +1142,7 @@
        nextstate = -1;         /* not a legal state */
 
        for( ; ; ) {
-            int thischar = -1;
+           int thischar = -1;
            c = doinput();
 
            /* Intercept characters for printer controller mode */
@@ -1193,7 +1195,7 @@
                }
            } else
 #endif
-             nextstate = parsestate[c];
+             nextstate = parsestate[E2A(c)];
 
            /*
             * Accumulate string for printable text.  This may be 8/16-bit
@@ -1782,6 +1784,30 @@
                                          setExtendedFG();
                                        })
                                        break;
+                                case 38:
+                                       /* This is more complicated than I'd
+                                          like, but it should properly eat all
+                                          the parameters for unsupported modes
+                                       */
+                                       if_OPT_256_COLORS(screen,{
+                                               row++;
+                                               if (row < nparam) {
+                                                       switch(param[row]) {
+                                                        case 5:
+                                                               row++;
+                                                               if (row < nparam &&
+                                                                   param[row] < 256) {
+                                                                       term->sgr_foreground = param[row];
+                                                                       setExtendedFG();
+                                                               }
+                                                               break;
+                                                       default:
+                                                               row += 7;
+                                                               break;
+                                                       }
+                                               }
+                                       })
+                                       break;
                                 case 39:
                                        if_OPT_ISO_COLORS(screen,{
                                          reset_SGR_Foreground();
@@ -1799,6 +1825,25 @@
                                          SGR_Background(param[row] - 40);
                                        })
                                        break;
+                                case 48:
+                                       if_OPT_256_COLORS(screen,{
+                                               row++;
+                                               if (row < nparam) {
+                                                       switch(param[row]) {
+                                                        case 5:
+                                                               row++;
+                                                               if (row < nparam &&
+                                                                   param[row] < 256) {
+                                                                       SGR_Background(param[row]);
+                                                               }
+                                                               break;
+                                                       default:
+                                                               row += 7;
+                                                               break;
+                                                       }
+                                               }
+                                       })
+                                       break;
                                 case 49:
                                        if_OPT_ISO_COLORS(screen,{
                                          SGR_Background(-1);
@@ -2643,7 +2688,8 @@
        IChar   *buf,           /* start of characters to process */
        Cardinal len)           /* end */
 {
-       Cardinal n, next_col, offset;
+       int this_col;           /* must be signed */
+       Cardinal n, next_col, offset, last_col;
 
 #if OPT_WIDE_CHARS
        if (!screen->utf8_mode || charset == '0') /* don't translate if we use UTF-8 */
@@ -2660,9 +2706,10 @@
                }
        })
 
-       for (offset = 0; offset < len; offset += n) {
-               n = screen->max_col - screen->cur_col +1;
-               if (n <= 1) {
+       for (offset = 0; offset < len; offset += this_col) {
+               last_col = CurMaxCol(screen, screen->cur_row);
+               this_col = last_col - screen->cur_col +1;
+               if (this_col <= 1) {
                        if (screen->do_wrap && (term->flags & WRAPAROUND)) {
                            /* mark that we had to wrap this line */
                            ScrnSetWrapped(screen, screen->cur_row);
@@ -2670,13 +2717,14 @@
                            Index(screen, 1);
                            screen->cur_col = 0;
                            screen->do_wrap = 0;
-                           n = screen->max_col+1;
+                           this_col = last_col + 1;
                        } else
-                           n = 1;
+                           this_col = 1;
+               }
+               if (offset + this_col > len) {
+                       this_col = len - offset;
                }
-               if (offset + n > len)
-                       n = len - offset;
-               next_col = screen->cur_col + n;
+               next_col = screen->cur_col + this_col;
 
 #if OPT_WIDE_CHARS
                /*
@@ -2693,12 +2741,12 @@
                        Boolean both = False;
                        unsigned j, k;
 
-                       if (n >= limit) {
-                               limit = (n + 1) * 2;
+                       if (this_col >= (int) limit) {
+                               limit = (this_col + 1) * 2;
                                lobyte = (Char *)XtRealloc((char *)lobyte, limit);
                                hibyte = (Char *)XtRealloc((char *)hibyte, limit);
                        }
-                       for (j = offset; j < offset+n; j++) {
+                       for (j = offset; j < offset+this_col; j++) {
                                k = j-offset;
                                lobyte[k] = buf[j];
                                if (buf[j] > 255) {
@@ -2711,12 +2759,12 @@
 
                        WriteText(screen, PAIRED_CHARS(
                                lobyte,
-                               both ? hibyte : 0), n);
+                               both ? hibyte : 0), this_col);
                }
 #else
                WriteText(screen, PAIRED_CHARS(
                        buf+offset,
-                       buf2 ? buf2+offset : 0), n);
+                       buf2 ? buf2+offset : 0), this_col);
 #endif
 
                /*
@@ -2840,7 +2888,7 @@
 {
     static char *icon_name;
     static Arg args[] = {
-            { XtNiconName, (XtArgVal) &icon_name }
+           { XtNiconName, (XtArgVal) &icon_name }
     };
 
     TRACE(("event %d\n", event->type))
@@ -3007,7 +3055,7 @@
 #ifdef ALLOWLOGGING
                                if(screen->logging && TekPtyData()) {
                                        FlushLog(screen);
-                                       screen->logstart = Tbuffer->buf;
+                                       screen->logstart = DecodedData(Tbuffer);
                                }
 #endif
                                screen->TekEmu = TRUE;
@@ -3565,8 +3613,8 @@
 {
        if (c >= 0x80 && c <= 0x9F) {
                if (!term->screen.control_eight_bits) {
-                       unparseputc(ESC, fd);
-                       c -= 0x40;
+                       unparseputc(A2E(ESC), fd);
+                       c = A2E(c-0x40);
                }
        }
        unparseputc(c, fd);
@@ -4123,8 +4171,8 @@
        TRACE(("Acolors[%d] = %#lx\n", i, request->screen.Acolors[i]))
        wnew->screen.Acolors[i] = request->screen.Acolors[i];
        if (wnew->screen.Acolors[i] != wnew->dft_foreground
-        && wnew->screen.Acolors[i] != request->screen.foreground
-        && wnew->screen.Acolors[i] != request->core.background_pixel)
+       && wnew->screen.Acolors[i] != request->screen.foreground
+       && wnew->screen.Acolors[i] != request->core.background_pixel)
           color_ok = True;
    }
 
@@ -4138,7 +4186,11 @@
        TRACE(("All colors are foreground or background: disable colorMode\n"))
    }
 
+#if OPT_256_COLORS
+   wnew->num_ptrs = (OFF_BGRND+1);
+#else
    wnew->num_ptrs = (OFF_COLOR+1);
+#endif
    wnew->sgr_foreground = -1;
 #endif /* OPT_ISO_COLORS */
 
@@ -4204,7 +4256,7 @@
 
    /* make sure that the resize gravity acceptable */
    if ( wnew->misc.resizeGravity != NorthWestGravity &&
-        wnew->misc.resizeGravity != SouthWestGravity) {
+       wnew->misc.resizeGravity != SouthWestGravity) {
        Cardinal nparams = 1;
 
        XtAppWarningMsg(app_con, "rangeError", "resizeGravity", "XTermError",
@@ -4338,7 +4390,7 @@
         * is information that the shell widget ought to have before we get
         * realized, so that it can do the right thing.
         */
-        if (sizehints.flags & USPosition)
+       if (sizehints.flags & USPosition)
            XMoveWindow (XtDisplay(term), term->core.parent->core.window,
                         sizehints.x, sizehints.y);
 
@@ -4431,7 +4483,7 @@
 
        XDefineCursor(screen->display, VShellWindow, screen->pointer_cursor);
 
-        screen->cur_col = screen->cur_row = 0;
+       screen->cur_col = screen->cur_row = 0;
        screen->max_col = Width(screen)/screen->fullVwin.f_width - 1;
        screen->top_marg = 0;
        screen->bot_marg = screen->max_row = Height(screen) /
@@ -4521,10 +4573,10 @@
     }
 
     if (XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL)
-        || !xim_styles) {
+       || !xim_styles) {
        fprintf(stderr, "input method doesn't support any style\n");
-        XCloseIM(xim);
-        return;
+       XCloseIM(xim);
+       return;
     }
 
     found = False;
@@ -4606,7 +4658,7 @@
     if(curvt->core.background_pixel != newvt->core.background_pixel
        || curvt->screen.foreground != newvt->screen.foreground
        || curvt->screen.menu_font_names[curvt->screen.menu_font_number]
-          != newvt->screen.menu_font_names[newvt->screen.menu_font_number]
+         != newvt->screen.menu_font_names[newvt->screen.menu_font_number]
        || curvt->misc.f_n != newvt->misc.f_n) {
        if(curvt->misc.f_n != newvt->misc.f_n)
            newvt->screen.menu_font_names[fontMenu_fontdefault] = newvt->misc.f_n;
@@ -4655,7 +4707,7 @@
        register TScreen *screen = &term->screen;
        register int x, y, flags;
        Char    clo;
-       Char    fg_bg = 0;
+       int     fg_bg = 0;
        GC      currentGC;
        Boolean in_selection;
        Pixel fg_pix;
@@ -4705,11 +4757,13 @@
         * Compare the current cell to the last set of colors used for the
         * cursor and update the GC's if needed.
         */
-#if OPT_ISO_COLORS
-       if_OPT_ISO_COLORS(screen,{
+       if_OPT_256_COLORS(screen,{
+           fg_bg = (SCRN_BUF_FGRND(screen, screen->cursor_row)[screen->cursor_col] << 8) |
+                   (SCRN_BUF_BGRND(screen, screen->cursor_row)[screen->cursor_col]);
+       })
+       if_OPT_ISO_TRADITIONAL_COLORS(screen,{
            fg_bg = SCRN_BUF_COLOR(screen, screen->cursor_row)[screen->cursor_col];
        })
-#endif
        fg_pix = getXtermForeground(flags,extract_fg(fg_bg,flags));
        bg_pix = getXtermBackground(flags,extract_bg(fg_bg));
 
@@ -4830,7 +4884,11 @@
        clo   = SCRN_BUF_CHARS(screen, screen->cursor_row)[screen->cursor_col];
        flags = SCRN_BUF_ATTRS(screen, screen->cursor_row)[screen->cursor_col];
 
-       if_OPT_ISO_COLORS(screen,{
+       if_OPT_256_COLORS(screen,{
+           fg_bg = (SCRN_BUF_FGRND(screen, screen->cursor_row)[screen->cursor_col] << 8) |
+                   (SCRN_BUF_BGRND(screen, screen->cursor_row)[screen->cursor_col]);
+       })
+       if_OPT_ISO_TRADITIONAL_COLORS(screen,{
            fg_bg = SCRN_BUF_COLOR(screen, screen->cursor_row)[screen->cursor_col];
        })
 
Index: charsets.c
--- xterm-110+/charsets.c       Mon May  3 21:18:34 1999
+++ xterm-111/charsets.c        Fri Jul  9 20:37:11 1999
@@ -66,7 +66,7 @@
                switch (charset) {
                case 'A':       /* United Kingdom set (or Latin 1)      */
                        if (code == XK_sterling)
-                               code = '#';
+                               code = 0x23;
                        code &= 0x7f;
                        break;
 
@@ -83,13 +83,13 @@
 
                case '4':       /* Dutch */
                        switch (code) {
-                       case XK_sterling:       code = '#';     break;
-                       case XK_threequarters:  code = '@';     break;
+                       case XK_sterling:       code = 0x23;    break;
+                       case XK_threequarters:  code = 0x40;    break;
                        case XK_ydiaeresis:     code = 0x5b;    break;
                        case XK_onehalf:        code = 0x5c;    break;
-       /* N/A          case '|':               code = 0x5d;    break; */
+       /* N/A          case XK_bar:            code = 0x5d;    break; */
                        case XK_diaeresis:      code = 0x7b;    break;
-       /* N/A          case 'f':               code = 0x7c;    break; */
+       /* N/A          case XK_f:              code = 0x7c;    break; */
                        case XK_onequarter:     code = 0x7d;    break;
                        case XK_acute:          code = 0x7e;    break;
                        }
@@ -112,8 +112,8 @@
 
                case 'R':       /* French */
                        switch (code) {
-                       case XK_sterling:       code = '#';     break;
-                       case XK_agrave:         code = '@';     break;
+                       case XK_sterling:       code = 0x23;    break;
+                       case XK_agrave:         code = 0x40;    break;
                        case XK_degree:         code = 0x5b;    break;
                        case XK_ccedilla:       code = 0x5c;    break;
                        case XK_section:        code = 0x5d;    break;
@@ -126,7 +126,7 @@
 
                case 'Q':       /* French Canadian */
                        switch (code) {
-                       case XK_agrave:         code = '@';     break;
+                       case XK_agrave:         code = 0x40;    break;
                        case XK_acircumflex:    code = 0x5b;    break;
                        case XK_ccedilla:       code = 0x5c;    break;
                        case XK_ecircumflex:    code = 0x5d;    break;
@@ -141,7 +141,7 @@
 
                case 'K':       /* German */
                        switch (code) {
-                       case XK_section:        code = '@';     break;
+                       case XK_section:        code = 0x40;    break;
                        case XK_Adiaeresis:     code = 0x5b;    break;
                        case XK_Odiaeresis:     code = 0x5c;    break;
                        case XK_Udiaeresis:     code = 0x5d;    break;
@@ -154,8 +154,8 @@
 
                case 'Y':       /* Italian */
                        switch (code) {
-                       case XK_sterling:       code = '#';     break;
-                       case XK_section:        code = '@';     break;
+                       case XK_sterling:       code = 0x23;    break;
+                       case XK_section:        code = 0x40;    break;
                        case XK_degree:         code = 0x5b;    break;
                        case XK_ccedilla:       code = 0x5c;    break;
                        case XK_eacute:         code = 0x5d;    break;
@@ -170,7 +170,7 @@
                case 'E':
                case '6':       /* Norwegian/Danish */
                        switch (code) {
-                       case XK_Adiaeresis:     code = '@';     break;
+                       case XK_Adiaeresis:     code = 0x40;    break;
                        case XK_AE:             code = 0x5b;    break;
                        case XK_Ooblique:       code = 0x5c;    break;
                        case XK_Aring:          code = 0x5d;    break;
@@ -185,8 +185,8 @@
 
                case 'Z':       /* Spanish */
                        switch (code) {
-                       case XK_sterling:       code = '#';     break;
-                       case XK_section:        code = '@';     break;
+                       case XK_sterling:       code = 0x23;    break;
+                       case XK_section:        code = 0x40;    break;
                        case XK_exclamdown:     code = 0x5b;    break;
                        case XK_Ntilde:         code = 0x5c;    break;
                        case XK_questiondown:   code = 0x5d;    break;
@@ -199,7 +199,7 @@
                case 'H':
                case '7':       /* Swedish */
                        switch (code) {
-                       case XK_Eacute:         code = '@';     break;
+                       case XK_Eacute:         code = 0x40;    break;
                        case XK_Adiaeresis:     code = 0x5b;    break;
                        case XK_Odiaeresis:     code = 0x5c;    break;
                        case XK_Aring:          code = 0x5d;    break;
@@ -214,8 +214,8 @@
 
                case '=':       /* Swiss */
                        switch (code) {
-                       case XK_ugrave:         code = '#';     break;
-                       case XK_agrave:         code = '@';     break;
+                       case XK_ugrave:         code = 0x23;    break;
+                       case XK_agrave:         code = 0x40;    break;
                        case XK_eacute:         code = 0x5b;    break;
                        case XK_ccedilla:       code = 0x5c;    break;
                        case XK_ecircumflex:    code = 0x5d;    break;
@@ -254,18 +254,20 @@
                visibleIChar(buf, ptr-buf)))
 
        for (s = buf; s < ptr; ++s) {
-               int cs = (*s >= 128) ? rightset : leftset;
+               int eight = E2A(*s) & 0xff;
+               int seven = eight & 0x7f;
+               int cs = (eight >= 128) ? rightset : leftset;
+               int chr = eight;
 
                count++;
                switch (cs) {
                case 'A':       /* United Kingdom set (or Latin 1)      */
                        if ((term->flags & NATIONAL)
                         || (screen->ansi_level <= 1)) {
-                               *s &= 0xff;
-                               if (*s == '#')
-                                       *s = '\036';    /* UK pound sign*/
+                               if (chr == 0x23)
+                                       chr = XPOUND;   /* UK pound sign*/
                        } else {
-                               *s |= 0x80;
+                               chr = (seven | 0x80);
                        }
                        break;
 
@@ -278,155 +280,155 @@
                        break;
 
                case '0':       /* special graphics (line drawing)      */
-                       if (*s>=0x5f && *s<=0x7e)
-                               *s = (*s == 0x5f) ? 0x7f : *s - 0x5f;
+                       if (chr >= 0x5f && chr <= 0x7e)
+                               chr = (chr == 0x5f) ? 0x7f : (chr - 0x5f);
                        break;
 
                case '4':       /* Dutch */
-                       switch (*s &= 0x7f) {
-                       case '#':       *s = XK_sterling;       break;
-                       case '@':       *s = XK_threequarters;  break;
-                       case 0x5b:      *s = XK_ydiaeresis;     break;
-                       case 0x5c:      *s = XK_onehalf;        break;
-                       case 0x5d:      *s = '|';               break;
-                       case 0x7b:      *s = XK_diaeresis;      break;
-                       case 0x7c:      *s = 'f';               break;
-                       case 0x7d:      *s = XK_onequarter;     break;
-                       case 0x7e:      *s = XK_acute;          break;
+                       switch (chr = seven) {
+                       case 0x23:      chr = XK_sterling;      break;
+                       case 0x40:      chr = XK_threequarters; break;
+                       case 0x5b:      chr = XK_ydiaeresis;    break;
+                       case 0x5c:      chr = XK_onehalf;       break;
+                       case 0x5d:      chr = XK_bar;           break;
+                       case 0x7b:      chr = XK_diaeresis;     break;
+                       case 0x7c:      chr = XK_f;             break;
+                       case 0x7d:      chr = XK_onequarter;    break;
+                       case 0x7e:      chr = XK_acute;         break;
                        }
                        break;
 
                case 'C':
                case '5':       /* Finnish */
-                       switch (*s &= 0x7f) {
-                       case 0x5b:      *s = XK_Adiaeresis;     break;
-                       case 0x5c:      *s = XK_Odiaeresis;     break;
-                       case 0x5d:      *s = XK_Aring;          break;
-                       case 0x5e:      *s = XK_Udiaeresis;     break;
-                       case 0x60:      *s = XK_eacute;         break;
-                       case 0x7b:      *s = XK_adiaeresis;     break;
-                       case 0x7c:      *s = XK_odiaeresis;     break;
-                       case 0x7d:      *s = XK_aring;          break;
-                       case 0x7e:      *s = XK_udiaeresis;     break;
+                       switch (chr = seven) {
+                       case 0x5b:      chr = XK_Adiaeresis;    break;
+                       case 0x5c:      chr = XK_Odiaeresis;    break;
+                       case 0x5d:      chr = XK_Aring;         break;
+                       case 0x5e:      chr = XK_Udiaeresis;    break;
+                       case 0x60:      chr = XK_eacute;        break;
+                       case 0x7b:      chr = XK_adiaeresis;    break;
+                       case 0x7c:      chr = XK_odiaeresis;    break;
+                       case 0x7d:      chr = XK_aring;         break;
+                       case 0x7e:      chr = XK_udiaeresis;    break;
                        }
                        break;
 
                case 'R':       /* French */
-                       switch (*s &= 0x7f) {
-                       case '#':       *s = XK_sterling;       break;
-                       case '@':       *s = XK_agrave;         break;
-                       case 0x5b:      *s = XK_degree;         break;
-                       case 0x5c:      *s = XK_ccedilla;       break;
-                       case 0x5d:      *s = XK_section;        break;
-                       case 0x7b:      *s = XK_eacute;         break;
-                       case 0x7c:      *s = XK_ugrave;         break;
-                       case 0x7d:      *s = XK_egrave;         break;
-                       case 0x7e:      *s = XK_diaeresis;      break;
+                       switch (chr = seven) {
+                       case 0x23:      chr = XK_sterling;      break;
+                       case 0x40:      chr = XK_agrave;        break;
+                       case 0x5b:      chr = XK_degree;        break;
+                       case 0x5c:      chr = XK_ccedilla;      break;
+                       case 0x5d:      chr = XK_section;       break;
+                       case 0x7b:      chr = XK_eacute;        break;
+                       case 0x7c:      chr = XK_ugrave;        break;
+                       case 0x7d:      chr = XK_egrave;        break;
+                       case 0x7e:      chr = XK_diaeresis;     break;
                        }
                        break;
 
                case 'Q':       /* French Canadian */
-                       switch (*s &= 0x7f) {
-                       case '@':       *s = XK_agrave;         break;
-                       case 0x5b:      *s = XK_acircumflex;    break;
-                       case 0x5c:      *s = XK_ccedilla;       break;
-                       case 0x5d:      *s = XK_ecircumflex;    break;
-                       case 0x5e:      *s = XK_icircumflex;    break;
-                       case 0x60:      *s = XK_ocircumflex;    break;
-                       case 0x7b:      *s = XK_eacute;         break;
-                       case 0x7c:      *s = XK_ugrave;         break;
-                       case 0x7d:      *s = XK_egrave;         break;
-                       case 0x7e:      *s = XK_ucircumflex;    break;
+                       switch (chr = seven) {
+                       case 0x40:      chr = XK_agrave;        break;
+                       case 0x5b:      chr = XK_acircumflex;   break;
+                       case 0x5c:      chr = XK_ccedilla;      break;
+                       case 0x5d:      chr = XK_ecircumflex;   break;
+                       case 0x5e:      chr = XK_icircumflex;   break;
+                       case 0x60:      chr = XK_ocircumflex;   break;
+                       case 0x7b:      chr = XK_eacute;        break;
+                       case 0x7c:      chr = XK_ugrave;        break;
+                       case 0x7d:      chr = XK_egrave;        break;
+                       case 0x7e:      chr = XK_ucircumflex;   break;
                        }
                        break;
 
                case 'K':       /* German */
-                       switch (*s &= 0x7f) {
-                       case '@':       *s = XK_section;        break;
-                       case 0x5b:      *s = XK_Adiaeresis;     break;
-                       case 0x5c:      *s = XK_Odiaeresis;     break;
-                       case 0x5d:      *s = XK_Udiaeresis;     break;
-                       case 0x7b:      *s = XK_adiaeresis;     break;
-                       case 0x7c:      *s = XK_odiaeresis;     break;
-                       case 0x7d:      *s = XK_udiaeresis;     break;
-                       case 0x7e:      *s = XK_ssharp;         break;
+                       switch (chr = seven) {
+                       case 0x40:      chr = XK_section;       break;
+                       case 0x5b:      chr = XK_Adiaeresis;    break;
+                       case 0x5c:      chr = XK_Odiaeresis;    break;
+                       case 0x5d:      chr = XK_Udiaeresis;    break;
+                       case 0x7b:      chr = XK_adiaeresis;    break;
+                       case 0x7c:      chr = XK_odiaeresis;    break;
+                       case 0x7d:      chr = XK_udiaeresis;    break;
+                       case 0x7e:      chr = XK_ssharp;        break;
                        }
                        break;
 
                case 'Y':       /* Italian */
-                       switch (*s &= 0x7f) {
-                       case '#':       *s = XK_sterling;       break;
-                       case '@':       *s = XK_section;        break;
-                       case 0x5b:      *s = XK_degree;         break;
-                       case 0x5c:      *s = XK_ccedilla;       break;
-                       case 0x5d:      *s = XK_eacute;         break;
-                       case 0x60:      *s = XK_ugrave;         break;
-                       case 0x7b:      *s = XK_agrave;         break;
-                       case 0x7c:      *s = XK_ograve;         break;
-                       case 0x7d:      *s = XK_egrave;         break;
-                       case 0x7e:      *s = XK_igrave;         break;
+                       switch (chr = seven) {
+                       case 0x23:      chr = XK_sterling;      break;
+                       case 0x40:      chr = XK_section;       break;
+                       case 0x5b:      chr = XK_degree;        break;
+                       case 0x5c:      chr = XK_ccedilla;      break;
+                       case 0x5d:      chr = XK_eacute;        break;
+                       case 0x60:      chr = XK_ugrave;        break;
+                       case 0x7b:      chr = XK_agrave;        break;
+                       case 0x7c:      chr = XK_ograve;        break;
+                       case 0x7d:      chr = XK_egrave;        break;
+                       case 0x7e:      chr = XK_igrave;        break;
                        }
                        break;
 
                case 'E':
                case '6':       /* Norwegian/Danish */
-                       switch (*s &= 0x7f) {
-                       case '@':       *s = XK_Adiaeresis;     break;
-                       case 0x5b:      *s = XK_AE;             break;
-                       case 0x5c:      *s = XK_Ooblique;       break;
-                       case 0x5d:      *s = XK_Aring;          break;
-                       case 0x5e:      *s = XK_Udiaeresis;     break;
-                       case 0x60:      *s = XK_adiaeresis;     break;
-                       case 0x7b:      *s = XK_ae;             break;
-                       case 0x7c:      *s = XK_oslash;         break;
-                       case 0x7d:      *s = XK_aring;          break;
-                       case 0x7e:      *s = XK_udiaeresis;     break;
+                       switch (chr = seven) {
+                       case 0x40:      chr = XK_Adiaeresis;    break;
+                       case 0x5b:      chr = XK_AE;            break;
+                       case 0x5c:      chr = XK_Ooblique;      break;
+                       case 0x5d:      chr = XK_Aring;         break;
+                       case 0x5e:      chr = XK_Udiaeresis;    break;
+                       case 0x60:      chr = XK_adiaeresis;    break;
+                       case 0x7b:      chr = XK_ae;            break;
+                       case 0x7c:      chr = XK_oslash;        break;
+                       case 0x7d:      chr = XK_aring;         break;
+                       case 0x7e:      chr = XK_udiaeresis;    break;
                        }
                        break;
 
                case 'Z':       /* Spanish */
-                       switch (*s &= 0x7f) {
-                       case '#':       *s = XK_sterling;       break;
-                       case '@':       *s = XK_section;        break;
-                       case 0x5b:      *s = XK_exclamdown;     break;
-                       case 0x5c:      *s = XK_Ntilde;         break;
-                       case 0x5d:      *s = XK_questiondown;   break;
-                       case 0x7b:      *s = XK_degree;         break;
-                       case 0x7c:      *s = XK_ntilde;         break;
-                       case 0x7d:      *s = XK_ccedilla;       break;
+                       switch (chr = seven) {
+                       case 0x23:      chr = XK_sterling;      break;
+                       case 0x40:      chr = XK_section;       break;
+                       case 0x5b:      chr = XK_exclamdown;    break;
+                       case 0x5c:      chr = XK_Ntilde;        break;
+                       case 0x5d:      chr = XK_questiondown;  break;
+                       case 0x7b:      chr = XK_degree;        break;
+                       case 0x7c:      chr = XK_ntilde;        break;
+                       case 0x7d:      chr = XK_ccedilla;      break;
                        }
                        break;
 
                case 'H':
                case '7':       /* Swedish */
-                       switch (*s &= 0x7f) {
-                       case '@':       *s = XK_Eacute;         break;
-                       case 0x5b:      *s = XK_Adiaeresis;     break;
-                       case 0x5c:      *s = XK_Odiaeresis;     break;
-                       case 0x5d:      *s = XK_Aring;          break;
-                       case 0x5e:      *s = XK_Udiaeresis;     break;
-                       case 0x60:      *s = XK_eacute;         break;
-                       case 0x7b:      *s = XK_adiaeresis;     break;
-                       case 0x7c:      *s = XK_odiaeresis;     break;
-                       case 0x7d:      *s = XK_aring;          break;
-                       case 0x7e:      *s = XK_udiaeresis;     break;
+                       switch (chr = seven) {
+                       case 0x40:      chr = XK_Eacute;        break;
+                       case 0x5b:      chr = XK_Adiaeresis;    break;
+                       case 0x5c:      chr = XK_Odiaeresis;    break;
+                       case 0x5d:      chr = XK_Aring;         break;
+                       case 0x5e:      chr = XK_Udiaeresis;    break;
+                       case 0x60:      chr = XK_eacute;        break;
+                       case 0x7b:      chr = XK_adiaeresis;    break;
+                       case 0x7c:      chr = XK_odiaeresis;    break;
+                       case 0x7d:      chr = XK_aring;         break;
+                       case 0x7e:      chr = XK_udiaeresis;    break;
                        }
                        break;
 
                case '=':       /* Swiss */
-                       switch (*s &= 0x7f) {
-                       case '#':       *s = XK_ugrave;         break;
-                       case '@':       *s = XK_agrave;         break;
-                       case 0x5b:      *s = XK_eacute;         break;
-                       case 0x5c:      *s = XK_ccedilla;       break;
-                       case 0x5d:      *s = XK_ecircumflex;    break;
-                       case 0x5e:      *s = XK_icircumflex;    break;
-                       case 0x5f:      *s = XK_egrave;         break;
-                       case 0x60:      *s = XK_ocircumflex;    break;
-                       case 0x7b:      *s = XK_adiaeresis;     break;
-                       case 0x7c:      *s = XK_odiaeresis;     break;
-                       case 0x7d:      *s = XK_udiaeresis;     break;
-                       case 0x7e:      *s = XK_ucircumflex;    break;
+                       switch (chr = seven) {
+                       case 0x23:      chr = XK_ugrave;        break;
+                       case 0x40:      chr = XK_agrave;        break;
+                       case 0x5b:      chr = XK_eacute;        break;
+                       case 0x5c:      chr = XK_ccedilla;      break;
+                       case 0x5d:      chr = XK_ecircumflex;   break;
+                       case 0x5e:      chr = XK_icircumflex;   break;
+                       case 0x5f:      chr = XK_egrave;        break;
+                       case 0x60:      chr = XK_ocircumflex;   break;
+                       case 0x7b:      chr = XK_adiaeresis;    break;
+                       case 0x7c:      chr = XK_odiaeresis;    break;
+                       case 0x7d:      chr = XK_udiaeresis;    break;
+                       case 0x7e:      chr = XK_ucircumflex;   break;
                        }
                        break;
 
@@ -434,6 +436,7 @@
                        count --;
                        break;
                }
+               *s = A2E(chr);
        }
        return count;
 }
Index: configure
--- xterm-110+/configure        Sun Jun 27 18:23:43 1999
+++ xterm-111/configure Wed Jul  7 22:11:42 1999
@@ -193,11 +193,12 @@
   --disable-active-icon   disable X11R6.3 active-icon feature
   --disable-ansi-color    disable ANSI color
   --disable-16-color      disable 16-color support
+  --disable-256-color     enable 256-color support
   --disable-blink-cursor  disable support for blinking cursor
   --disable-bold-color    disable PC-style mapping of bold colors
-  --disable-color-mode    disable default colorMode resource
 EOF
 cat <<EOF
+  --disable-color-mode    disable default colorMode resource
   --disable-highlighting  disable support for color highlighting
   --disable-doublechars   disable support for double-size chars
   --disable-boxchars      disable fallback-support for box chars
@@ -209,9 +210,9 @@
   --enable-logfile-exec   enable exec'd logfile filter
   --disable-maximize      disable actions for iconify/deiconify/maximize/restore
   --disable-num-lock      disable NumLock keypad support
-  --disable-rightbar      disable right-scrollbar support
 EOF
 cat <<EOF
+  --disable-rightbar      disable right-scrollbar support
   --disable-samename      disable check for redundant name-change
   --disable-tek4014       disable tek4014 emulation
   --disable-vt52          disable VT52 emulation
@@ -588,7 +589,7 @@
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:592: checking host system type" >&5
+echo "configure:593: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -639,7 +640,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:643: checking for $ac_word" >&5
+echo "configure:644: 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
@@ -669,7 +670,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:673: checking for $ac_word" >&5
+echo "configure:674: 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
@@ -720,7 +721,7 @@
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:724: checking for $ac_word" >&5
+echo "configure:725: 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
@@ -752,7 +753,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:756: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:757: 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.
@@ -763,12 +764,12 @@
 
 cat > conftest.$ac_ext << EOF
 
-#line 767 "configure"
+#line 768 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -794,12 +795,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:798: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:799: 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:803: checking whether we are using GNU C" >&5
+echo "configure:804: 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
@@ -808,7 +809,7 @@
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:812: \"$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:813: \"$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
@@ -827,7 +828,7 @@
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:831: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:832: 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
@@ -859,7 +860,7 @@
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:863: checking how to run the C preprocessor" >&5
+echo "configure:864: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -874,13 +875,13 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 878 "configure"
+#line 879 "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:884: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:885: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -891,13 +892,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 895 "configure"
+#line 896 "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:901: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:902: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -908,13 +909,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 912 "configure"
+#line 913 "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:918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -940,13 +941,13 @@
 
 if test $ac_cv_prog_gcc = yes; then
     echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:944: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:945: 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 950 "configure"
+#line 951 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
@@ -964,7 +965,7 @@
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat > conftest.$ac_ext <<EOF
-#line 968 "configure"
+#line 969 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
@@ -997,7 +998,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:1001: checking for a BSD compatible install" >&5
+echo "configure:1002: 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
@@ -1052,9 +1053,9 @@
 
 ###    checks for UNIX variants that set C preprocessor variables
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:1056: checking for AIX" >&5
+echo "configure:1057: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 1058 "configure"
+#line 1059 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -1076,7 +1077,7 @@
 
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1080: checking for POSIXized ISC" >&5
+echo "configure:1081: 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
@@ -1098,17 +1099,17 @@
 
 ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-echo "configure:1102: checking for minix/config.h" >&5
+echo "configure:1103: 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 1107 "configure"
+#line 1108 "configure"
 #include "confdefs.h"
 #include <minix/config.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1112: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1113: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1151,17 +1152,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1155: checking for $ac_hdr" >&5
+echo "configure:1156: 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 1160 "configure"
+#line 1161 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1165: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1166: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1191,13 +1192,13 @@
 ###    checks for typedefs
 
 echo $ac_n "checking for size_t in <sys/types.h> or <stdio.h>""... $ac_c" 1>&6
-echo "configure:1195: checking for size_t in <sys/types.h> or <stdio.h>" >&5
+echo "configure:1196: 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 1201 "configure"
+#line 1202 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1210,7 +1211,7 @@
 size_t x
 ; return 0; }
 EOF
-if { (eval echo configure:1214: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1215: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_size_t=yes
 else
@@ -1230,12 +1231,12 @@
 
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1234: checking for ANSI C header files" >&5
+echo "configure:1235: 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 1239 "configure"
+#line 1240 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1243,7 +1244,7 @@
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1248: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1260,7 +1261,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 1264 "configure"
+#line 1265 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1278,7 +1279,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 1282 "configure"
+#line 1283 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1299,7 +1300,7 @@
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1303 "configure"
+#line 1304 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1310,7 +1311,7 @@
 exit (0); }
 
 EOF
-if { (eval echo configure:1314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1334,12 +1335,12 @@
 fi
 
 echo $ac_n "checking for time_t""... $ac_c" 1>&6
-echo "configure:1338: checking for time_t" >&5
+echo "configure:1339: 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 1343 "configure"
+#line 1344 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1377,12 +1378,12 @@
        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1381: checking for $ac_func" >&5
+echo "configure:1382: 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 1386 "configure"
+#line 1387 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1405,7 +1406,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -1431,12 +1432,12 @@
 
 
 echo $ac_n "checking for memmove""... $ac_c" 1>&6
-echo "configure:1435: checking for memmove" >&5
+echo "configure:1436: 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 1440 "configure"
+#line 1441 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char memmove(); below.  */
@@ -1459,7 +1460,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_memmove=yes"
 else
@@ -1478,12 +1479,12 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for bcopy""... $ac_c" 1>&6
-echo "configure:1482: checking for bcopy" >&5
+echo "configure:1483: 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 1487 "configure"
+#line 1488 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char bcopy(); below.  */
@@ -1506,7 +1507,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:1510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_bcopy=yes"
 else
@@ -1522,7 +1523,7 @@
   echo "$ac_t""yes" 1>&6
   
        echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6
-echo "configure:1526: checking if bcopy does overlapping moves" >&5
+echo "configure:1527: 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
@@ -1531,7 +1532,7 @@
   cf_cv_good_bcopy=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 1535 "configure"
+#line 1536 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1544,7 +1545,7 @@
 }
                
 EOF
-if { (eval echo configure:1548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cf_cv_good_bcopy=yes
 else
@@ -1582,7 +1583,7 @@
 
 
 echo $ac_n "checking for full tgetent function""... $ac_c" 1>&6
-echo "configure:1586: checking for full tgetent function" >&5
+echo "configure:1587: 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
@@ -1597,7 +1598,7 @@
   echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&5
 else
   cat > conftest.$ac_ext <<EOF
-#line 1601 "configure"
+#line 1602 "configure"
 #include "confdefs.h"
 
 /* terminfo implementations ignore the buffer argument, making it useless for
@@ -1611,7 +1612,7 @@
        tgetent(buffer, "vt100");
        exit(buffer[0] == 0); }
 EOF
-if { (eval echo configure:1615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&5
         if test -n "$cf_termlib" ; then
@@ -1646,17 +1647,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1650: checking for $ac_hdr" >&5
+echo "configure:1651: 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 1655 "configure"
+#line 1656 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1660: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1661: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1689,7 +1690,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:1693: checking for partial tgetent function" >&5
+echo "configure:1694: 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
@@ -1698,14 +1699,14 @@
        for cf_termlib in $cf_TERMLIB ; do
                LIBS="$cf_save_LIBS -l$cf_termlib"
                cat > conftest.$ac_ext <<EOF
-#line 1702 "configure"
+#line 1703 "configure"
 #include "confdefs.h"
 
 int main() {
 tgetent(0, 0)
 ; return 0; }
 EOF
-if { (eval echo configure:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "there is a terminfo/tgetent in $cf_termlib" 1>&5
                         cf_cv_lib_part_tgetent="-l$cf_termlib"
@@ -1728,17 +1729,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1732: checking for $ac_hdr" >&5
+echo "configure:1733: 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 1737 "configure"
+#line 1738 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1742: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1743: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1778,13 +1779,13 @@
 ###    checks for structures
 
 echo $ac_n "checking for declaration of fd_set""... $ac_c" 1>&6
-echo "configure:1782: checking for declaration of fd_set" >&5
+echo "configure:1783: 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 1788 "configure"
+#line 1789 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1792,7 +1793,7 @@
 fd_set x
 ; return 0; }
 EOF
-if { (eval echo configure:1796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1797: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_fd_set=sys/types.h
 else
@@ -1800,7 +1801,7 @@
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 1804 "configure"
+#line 1805 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -1809,7 +1810,7 @@
 fd_set x
 ; return 0; }
 EOF
-if { (eval echo configure:1813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_fd_set=sys/select.h
 else
@@ -1833,14 +1834,14 @@
 
 
 echo $ac_n "checking if POSIX VDISABLE symbol should be used""... $ac_c" 1>&6
-echo "configure:1837: checking if POSIX VDISABLE symbol should be used" >&5
+echo "configure:1838: checking if POSIX VDISABLE symbol should be used" >&5
 if eval "test \"`echo '$''{'cf_cv_posix_vdisable'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 1844 "configure"
+#line 1845 "configure"
 #include "confdefs.h"
 
 #if HAVE_TERMIOS_H && HAVE_TCGETATTR
@@ -1858,7 +1859,7 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:1862: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_posix_vdisable=yes
 else
@@ -1870,7 +1871,7 @@
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 1874 "configure"
+#line 1875 "configure"
 #include "confdefs.h"
 
 #if HAVE_TERMIOS_H && HAVE_TCGETATTR
@@ -1883,7 +1884,7 @@
 int main() { exit(_POSIX_VDISABLE == -1); }
 #endif
 EOF
-if { (eval echo configure:1887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cf_cv_posix_vdisable=yes
 else
@@ -1909,13 +1910,13 @@
 
 
 echo $ac_n "checking if external errno is declared""... $ac_c" 1>&6
-echo "configure:1913: checking if external errno is declared" >&5
+echo "configure:1914: checking if external errno is declared" >&5
 if eval "test \"`echo '$''{'cf_cv_dcl_errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 1919 "configure"
+#line 1920 "configure"
 #include "confdefs.h"
 
 #if HAVE_STDLIB_H
@@ -1928,7 +1929,7 @@
 long x = (long) errno
 ; return 0; }
 EOF
-if { (eval echo configure:1932: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1933: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval 'cf_cv_dcl_'errno'=yes'
 else
@@ -1959,13 +1960,13 @@
 # It's possible (for near-UNIX clones) that the data doesn't exist
 
 echo $ac_n "checking if external errno exists""... $ac_c" 1>&6
-echo "configure:1963: checking if external errno exists" >&5
+echo "configure:1964: checking if external errno exists" >&5
 if eval "test \"`echo '$''{'cf_cv_have_errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 1969 "configure"
+#line 1970 "configure"
 #include "confdefs.h"
 
 #undef errno
@@ -1975,7 +1976,7 @@
 errno = 2
 ; return 0; }
 EOF
-if { (eval echo configure:1979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval 'cf_cv_have_'errno'=yes'
 else
@@ -2008,12 +2009,12 @@
 
 ###    checks for compiler characteristics
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:2012: checking for working const" >&5
+echo "configure:2013: 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 2017 "configure"
+#line 2018 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -2062,7 +2063,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2066: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -2084,7 +2085,7 @@
 
 
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:2088: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:2089: 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
@@ -2108,7 +2109,7 @@
 do
        CFLAGS="$cf_save_CFLAGS $cf_arg"
        cat > conftest.$ac_ext <<EOF
-#line 2112 "configure"
+#line 2113 "configure"
 #include "confdefs.h"
 
 #ifndef CC_HAS_PROTOS
@@ -2124,7 +2125,7 @@
        struct s2 {int (*f) (double a);};
 ; return 0; }
 EOF
-if { (eval echo configure:2128: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_ansi_cc="$cf_arg"; break
 else
@@ -2154,12 +2155,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:2158: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:2159: 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 2163 "configure"
+#line 2164 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -2175,7 +2176,7 @@
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:2179: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2180: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -2201,7 +2202,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:2205: checking for X" >&5
+echo "configure:2206: checking for X" >&5
 
 
 # Check whether --with-x or --without-x was given.
@@ -2264,12 +2265,12 @@
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 2268 "configure"
+#line 2269 "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:2273: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2274: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2338,14 +2339,14 @@
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2342 "configure"
+#line 2343 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:2349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   LIBS="$ac_save_LIBS"
 # We can link X programs with no special library path.
@@ -2445,7 +2446,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:2449: checking for open in -lc_s" >&5
+echo "configure:2450: 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
@@ -2453,7 +2454,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lc_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2457 "configure"
+#line 2458 "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
@@ -2464,7 +2465,7 @@
 open()
 ; return 0; }
 EOF
-if { (eval echo configure:2468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2481,7 +2482,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:2485: checking for gethostname in -lbsd" >&5
+echo "configure:2486: 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
@@ -2489,7 +2490,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lbsd  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2493 "configure"
+#line 2494 "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
@@ -2500,7 +2501,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:2504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2517,7 +2518,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:2521: checking for gethostname in -lnsl_s" >&5
+echo "configure:2522: 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
@@ -2525,7 +2526,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2529 "configure"
+#line 2530 "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
@@ -2536,7 +2537,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:2540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2553,7 +2554,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:2557: checking for XOpenDisplay in -lX11_s" >&5
+echo "configure:2558: 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
@@ -2561,7 +2562,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lX11_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2565 "configure"
+#line 2566 "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
@@ -2572,7 +2573,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:2576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2589,7 +2590,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:2593: checking for XtAppInitialize in -lXt_s" >&5
+echo "configure:2594: 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
@@ -2597,7 +2598,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXt_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2601 "configure"
+#line 2602 "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
@@ -2608,7 +2609,7 @@
 XtAppInitialize()
 ; return 0; }
 EOF
-if { (eval echo configure:2612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2649,7 +2650,7 @@
        ;;
 *)
        echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:2653: checking for socket in -lsocket" >&5
+echo "configure:2654: 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
@@ -2657,7 +2658,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2661 "configure"
+#line 2662 "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
@@ -2668,7 +2669,7 @@
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:2672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2696,7 +2697,7 @@
 fi
 
        echo $ac_n "checking for gethostname in -lnsl""... $ac_c" 1>&6
-echo "configure:2700: checking for gethostname in -lnsl" >&5
+echo "configure:2701: 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
@@ -2704,7 +2705,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2708 "configure"
+#line 2709 "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
@@ -2715,7 +2716,7 @@
 gethostname()
 ; return 0; }
 EOF
-if { (eval echo configure:2719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2766,17 +2767,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:2770: checking whether -R must be followed by a space" >&5
+echo "configure:2771: 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 2773 "configure"
+#line 2774 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -2792,14 +2793,14 @@
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 2796 "configure"
+#line 2797 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -2831,7 +2832,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:2835: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:2836: 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
@@ -2839,7 +2840,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2843 "configure"
+#line 2844 "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
@@ -2850,7 +2851,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:2854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2872,7 +2873,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:2876: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:2877: 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
@@ -2880,7 +2881,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet_stub  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2884 "configure"
+#line 2885 "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
@@ -2891,7 +2892,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:2895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2920,12 +2921,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:2924: checking for gethostbyname" >&5
+echo "configure:2925: 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 2929 "configure"
+#line 2930 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -2948,7 +2949,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:2952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gethostbyname=yes"
 else
@@ -2969,7 +2970,7 @@
 
     if test $ac_cv_func_gethostbyname = no; then
       echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:2973: checking for gethostbyname in -lnsl" >&5
+echo "configure:2974: 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
@@ -2977,7 +2978,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2981 "configure"
+#line 2982 "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
@@ -2988,7 +2989,7 @@
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:2992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3018,12 +3019,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:3022: checking for connect" >&5
+echo "configure:3023: 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 3027 "configure"
+#line 3028 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -3046,7 +3047,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_connect=yes"
 else
@@ -3067,7 +3068,7 @@
 
     if test $ac_cv_func_connect = no; then
       echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:3071: checking for connect in -lsocket" >&5
+echo "configure:3072: 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
@@ -3075,7 +3076,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3079 "configure"
+#line 3080 "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
@@ -3086,7 +3087,7 @@
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:3090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3110,12 +3111,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:3114: checking for remove" >&5
+echo "configure:3115: 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 3119 "configure"
+#line 3120 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -3138,7 +3139,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_remove=yes"
 else
@@ -3159,7 +3160,7 @@
 
     if test $ac_cv_func_remove = no; then
       echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:3163: checking for remove in -lposix" >&5
+echo "configure:3164: 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
@@ -3167,7 +3168,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3171 "configure"
+#line 3172 "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
@@ -3178,7 +3179,7 @@
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:3182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3202,12 +3203,12 @@
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:3206: checking for shmat" >&5
+echo "configure:3207: 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 3211 "configure"
+#line 3212 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -3230,7 +3231,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_shmat=yes"
 else
@@ -3251,7 +3252,7 @@
 
     if test $ac_cv_func_shmat = no; then
       echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:3255: checking for shmat in -lipc" >&5
+echo "configure:3256: 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
@@ -3259,7 +3260,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lipc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3263 "configure"
+#line 3264 "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
@@ -3270,7 +3271,7 @@
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:3274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3303,7 +3304,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:3307: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:3308: 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
@@ -3311,7 +3312,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3315 "configure"
+#line 3316 "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
@@ -3322,7 +3323,7 @@
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:3326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3349,7 +3350,7 @@
        LDFLAGS="$LDFLAGS $X_LIBS"
        CFLAGS="$CFLAGS $X_CFLAGS"
        echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:3353: checking for XOpenDisplay in -lX11" >&5
+echo "configure:3354: 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
@@ -3357,7 +3358,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3361 "configure"
+#line 3362 "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
@@ -3368,7 +3369,7 @@
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:3372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3389,7 +3390,7 @@
 fi
 
        echo $ac_n "checking for XtAppInitialize in -lXt""... $ac_c" 1>&6
-echo "configure:3393: checking for XtAppInitialize in -lXt" >&5
+echo "configure:3394: 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
@@ -3397,7 +3398,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3401 "configure"
+#line 3402 "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
@@ -3408,7 +3409,7 @@
 XtAppInitialize()
 ; return 0; }
 EOF
-if { (eval echo configure:3412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3464,17 +3465,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3468: checking for $ac_hdr" >&5
+echo "configure:3469: 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 3473 "configure"
+#line 3474 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3478: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3524,17 +3525,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3528: checking for $ac_hdr" >&5
+echo "configure:3529: 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 3533 "configure"
+#line 3534 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3538: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3539: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3562,7 +3563,7 @@
 
 
 echo $ac_n "checking for XextCreateExtension in -lXext""... $ac_c" 1>&6
-echo "configure:3566: checking for XextCreateExtension in -lXext" >&5
+echo "configure:3567: 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
@@ -3570,7 +3571,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXext  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3574 "configure"
+#line 3575 "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
@@ -3581,7 +3582,7 @@
 XextCreateExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:3585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3603,7 +3604,7 @@
 
 
 echo $ac_n "checking for XmuClientWindow in -lXmu""... $ac_c" 1>&6
-echo "configure:3607: checking for XmuClientWindow in -lXmu" >&5
+echo "configure:3608: 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
@@ -3611,7 +3612,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXmu  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3615 "configure"
+#line 3616 "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
@@ -3622,7 +3623,7 @@
 XmuClientWindow()
 ; return 0; }
 EOF
-if { (eval echo configure:3626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3649,7 +3650,7 @@
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for XmuClientWindow in -lXmu_s""... $ac_c" 1>&6
-echo "configure:3653: checking for XmuClientWindow in -lXmu_s" >&5
+echo "configure:3654: 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
@@ -3657,7 +3658,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXmu_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3661 "configure"
+#line 3662 "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
@@ -3668,7 +3669,7 @@
 XmuClientWindow()
 ; return 0; }
 EOF
-if { (eval echo configure:3672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3699,7 +3700,7 @@
 
 
 echo $ac_n "checking for XawSimpleMenuAddGlobalActions in -l$cf_x_athena""... $ac_c" 1>&6
-echo "configure:3703: checking for XawSimpleMenuAddGlobalActions in -l$cf_x_athena" >&5
+echo "configure:3704: 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
@@ -3707,7 +3708,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-l$cf_x_athena  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3711 "configure"
+#line 3712 "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
@@ -3718,7 +3719,7 @@
 XawSimpleMenuAddGlobalActions()
 ; return 0; }
 EOF
-if { (eval echo configure:3722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3738,7 +3739,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:3742: checking for XawSimpleMenuAddGlobalActions in -l${cf_x_athena}_s" >&5
+echo "configure:3743: 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
@@ -3746,7 +3747,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 3750 "configure"
+#line 3751 "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
@@ -3757,7 +3758,7 @@
 XawSimpleMenuAddGlobalActions()
 ; return 0; }
 EOF
-if { (eval echo configure:3761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3798,12 +3799,12 @@
 for ac_func in grantpt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3802: checking for $ac_func" >&5
+echo "configure:3803: 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 3807 "configure"
+#line 3808 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3826,7 +3827,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3848,7 +3849,7 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6
-echo "configure:3852: checking for openpty in -lutil" >&5
+echo "configure:3853: checking for openpty in -lutil" >&5
 ac_lib_var=`echo util'_'openpty | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3856,7 +3857,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lutil  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3860 "configure"
+#line 3861 "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
@@ -3867,7 +3868,7 @@
 openpty()
 ; return 0; }
 EOF
-if { (eval echo configure:3871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3902,7 +3903,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:3906: checking for $ac_word" >&5
+echo "configure:3907: 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
@@ -3936,7 +3937,7 @@
 
 XTERM_MODE=755
 echo $ac_n "checking for presumed installation-mode""... $ac_c" 1>&6
-echo "configure:3940: checking for presumed installation-mode" >&5
+echo "configure:3941: checking for presumed installation-mode" >&5
 if test -f "$XTERM_PATH" ; then
        ls -Ll $XTERM_PATH >conftest.out
        read cf_mode cf_rest <conftest.out
@@ -3955,12 +3956,12 @@
        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3959: checking for $ac_func" >&5
+echo "configure:3960: 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 3964 "configure"
+#line 3965 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3983,7 +3984,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4009,7 +4010,7 @@
 
 
 echo $ac_n "checking if we should use imake to help""... $ac_c" 1>&6
-echo "configure:4013: checking if we should use imake to help" >&5
+echo "configure:4014: 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
@@ -4034,7 +4035,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:4038: checking for $ac_word" >&5
+echo "configure:4039: 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
@@ -4173,7 +4174,7 @@
 
 
 echo $ac_n "checking for default terminal-id""... $ac_c" 1>&6
-echo "configure:4177: checking for default terminal-id" >&5
+echo "configure:4178: 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
@@ -4194,7 +4195,7 @@
 
 
 echo $ac_n "checking for default terminal-type""... $ac_c" 1>&6
-echo "configure:4198: checking for default terminal-type" >&5
+echo "configure:4199: 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
@@ -4211,7 +4212,7 @@
 
 
 echo $ac_n "checking for private terminfo-directory""... $ac_c" 1>&6
-echo "configure:4215: checking for private terminfo-directory" >&5
+echo "configure:4216: 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
@@ -4248,7 +4249,7 @@
 
 ###    checks for optional features
 echo $ac_n "checking if you want active-icons""... $ac_c" 1>&6
-echo "configure:4252: checking if you want active-icons" >&5
+echo "configure:4253: 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
@@ -4274,7 +4275,7 @@
 fi
 
 echo $ac_n "checking if you want ANSI color""... $ac_c" 1>&6
-echo "configure:4278: checking if you want ANSI color" >&5
+echo "configure:4279: 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
@@ -4297,9 +4298,11 @@
 EOF
 
 
-echo $ac_n "checking if you want 16 colors like aixterm""... $ac_c" 1>&6
-echo "configure:4302: checking if you want 16 colors like aixterm" >&5
+if test $enable_ansi_color = yes ; then
 
+       echo $ac_n "checking if you want 16 colors like aixterm""... $ac_c" 1>&6
+echo "configure:4305: checking if you want 16 colors like aixterm" >&5
+       
 # Check whether --enable-16-color or --disable-16-color was given.
 if test "${enable_16_color+set}" = set; then
   enableval="$enable_16_color"
@@ -4315,14 +4318,40 @@
   
 fi
 
-echo "$ac_t""$enable_16_color" 1>&6
-test $enable_16_color = no && cat >> confdefs.h <<\EOF
+       echo "$ac_t""$enable_16_color" 1>&6
+       test $enable_16_color = no && cat >> confdefs.h <<\EOF
 #define OPT_AIX_COLORS 0
 EOF
 
 
+       echo $ac_n "checking if you want 256 colors""... $ac_c" 1>&6
+echo "configure:4329: checking if you want 256 colors" >&5
+       
+# Check whether --enable-256-color or --disable-256-color was given.
+if test "${enable_256_color+set}" = set; then
+  enableval="$enable_256_color"
+  test "$enableval" != yes && enableval=no
+  if test "$enableval" != "no" ; then
+    enable_256_color=yes 
+  else
+    enable_256_color=no
+  fi
+else
+  enableval=no 
+  enable_256_color=no
+  
+fi
+
+       echo "$ac_t""$enable_256_color" 1>&6
+       test $enable_256_color = yes && cat >> confdefs.h <<\EOF
+#define OPT_256_COLORS 1
+EOF
+
+
+fi
+
 echo $ac_n "checking if you want blinking cursor""... $ac_c" 1>&6
-echo "configure:4326: checking if you want blinking cursor" >&5
+echo "configure:4355: checking if you want blinking cursor" >&5
 
 # Check whether --enable-blink-cursor or --disable-blink-cursor was given.
 if test "${enable_blink_cursor+set}" = set; then
@@ -4345,9 +4374,11 @@
 EOF
 
 
-echo $ac_n "checking if you want bold colors mapped like IBM PC""... $ac_c" 1>&6
-echo "configure:4350: checking if you want bold colors mapped like IBM PC" >&5
+if test $enable_ansi_color = yes ; then
 
+       echo $ac_n "checking if you want bold colors mapped like IBM PC""... $ac_c" 1>&6
+echo "configure:4381: 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
   enableval="$enable_bold_color"
@@ -4363,15 +4394,15 @@
   
 fi
 
-echo "$ac_t""$enable_pc_color" 1>&6
-test $enable_pc_color = no && cat >> confdefs.h <<\EOF
+       echo "$ac_t""$enable_pc_color" 1>&6
+       test $enable_pc_color = no && cat >> confdefs.h <<\EOF
 #define OPT_PC_COLORS 0
 EOF
 
 
-echo $ac_n "checking if you want color-mode enabled by default""... $ac_c" 1>&6
-echo "configure:4374: checking if you want color-mode enabled by default" >&5
-
+       echo $ac_n "checking if you want color-mode enabled by default""... $ac_c" 1>&6
+echo "configure:4405: 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
   enableval="$enable_color_mode"
@@ -4387,14 +4418,16 @@
   
 fi
 
-echo "$ac_t""$default_colormode" 1>&6
-test $default_colormode = no && cat >> confdefs.h <<\EOF
+       echo "$ac_t""$default_colormode" 1>&6
+       test $default_colormode = no && cat >> confdefs.h <<\EOF
 #define DFT_COLORMODE FALSE
 EOF
 
 
+fi
+
 echo $ac_n "checking if you want support for color highlighting""... $ac_c" 1>&6
-echo "configure:4398: checking if you want support for color highlighting" >&5
+echo "configure:4431: 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
@@ -4418,7 +4451,7 @@
 
 
 echo $ac_n "checking if you want support for doublesize characters""... $ac_c" 1>&6
-echo "configure:4422: checking if you want support for doublesize characters" >&5
+echo "configure:4455: 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
@@ -4442,7 +4475,7 @@
 
 
 echo $ac_n "checking if you want fallback-support for box characters""... $ac_c" 1>&6
-echo "configure:4446: checking if you want fallback-support for box characters" >&5
+echo "configure:4479: 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
@@ -4466,7 +4499,7 @@
 
 
 echo $ac_n "checking if you want support for HP-style function keys""... $ac_c" 1>&6
-echo "configure:4470: checking if you want support for HP-style function keys" >&5
+echo "configure:4503: 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
@@ -4492,7 +4525,7 @@
 fi
 
 echo $ac_n "checking if you want support for internationalization""... $ac_c" 1>&6
-echo "configure:4496: checking if you want support for internationalization" >&5
+echo "configure:4529: checking if you want support for internationalization" >&5
 
 # Check whether --enable-i18n or --disable-i18n was given.
 if test "${enable_i18n+set}" = set; then
@@ -4518,7 +4551,7 @@
 fi
 
 echo $ac_n "checking if you want support for initial-erase setup""... $ac_c" 1>&6
-echo "configure:4522: checking if you want support for initial-erase setup" >&5
+echo "configure:4555: checking if you want support for initial-erase setup" >&5
 
 # Check whether --enable-initial-erase or --disable-initial-erase was given.
 if test "${enable_initial_erase+set}" = set; then
@@ -4544,7 +4577,7 @@
 fi
 
 echo $ac_n "checking if you want support for input-method""... $ac_c" 1>&6
-echo "configure:4548: checking if you want support for input-method" >&5
+echo "configure:4581: 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
@@ -4570,7 +4603,7 @@
 fi
 
 echo $ac_n "checking if you want support for logging""... $ac_c" 1>&6
-echo "configure:4574: checking if you want support for logging" >&5
+echo "configure:4607: checking if you want support for logging" >&5
 
 # Check whether --enable-logging or --disable-logging was given.
 if test "${enable_logging+set}" = set; then
@@ -4594,7 +4627,7 @@
 EOF
 
        echo $ac_n "checking if you want to allow logging via a pipe""... $ac_c" 1>&6
-echo "configure:4598: checking if you want to allow logging via a pipe" >&5
+echo "configure:4631: 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
@@ -4621,7 +4654,7 @@
 fi
 
 echo $ac_n "checking if you want support for iconify/maximize translations""... $ac_c" 1>&6
-echo "configure:4625: checking if you want support for iconify/maximize translations" >&5
+echo "configure:4658: checking if you want support for iconify/maximize translations" >&5
 
 # Check whether --enable-maximize or --disable-maximize was given.
 if test "${enable_maximize+set}" = set; then
@@ -4645,7 +4678,7 @@
 
 
 echo $ac_n "checking if you want NumLock to override keyboard tables""... $ac_c" 1>&6
-echo "configure:4649: checking if you want NumLock to override keyboard tables" >&5
+echo "configure:4682: checking if you want NumLock to override keyboard tables" >&5
 
 # Check whether --enable-num-lock or --disable-num-lock was given.
 if test "${enable_num_lock+set}" = set; then
@@ -4669,7 +4702,7 @@
 
 
 echo $ac_n "checking if you want support for right-scrollbar""... $ac_c" 1>&6
-echo "configure:4673: checking if you want support for right-scrollbar" >&5
+echo "configure:4706: 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
@@ -4695,7 +4728,7 @@
 fi
 
 echo $ac_n "checking if you want check for redundant name-change""... $ac_c" 1>&6
-echo "configure:4699: checking if you want check for redundant name-change" >&5
+echo "configure:4732: 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
@@ -4719,7 +4752,7 @@
 
 
 echo $ac_n "checking if you want support for tek4014""... $ac_c" 1>&6
-echo "configure:4723: checking if you want support for tek4014" >&5
+echo "configure:4756: checking if you want support for tek4014" >&5
 
 # Check whether --enable-tek4014 or --disable-tek4014 was given.
 if test "${enable_tek4014+set}" = set; then
@@ -4749,7 +4782,7 @@
 fi
 
 echo $ac_n "checking if you want VT52 emulation""... $ac_c" 1>&6
-echo "configure:4753: checking if you want VT52 emulation" >&5
+echo "configure:4786: checking if you want VT52 emulation" >&5
 
 # Check whether --enable-vt52 or --disable-vt52 was given.
 if test "${enable_vt52+set}" = set; then
@@ -4773,7 +4806,7 @@
 
 
 echo $ac_n "checking if you want wide-character support""... $ac_c" 1>&6
-echo "configure:4777: checking if you want wide-character support" >&5
+echo "configure:4810: checking if you want wide-character support" >&5
 
 # Check whether --enable-wide-chars or --disable-wide-chars was given.
 if test "${enable_wide_chars+set}" = set; then
@@ -4802,7 +4835,7 @@
 fi
 
 echo $ac_n "checking if you want -ziconbeep option""... $ac_c" 1>&6
-echo "configure:4806: checking if you want -ziconbeep option" >&5
+echo "configure:4839: checking if you want -ziconbeep option" >&5
 
 # Check whether --enable-ziconbeep or --disable-ziconbeep was given.
 if test "${enable_ziconbeep+set}" = set; then
@@ -4827,7 +4860,7 @@
 
 # development/testing aids
 echo $ac_n "checking if you want debugging traces""... $ac_c" 1>&6
-echo "configure:4831: checking if you want debugging traces" >&5
+echo "configure:4864: checking if you want debugging traces" >&5
 
 # Check whether --enable-trace or --disable-trace was given.
 if test "${enable_trace+set}" = set; then
@@ -4856,7 +4889,7 @@
 
 
 echo $ac_n "checking if you want to see long compiling messages""... $ac_c" 1>&6
-echo "configure:4860: checking if you want to see long compiling messages" >&5
+echo "configure:4893: 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
@@ -4896,7 +4929,7 @@
 
 
 echo $ac_n "checking if you want magic cookie emulation""... $ac_c" 1>&6
-echo "configure:4900: checking if you want magic cookie emulation" >&5
+echo "configure:4933: 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
@@ -4925,7 +4958,7 @@
 
 if test -n "$GCC" ; then
 echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6
-echo "configure:4929: checking if you want to turn on gcc warnings" >&5
+echo "configure:4962: 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
@@ -4965,9 +4998,9 @@
 if test -n "$GCC"
 then
        echo "checking for gcc __attribute__ directives" 1>&6
-echo "configure:4969: checking for gcc __attribute__ directives" >&5
+echo "configure:5002: checking for gcc __attribute__ directives" >&5
        cat > conftest.$ac_ext <<EOF
-#line 4971 "configure"
+#line 5004 "configure"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -5005,7 +5038,7 @@
 EOF
                        ;;
                esac
-               if { (eval echo configure:5009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:5042: \"$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
@@ -5022,11 +5055,11 @@
 if test -n "$GCC"
 then
                cat > conftest.$ac_ext <<EOF
-#line 5026 "configure"
+#line 5059 "configure"
 int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
                echo "checking for gcc warning options" 1>&6
-echo "configure:5030: checking for gcc warning options" >&5
+echo "configure:5063: checking for gcc warning options" >&5
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="-W -Wall"
        cf_warn_CONST=""
@@ -5044,7 +5077,7 @@
                Wstrict-prototypes $cf_warn_CONST
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo configure:5048: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:5081: \"$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-110+/configure.in     Sun Jun 27 18:23:43 1999
+++ xterm-111/configure.in      Wed Jul  7 22:06:03 1999
@@ -188,13 +188,25 @@
 AC_MSG_RESULT($enable_ansi_color)
 test $enable_ansi_color = no && AC_DEFINE(OPT_ISO_COLORS,0)
 
-AC_MSG_CHECKING(if you want 16 colors like aixterm)
-CF_ARG_DISABLE(16-color,
-       [  --disable-16-color      disable 16-color support],
-       [enable_16_color=no],
-       [enable_16_color=yes])
-AC_MSG_RESULT($enable_16_color)
-test $enable_16_color = no && AC_DEFINE(OPT_AIX_COLORS,0)
+if test $enable_ansi_color = yes ; then
+
+       AC_MSG_CHECKING(if you want 16 colors like aixterm)
+       CF_ARG_DISABLE(16-color,
+               [  --disable-16-color      disable 16-color support],
+               [enable_16_color=no],
+               [enable_16_color=yes])
+       AC_MSG_RESULT($enable_16_color)
+       test $enable_16_color = no && AC_DEFINE(OPT_AIX_COLORS,0)
+
+       AC_MSG_CHECKING(if you want 256 colors)
+       CF_ARG_ENABLE(256-color,
+               [  --disable-256-color     enable 256-color support],
+               [enable_256_color=yes],
+               [enable_256_color=no])
+       AC_MSG_RESULT($enable_256_color)
+       test $enable_256_color = yes && AC_DEFINE(OPT_256_COLORS,1)
+
+fi
 
 AC_MSG_CHECKING(if you want blinking cursor)
 CF_ARG_DISABLE(blink-cursor,
@@ -204,21 +216,25 @@
 AC_MSG_RESULT($enable_blink_curs)
 test $enable_blink_curs = no && AC_DEFINE(OPT_BLINK_CURS,0)
 
-AC_MSG_CHECKING(if you want bold colors mapped like IBM PC)
-CF_ARG_DISABLE(bold-color,
-       [  --disable-bold-color    disable PC-style mapping of bold colors],
-       [enable_pc_color=no],
-       [enable_pc_color=yes])
-AC_MSG_RESULT($enable_pc_color)
-test $enable_pc_color = no && AC_DEFINE(OPT_PC_COLORS,0)
-
-AC_MSG_CHECKING(if you want color-mode enabled by default)
-CF_ARG_DISABLE(color-mode,
-       [  --disable-color-mode    disable default colorMode resource],
-       [default_colormode=no],
-       [default_colormode=yes])
-AC_MSG_RESULT($default_colormode)
-test $default_colormode = no && AC_DEFINE(DFT_COLORMODE,FALSE)
+if test $enable_ansi_color = yes ; then
+
+       AC_MSG_CHECKING(if you want bold colors mapped like IBM PC)
+       CF_ARG_DISABLE(bold-color,
+               [  --disable-bold-color    disable PC-style mapping of bold colors],
+               [enable_pc_color=no],
+               [enable_pc_color=yes])
+       AC_MSG_RESULT($enable_pc_color)
+       test $enable_pc_color = no && AC_DEFINE(OPT_PC_COLORS,0)
+
+       AC_MSG_CHECKING(if you want color-mode enabled by default)
+       CF_ARG_DISABLE(color-mode,
+               [  --disable-color-mode    disable default colorMode resource],
+               [default_colormode=no],
+               [default_colormode=yes])
+       AC_MSG_RESULT($default_colormode)
+       test $default_colormode = no && AC_DEFINE(DFT_COLORMODE,FALSE)
+
+fi
 
 AC_MSG_CHECKING(if you want support for color highlighting)
 CF_ARG_DISABLE(highlighting,
Index: ctlseqs.ms
--- xterm-110+/ctlseqs.ms       Sun Jul  4 15:08:14 1999
+++ xterm-111/ctlseqs.ms        Tue Jul  6 20:43:00 1999
@@ -758,6 +758,10 @@
 the following, from \fIrxvt\fP:
   \*(Ps = \*1\*0\*0 \(-> Set foreground and background color to default
 .sp
+If 256-color support is compiled, the following apply.
+  \*(Ps = \*3\*8 ; \*5 ; \*(Ps \(-> Set background color to \*(Ps
+  \*(Ps = \*4\*8 ; \*5 ; \*(Ps \(-> Set foreground color to \*(Ps
+.sp
 .
 .IP \\*(Cs\\*(Ps\\*s\\*n
 Device Status Report (DSR)
@@ -955,6 +959,7 @@
   \*(Ps = \*2 \(-> Change Window Title to \*(Pt
   \*(Ps = \*3 \(-> Set X property on top-level window. \*(Pt should be in the form
 "\fIprop=value\fP", or just "\fIprop\fP" to delete the property
+  \*(Ps = \*4 ; \fIc ; name\fP \(-> Change Color #\fIc\fP to \fIcname\fP
   \*(Ps = \*1\*0 \(-> Change color names starting with text foreground to \*(Pt
 (a list of one or more color names or RGB specifications, separated by
 semicolon, up to eight, as per \fIXParseColor\fP).
Index: cursor.c
--- xterm-110+/cursor.c Sun Jul  4 15:08:14 1999
+++ xterm-111/cursor.c  Thu Jul  8 18:31:55 1999
@@ -115,8 +115,8 @@
 CursorForward(register TScreen *screen, int n)
 {
        screen->cur_col += n;
-       if (screen->cur_col > screen->max_col)
-               screen->cur_col = screen->max_col;
+       if (screen->cur_col > CurMaxCol(screen, screen->cur_row))
+               screen->cur_col = CurMaxCol(screen, screen->cur_row);
        screen->do_wrap = 0;
        _CheckSelection(screen);
 }
Index: doublechr.c
--- xterm-110+/doublechr.c      Sun Mar 14 14:59:36 1999
+++ xterm-111/doublechr.c       Thu Jul  8 21:03:51 1999
@@ -132,6 +132,17 @@
 
 
 #if OPT_DEC_CHRSET
+int
+xterm_Double_index(unsigned chrset, unsigned flags)
+{
+       int n = (chrset % 4);
+#if NUM_CHRSET == 8
+       if (flags & BOLD)
+               n |= 4;
+#endif
+       return n;
+}
+
 /*
  * Lookup/cache a GC for the double-size character display.  We save up to
  * NUM_CHRSET values.
@@ -142,7 +153,7 @@
        XGCValues gcv;
        register TScreen *screen = &term->screen;
        unsigned long mask = (GCForeground | GCBackground | GCFont);
-       int n = (chrset % NUM_CHRSET);
+       int n = xterm_Double_index(chrset, flags);
        char *name = xtermSpecialFont(flags, chrset);
 
        if (name == 0)
@@ -163,7 +174,7 @@
                screen->double_fs[n] = 0;
        }
 
-       TRACE(("xterm_DoubleGC %s %d: %s\n", flags&BOLD ? "BOLD" : "NORM", chrset, name))
+       TRACE(("xterm_DoubleGC %s %d: %s\n", flags&BOLD ? "BOLD" : "NORM", n, name))
 
        if ((screen->double_fs[n] = XLoadQueryFont (screen->display, name)) == 0)
                return 0;
Index: input.c
--- xterm-110+/input.c  Sun Jun 27 18:23:43 1999
+++ xterm-111/input.c   Sat Jul 10 12:56:15 1999
@@ -225,9 +225,9 @@
        }
 
 #if OPT_WIDE_CHARS
-/* Convert a Unicode value c into a UTF-8 sequence srtbuf */
-static int
-to_utf8(unsigned long c, char *strbuf)
+/* Convert a Unicode value c into a UTF-8 sequence in strbuf */
+int
+convertFromUTF8(unsigned long c, Char *strbuf)
 {
        int nbytes = 0;
 
@@ -251,7 +251,7 @@
                strbuf[nbytes++] = 0x80 | ((c >> 12) & 0x3f);
                strbuf[nbytes++] = 0x80 | ((c >>  6) & 0x3f);
                strbuf[nbytes++] = 0x80 | ( c        & 0x3f);
-       } else if (c < 0x80000000) {
+       } else if (c < 0x80000000U) {
                strbuf[nbytes++] = 0xfe |  (c >> 30);
                strbuf[nbytes++] = 0x80 | ((c >> 24) & 0x3f);
                strbuf[nbytes++] = 0x80 | ((c >> 18) & 0x3f);
@@ -259,7 +259,7 @@
                strbuf[nbytes++] = 0x80 | ((c >> 6)  & 0x3f);
                strbuf[nbytes++] = 0x80 | ( c        & 0x3f);
        } else
-               return to_utf8(0xfffd, strbuf);
+               return convertFromUTF8(0xfffd, strbuf);
 
        return nbytes;
 }
@@ -324,14 +324,14 @@
                        ucs = (unsigned char) strbuf[0];
                } else if (!nbytes && 
                           ((keysym >= 0x100 && keysym <= 0xf000) ||
-                           (keysym & 0xff000000) == 0x01000000))
+                           (keysym & 0xff000000U) == 0x01000000))
                        ucs = keysym2ucs(keysym);
                else
                        ucs = -2;
                if (ucs == -1)
                        nbytes = 0;
                if (ucs >= 0)
-                       nbytes = to_utf8(ucs, strbuf);
+                       nbytes = convertFromUTF8(ucs, (Char *)strbuf);
        }
 #endif
 
@@ -544,7 +544,7 @@
                {
                        reply.a_type = SS3;
                        VT52_CURSOR_KEYS
-                       reply.a_final = dec_code - 11 + 'P';
+                       reply.a_final = A2E(dec_code - 11 + E2A('P')) ;
                        MODIFIER_PARM
                        unparseseq(&reply, pty);
                }
Index: keysym2ucs.c
--- xterm-110+/keysym2ucs.c     Wed Jun 23 07:08:59 1999
+++ xterm-111/keysym2ucs.c      Sat Jul 10 11:27:04 1999
@@ -827,7 +827,7 @@
 long keysym2ucs(KeySym keysym)
 {
     int min = 0;
-    int max = sizeof(keysymtab) / sizeof(struct codepair);
+    int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
     int mid;
 
     /* first check for Latin-1 characters (1:1 mapping) */
Index: main.c
--- xterm-110+/main.c   Sun Jun 27 18:23:43 1999
+++ xterm-111/main.c    Fri Jul  9 21:08:58 1999
@@ -182,6 +182,21 @@
 #endif
 #endif
 
+#ifdef __MVS__
+#define SVR4
+#define USE_POSIX_TERMIOS
+#define USE_USG_PTYS
+#define USE_SYSV_PGRP
+#define USE_SYSV_UTMP
+#define USE_SYSV_SIGNALS
+#define USE_TTY_GROUP
+#define UTMP
+#define HAS_UTMP_UT_HOST
+#define ut_name ut_user
+#define ut_xtime ut_tv.tv_sec
+#undef  HAS_LTCHARS
+#endif
+
 #ifdef __CYGWIN32__
 #define SYSV
 #define SVR4
@@ -264,7 +279,7 @@
 #undef TIOCLSET                                /* defined, but not useable */
 #endif
 
-#ifdef __GNU__
+#if defined(__GNU__) || defined(__MVS__)
 #undef TIOCLSET
 #undef TIOCSLTC
 #endif
@@ -382,7 +397,7 @@
 #ifndef NOFILE
 #define NOFILE OPEN_MAX
 #endif
-#elif !defined(MINIX) && !defined(WIN32) && !defined(Lynx) && !defined(__GNU__)
+#elif !defined(MINIX) && !defined(WIN32) && !defined(Lynx) && !defined(__GNU__) && !defined(__MVS__)
 #include <sys/param.h> /* for NOFILE */
 #endif
 
@@ -440,7 +455,7 @@
 #endif
 
 #ifndef ISC
-#ifdef UTMP
+#if defined(UTMP) && !defined(__MVS__)
 #include <utmp.h>
 #endif
 #if defined(LASTLOG) && (!defined(BSD) || (BSD < 199103))
@@ -530,9 +545,6 @@
        }
 #endif
 
-#undef  CTRL
-#define        CTRL(c) ((c) & 0x1f)
-
 static SIGNAL_T reapchild (int n);
 static char *base_name (char *name);
 static int pty_search (int *pty);
@@ -605,13 +617,13 @@
 
 /* allow use of system default characters if defined and reasonable */
 #ifndef CEOF
-#define CEOF     CTRL('D')
+#define CEOF     CONTROL('D')
 #endif
 #ifndef CSUSP
-#define CSUSP    CTRL('Z')
+#define CSUSP    CONTROL('Z')
 #endif
 #ifndef CQUIT
-#define CQUIT    CTRL('\\')
+#define CQUIT    CONTROL('\\')
 #endif
 #ifndef CEOL
 #define CEOL 0
@@ -623,22 +635,22 @@
 #define CSWTCH 0
 #endif
 #ifndef CLNEXT
-#define CLNEXT   CTRL('V')
+#define CLNEXT   CONTROL('V')
 #endif
 #ifndef CWERASE
-#define CWERASE  CTRL('W')
+#define CWERASE  CONTROL('W')
 #endif
 #ifndef CRPRNT
-#define CRPRNT   CTRL('R')
+#define CRPRNT   CONTROL('R')
 #endif
 #ifndef CFLUSH
-#define CFLUSH   CTRL('O')
+#define CFLUSH   CONTROL('O')
 #endif
 #ifndef CSTOP
-#define CSTOP    CTRL('S')
+#define CSTOP    CONTROL('S')
 #endif
 #ifndef CSTART
-#define CSTART   CTRL('Q')
+#define CSTART   CONTROL('Q')
 #endif
 
 /*
@@ -1389,9 +1401,9 @@
         d_tio.c_cflag &= ~(HUPCL|PARENB);
         d_tio.c_iflag |= BRKINT|ISTRIP|IGNPAR;
 #endif
-       d_tio.c_cc[VINTR] = CTRL('C');          /* '^C' */
+       d_tio.c_cc[VINTR] = CONTROL('C');       /* '^C' */
        d_tio.c_cc[VERASE] = 0x7f;              /* DEL  */
-       d_tio.c_cc[VKILL] = CTRL('U');          /* '^U' */
+       d_tio.c_cc[VKILL] = CONTROL('U');       /* '^U' */
        d_tio.c_cc[VQUIT] = CQUIT;              /* '^\' */
        d_tio.c_cc[VEOF] = CEOF;                /* '^D' */
        d_tio.c_cc[VEOL] = CEOL;                /* '^@' */
@@ -1511,10 +1523,18 @@
 #ifdef VSTATUS
        d_tio.c_cc[VSTATUS] = '\377';
 #endif
+#ifdef VREPRINT
        d_tio.c_cc[VREPRINT] = '\377';
+#endif
+#ifdef VDISCARD
        d_tio.c_cc[VDISCARD] = '\377';
+#endif
+#ifdef VWERASE
        d_tio.c_cc[VWERASE] = '\377';
+#endif
+#ifdef VLNEXT
        d_tio.c_cc[VLNEXT] = '\377';
+#endif
 #endif /* } USE_TERMIOS */
 #ifdef TIOCLSET /* { */
        d_lmode = 0;
@@ -1532,10 +1552,16 @@
            gid_t rgid = getgid();
 
            if (setegid(rgid) == -1)
+#ifdef __MVS__
+              if (!(errno == EMVSERR)) /* could happen if _BPX_SHAREAS=REUSE */
+#endif
                (void) fprintf(stderr, "setegid(%d): %s\n",
                               (int) rgid, strerror(errno));
 
            if (seteuid(ruid) == -1)
+#ifdef __MVS__
+              if (!(errno == EMVSERR))
+#endif
                (void) fprintf(stderr, "seteuid(%d): %s\n",
                               (int) ruid, strerror(errno));
 #endif
@@ -1554,10 +1580,16 @@
 
 #ifdef HAS_SAVED_IDS_AND_SETEUID
            if (seteuid(euid) == -1)
+#ifdef __MVS__
+              if (!(errno == EMVSERR))
+#endif
                (void) fprintf(stderr, "seteuid(%d): %s\n",
                               (int) euid, strerror(errno));
 
            if (setegid(egid) == -1)
+#ifdef __MVS__
+              if (!(errno == EMVSERR))
+#endif
                (void) fprintf(stderr, "setegid(%d): %s\n",
                               (int) egid, strerror(errno));
 #endif
@@ -1845,7 +1877,7 @@
        if (fcntl(screen->respond, F_SETFD, mode) == -1)
                Error(1);
        nbio_register(screen->respond);
-#elif defined(USE_SYSV_TERMIO)
+#elif defined(USE_SYSV_TERMIO) || defined(__MVS__)
        if (0 > (mode = fcntl(screen->respond, F_GETFL, 0)))
                Error(1);
 #ifdef O_NDELAY
@@ -2039,7 +2071,7 @@
 {
     static int devindex, letter = 0;
 
-#if defined(CRAY)
+#if defined(CRAY) || defined(__MVS__)
     for (; devindex < MAXPTTYS; devindex++) {
        sprintf (ttydev, TTYFORMAT, devindex);
        sprintf (ptydev, PTYFORMAT, devindex);
@@ -2052,7 +2084,7 @@
            return 0;
        }
     }
-#else /* CRAY */
+#else /* CRAY || __MVS__ */
     while (PTYCHAR1[letter]) {
        ttydev [strlen(ttydev) - 2]  = ptydev [strlen(ptydev) - 2] =
            PTYCHAR1 [letter];
@@ -2642,7 +2674,7 @@
                    SysError (5);
                }
 #endif /* SVR4 */
-#endif
+#endif /* I_PUSH */
                tty = ptyfd;
                close (screen->respond);
 #ifdef TIOCSWINSZ
@@ -2854,6 +2886,10 @@
 #else /* USE_POSIX_TERMIOS */
                    cfsetispeed(&tio, B9600);
                    cfsetospeed(&tio, B9600);
+#ifdef __MVS__
+                   /* turn off bits that can't be set from the slave side */
+                   tio.c_cflag &= ~(PACKET|PKT3270|PTU3270|PKTXTND);
+#endif /* __MVS__ */
                    /* Clear CLOCAL so that SIGHUP is sent to us
                       when the xterm ends */
                    tio.c_cflag &= ~CLOCAL;
@@ -2874,10 +2910,15 @@
 #ifdef ECHOCTL
                    tio.c_lflag |= ECHOCTL|IEXTEN;
 #endif
+#ifndef __MVS__
                    /* reset EOL to default value */
                    tio.c_cc[VEOL] = CEOL;                      /* '^@' */
                    /* certain shells (ksh & csh) change EOF as well */
                    tio.c_cc[VEOF] = CEOF;                      /* '^D' */
+#else
+                   if(tio.c_cc[VEOL]==0) tio.c_cc[VEOL] = CEOL;                        /* '^@' */
+                   if(tio.c_cc[VEOF]==0) tio.c_cc[VEOF] = CEOF;                        /* '^D' */
+#endif
 #ifdef VLNEXT
                    tio.c_cc[VLNEXT] = CLNEXT;
 #endif
@@ -3270,7 +3311,9 @@
 
                utmp.ut_pid = getpid();
 #if defined(SVR4) || defined(SCO325) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)))
+#ifndef __MVS__
                utmp.ut_session = getsid(0);
+#endif
                utmp.ut_xtime = time ((time_t *) 0);
                utmp.ut_tv.tv_usec = 0;
 #else
@@ -4076,7 +4119,9 @@
            if (utptr && (utptr->ut_pid == screen->pid)) {
                    utptr->ut_type = DEAD_PROCESS;
 #if defined(SVR4) || defined(SCO325) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)))
+#ifndef __MVS__
                    utptr->ut_session = getsid(0);
+#endif
                    utptr->ut_xtime = time ((time_t *) 0);
                    utptr->ut_tv.tv_usec = 0;
 #else
@@ -4304,7 +4349,7 @@
 
        if (*s == '^') {
            s++;
-           c = ((*s == '?') ? 0177 : CTRL(*s));
+           c = ((*s == '?') ? 0177 : CONTROL(*s));
            if (*s == '-') {
 #if HAVE_TERMIOS_H && HAVE_TCGETATTR
 #  if HAVE_POSIX_VDISABLE
@@ -4401,3 +4446,60 @@
     return killpg (pid, sig);
 #endif /* AMOEBA */
 }
+
+#if OPT_EBCDIC
+int A2E(int x)
+{
+    char c;
+    c=x;
+    __atoe_l(&c,1);
+    return c;
+}
+
+int E2A(int x)
+{
+    char c;
+    c=x;
+    __etoa_l(&c,1);
+    return c;
+}
+
+char CONTROL(char c)
+{
+    /* this table was built through trial & error */
+    static char ebcdic_control_chars[256]={
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 00 - 07 */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 08 - 0f */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 10 - 17 */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 18 - 1f */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 20 - 27 */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 28 - 2f */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 30 - 37 */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 38 - 3f */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 40 - 47 */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 48 - 4f */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 50 - 57 */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 58 - 5f */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,   /* 60 - 67 */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,   /* 68 - 6f */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 70 - 77 */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 78 - 7f */
+                0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,   /* 80 - 87 */
+                0x16, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 88 - 8f */
+                0x00, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,   /* 90 - 97 */
+                0x11, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* 98 - 9f */
+                0x00, 0x00, 0x13, 0x3c, 0x3d, 0x32, 0x26, 0x18,   /* a0 - a7 */
+                0x19, 0x3f, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00,   /* a8 - af */
+                0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* b0 - b7 */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00,   /* b8 - bf */
+                0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,   /* c0 - c7 */
+                0x16, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* c8 - cf */
+                0x00, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,   /* d0 - d7 */
+                0x11, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* d8 - df */
+                0x1c, 0x00, 0x13, 0x3c, 0x3d, 0x32, 0x26, 0x18,   /* e0 - e7 */
+                0x19, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* e8 - ef */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   /* f0 - f7 */
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  /* f8 - ff */
+    return ebcdic_control_chars[c & 0xff];
+}
+#endif
Index: misc.c
--- xterm-110+/misc.c   Sun Jul  4 15:08:14 1999
+++ xterm-111/misc.c    Sat Jul 10 13:43:10 1999
@@ -945,17 +945,114 @@
 void
 FlushLog(register TScreen *screen)
 {
-       register Char *cp;
+       register IChar *cp;
        register int i;
 
        cp = CURRENT_EMU_VAL(screen, Tbuffer->ptr, VTbuffer.ptr);
-       if((i = cp - screen->logstart) > 0)
+       if((i = cp - screen->logstart) > 0) {
+#if OPT_WIDE_CHARS
+               Char temp[80];
+               IChar code;
+               unsigned n;
+               while (i-- > 0) {
+                       code = *(screen->logstart)++;
+                       if (screen->utf8_mode) {
+                               n = convertFromUTF8(code & 0xffff, temp);
+                       } else {
+                               temp[0] = code;
+                               n = 1;
+                               while (i > 0 && n < sizeof(temp)) {
+                                       i--;
+                                       temp[n++] = *(screen->logstart)++;
+                               }
+                       }
+                       write(screen->logfd, temp, n);
+               }
+#else
                write(screen->logfd, (char *)screen->logstart, i);
-       screen->logstart = CURRENT_EMU_VAL(screen, Tbuffer->buf, VTbuffer.buf);
+#endif
+       }
+       screen->logstart = DecodedData(CURRENT_EMU_VAL(screen, Tbuffer, &VTbuffer));
 }
 
 #endif /* ALLOWLOGGING */
 
+/***====================================================================***/
+
+#if OPT_ISO_COLORS
+static void ReportAnsiColorRequest(XtermWidget pTerm, int colornum, int final)
+{
+       XColor color;
+       Colormap cmap = pTerm->core.colormap;
+       char buffer[80];
+
+       TRACE(("ReportAnsiColorRequest %d\n", colornum))
+       color.pixel = pTerm->screen.Acolors[colornum];
+       XQueryColor(term->screen.display, cmap, &color);
+       sprintf(buffer, "rgb:%04x/%04x/%04x",
+               color.red,
+               color.green,
+               color.blue);
+       unparseputc1(OSC,   pTerm->screen.respond);
+       unparseputs(buffer, pTerm->screen.respond);
+       unparseputc1(final, pTerm->screen.respond);
+}
+
+static Boolean
+AllocateAnsiColor(
+       XtermWidget      pTerm,
+       int              color,
+       char            *name)
+{
+XColor                  def;
+register TScreen       *screen =       &pTerm->screen;
+Colormap                cmap =         pTerm->core.colormap;
+
+    if (XParseColor(screen->display, cmap, name, &def)
+     && XAllocColor(screen->display, cmap, &def)) {
+       screen->Acolors[color] = def.pixel;
+       TRACE(("AllocateAnsiColor #%d: %s (pixel %#lx)\n", color, name, def.pixel))
+       return(TRUE);
+    }
+    TRACE(("AllocateAnsiColor #%d: %s (failed)\n", color, name))
+    return(FALSE);
+}
+
+static Boolean
+ChangeAnsiColorRequest(
+       XtermWidget     pTerm,
+       register char   *buf,
+       int             final)
+{
+    char *name;
+    int color;
+
+    TRACE(("ChangeAnsiColorRequest string='%s'\n", buf))
+
+    name = strchr(buf, ';');
+    if (name == NULL)
+       return(FALSE);
+    *name = '\0';
+    name++;
+    color = atoi(buf);
+    if (color < 0 || color > 255)
+       return(FALSE);
+    if (!strcmp(name, "?"))
+       ReportAnsiColorRequest(pTerm, color, final);
+    else {
+       if (!AllocateAnsiColor(pTerm, color, name))
+           return(FALSE);
+       ChangeAnsiColors(pTerm);
+       /* FIXME:  free old color somehow?  We aren't for the other color
+        * change style (dynamic colors).
+        */
+    }
+    return(TRUE);
+}
+#endif /* OPT_ISO_COLORS */
+
+/***====================================================================***/
+
 void
 do_osc(Char *oscbuf, int len GCC_UNUSED, int final)
 {
@@ -1013,7 +1110,11 @@
        case 3: /* change X property */
                ChangeXprop(buf);
                break;
-
+#if OPT_ISO_COLORS
+       case 4:
+               ChangeAnsiColorRequest(term, buf, final);
+               break;
+#endif
        case 10:        case 11:        case 12:
        case 13:        case 14:        case 15:
        case 16:        case 17:
@@ -1171,16 +1272,44 @@
                                        strcat(reply, ";7");
                                if (term->flags & INVISIBLE)
                                        strcat(reply, ";8");
-                               if_OPT_ISO_COLORS(screen,{
+                               if_OPT_256_COLORS(screen,{
+                               if (term->flags & FG_COLOR)
+                                       if (term->cur_foreground >= 16)
+                                               sprintf(reply+strlen(reply),
+                                                       ";38;5;%d", term->cur_foreground);
+                                       else
+                                               sprintf(reply+strlen(reply),
+                                                       ";%d%d",
+                                                       term->cur_foreground >= 8 ? 9 : 3,
+                                                       term->cur_foreground >= 8 ?
+                                                       term->cur_foreground - 8 :
+                                                       term->cur_foreground);
+                               if (term->flags & BG_COLOR)
+                                       if (term->cur_background >= 16)
+                                               sprintf(reply+strlen(reply),
+                                                       ";48;5;%d", term->cur_foreground);
+                                       else
+                                               sprintf(reply+strlen(reply),
+                                                       ";%d%d",
+                                                       term->cur_background >= 8 ? 10 : 4,
+                                                       term->cur_background >= 8 ?
+                                                       term->cur_background - 8 :
+                                                       term->cur_background);
+                               })
+                               if_OPT_ISO_TRADITIONAL_COLORS(screen,{
                                if (term->flags & FG_COLOR)
                                        sprintf(reply+strlen(reply),
                                                ";%d%d",
                                                term->cur_foreground >= 8 ? 9 : 3,
+                                               term->cur_foreground >= 8 ?
+                                               term->cur_foreground - 8 :
                                                term->cur_foreground);
                                if (term->flags & BG_COLOR)
                                        sprintf(reply+strlen(reply),
                                                ";%d%d",
                                                term->cur_background >= 8 ? 10 : 4,
+                                               term->cur_background >= 8 ?
+                                               term->cur_background - 8 :
                                                term->cur_background);
                                })
                                strcat(reply, "m");
@@ -1322,6 +1451,8 @@
     ChangeGroup( XtNtitle, (XtArgVal)name );
 }
 
+#define ustrlen(s) strlen((char *)(s))
+
 void
 ChangeXprop(register char *buf)
 {
@@ -1329,7 +1460,7 @@
     Window w = XtWindow(toplevel);
     XTextProperty text_prop;
     Atom aprop;
-    char *pchEndPropName = strchr(buf,'=');
+    Char *pchEndPropName = (Char *)strchr(buf,'=');
 
     if (pchEndPropName)
        *pchEndPropName = '\0';
@@ -1341,7 +1472,7 @@
        text_prop.value = pchEndPropName+1;
        text_prop.encoding = XA_STRING;
        text_prop.format = 8;
-       text_prop.nitems = strlen(text_prop.value);
+       text_prop.nitems = ustrlen(text_prop.value);
        XSetTextProperty(dpy,w,&text_prop,aprop);
     }
 }
@@ -1771,7 +1902,7 @@
 #ifdef ALLOWLOGGING
        if (screen->logging) {
            FlushLog (screen);
-           screen->logstart = VTbuffer.buf;
+           screen->logstart = DecodedData(&VTbuffer);
        }
 #endif
        longjmp(Tekend, 1);
@@ -1787,7 +1918,7 @@
 #ifdef ALLOWLOGGING
        if(screen->logging && TekPtyData()) {
            FlushLog(screen);
-           screen->logstart = Tbuffer->buf;
+           screen->logstart = DecodedData(Tbuffer);
        }
 #endif
        screen->TekEmu = TRUE;
Index: os2main.c
--- xterm-110+/os2main.c        Sun Jun 13 17:55:49 1999
+++ xterm-111/os2main.c Fri Jul  9 06:41:56 1999
@@ -104,9 +104,6 @@
 
 extern char *strindex ();
 
-#undef  CTRL
-#define        CTRL(c) ((c) & 0x1f)
-
 static SIGNAL_T reapchild (int n);
 static char *base_name (char *name);
 static int pty_search (int *pty);
@@ -127,13 +124,13 @@
 
 /* allow use of system default characters if defined and reasonable */
 #ifndef CEOF
-#define CEOF     CTRL('D')
+#define CEOF     CONTROL('D')
 #endif
 #ifndef CSUSP
-#define CSUSP    CTRL('Z')
+#define CSUSP    CONTROL('Z')
 #endif
 #ifndef CQUIT
-#define CQUIT    CTRL('\\')
+#define CQUIT    CONTROL('\\')
 #endif
 #ifndef CEOL
 #define CEOL 0
@@ -145,22 +142,22 @@
 #define CSWTCH 0
 #endif
 #ifndef CLNEXT
-#define CLNEXT   CTRL('V')
+#define CLNEXT   CONTROL('V')
 #endif
 #ifndef CWERASE
-#define CWERASE  CTRL('W')
+#define CWERASE  CONTROL('W')
 #endif
 #ifndef CRPRNT
-#define CRPRNT   CTRL('R')
+#define CRPRNT   CONTROL('R')
 #endif
 #ifndef CFLUSH
-#define CFLUSH   CTRL('O')
+#define CFLUSH   CONTROL('O')
 #endif
 #ifndef CSTOP
-#define CSTOP    CTRL('S')
+#define CSTOP    CONTROL('S')
 #endif
 #ifndef CSTART
-#define CSTART   CTRL('Q')
+#define CSTART   CONTROL('Q')
 #endif
 
 /*
@@ -874,9 +871,9 @@
        d_tio.c_cflag = B9600|CS8|CREAD|PARENB|HUPCL;
        d_tio.c_lflag = ISIG|ICANON|ECHO|ECHOE|ECHOK;
        d_tio.c_line = 0;
-       d_tio.c_cc[VINTR] = CTRL('C');          /* '^C' */
+       d_tio.c_cc[VINTR] = CONTROL('C');       /* '^C' */
        d_tio.c_cc[VERASE] = 0x7f;              /* DEL  */
-       d_tio.c_cc[VKILL] = CTRL('U');          /* '^U' */
+       d_tio.c_cc[VKILL] = CONTROL('U');       /* '^U' */
        d_tio.c_cc[VQUIT] = CQUIT;              /* '^\' */
        d_tio.c_cc[VEOF] = CEOF;                /* '^D' */
        d_tio.c_cc[VEOL] = CEOL;                /* '^@' */
@@ -1850,7 +1847,7 @@
 
        if (*s == '^') {
            s++;
-           c = ((*s == '?') ? 0177 : CTRL(*s));
+           c = ((*s == '?') ? 0177 : CONTROL(*s));
            if (*s == '-') {
                errno = 0;
                c = fpathconf(0, _PC_VDISABLE);
Index: print.c
--- xterm-110+/print.c  Sun May 16 15:55:44 1999
+++ xterm-111/print.c   Tue Jul  6 20:45:57 1999
@@ -4,7 +4,7 @@
 
 /************************************************************
 
-Copyright 1997,1998 by Thomas E. Dickey <dickey@clark.net>
+Copyright 1997,1998,1999 by Thomas E. Dickey <dickey@clark.net>
 
                         All Rights Reserved
 
@@ -21,7 +21,7 @@
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
@@ -100,15 +100,24 @@
        int last = screen->max_col;
        int col;
 #if OPT_ISO_COLORS && OPT_PRINT_COLORS
+#if OPT_256_COLORS
+       register Char *fbf = 0;
+       register Char *fbb = 0;
+#else
        register Char *fb = 0;
 #endif
+#endif
        int fg = -1, last_fg = -1;
        int bg = -1, last_bg = -1;
        int cs = CSET_IN,last_cs = CSET_IN;
 
-       TRACE(("printLine(row=%d, chr=%d)\n", row, chr))
+       TRACE(("printLine(row=%d, chr=%d)\n", row, chr));
 
-       if_OPT_ISO_COLORS(screen,{
+       if_OPT_256_COLORS(screen,{
+               fbf = SCRN_BUF_FGRND(screen, row);
+               fbb = SCRN_BUF_BGRND(screen, row);
+       })
+       if_OPT_ISO_TRADITIONAL_COLORS(screen,{
                fb = SCRN_BUF_COLOR(screen, row);
        })
        while (last > 0) {
@@ -125,7 +134,17 @@
                for (col = 0; col < last; col++) {
                        Char ch = c[col];
 #if OPT_PRINT_COLORS
-                       if_OPT_ISO_COLORS(screen,{
+                       if_OPT_256_COLORS(screen,{
+                               if (screen->print_attributes > 1) {
+                                       fg = (a[col] & FG_COLOR)
+                                               ? extract_fg((fbf[col]<<8)|(fbb[col]), a[col])
+                                               : -1;
+                                       bg = (a[col] & BG_COLOR)
+                                               ? extract_bg((fbf[col]<<8)|(fbb[col]))
+                                               : -1;
+                               }
+                       })
+                       if_OPT_ISO_TRADITIONAL_COLORS(screen,{
                                if (screen->print_attributes > 1) {
                                        fg = (a[col] & FG_COLOR)
                                                ? extract_fg(fb[col], a[col])
@@ -159,7 +178,7 @@
                                                ? SHIFT_OUT
                                                : SHIFT_IN);
                                }
-                               last_cs = cs;   
+                               last_cs = cs;
                        }
 
                        /* FIXME:  we shouldn't have to map back from the
Index: ptyx.h
--- xterm-110+/ptyx.h   Sun Jun 27 18:23:43 1999
+++ xterm-111/ptyx.h    Sat Jul 10 14:08:31 1999
@@ -119,25 +119,25 @@
 ** allow for mobility of the pty master/slave directories
 */
 #ifndef PTYDEV
-#ifdef __hpux
+#if defined(__hpux)
 #define        PTYDEV          "/dev/ptym/ptyxx"
-#else  /* !__hpux */
-#ifndef __osf__
+#elif defined(__MVS__)
+#define        PTYDEV          "/dev/ptypxxxx"
+#elif !defined(__osf__)
 #define        PTYDEV          "/dev/ptyxx"
 #endif
-#endif /* !__hpux */
 #endif /* !PTYDEV */
 
 #ifndef TTYDEV
-#ifdef __hpux
+#if defined(__hpux)
 #define TTYDEV         "/dev/pty/ttyxx"
-#else  /* !__hpux */
-#if defined(__osf__) || (defined(linux) && (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1))
+#elif defined(__MVS__)
+#define TTYDEV         "/dev/ptypxxxx"
+#elif defined(__osf__) || (defined(linux) && (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1))
 #define TTYDEV         "/dev/ttydirs/xxx/xxxxxxxxxxxxxx"
 #else
 #define        TTYDEV          "/dev/ttyxx"
 #endif
-#endif /* !__hpux */
 #endif /* !TTYDEV */
 
 #ifndef PTYCHAR1
@@ -165,20 +165,24 @@
 #endif /* !PTYCHAR2 */
 
 #ifndef TTYFORMAT
-#ifdef CRAY
+#if defined(CRAY)
 #define TTYFORMAT "/dev/ttyp%03d"
+#elif defined(__MVS__)
+#define TTYFORMAT "/dev/ttyp%04d"
 #else
 #define TTYFORMAT "/dev/ttyp%d"
 #endif
-#endif
+#endif /* TTYFORMAT */
 
 #ifndef PTYFORMAT
 #ifdef CRAY
 #define PTYFORMAT "/dev/pty/%03d"
+#elif defined(__MVS__)
+#define PTYFORMAT "/dev/ptyp%04d"
 #else
 #define PTYFORMAT "/dev/ptyp%d"
 #endif
-#endif
+#endif /* PTYFORMAT */
 
 #ifndef MAXPTTYS
 #ifdef CRAY
@@ -213,6 +217,7 @@
 #define        CAN     0x18
 #define        SUB     0x1A
 #define        ESC     0x1B
+#define XPOUND 0x1E                    /* internal mapping for '#'     */
 #define US     0x1F
 #define        DEL     0x7F
 #define HTS     ('H'+0x40)
@@ -355,6 +360,14 @@
 #define OPT_DEC_SOFTFONT 0 /* true if xterm is configured for VT220 softfonts */
 #endif
 
+#ifndef OPT_EBCDIC
+#ifdef __MVS__
+#define OPT_EBCDIC 1
+#else
+#define OPT_EBCDIC 0
+#endif
+#endif
+
 #ifndef OPT_HP_FUNC_KEYS
 #define OPT_HP_FUNC_KEYS 0 /* true if xterm supports HP-style function keys */
 #endif
@@ -383,6 +396,10 @@
 #define OPT_ISO_COLORS  1 /* true if xterm is configured with ISO colors */
 #endif
 
+#ifndef OPT_256_COLORS
+#define OPT_256_COLORS  0 /* true if xterm is configured with 256 colors */
+#endif
+
 #ifndef OPT_HIGHLIGHT_COLOR
 #define OPT_HIGHLIGHT_COLOR 1 /* true if xterm supports color highlighting */
 #endif
@@ -451,12 +468,15 @@
 #undef OPT_PC_COLORS
 #endif
 
+#if OPT_256_COLORS && !OPT_ISO_COLORS
+/* You must have ANSI/ISO colors to support 256 colors */
+#undef OPT_256_COLORS
+#endif
 /***====================================================================***/
 
 #if OPT_ISO_COLORS
 #define if_OPT_ISO_COLORS(screen, code) if(screen->colorMode) code
 #define TERM_COLOR_FLAGS (term->flags & (FG_COLOR|BG_COLOR))
-#define MAXCOLORS 19
 #define COLOR_0                0
 #define COLOR_1                1
 #define COLOR_2                2
@@ -473,9 +493,17 @@
 #define COLOR_13       13
 #define COLOR_14       14
 #define COLOR_15       15
+#if OPT_256_COLORS
+#define COLOR_BD        256
+#define COLOR_UL        257
+#define COLOR_BL        258
+#define MAXCOLORS       259
+#else /* ! OPT_256_COLORS */
 #define COLOR_BD       16      /* BOLD */
 #define COLOR_UL       17      /* UNDERLINE */
 #define COLOR_BL       18      /* BLINK */
+#define MAXCOLORS       19
+#endif /* OPT_256_COLORS */
 #ifndef DFT_COLORMODE
 #define DFT_COLORMODE TRUE     /* default colorMode resource */
 #endif
@@ -490,6 +518,17 @@
 #define if_OPT_AIX_COLORS(screen, code) /* nothing */
 #endif
 
+#if OPT_256_COLORS
+#define if_OPT_256_COLORS(screen, code) if(screen->colorMode) code
+#define if_OPT_ISO_TRADITIONAL_COLORS(screen, code) /* nothing */
+#elif OPT_ISO_COLORS
+#define if_OPT_256_COLORS(screen, code) /* nothing */
+#define if_OPT_ISO_TRADITIONAL_COLORS(screen, code) if(screen->colorMode) code
+#else
+#define if_OPT_256_COLORS(screen, code) /* nothing */
+#define if_OPT_ISO_TRADITIONAL_COLORS(screen, code) /*nothing*/
+#endif
+
 /***====================================================================***/
 
 #if OPT_DEC_CHRSET
@@ -499,7 +538,7 @@
 #define CSET_DHL_TOP    1
 #define CSET_DHL_BOT    2
 #define CSET_DWL        3
-#define NUM_CHRSET      4
+#define NUM_CHRSET      8      /* normal/bold and 4 CSET_xxx values */
        /* Use remaining bits for encoding the other character-sets */
 #define CSET_NORMAL(code)  ((code) == CSET_SWL)
 #define CSET_DOUBLE(code)  (!CSET_NORMAL(code) && !CSET_EXTEND(code))
@@ -536,6 +575,18 @@
 
 /***====================================================================***/
 
+#if OPT_EBCDIC
+extern int E2A(int);
+extern int A2E(int);
+extern char CONTROL(char);
+#else
+#define E2A(a) (a)
+#define A2E(a) (a)
+#define CONTROL(a) ((a)&037)
+#endif
+
+/***====================================================================***/
+
 #if OPT_TEK4014
 #define TEK4014_ACTIVE(screen) ((screen)->TekEmu)
 #define CURRENT_EMU_VAL(screen,tek,vt) (TEK4014_ACTIVE(screen) ? tek : vt)
@@ -570,7 +621,6 @@
 #define if_OPT_WIDE_CHARS(screen, code) if(screen->wide_chars) code
 #define PAIRED_CHARS(a,b) a,b
 typedef unsigned IChar;                /* for 8 or 16-bit characters, plus flag */
-#undef  ALLOWLOGGING           /* FIXME: not yet */
 #else
 #define if_OPT_WIDE_CHARS(screen, code) /* nothing */
 #define PAIRED_CHARS(a,b) a
@@ -610,8 +660,13 @@
        , OFF_CHARS = 1
        , OFF_ATTRS = 2
 #if OPT_ISO_COLORS
+#if OPT_256_COLORS
+       , OFF_FGRND
+       , OFF_BGRND
+#else
        , OFF_COLOR
 #endif
+#endif
 #if OPT_DEC_CHRSET
        , OFF_CSETS
 #endif
@@ -625,6 +680,8 @@
 #define BUF_CHARS(buf, row) (buf[MAX_PTRS * (row) + OFF_CHARS])
 #define BUF_ATTRS(buf, row) (buf[MAX_PTRS * (row) + OFF_ATTRS])
 #define BUF_COLOR(buf, row) (buf[MAX_PTRS * (row) + OFF_COLOR])
+#define BUF_FGRND(buf, row) (buf[MAX_PTRS * (row) + OFF_FGRND])
+#define BUF_BGRND(buf, row) (buf[MAX_PTRS * (row) + OFF_BGRND])
 #define BUF_CSETS(buf, row) (buf[MAX_PTRS * (row) + OFF_CSETS])
 #define BUF_WIDEC(buf, row) (buf[MAX_PTRS * (row) + OFF_WIDEC])
 
@@ -633,6 +690,8 @@
 #define SCRN_BUF_CHARS(screen, row) BUF_CHARS(screen->visbuf, row)
 #define SCRN_BUF_ATTRS(screen, row) BUF_ATTRS(screen->visbuf, row)
 #define SCRN_BUF_COLOR(screen, row) BUF_COLOR(screen->visbuf, row)
+#define SCRN_BUF_FGRND(screen, row) BUF_FGRND(screen->visbuf, row)
+#define SCRN_BUF_BGRND(screen, row) BUF_BGRND(screen->visbuf, row)
 #define SCRN_BUF_CSETS(screen, row) BUF_CSETS(screen->visbuf, row)
 #define SCRN_BUF_WIDEC(screen, row) BUF_WIDEC(screen->visbuf, row)
 
@@ -760,7 +819,7 @@
        int             logging;        /* logging mode                 */
        int             logfd;          /* file descriptor of log       */
        char            *logfile;       /* log file name                */
-       unsigned char   *logstart;      /* current start of log buffer  */
+       IChar           *logstart;      /* current start of log buffer  */
 #endif
        int             inhibit;        /* flags for inhibiting changes */
 
Index: screen.c
--- xterm-110+/screen.c Sun Jun 13 17:55:49 1999
+++ xterm-111/screen.c  Tue Jul  6 20:49:40 1999
@@ -4,9 +4,9 @@
 
 /*
  * Copyright 1999 by Thomas E. Dickey <dickey@clark.net>
- * 
+ *
  *                         All Rights Reserved
- * 
+ *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  * "Software"), to deal in the Software without restriction, including
@@ -14,10 +14,10 @@
  * distribute, sublicense, and/or sell copies of the Software, and to
  * permit persons to whom the Software is furnished to do so, subject to
  * the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be included
  * in all copies or substantial portions of the Software.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -25,7 +25,7 @@
  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * 
+ *
  * Except as contained in this notice, the name(s) of the above copyright
  * holders shall not be used in advertising or otherwise to promote the
  * sale, use or other dealings in this Software without prior written
@@ -125,10 +125,10 @@
 #define TIOCSWINSZ     113
 #define TIOCGWINSZ     117
 struct winsize {
-        unsigned short  ws_row;         /* rows, in characters */
-        unsigned short  ws_col;         /* columns, in characters */
-        unsigned short  ws_xpixel;      /* horizontal size, pixels */
-        unsigned short  ws_ypixel;      /* vertical size, pixels */
+       unsigned short  ws_row;         /* rows, in characters */
+       unsigned short  ws_col;         /* columns, in characters */
+       unsigned short  ws_xpixel;      /* horizontal size, pixels */
+       unsigned short  ws_ypixel;      /* vertical size, pixels */
 };
 #endif
 
@@ -268,7 +268,7 @@
                }
        }
 
-        /* Now free the old buffer */
+       /* Now free the old buffer */
        free(oldbuf);
 
        return move_down ? move_down : -move_up; /* convert to rows */
@@ -287,8 +287,13 @@
        register int length)            /* length of string */
 {
 #if OPT_ISO_COLORS
+#if OPT_256_COLORS
+       register Char *fbf = 0;
+       register Char *fbb = 0;
+#else
        register Char *fb = 0;
 #endif
+#endif
 #if OPT_DEC_CHRSET
        register Char *cb = 0;
 #endif
@@ -305,7 +310,11 @@
        col   = SCRN_BUF_CHARS(screen, screen->cur_row) + screen->cur_col;
        attrs = SCRN_BUF_ATTRS(screen, screen->cur_row) + screen->cur_col;
 
-       if_OPT_ISO_COLORS(screen,{
+       if_OPT_256_COLORS(screen,{
+               fbf = SCRN_BUF_FGRND(screen, screen->cur_row) + screen->cur_col;
+               fbb = SCRN_BUF_BGRND(screen, screen->cur_row) + screen->cur_col;
+       })
+       if_OPT_ISO_TRADITIONAL_COLORS(screen,{
                fb = SCRN_BUF_COLOR(screen, screen->cur_row) + screen->cur_col;
        })
        if_OPT_DEC_CHRSET({
@@ -335,7 +344,11 @@
        flags |= CHARDRAWN;
        memset( attrs, flags,  length);
 
-       if_OPT_ISO_COLORS(screen,{
+       if_OPT_256_COLORS(screen,{
+               memset( fbf,  cur_fg_bg >> 8, length);
+               memset( fbb,  cur_fg_bg & 0xff, length);
+       })
+       if_OPT_ISO_TRADITIONAL_COLORS(screen,{
                memset( fb,   cur_fg_bg, length);
        })
        if_OPT_DEC_CHRSET({
@@ -377,9 +390,16 @@
                                else if (j == OFF_ATTRS)
                                        memset(screen->save_ptr[i+j], flags, size);
 #if OPT_ISO_COLORS
+#if OPT_256_COLORS
+                               else if (j == OFF_FGRND)
+                                       memset(screen->save_ptr[i+j], term->sgr_foreground, size);
+                               else if (j == OFF_BGRND)
+                                       memset(screen->save_ptr[i+j], term->cur_background, size);
+#else
                                else if (j == OFF_COLOR)
                                        memset(screen->save_ptr[i+j], xtermColorPair(), size);
 #endif
+#endif
                                else
                                        bzero( screen->save_ptr[i+j], size);
                        }
@@ -506,7 +526,15 @@
            ptr[i] = ' ';
        for (i=col; i<col+n; i++)
            attrs[i] = flags;
-       if_OPT_ISO_COLORS(screen,{
+       if_OPT_256_COLORS(screen,{
+           ptr = BUF_FGRND(sb, row);
+           memmove(ptr + col + n, ptr + col, nbytes);
+           memset(ptr + col, term->sgr_foreground, n);
+           ptr = BUF_BGRND(sb, row);
+           memmove(ptr + col + n, ptr + col, nbytes);
+           memset(ptr + col, term->cur_background, n);
+       })
+       if_OPT_ISO_TRADITIONAL_COLORS(screen,{
            ptr = BUF_COLOR(sb, row);
            memmove(ptr + col + n, ptr + col, nbytes);
            memset(ptr + col, xtermColorPair(), n);
@@ -549,7 +577,15 @@
        bzero  (ptr + size - n, n);
        memset (attrs + size - n, TERM_COLOR_FLAGS, n);
 
-       if_OPT_ISO_COLORS(screen,{
+       if_OPT_256_COLORS(screen,{
+           ptr = BUF_FGRND(sb, row);
+           memmove(ptr + col, ptr + col + n, nbytes);
+           memset(ptr + size - n, term->sgr_foreground, n);
+           ptr = BUF_BGRND(sb, row);
+           memmove(ptr + col, ptr + col + n, nbytes);
+           memset(ptr + size - n, term->cur_background, n);
+       })
+       if_OPT_ISO_TRADITIONAL_COLORS(screen,{
            ptr = BUF_COLOR(sb, row);
            memmove(ptr + col, ptr + col + n, nbytes);
            memset(ptr + size - n, xtermColorPair(), n);
@@ -607,8 +643,13 @@
 
        for (row = toprow; row <= maxrow; y += FontHeight(screen), row++) {
 #if OPT_ISO_COLORS
+#if OPT_256_COLORS
+          register Char *fbf = 0;
+          register Char *fbb = 0;
+#else
           register Char *fb = 0;
 #endif
+#endif
 #if OPT_DEC_CHRSET
           register Char *cb = 0;
 #endif
@@ -712,7 +753,7 @@
                && screen->send_mouse_pos != VT200_HIGHLIGHT_MOUSE) {
                   hi_col = screen->max_col;
                   while (hi_col > 0 && !(attrs[hi_col] & CHARDRAWN))
-                       hi_col--;
+                      hi_col--;
               }
 
               /* remaining piece should be hilited */
@@ -735,7 +776,16 @@
           })
 
           flags = attrs[col];
-          if_OPT_ISO_COLORS(screen,{
+          if_OPT_256_COLORS(screen,{
+               fbf = SCRN_BUF_FGRND(screen, lastind + topline);
+               fbb = SCRN_BUF_BGRND(screen, lastind + topline);
+               fg_bg = (fbf[col] << 8) | (fbb[col]);
+               /* this combines them, then splits them again.  but
+                  extract_fg does more, so seems reasonable */
+               fg = extract_fg(fg_bg, flags);
+               bg = extract_bg(fg_bg);
+          })
+          if_OPT_ISO_TRADITIONAL_COLORS(screen,{
                fb = SCRN_BUF_COLOR(screen, lastind + topline);
                fg_bg = fb[col];
                fg = extract_fg(fg_bg, flags);
@@ -751,9 +801,14 @@
                if ((attrs[col] != flags)
                 || (hilite && (col > hi_col))
 #if OPT_ISO_COLORS
+#if OPT_256_COLORS
+                || ((flags & FG_COLOR) && (extract_fg((fbf[col]<<8)|fbb[col],attrs[col]) != fg))
+                || ((flags & BG_COLOR) && (extract_bg((fbf[col]<<8)|fbb[col]) != bg))
+#else
                 || ((flags & FG_COLOR) && (extract_fg(fb[col],attrs[col]) != fg))
                 || ((flags & BG_COLOR) && (extract_bg(fb[col]) != bg))
 #endif
+#endif
 #if OPT_DEC_CHRSET
                 || (cb[col] != cs)
 #endif
@@ -776,7 +831,12 @@
                        hilite = False;
 
                   flags = attrs[col];
-                  if_OPT_ISO_COLORS(screen,{
+                  if_OPT_256_COLORS(screen,{
+                       fg_bg = (fbf[col]<<8) | fbb[col];
+                       fg = extract_fg(fg_bg, flags);
+                       bg = extract_bg(fg_bg);
+                  })
+                  if_OPT_ISO_TRADITIONAL_COLORS(screen,{
                        fg_bg = fb[col];
                        fg = extract_fg(fg_bg, flags);
                        bg = extract_bg(fg_bg);
@@ -853,7 +913,11 @@
            ScrnClrWrapped(screen, row);
            bzero (BUF_CHARS(buf, row), len);
            memset(BUF_ATTRS(buf, row), flags, len);
-           if_OPT_ISO_COLORS(screen,{
+           if_OPT_256_COLORS(screen,{
+               memset(BUF_FGRND(buf, row), term->sgr_foreground, len);
+               memset(BUF_BGRND(buf, row), term->cur_background, len);
+           })
+           if_OPT_ISO_TRADITIONAL_COLORS(screen,{
                memset(BUF_COLOR(buf, row), xtermColorPair(), len);
            })
            if_OPT_DEC_CHRSET({
Index: terminfo
--- xterm-110+/terminfo Mon May  3 21:18:34 1999
+++ xterm-111/terminfo  Tue Jul  6 20:44:55 1999
@@ -413,6 +413,22 @@
        setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
        setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
        use=xterm-xfree86,
+# OPT_PC_MODE should be settable with OSC, and the init for this
+# should turn it off; then ncv could be 0
+# this uses RGB values 0..255; terminfo(5) says they're terminal-dependant
+# if curses assumes something else (0..1000, like the API?) then this needs
+# to be modified
+xterm-256color|xterm with 256 colors,
+       ccc,
+       colors#256,
+       ncv#32,
+       pairs#0,
+       initc=\E]4;%p1%d;rgb\:%p2%2.2X/%p3%2.2X/%p4%2.2X\E\\,
+       setab=\E[48;5;%p1%dm,
+       setaf=\E[38;5;%p1%dm,
+       setb=\E[48;5;%p1%dm,
+       setf=\E[38;5;%p1%dm,
+       use=xterm-xfree86,
 #
 # This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
 # To use it, your decTerminalID resource must be set to 200 or above, and the
Index: unicode/convmap.pl
--- xterm-110+/unicode/convmap.pl       Sun Jun 27 18:23:43 1999
+++ xterm-111/unicode/convmap.pl        Sat Jul 10 11:32:03 1999
@@ -146,7 +146,7 @@
 long keysym2ucs(KeySym keysym)
 {
     int min = 0;
-    int max = sizeof(keysymtab) / sizeof(struct codepair);
+    int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
     int mid;
 
     /* first check for Latin-1 characters (1:1 mapping) */
Index: util.c
--- xterm-110+/util.c   Sun Jun 13 17:55:49 1999
+++ xterm-111/util.c    Fri Jul  9 06:06:21 1999
@@ -716,7 +716,11 @@
        memset(SCRN_BUF_CHARS(screen, row) + col, ' ',   len);
        memset(SCRN_BUF_ATTRS(screen, row) + col, flags, len);
 
-       if_OPT_ISO_COLORS(screen,{
+       if_OPT_256_COLORS(screen,{
+               memset(SCRN_BUF_FGRND(screen, row) + col, term->sgr_foreground, len);
+               memset(SCRN_BUF_BGRND(screen, row) + col, term->cur_background, len);
+       })
+       if_OPT_ISO_TRADITIONAL_COLORS(screen,{
                memset(SCRN_BUF_COLOR(screen, row) + col, xtermColorPair(), len);
        })
        if_OPT_DEC_CHRSET({
@@ -1228,6 +1232,17 @@
 #endif
 }
 
+void
+ChangeAnsiColors(XtermWidget tw)
+{
+       register TScreen *screen = &tw->screen;
+
+       XClearWindow(screen->display, VWindow(screen));
+       ScrnRefresh (screen, 0, 0,
+                       screen->max_row + 1,
+                       screen->max_col + 1, False);
+}
+
 /***====================================================================***/
 
 void
@@ -1376,7 +1391,11 @@
 #endif
 #if OPT_DEC_CHRSET
        if (CSET_DOUBLE(chrset)) {
-               GC gc2 = screen->font_doublesize
+               /* We could try drawing double-size characters in the icon, but
+                * given that the icon font is usually nil or nil2, there
+                * doesn't seem to be much point.
+                */
+               GC gc2 = (!IsIcon(screen) && screen->font_doublesize)
                        ? xterm_DoubleGC(chrset, flags, gc)
                        : 0;
 
@@ -1385,7 +1404,7 @@
                        y, x, chrset, len, (int)len, text))
 
                if (gc2 != 0) { /* draw actual double-sized characters */
-                       XFontStruct *fs = screen->double_fs[chrset % NUM_CHRSET];
+                       XFontStruct *fs = screen->double_fs[xterm_Double_index(chrset, flags)];
                        XRectangle rect, *rp = &rect;
                        Cardinal nr = 1;
                        int adjust;
@@ -1567,7 +1586,7 @@
                        if (FontDescent(screen) > 1)
                                y++;
                        XDrawLine(screen->display, VWindow(screen), gc,
-                               x, y, x + len * FontWidth(screen) - 1, y);
+                               x, y, x + len * screen->fnt_wide - 1, y);
                }
 #if OPT_BOX_CHARS
 #define DrawX(col) x + (col * (screen->fnt_wide))
@@ -1693,7 +1712,13 @@
        unsigned color,
        unsigned flags)
 {
-       int fg = (int) ((color >> 4) & 0xf);
+       int fg;
+
+#if OPT_256_COLORS
+       fg = (int) ((color >> 8) & 0xff);
+#else
+       fg = (int) ((color >> 4) & 0xf);
+#endif
 
        if (term->screen.colorAttrMode
         || (fg == extract_bg(color))) {
@@ -1710,7 +1735,11 @@
 int
 extract_bg (unsigned color)
 {
+#if OPT_256_COLORS
+       return (int) (color & 0xff);
+#else
        return (int) (color & 0xf);
+#endif
 }
 
 /*
@@ -1725,9 +1754,17 @@
 unsigned
 makeColorPair (int fg, int bg)
 {
-       unsigned my_bg = (bg >= 0) && (bg < 16) ? bg : 0;
-       unsigned my_fg = (fg >= 0) && (fg < 16) ? fg : my_bg;
+       unsigned my_bg;
+       unsigned my_fg;
+#if OPT_256_COLORS
+       my_bg = (bg >= 0) && (bg < 256) ? bg : 0;
+       my_fg = (fg >= 0) && (fg < 256) ? fg : my_bg;
+       return (my_fg << 8) | my_bg;
+#else
+       my_bg = (bg >= 0) && (bg < 16) ? bg : 0;
+       my_fg = (fg >= 0) && (fg < 16) ? fg : my_bg;
        return (my_fg << 4) | my_bg;
+#endif
 }
 
 unsigned
@@ -1821,7 +1858,7 @@
     if_OPT_WIDE_CHARS(screen,{
        ch |= (SCRN_BUF_WIDEC(screen, row)[col] << 8);
     })
-    return ch;
+    return E2A(ch);
 }
 
 /*
Index: version.h
--- xterm-110+/version.h        Sun Jul  4 15:08:14 1999
+++ xterm-111/version.h Thu Jul  8 19:07:20 1999
@@ -6,5 +6,5 @@
  * XFree86 to which this version of xterm has been built.  The number in
  * parentheses is my patch number (T.Dickey).
  */
-#define XTERM_PATCH   110
-#define XFREE86_VERSION "XFree86 3.9Pu"
+#define XTERM_PATCH   111
+#define XFREE86_VERSION "XFree86 3.9Pw"
Index: vttests/256colors.pl
--- /dev/null   Sun Jul 17 19:46:18 1994
+++ xterm-111/vttests/256colors.pl      Wed Jul  7 21:02:46 1999
@@ -0,0 +1,11 @@
+#!/usr/bin/perl
+
+for ($bg = 0; $bg < 256; $bg++) {
+    print "\x1b[9;1H\x1b[2J";
+    for ($fg = 0; $fg < 256; $fg++) {
+       print "\x1b[48;5;${bg}m\x1b[38;5;${fg}m";
+       printf "%03.3d/%03.3d ", $fg, $bg;
+    }
+    sleep 1;
+    print "\n";
+}
Index: vttests/256colors2.pl
--- /dev/null   Sun Jul 17 19:46:18 1994
+++ xterm-111/vttests/256colors2.pl     Wed Jul  7 22:17:17 1999
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+# Author: Todd Larason <jtl@molehill.org>
+
+# use the resources for colors 0-15 - usually more-or-less a
+# reproduction of the standard ANSI colors, but possibly more
+# pleasing shades
+
+# colors 16-231 are a 6x6x6 color cube
+for ($red = 0; $red < 6; $red++) {
+    for ($green = 0; $green < 6; $green++) {
+       for ($blue = 0; $blue < 6; $blue++) {
+           printf("\x1b]4;%d;rgb:%2.2x/%2.2x/%2.2x\x1b\\",
+                  16 + ($red * 36) + ($green * 6) + $blue,
+                  int ($red * 42.5),
+                  int ($green * 42.5),
+                  int ($blue * 42.5));
+       }
+    }
+}
+
+# colors 232-255 are a grayscale ramp, intentionally leaving out
+# black and white
+for ($gray = 0; $gray < 24; $gray++) {
+    $level = ($gray * 10) + 8;
+    printf("\x1b]4;%d;rgb:%2.2x/%2.2x/%2.2x\x1b\\",
+          232 + $gray, $level, $level, $level);
+}
+
+
+# display the colors
+
+# first the system ones:
+print "System colors:\n";
+for ($color = 0; $color < 8; $color++) {
+    print "\x1b[48;5;${color}m  ";
+}
+print "\x1b[0m\n";
+for ($color = 8; $color < 16; $color++) {
+    print "\x1b[48;5;${color}m  ";
+}
+print "\x1b[0m\n\n";
+
+# now the color cube
+print "Color cube, 6x6x6:\n";
+for ($green = 0; $green < 6; $green++) {
+    for ($red = 0; $red < 6; $red++) {
+       for ($blue = 0; $blue < 6; $blue++) {
+           $color = 16 + ($red * 36) + ($green * 6) + $blue;
+           print "\x1b[48;5;${color}m  ";
+       }
+       print "\x1b[0m ";
+    }
+    print "\n";
+}
+
+
+# now the grayscale ramp
+print "Grayscale ramp:\n";
+for ($color = 232; $color < 256; $color++) {
+    print "\x1b[48;5;${color}m  ";
+}
+print "\x1b[0m\n";
Index: vttests/doublechars.sh
--- /dev/null   Sun Jul 17 19:46:18 1994
+++ xterm-111/vttests/doublechars.sh    Fri Jul  9 06:58:05 1999
@@ -0,0 +1,78 @@
+#!/bin/sh
+# $XFree86$
+#
+# -- Thomas Dickey (1999/7/7)
+# Illustrate the use of double-size characters by drawing successive lines in
+# the commonly used video attributes.
+#
+# Use the -w option to force the output to wrap.  It will look ugly, because
+# the double-high lines will be split.
+
+ESC="^["
+CMD='echo'
+OPT='-n'
+SUF=''
+TMP=/tmp/xterm$$
+for verb in print printf ; do
+    rm -f $TMP
+    eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null
+    if test -f $TMP ; then
+       if test ! -s $TMP ; then
+           CMD="$verb"
+           OPT=
+           SUF='\c'
+           break
+       fi
+    fi
+done
+rm -f $TMP
+
+SAVE=yes
+WRAP=no
+if test $# != 0 ; then
+    while test $# != 0
+    do
+       case $1 in
+       -n)     SAVE=no ;;
+       -w)     WRAP=yes ;;
+       esac
+       shift
+    done
+fi
+
+if test $SAVE = yes ; then
+    exec </dev/tty
+    old=`stty -g`
+    stty raw -echo min 0  time 5
+
+    $CMD $OPT "${ESC}[18t${SUF}" > /dev/tty
+    IFS=';' read junk high wide
+
+    stty $old
+
+    wide=`echo $wide|sed -e 's/t.*//'`
+    original=${ESC}[8\;${high}\;${wide}t${SUF}
+    trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15
+fi
+
+if test $WRAP = yes ; then
+       # turn on wrapping and force the screen to 80 columns
+       $CMD $OPT "${ESC}[?7h" >/dev/tty
+       $CMD $OPT "${ESC}[?40l" >/dev/tty
+else
+       # force the screen to 132 columns
+       $CMD $OPT "${ESC}[?40h" >/dev/tty
+       $CMD $OPT "${ESC}[?3h" >/dev/tty
+fi
+
+for SGR in 0 1 4 7
+do
+       $CMD $OPT "${ESC}[0;${SGR}m" >/dev/tty
+       for DBL in 5 3 4 6 5
+       do
+               $CMD $OPT "${ESC}#${DBL}" >/dev/tty
+               echo "The quick brown fox jumps over the lazy dog" >/dev/tty
+       done
+       echo
+done
+$CMD $OPT "${ESC}[0m" >/dev/tty
Index: xterm.h
--- xterm-110+/xterm.h  Sun Jul  4 15:08:14 1999
+++ xterm-111/xterm.h   Sat Jul 10 12:55:35 1999
@@ -130,6 +130,9 @@
 #else
 #define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval *)t)
 #define XFD_COPYSET(src,dst) bcopy((src)->fds_bits, (dst)->fds_bits, sizeof(fd_set))
+#ifdef __MVS__
+#include <sys/time.h>
+#endif
 #endif
 
 #ifdef USE_SYS_SELECT_H
@@ -230,16 +233,22 @@
 extern void xterm_DECSWL (void);
 extern void xterm_DECDWL (void);
 #if OPT_DEC_CHRSET
+extern int xterm_Double_index(unsigned chrset, unsigned flags);
 extern GC xterm_DoubleGC(unsigned chrset, unsigned flags, GC old_gc);
 #endif
 
 /* input.c */
 extern void Input (TKeyboard *keyboard, TScreen *screen, XKeyEvent *event, Bool eightbit);
 extern void StringInput (TScreen *screen, char *string, size_t nbytes);
+
 #if OPT_NUM_LOCK
 extern void VTInitModifiers(void);
 #endif
 
+#if OPT_WIDE_CHARS
+extern int convertFromUTF8(unsigned long c, Char *strbuf);
+#endif
+
 /* main.c */
 #ifndef __EMX__
 extern int main (int argc, char **argv);
@@ -384,6 +393,7 @@
 extern int HandleExposure (TScreen *screen, XEvent *event);
 extern int char2lower(int ch);
 extern int drawXtermText (TScreen *screen, unsigned flags, GC gc, int x, int y, int chrset, PAIRED_CHARS(Char *text, Char *text2), Cardinal len);
+extern void ChangeAnsiColors (XtermWidget tw);
 extern void ChangeColors (XtermWidget tw, ScrnColors *pNew);
 extern void ClearRight (TScreen *screen, int n);
 extern void ClearScreen (TScreen *screen);
Index: xterm.log.html
--- xterm-110+/xterm.log.html   Sun Jul  4 15:08:14 1999
+++ xterm-111/xterm.log.html    Sat Jul 10 12:48:45 1999
@@ -41,6 +41,7 @@
 xc/programs/Xserver/hw/xfree86).
 
 <UL>
+<LI><A HREF="#xterm_111">Patch #111 - 1999/7/10 - XFree86 3.9Pw</A>
 <LI><A HREF="#xterm_110">Patch #110 - 1999/6/29 - XFree86 3.9Pu</A>
 <LI><A HREF="#xterm_109">Patch #109 - 1999/6/23 - XFree86 3.9Pt</A>
 <LI><A HREF="#xterm_108">Patch #108 - 1999/6/19 - XFree86 3.9Ps</A>
@@ -153,6 +154,34 @@
 <LI><A HREF="#xterm_02">Patch #2 - 1996/1/7</A>
 <LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
 </UL>
+
+<H1><A NAME="xterm_111">Patch #111 - 1999/7/10 - XFree86 3.9Pw</A></H1>
+<ul>
+       <li>add control sequences for specifying the RGB value of the ANSI
+         colors, and for configuring with 256 colors (patch by Todd Larason
+         &lt;jtl@molehill.org&gt;).  I made the default configuration to
+         16-colors, because xterm uses the default color map (which has only
+         256 colors).
+
+       <li>correct an error in DCS $ q m reporting for colors 8-15 (Todd
+         Larason).
+
+       <li>add test/demo script for double size characters.  Used this to
+         test/correct display of double size characters that should wrap,
+         underlined double size characters.
+
+       <li>increased cache size for double size fonts to 8, to allow for both
+         normal and bold fonts (from discussion with Aryeh Koenigsberg
+         &lt;aryeh.koenigsberg@telrad.co.il&gt;).
+
+       <li>integrated patch from Greg Smith &lt;rys@epaibm.rtpnc.epa.gov&gt;
+         for port to OS390 (aka MVS).  OS390 uses EBCDIC rather than ASCII.
+
+       <li>correct an off-by-one in binary search limits in keysym2ucs.c (Markus
+         Kuhn).
+
+       <li>implement logging for UTF-8 mode.  The output is written in UTF-8 form.
+</ul>
 
 <H1><A NAME="xterm_110">Patch #110 - 1999/6/29 - XFree86 3.9Pu</A></H1>
 <ul>
Index: xterm.man
--- xterm-110+/xterm.man        Sun Jul  4 15:08:14 1999
+++ xterm-111/xterm.man Sat Jul 10 12:14:59 1999
@@ -387,6 +387,10 @@
 This option indicates that the shell that is started in the \fIxterm\fP window
 will be a login shell (i.e., the first character of argv[0] will be a dash,
 indicating to the shell that it should read the user's .login or .profile).
+.sp
+Note that this is incompatible with \fB\-e\fP, since the \fIlogin\fP program
+does not provide a way to specify the command to run in the new shell.
+If you specify both, \fIxterm\fP uses \fB\-ls\fP.
 .TP 8
 .B \+ls
 This option indicates that the shell that is started should not be a login
@@ -1330,8 +1334,8 @@
 .TP 8
 .B "utf8controls (\fPclass\fB Utf8controls)"
 If \fIxterm\fP is running in UTF-8 mode, this specifies whether to
-interpret Unicode values as control characters, e.g., U+0000 to U+001F as
-C0 controls.
+interpret UTF-8 forms as control characters,
+e.g., 0xC0 0x8A (which is interpreted as U+000A) as a C0 control.
 The Unicode standard does not cover this area, leaving it unspecified for
 higher level protocols.
 Your application may require this interpretation.
Index: xtermcfg.hin
--- xterm-110+/xtermcfg.hin     Sun Jun 13 17:55:49 1999
+++ xterm-111/xtermcfg.hin      Wed Jul  7 22:06:18 1999
@@ -52,6 +52,7 @@
 #undef HAVE_X11_XPOLL_H                /* AC_CHECK_HEADERS(X11/Xpoll.h) */
 #undef HAVE_XKBSTDBELL         /* AC_CHECK_FUNCS(XkbStdBell) */
 #undef NO_ACTIVE_ICON          /* CF_ARG_DISABLE(active-icon) */
+#undef OPT_256_COLORS          /* CF_ARG_ENABLE(256-color) */
 #undef OPT_AIX_COLORS          /* CF_ARG_DISABLE(16-color) */
 #undef OPT_BLINK_CURS          /* CF_ARG_DISABLE(blink-cursor) */
 #undef OPT_BOX_CHARS           /* CF_ARG_DISABLE(boxchars) */