XFree86 3.9h - xterm patch #46 - T.Dickey This is a patch to provide test-support for some work I'm doing on ncurses. It does not modify the normal configuration of xterm; the code is compiled if the standalone configure option "--enable-xmc-glitch" is specified. -------------------------------------------------------------------------------- charproc.c | 50 +++++++- configure | 304 ++++++++++++++++++++++++++++----------------------- configure.in | 21 ++- ptyx.h | 22 +++ screen.c | 4 terminfo | 9 + xterm-46/testxmc.c | 220 ++++++++++++++++++++++++++++++++++++ xterm.h | 8 + xtermcfg.hin | 1 9 files changed, 494 insertions, 145 deletions -------------------------------------------------------------------------------- Index: charproc.c --- xterm-45+/charproc.c Wed Jul 2 21:59:37 1997 +++ xterm-46/charproc.c Fri Jul 4 11:37:09 1997 @@ -135,11 +135,11 @@ static void VTNonMaskableEvent PROTO_XT_EV_HANDLER_ARGS; static void VTallocbuf PROTO((void)); static void VTparse PROTO((void)); +static void WriteText PROTO((TScreen *screen, Char *str, int len)); static void ansi_modes PROTO((XtermWidget termw, void (*func)(unsigned *p, unsigned mask))); static void bitclr PROTO((unsigned *p, unsigned mask)); static void bitcpy PROTO((unsigned *p, unsigned q, unsigned mask)); static void bitset PROTO((unsigned *p, unsigned mask)); -static void dotext PROTO((TScreen *screen, int charset, Char *buf, Char *ptr)); static void dpmodes PROTO((XtermWidget termw, void (*func)(unsigned *p, unsigned mask))); static void report_win_label PROTO((TScreen *screen, int code, XTextProperty *text, Status ok)); static void restoremodes PROTO((XtermWidget termw)); @@ -180,6 +180,10 @@ #define XtNcharClass "charClass" #define XtNcurses "curses" #define XtNhpLowerleftBugCompat "hpLowerleftBugCompat" +#define XtNxmcGlitch "xmcGlitch" +#define XtNxmcAttributes "xmcAttributes" +#define XtNxmcInline "xmcInline" +#define XtNxmcMoveSGR "xmcMoveSGR" #define XtNcursorColor "cursorColor" #define XtNcursorBlinkTime "cursorBlinkTime" #define XtNcutNewline "cutNewline" @@ -258,6 +262,10 @@ #define XtCCharClass "CharClass" #define XtCCurses "Curses" #define XtCHpLowerleftBugCompat "HpLowerleftBugCompat" +#define XtCXmcGlitch "XmcGlitch" +#define XtCXmcAttributes "XmcAttributes" +#define XtCXmcInline "XmcInline" +#define XtCXmcMoveSGR "XmcMoveSGR" #define XtCCutNewline "CutNewline" #define XtCCutToBeginningOfLine "CutToBeginningOfLine" #define XtCCursorBlinkTime "CursorBlinkTime" @@ -460,6 +468,20 @@ {XtNhpLowerleftBugCompat, XtCHpLowerleftBugCompat, XtRBoolean, sizeof(Boolean), XtOffsetOf(XtermWidgetRec, screen.hp_ll_bc), XtRBoolean, (XtPointer) &defaultFALSE}, +#if OPT_XMC_GLITCH +{XtNxmcGlitch, XtCXmcGlitch, XtRInt, sizeof(int), + XtOffsetOf(XtermWidgetRec, screen.xmc_glitch), + XtRString, "0"}, +{XtNxmcAttributes, XtCXmcAttributes, XtRInt, sizeof(int), + XtOffsetOf(XtermWidgetRec, screen.xmc_attributes), + XtRString, "1"}, +{XtNxmcInline, XtCXmcInline, XtRBoolean, sizeof(Boolean), + XtOffsetOf(XtermWidgetRec, screen.xmc_inline), + XtRBoolean, (XtPointer) &defaultFALSE}, +{XtNxmcMoveSGR, XtCXmcMoveSGR, XtRBoolean, sizeof(Boolean), + XtOffsetOf(XtermWidgetRec, screen.move_sgr_ok), + XtRBoolean, (XtPointer) &defaultTRUE}, +#endif {XtNcutNewline, XtCCutNewline, XtRBoolean, sizeof(Boolean), XtOffsetOf(XtermWidgetRec, screen.cutNewline), XtRBoolean, (XtPointer) &defaultTRUE}, @@ -1214,6 +1236,9 @@ case CASE_CUP: /* CUP | HVP */ + if_OPT_XMC_GLITCH(screen,{ + Jump_XMC(screen); + }) if((row = param[0]) < 1) row = 1; if(nparam < 2 || (col = param[1]) < 1) @@ -1417,6 +1442,9 @@ case CASE_SGR: /* SGR */ for (row=0; row 0) { @@ -2417,7 +2455,7 @@ unsigned bg = term->cur_background; GC currentGC; - TRACE(("write (%2d,%2d) (%d) %3d:%.*s\n", + TRACE(("WriteText (%2d,%2d) (%d) %3d:%.*s\n", screen->cur_row, screen->cur_col, curXtermChrSet(screen->cur_row), @@ -3413,6 +3451,12 @@ new->screen.c132 = request->screen.c132; new->screen.curses = request->screen.curses; new->screen.hp_ll_bc = request->screen.hp_ll_bc; +#if OPT_XMC_GLITCH + new->screen.xmc_glitch = request->screen.xmc_glitch; + new->screen.xmc_attributes = request->screen.xmc_attributes; + new->screen.xmc_inline = request->screen.xmc_inline; + new->screen.move_sgr_ok = request->screen.move_sgr_ok; +#endif new->screen.foreground = request->screen.foreground; new->screen.cursorcolor = request->screen.cursorcolor; #if OPT_BLINK_CURS Index: configure --- xterm-45+/configure Mon Jun 30 08:51:00 1997 +++ xterm-46/configure Fri Jul 4 08:32:58 1997 @@ -24,15 +24,17 @@ ac_help="$ac_help --disable-16-color disable 16-color support (default: on)" ac_help="$ac_help - --enable-color-mode set default colorMode resource (default: off)" + --enable-color-mode set default colorMode resource (default: off)" ac_help="$ac_help - --disable-doublechars disable support for double-size characters (default: on)" + --disable-doublechars disable support for double-size chars (default: on)" ac_help="$ac_help - --enable-trace set to enable debugging traces (default: off)" + --enable-trace test: set to enable debugging traces (default: off)" ac_help="$ac_help --disable-vt52 disable VT52 emulation (default: on)" ac_help="$ac_help - --enable-warnings turn on GCC compiler warnings (default: off)" + --enable-xmc-glitch test: enable xmc magic-cookie emulation (default: off)" +ac_help="$ac_help + --enable-warnings test: turn on GCC compiler warnings (default: off)" # Initialize some variables set by options. # The variables have the same names as the options, with @@ -570,7 +572,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:574: checking for $ac_word" >&5 +echo "configure:576: 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 @@ -599,7 +601,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:603: checking for $ac_word" >&5 +echo "configure:605: 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 @@ -647,7 +649,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:651: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:653: 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. @@ -657,11 +659,11 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -681,12 +683,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:685: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:687: 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:690: checking whether we are using GNU C" >&5 +echo "configure:692: 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 @@ -695,7 +697,7 @@ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:699: \"$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:701: \"$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 @@ -710,7 +712,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:714: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:716: 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 @@ -738,7 +740,7 @@ fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:742: checking how to run the C preprocessor" >&5 +echo "configure:744: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -753,13 +755,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:763: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:765: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -770,13 +772,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:780: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:782: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -800,13 +802,13 @@ if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:804: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:806: 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 < Autoconf TIOCGETP @@ -824,7 +826,7 @@ if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA @@ -875,7 +877,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:879: checking for a BSD compatible install" >&5 +echo "configure:881: 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 @@ -927,9 +929,9 @@ ### checks for UNIX variants that set C preprocessor variables echo $ac_n "checking for AIX""... $ac_c" 1>&6 -echo "configure:931: checking for AIX" >&5 +echo "configure:933: checking for AIX" >&5 cat > conftest.$ac_ext <&6 -echo "configure:955: checking for POSIXized ISC" >&5 +echo "configure:957: 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 @@ -973,17 +975,17 @@ ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6 -echo "configure:977: checking for minix/config.h" >&5 +echo "configure:979: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:987: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:989: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1025,12 +1027,12 @@ ### checks for typedefs echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1029: checking for ANSI C header files" >&5 +echo "configure:1031: 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 < #include @@ -1038,7 +1040,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1042: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1044: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1055,7 +1057,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 @@ -1073,7 +1075,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 @@ -1094,7 +1096,7 @@ : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -1105,7 +1107,7 @@ exit (0); } EOF -if { (eval echo configure:1109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then : else @@ -1129,12 +1131,12 @@ fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:1133: checking for size_t" >&5 +echo "configure:1135: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -1162,12 +1164,12 @@ fi echo $ac_n "checking for time_t""... $ac_c" 1>&6 -echo "configure:1166: checking for time_t" >&5 +echo "configure:1168: 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 < #if STDC_HEADERS @@ -1203,12 +1205,12 @@ do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1207: checking for $ac_func" >&5 +echo "configure:1209: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1259,7 +1261,7 @@ if test ".$ac_cv_func_memmove" != .yes ; then if test $ac_cv_func_bcopy = yes ; then echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6 -echo "configure:1263: checking if bcopy does overlapping moves" >&5 +echo "configure:1265: 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 @@ -1268,7 +1270,7 @@ cf_cv_good_bcopy=unknown else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then cf_cv_good_bcopy=yes else @@ -1315,7 +1317,7 @@ echo $ac_n "checking for workable tgetent function""... $ac_c" 1>&6 -echo "configure:1319: checking for workable tgetent function" >&5 +echo "configure:1321: checking for workable tgetent function" >&5 if eval "test \"`echo '$''{'cf_cv_func_tgetent'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1331,7 +1333,7 @@ cf_cv_func_tgetent=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then echo "yes, there is a termcap/tgetent present" 1>&5 cf_cv_func_tgetent=yes @@ -1365,14 +1367,14 @@ for cf_termlib in $cf_TERMLIB do cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "there is a terminfo/tgetent present" 1>&5 cf_cv_func_tgetent=$cf_termlib @@ -1398,17 +1400,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1402: checking for $ac_hdr" >&5 +echo "configure:1404: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1412: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1414: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1447,12 +1449,12 @@ ### checks for compiler characteristics echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:1451: checking for working const" >&5 +echo "configure:1453: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -1522,7 +1524,7 @@ fi echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 -echo "configure:1526: checking for ${CC-cc} option to accept ANSI C" >&5 +echo "configure:1528: 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 @@ -1539,7 +1541,7 @@ do CFLAGS="$cf_save_CFLAGS $cf_arg" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1560: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cf_cv_ansi_cc="$cf_arg"; break else @@ -1581,7 +1583,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:1585: checking for X" >&5 +echo "configure:1587: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -1643,12 +1645,12 @@ # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1652: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1717,14 +1719,14 @@ ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -1830,17 +1832,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:1834: checking whether -R must be followed by a space" >&5 +echo "configure:1836: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_R_nospace=yes else @@ -1856,14 +1858,14 @@ else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_R_space=yes else @@ -1895,7 +1897,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:1899: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:1901: 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 @@ -1903,7 +1905,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1936,7 +1938,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:1940: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:1942: 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 @@ -1944,7 +1946,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1984,12 +1986,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:1988: checking for gethostbyname" >&5 +echo "configure:1990: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -2033,7 +2035,7 @@ if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:2037: checking for gethostbyname in -lnsl" >&5 +echo "configure:2039: 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 @@ -2041,7 +2043,7 @@ ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2082,12 +2084,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:2086: checking for connect" >&5 +echo "configure:2088: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -2131,7 +2133,7 @@ if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:2135: checking for connect in -lsocket" >&5 +echo "configure:2137: 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 @@ -2139,7 +2141,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2174,12 +2176,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:2178: checking for remove" >&5 +echo "configure:2180: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -2223,7 +2225,7 @@ if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:2227: checking for remove in -lposix" >&5 +echo "configure:2229: 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 @@ -2231,7 +2233,7 @@ ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2266,12 +2268,12 @@ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:2270: checking for shmat" >&5 +echo "configure:2272: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -2315,7 +2317,7 @@ if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:2319: checking for shmat in -lipc" >&5 +echo "configure:2321: 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 @@ -2323,7 +2325,7 @@ ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2367,7 +2369,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:2371: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:2373: 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 @@ -2375,7 +2377,7 @@ ac_save_LIBS="$LIBS" LIBS="-lICE $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2416,7 +2418,7 @@ echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:2420: checking for XOpenDisplay in -lX11" >&5 +echo "configure:2422: 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 @@ -2424,7 +2426,7 @@ ac_save_LIBS="$LIBS" LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2456,7 +2458,7 @@ fi echo $ac_n "checking for XtAppInitialize in -lXt""... $ac_c" 1>&6 -echo "configure:2460: checking for XtAppInitialize in -lXt" >&5 +echo "configure:2462: 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 @@ -2464,7 +2466,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2507,17 +2509,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2511: checking for $ac_hdr" >&5 +echo "configure:2513: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2523: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2544,7 +2546,7 @@ done echo $ac_n "checking for XmuClientWindow in -lXmu""... $ac_c" 1>&6 -echo "configure:2548: checking for XmuClientWindow in -lXmu" >&5 +echo "configure:2550: 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 @@ -2552,7 +2554,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXmu $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2591,7 +2593,7 @@ fi echo $ac_n "checking for XextCreateExtension in -lXext""... $ac_c" 1>&6 -echo "configure:2595: checking for XextCreateExtension in -lXext" >&5 +echo "configure:2597: 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 @@ -2599,7 +2601,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXext $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2631,7 +2633,7 @@ fi echo $ac_n "checking for XawSimpleMenuAddGlobalActions in -lXaw""... $ac_c" 1>&6 -echo "configure:2635: checking for XawSimpleMenuAddGlobalActions in -lXaw" >&5 +echo "configure:2637: checking for XawSimpleMenuAddGlobalActions in -lXaw" >&5 ac_lib_var=`echo Xaw'_'XawSimpleMenuAddGlobalActions | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2639,7 +2641,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXaw $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2677,7 +2679,7 @@ LIBS="$LIBS $X_EXTRA_LIBS" echo $ac_n "checking if we should use imake to help""... $ac_c" 1>&6 -echo "configure:2681: checking if we should use imake to help" >&5 +echo "configure:2683: checking if we should use imake to help" >&5 # Check whether --enable-imake or --disable-imake was given. if test "${enable_imake+set}" = set; then enableval="$enable_imake" @@ -2702,7 +2704,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:2706: checking for $ac_word" >&5 +echo "configure:2708: 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 @@ -2780,7 +2782,7 @@ # macros do not work well enough to actually use the Makefile for a build, but # the definitions are usable (probably). echo $ac_n "checking for compiler options known to imake""... $ac_c" 1>&6 -echo "configure:2784: checking for compiler options known to imake" >&5 +echo "configure:2786: checking for compiler options known to imake" >&5 if eval "test \"`echo '$''{'cf_cv_imake_cflags'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2826,7 +2828,7 @@ echo $ac_n "checking for default terminal-id""... $ac_c" 1>&6 -echo "configure:2830: checking for default terminal-id" >&5 +echo "configure:2832: checking for default terminal-id" >&5 # Check whether --with-terminal-id or --without-terminal-id was given. if test "${with_terminal_id+set}" = set; then withval="$with_terminal_id" @@ -2847,7 +2849,7 @@ ### checks for optional features echo $ac_n "checking if you want ANSI color""... $ac_c" 1>&6 -echo "configure:2851: checking if you want ANSI color" >&5 +echo "configure:2853: checking if you want ANSI color" >&5 # Check whether --enable-ansi-color or --disable-ansi-color was given. if test "${enable_ansi_color+set}" = set; then enableval="$enable_ansi_color" @@ -2870,7 +2872,7 @@ echo $ac_n "checking if you want 16 colors like aixterm""... $ac_c" 1>&6 -echo "configure:2874: checking if you want 16 colors like aixterm" >&5 +echo "configure:2876: 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" @@ -2893,7 +2895,7 @@ echo $ac_n "checking for default color-mode""... $ac_c" 1>&6 -echo "configure:2897: checking for default color-mode" >&5 +echo "configure:2899: checking for default color-mode" >&5 # Check whether --enable-color-mode or --disable-color-mode was given. if test "${enable_color_mode+set}" = set; then enableval="$enable_color_mode" @@ -2916,7 +2918,7 @@ echo $ac_n "checking for doublesize characters""... $ac_c" 1>&6 -echo "configure:2920: checking for doublesize characters" >&5 +echo "configure:2922: checking for doublesize characters" >&5 # Check whether --enable-doublechars or --disable-doublechars was given. if test "${enable_doublechars+set}" = set; then enableval="$enable_doublechars" @@ -2939,7 +2941,7 @@ echo $ac_n "checking if you want debugging traces""... $ac_c" 1>&6 -echo "configure:2943: checking if you want debugging traces" >&5 +echo "configure:2945: checking if you want debugging traces" >&5 # Check whether --enable-trace or --disable-trace was given. if test "${enable_trace+set}" = set; then enableval="$enable_trace" @@ -2966,7 +2968,7 @@ fi echo $ac_n "checking if you want VT52 emulation""... $ac_c" 1>&6 -echo "configure:2970: checking if you want VT52 emulation" >&5 +echo "configure:2972: checking if you want VT52 emulation" >&5 # Check whether --enable-vt52 or --disable-vt52 was given. if test "${enable_vt52+set}" = set; then enableval="$enable_vt52" @@ -2988,9 +2990,37 @@ EOF +# this is only for testing purposes +echo $ac_n "checking if you want magic cookie emulation""... $ac_c" 1>&6 +echo "configure:2996: checking if you want magic cookie emulation" >&5 +# Check whether --enable-xmc-glitch or --disable-xmc-glitch was given. +if test "${enable_xmc_glitch+set}" = set; then + enableval="$enable_xmc_glitch" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + enable_xmc=yes + else + enable_xmc=no + fi +else + enableval=no + enable_xmc=no + +fi + +echo "$ac_t""$enable_xmc" 1>&6 +if test $enable_xmc = yes ; then + cat >> confdefs.h <<\EOF +#define OPT_XMC_GLITCH 1 +EOF + + EXTRASRCS="$EXTRASRCS testxmc.c" + EXTRAOBJS="$EXTRAOBJS testxmc.o" +fi + if test -n "$GCC" ; then echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6 -echo "configure:2994: checking if you want to turn on gcc warnings" >&5 +echo "configure:3024: checking if you want to turn on gcc warnings" >&5 # Check whether --enable-warnings or --disable-warnings was given. if test "${enable_warnings+set}" = set; then enableval="$enable_warnings" @@ -3029,9 +3059,9 @@ if test -n "$GCC" then echo "checking for gcc __attribute__ directives" 1>&6 -echo "configure:3033: checking for gcc __attribute__ directives" >&5 +echo "configure:3063: checking for gcc __attribute__ directives" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:3103: \"$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 @@ -3083,11 +3113,11 @@ cat > conftest.$ac_ext <&6 -echo "configure:3091: checking for gcc warning options" >&5 +echo "configure:3121: checking for gcc warning options" >&5 cf_save_CFLAGS="$CFLAGS" cf_warn_CFLAGS="-W -Wall" for cf_opt in \ @@ -3103,7 +3133,7 @@ Wstrict-prototypes do CFLAGS="$cf_save_CFLAGS $cf_warn_CFLAGS -$cf_opt" - if { (eval echo configure:3107: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:3137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6 cf_warn_CFLAGS="$cf_warn_CFLAGS -$cf_opt" test "$cf_opt" = Wcast-qual && cf_warn_CFLAGS="$cf_warn_CFLAGS -DXTSTRINGDEFINES" Index: configure.in --- xterm-45+/configure.in Mon Jun 30 08:51:00 1997 +++ xterm-46/configure.in Fri Jul 4 08:32:58 1997 @@ -118,7 +118,7 @@ AC_MSG_CHECKING(for default color-mode) CF_ARG_ENABLE(color-mode, - [ --enable-color-mode set default colorMode resource ], + [ --enable-color-mode set default colorMode resource], [default_colormode=TRUE], [default_colormode=FALSE]) AC_MSG_RESULT($default_colormode) @@ -126,7 +126,7 @@ AC_MSG_CHECKING(for doublesize characters) CF_ARG_DISABLE(doublechars, - [ --disable-doublechars disable support for double-size characters], + [ --disable-doublechars disable support for double-size chars], [enable_doublechars=no], [enable_doublechars=yes]) AC_MSG_RESULT($enable_doublechars) @@ -134,7 +134,7 @@ AC_MSG_CHECKING(if you want debugging traces) CF_ARG_ENABLE(trace, - [ --enable-trace set to enable debugging traces], + [ --enable-trace test: set to enable debugging traces], [enable_trace=yes], [enable_trace=no]) AC_MSG_RESULT($enable_trace) @@ -152,10 +152,23 @@ AC_MSG_RESULT($enable_vt52) test $enable_vt52 = no && AC_DEFINE(OPT_VT52_MODE,0) +# this is only for testing purposes +AC_MSG_CHECKING(if you want magic cookie emulation) +CF_ARG_ENABLE(xmc-glitch, + [ --enable-xmc-glitch test: enable xmc magic-cookie emulation], + [enable_xmc=yes], + [enable_xmc=no]) +AC_MSG_RESULT($enable_xmc) +if test $enable_xmc = yes ; then + AC_DEFINE(OPT_XMC_GLITCH,1) + EXTRASRCS="$EXTRASRCS testxmc.c" + EXTRAOBJS="$EXTRAOBJS testxmc.o" +fi + if test -n "$GCC" ; then AC_MSG_CHECKING(if you want to turn on gcc warnings) CF_ARG_ENABLE(warnings, - [ --enable-warnings turn on GCC compiler warnings], + [ --enable-warnings test: turn on GCC compiler warnings], [with_warnings=yes], [with_warnings=no]) AC_MSG_RESULT($with_warnings) Index: ptyx.h --- xterm-45+/ptyx.h Mon Jun 30 08:51:00 1997 +++ xterm-46/ptyx.h Fri Jul 4 09:32:11 1997 @@ -310,6 +310,10 @@ #define OPT_VT52_MODE 1 /* true if xterm supports VT52 emulation */ #endif +#ifndef OPT_XMC_GLITCH +#define OPT_XMC_GLITCH 0 /* true if xterm supports xmc (magic cookie glitch) */ +#endif + /***====================================================================***/ #if OPT_AIX_COLORS && !OPT_ISO_COLORS @@ -411,6 +415,16 @@ /***====================================================================***/ +#if OPT_XMC_GLITCH +#define if_OPT_XMC_GLITCH(screen, code) if(screen->xmc_glitch) code +#define XMC_GLITCH 1 /* the character we'll show */ +#define XMC_FLAGS (INVERSE|UNDERLINE|BOLD) +#else +#define if_OPT_XMC_GLITCH(screen, code) /* nothing */ +#endif + +/***====================================================================***/ + /* ScrnBuf-level macros */ #define BUF_CHARS(buf, row) (buf[MAX_PTRS * (row) + 0]) #define BUF_ATTRS(buf, row) (buf[MAX_PTRS * (row) + 1]) @@ -577,6 +591,14 @@ Boolean jumpscroll; /* whether we should jumpscroll */ Boolean always_highlight; /* whether to highlight cursor */ Boolean underline; /* whether to underline text */ + + /* Testing */ +#if OPT_XMC_GLITCH + int xmc_glitch; /* # of spaces to pad on SGR's */ + int xmc_attributes; /* attrs that make a glitch */ + Boolean xmc_inline; /* SGR's propagate only to eol */ + Boolean move_sgr_ok; /* SGR is reset on move */ +#endif /* Tektronix window parameters */ GC TnormalGC; /* normal painting */ Index: screen.c --- xterm-45+/screen.c Mon Jun 30 08:51:00 1997 +++ xterm-46/screen.c Fri Jul 4 11:37:04 1997 @@ -258,6 +258,10 @@ if (wrappedbit) *attrs |= LINEWRAPPED; + + if_OPT_XMC_GLITCH(screen,{ + Resolve_XMC(screen); + }) } static void Index: terminfo --- xterm-45+/terminfo Tue Jun 3 16:05:50 1997 +++ xterm-46/terminfo Fri Jul 4 08:32:58 1997 @@ -164,6 +164,15 @@ kf4=\E[14~, use=xterm, # +# This is used only for testing (it's not relevant to DEC VTxxx terminals, but +# to ncurses). +xterm-xmc|xterm with magic-cookie glitch, + xmc#1, + use=xterm, +# +# This one also is primarily for testing ncurses; while the ISO 6429 defines +# the REP control, none of the DEC VTxxx terminals (VT52 through VT420) support +# it. xterm-rep|xterm with repeat-character control, rep=%p1%c\E[%p2%{1}%-%db, use=xterm, Index: testxmc.c --- /dev/null Sun Jul 17 19:46:18 1994 +++ xterm-46/testxmc.c Fri Jul 4 11:37:17 1997 @@ -0,0 +1,220 @@ +/* + * $XFree86$ + */ + +/************************************************************ + +Copyright 1997 by Thomas E. Dickey + + All Rights Reserved + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name(s) of the above copyright +holders shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization. + +********************************************************/ + +/* + * This module provides test support for curses applications that must work + * with terminals that have the xmc (magic cookie) glitch. The xmc_glitch + * resource denotes the number of spaces that are emitted when switching to or + * from standout (reverse) mode. Some terminals implement this by storing the + * attribute controls in the character cell that is skipped. So if the cell is + * overwritten by text, then the attribute change in the cell is cancelled, + * causing attributes to the left of the change to propagate. + * + * We implement the glitch by writing a character that won't be mistaken for + * other normal characters (and mapping normal writes to that character to a + * different one). + * + * Since xmc isn't normally part of xterm, we document it here rather than in + * the man-page. This module is driven by resources rather than by the + * termcap/terminfo description to make it a little more flexible for testing + * purposes. + * + * Resources: + * + * xmcGlitch (class XmcGlitch) + * When true, enables this extension. The default is `0', which disables + * the module. (termcap sg, terminfo xmc). + * + * xmcAttributes (class XmcAttributes) + * The attributes for which we'll generate a glitch, as a bitmask. + * + * INVERSE 1 + * UNDERLINE 2 + * BOLD 4 + * + * The default is `1' (INVERSE). Some terminals emit glitches for + * underline. + * + * xmcInline (class XmcInline) + * When true, limits the extent of an SGR change to the current line. + * The default is `false'. (No termcap or terminfo equivalent, though + * there are comments in some entries relating to this issue). + * + * xmcMoveSGR (class XmcMoveSGR) + * When false, a cursor movement will leave a glitch when SGR's are + * active. The default is `true'. (termcap ms, terminfo msgr). + * + * TODO: + * When xmc is active, the terminfo max_attributes (ma) capability is + * assumed to be 1. + * + * The xmcAttributes resource should also apply to alternate character + * sets and to color. + */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +#ifndef X_NOT_STDC_ENV +#include +#else +extern char *malloc(); +#endif + +#include "ptyx.h" +#include "data.h" +#include "xterm.h" + +#define MARK_ON(a) (my_attrs & a) != 0 && (term->flags & (whichone = a)) == 0 +#define MARK_OFF(a) (my_attrs & a) != 0 && (term->flags & (whichone = a)) != 0 + +void Mark_XMC(register TScreen *screen, int param) +{ + static Char *glitch; + Boolean found = FALSE; + Char my_attrs = (screen->xmc_attributes & XMC_FLAGS); + Char whichone = 0; + + if (glitch == 0) { + glitch = malloc(screen->xmc_glitch); + memset(glitch, XMC_GLITCH, screen->xmc_glitch); + } + switch (param) { + case -1:/* DEFAULT */ + case 0: /* FALLTHRU */ + found = MARK_OFF(XMC_FLAGS); + break; + case 1: + found = MARK_ON(BOLD); + break; + case 4: + found = MARK_ON(UNDERLINE); + break; + case 7: + found = MARK_ON(INVERSE); + break; + case 22: + found = MARK_OFF(BOLD); + break; + case 24: + found = MARK_OFF(UNDERLINE); + break; + case 27: + found = MARK_OFF(INVERSE); + break; + } + + /* + * Write a glitch with the attributes temporarily set to the new(er) + * ones. + */ + if (found) { + unsigned save = term->flags; + term->flags ^= whichone; + TRACE(("XMC Writing glitch (%d/%d)\n", my_attrs, whichone)) + dotext(screen, '?', glitch, glitch + screen->xmc_glitch); + term->flags = save; + } +} + +/* + * Force a glitch on cursor movement when we're in standout mode and not at the + * end of a line. + */ +void Jump_XMC(register TScreen *screen) +{ + if (!screen->move_sgr_ok + && screen->cur_col <= CurMaxCol(screen, screen->cur_row)) { + Mark_XMC(screen, -1); + } +} + +/* + * After writing text to the screen, resolve mismatch between the current + * location and any attributes that would have been set by preceding locations. + */ +void Resolve_XMC(register TScreen *screen) +{ + Boolean changed = False; + Char start; + Char my_attrs = (screen->xmc_attributes & XMC_FLAGS); + int row = screen->cur_row; + int col = screen->cur_col; + + /* Find the preceding cell. + */ + if (SCRN_BUF_CHARS(screen, row)[col] != XMC_GLITCH) { + if (col != 0) { + col--; + } else if (!screen->xmc_inline && row != 0) { + row--; + col = CurMaxCol(screen, row); + } + } + start = (SCRN_BUF_ATTRS(screen, row)[col] & my_attrs); + + /* Now propagate the starting state until we reach a cell which holds + * a glitch. + */ + for (;;) { + if (col < CurMaxCol(screen, row)) { + col++; + } else if (!screen->xmc_inline && row < screen->max_row) { + row++; + col = 0; + } else + break; + if (SCRN_BUF_CHARS(screen, row)[col] == XMC_GLITCH) + break; + if ((SCRN_BUF_ATTRS(screen, row)[col] & my_attrs) != start) { + SCRN_BUF_ATTRS(screen, row)[col] = start | + (SCRN_BUF_ATTRS(screen, row)[col] & ~my_attrs); + changed = True; + } + } + + TRACE(("XMC %s (%s:%d/%d) from %d,%d to %d,%d\n", + changed ? "Ripple" : "Nochange", + term->flags & my_attrs ? "on" : "off", + my_attrs, start, + screen->cur_row, screen->cur_col, row, col)) + + if (changed) { + ScrnRefresh (screen, screen->cur_row, 0, row + 1 - screen->cur_row, screen->max_col + 1, True); + } +} Index: xterm.h --- xterm-45+/xterm.h Mon Jun 30 08:51:00 1997 +++ xterm-46/xterm.h Fri Jul 4 10:49:22 1997 @@ -53,7 +53,7 @@ extern void SwitchBufPtrs PROTO((TScreen *screen)); extern void VTReset PROTO((int full)); extern void VTRun PROTO((void)); -extern void WriteText PROTO(( TScreen *screen, Char *str, int len)); +extern void dotext PROTO((TScreen *screen, int charset, Char *buf, Char *ptr)); extern void set_cursor_gcs PROTO((TScreen *screen)); extern void unparseputc1 PROTO((int c, int fd)); extern void unparseputc PROTO((int c, int fd)); @@ -247,6 +247,12 @@ #else #define getXtermChrSet(row, col) 0 #define curXtermChrSet(row) 0 +#endif + +#if OPT_XMC_GLITCH +extern void Mark_XMC PROTO((TScreen *screen, int param)); +extern void Jump_XMC PROTO((TScreen *screen)); +extern void Resolve_XMC PROTO((TScreen *screen)); #endif #endif /* included_xterm_h */ Index: xtermcfg.hin --- xterm-45+/xtermcfg.hin Mon Jun 30 08:51:00 1997 +++ xterm-46/xtermcfg.hin Fri Jul 4 08:32:58 1997 @@ -39,6 +39,7 @@ #undef OPT_ISO_COLORS /* CF_ARG_DISABLE(ansi-color) */ #undef OPT_TRACE /* CF_ARG_ENABLE(trace) */ #undef OPT_VT52_MODE /* CF_ARG_DISABLE(vt52) */ +#undef OPT_XMC_GLITCH /* CF_ARG_ENABLE(xmc-glitch) */ #undef USE_MY_MEMMOVE /* CF_FUNC_MEMMOVE */ #undef USE_OK_BCOPY /* CF_FUNC_MEMMOVE */ #undef USE_TERMINFO /* CF_FUNC_TGETENT */