- -*- indented-text -*-
+to 21.2.25 "Hephaestus"
+-- the LATEST.IS.* file has been renamed to LATEST-IS-*.
+-- the CVS tag to checkout the latest tarball is `r21-2-latest-beta'.
+-- 3 crashes in mapcar1 have been fixed.
+-- lwlib arg passing cleanup
+-- yet more widget and tab fixes
+-- yet another Tab sync
+-- specifier copying fix for widgets
+-- preparation for proper layouts
+-- native widgets used for some custom widgets
+-- (+ 1) is no longer incorrectly compiled
+-- char-before no longer has performance penalty
+-- xpm again works on Windows
+-- native Windows fixes from Adrian Aichner
+-- Mule fixes from Yoshiki Hayashi
+-- properly detect Athena widgets headers and libs, preventing crashes
+ from misdetection and from libraries and headers that don't match,
+ from Daniel Pittman
+
to 21.2.24 "Hecate"
+-- Tabs fixes from Andy Piper
+-- Widget leak fixes from Andy Piper
-- (coding-system-list) deals properly with coding system aliases, Shenghuo ZHU
-- configure support for ESD sound rewritte, Martin Buchholz
-- directory separator fix from Mike Alexander
+1999-12-24 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.25 is released.
+
+1999-12-17 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
+
+ * README: Remove msdos part.
+
+1999-12-17 Martin Buchholz <martin@xemacs.org>
+
+ * configure.in: Oops. xpm doesn't actually depend on X11.
+ I got confused by the name (like others get confused by `xemacs'?)
+
1999-12-14 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.24 is released.
* Makefile.in.in: use WINDOWSNT for mingw install.
-1999-08-01 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-08-01 Adrian Aichner <adrian@xemacs.org>
* etc/DISTRIB: Update IP address of ftp.xemacs.org.
* etc/NEWS: Fix typo
* etc/check_cygwin_setup.sh: fix a couple of buglets.
-1998-08-23 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-08-23 Adrian Aichner <adrian@xemacs.org>
* etc/sample.emacs: Enable sound support on mswindows devices.
conditions for both PNG and XPM, stop screaming if png is not found and
no window-system is selected, and fixed a bug in the XPM checking.
-1998-08-06 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-08-06 Adrian Aichner <adrian@xemacs.org>
* etc/TUTORIAL.de: Fixing typos and grammatical errors. Fixing
inconsistent usage of RET, <Return>, and <return> (only using
* etc/aliases.ksh: Add `mak' function to create beta.err for
build-report.
- From Adrian Aichner <aichner@ecf.teradyne.com>
+ From Adrian Aichner <adrian@xemacs.org>
Suggested by Karl M. Hegbloom <karlheg@bittersweet.inetarena.com>
1998-01-27 SL Baur <steve@altair.xemacs.org>
* lwlib/lwlib-Xm.c(update_one_menu_entry): Add missing variable.
From Skip Montanaro <skip@calendar.com>
-1997-11-04 Adrian Aichner <aichner@ecf.teradyne.com>
+1997-11-04 Adrian Aichner <adrian@xemacs.org>
* etc/TUTORIAL.de:
Updated copyright information. Translated most of the COPYING
section. Translated the <<.*>> didactic line.
-1997-10-22 Adrian Aichner <aichner@ecf.teradyne.com>
+1997-10-22 Adrian Aichner <adrian@xemacs.org>
* etc/TUTORIAL.de: Fixed two issues reported by
Achim Oppelt <aoppelt@theorie3.physik.uni-erlangen.de>
Applied patches supplied by Marc Aurel <4-tea-2@bong.saar.de>.
They fix yet more typos and quite a few awkward sentences.
-1997-10-21 Adrian Aichner <aichner@ecf.teradyne.com>
+1997-10-21 Adrian Aichner <adrian@xemacs.org>
* etc/TUTORIAL.de: Manually merged a few more corrections by
Carsten Leonhardt <leo@arioch.oche.de>
-1997-10-20 Adrian Aichner <aichner@ecf.teradyne.com>
+1997-10-20 Adrian Aichner <adrian@xemacs.org>
* etc/TUTORIAL.de:
Applied patches from Andreas Jaeger <aj@arthur.rhein-neckar.de> to 1.2,
`info' holds the Info documentation tree for XEmacs.
`man' holds the source code for the XEmacs info documentation tree.
-`msdos' holds configuration files for compiling XEmacs under MSDOG.
- See the file etc/MSDOS for more information.
-
`nt' holds configuration files for compiling XEmacs under Microsoft Windows
NT. The support for NT is very tentative right now.
done
;;
+ "with_athena" )
+ case "$val" in
+ xa | xaw ) val=xaw ;;
+ 3 | 3d | xaw3d ) val=3d ;;
+ ne | nex | next | naxtaw) val=next ;;
+ 9 | 95 | xaw95 ) val=95 ;;
+ xp | xpm | xawxpm ) val=xpm ;;
+ * ) (echo "$progname: Usage error:"
+echo " " "The \`--$optname' option must have one of these values:
+ \`xaw', \`3d', \`next', \`95', or \`xpm'."
+echo " Use \`$progname --help' to show usage.") >&2 && exit 1 ;;
+ esac
+ eval "$opt=\"$val\""
+ ;;
+
"with_xim" )
case "$val" in
y | ye | yes ) val=yes ;;
case "$val" in
l | lu | luc | luci | lucid ) val=lucid ;;
m | mo | mot | moti | motif ) val=motif ;;
- athena3d | athena-3d ) val=athena3d ;;
a | at | ath | athe | athen | athena ) val=athena ;;
n | no | non | none ) val=no ;;
* ) (echo "$progname: Usage error:"
echo " " "The \`--$optname' option must have one of these values:
- \`lucid', \`motif', \`athena', \`athena3d', or \`no'."
+ \`lucid', \`motif', \`athena', or \`no'."
echo " Use \`$progname --help' to show usage.") >&2 && exit 1 ;;
esac
eval "$opt=\"$val\""
fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:820: checking whether ln -s works" >&5
+echo "configure:834: checking whether ln -s works" >&5
rm -f conftestdata
if ln -s X conftestdata 2>/dev/null
echo $ac_n "checking "host system type"""... $ac_c" 1>&6
-echo "configure:1065: checking "host system type"" >&5
+echo "configure:1079: checking "host system type"" >&5
internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"`
configuration=`echo "$configuration" | sed 's/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/'`
# 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:1559: checking for $ac_word" >&5
+echo "configure:1573: checking for $ac_word" >&5
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
# 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:1586: checking for $ac_word" >&5
+echo "configure:1600: checking for $ac_word" >&5
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
# 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:1634: checking for $ac_word" >&5
+echo "configure:1648: checking for $ac_word" >&5
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1663: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1677: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
cat > conftest.$ac_ext << EOF
-#line 1676 "configure"
+#line 1690 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1695: \"$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
{ 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:1709: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1723: 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:1714: checking whether we are using GNU C" >&5
+echo "configure:1728: checking whether we are using GNU C" >&5
cat > conftest.c <<EOF
#ifdef __GNUC__
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1721: \"$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:1735: \"$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
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1739: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1753: checking whether ${CC-cc} accepts -g" >&5
echo 'void f(){}' > conftest.c
if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
# 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:1772: checking for $ac_word" >&5
+echo "configure:1786: checking for $ac_word" >&5
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
# 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:1799: checking for $ac_word" >&5
+echo "configure:1813: checking for $ac_word" >&5
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
# 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:1847: checking for $ac_word" >&5
+echo "configure:1861: checking for $ac_word" >&5
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1876: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1890: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
cat > conftest.$ac_ext << EOF
-#line 1889 "configure"
+#line 1903 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1908: \"$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
{ 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:1922: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1936: 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:1927: checking whether we are using GNU C" >&5
+echo "configure:1941: checking whether we are using GNU C" >&5
cat > conftest.c <<EOF
#ifdef __GNUC__
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1934: \"$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:1948: \"$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
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1952: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1966: checking whether ${CC-cc} accepts -g" >&5
echo 'void f(){}' > conftest.c
if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
# 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:1985: checking for $ac_word" >&5
+echo "configure:1999: checking for $ac_word" >&5
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
# 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:2012: checking for $ac_word" >&5
+echo "configure:2026: checking for $ac_word" >&5
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
# 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:2060: checking for $ac_word" >&5
+echo "configure:2074: checking for $ac_word" >&5
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2089: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2103: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
cat > conftest.$ac_ext << EOF
-#line 2102 "configure"
+#line 2116 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:2107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2121: \"$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
{ 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:2135: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2149: 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:2140: checking whether we are using GNU C" >&5
+echo "configure:2154: checking whether we are using GNU C" >&5
cat > conftest.c <<EOF
#ifdef __GNUC__
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2147: \"$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:2161: \"$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
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:2165: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2179: checking whether ${CC-cc} accepts -g" >&5
echo 'void f(){}' > conftest.c
if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2202: checking how to run the C preprocessor" >&5
+echo "configure:2216: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 2215 "configure"
+#line 2229 "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:2221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2235: \"$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*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 2232 "configure"
+#line 2246 "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:2238: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2252: \"$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*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 2249 "configure"
+#line 2263 "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:2255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2269: \"$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
:
echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:2280: checking for AIX" >&5
+echo "configure:2294: checking for AIX" >&5
cat > conftest.$ac_ext <<EOF
-#line 2282 "configure"
+#line 2296 "configure"
#include "confdefs.h"
#ifdef _AIX
yes
echo $ac_n "checking for GNU libc""... $ac_c" 1>&6
-echo "configure:2309: checking for GNU libc" >&5
+echo "configure:2323: checking for GNU libc" >&5
cat > conftest.$ac_ext <<EOF
-#line 2311 "configure"
+#line 2325 "configure"
#include "confdefs.h"
#include <features.h>
int main() {
; return 0; }
EOF
-if { (eval echo configure:2323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
have_glibc=yes
else
cat > conftest.$ac_ext <<EOF
-#line 2345 "configure"
+#line 2359 "configure"
#include "confdefs.h"
int main () {
#if defined __SUNPRO_C
#endif
}
EOF
-if { (eval echo configure:2357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:2371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
:
else
fi
echo $ac_n "checking for dynodump""... $ac_c" 1>&6
-echo "configure:2631: checking for dynodump" >&5
+echo "configure:2645: checking for dynodump" >&5
if test "$unexec" != "unexsol2.o"; then
echo "$ac_t""no" 1>&6
else
done
echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6
-echo "configure:2669: checking for terminateAndUnload in -lC" >&5
+echo "configure:2683: checking for terminateAndUnload in -lC" >&5
ac_lib_var=`echo C'_'terminateAndUnload | sed 'y%./+-%__p_%'`
xe_check_libs=" -lC "
cat > conftest.$ac_ext <<EOF
-#line 2674 "configure"
+#line 2688 "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
terminateAndUnload()
; return 0; }
EOF
-if { (eval echo configure:2685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2699: \"$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
if test "$add_runtime_path" = "yes"; then
echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:2789: checking "for runtime libraries flag"" >&5
+echo "configure:2803: checking "for runtime libraries flag"" >&5
case "$opsys" in
sol2 ) dash_r="-R" ;;
decosf* | linux* | irix*) dash_r="-rpath " ;;
done
fi
cat > conftest.$ac_ext <<EOF
-#line 2811 "configure"
+#line 2825 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:2818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
dash_r="$try_dash_r"
else
fi
after_morecore_hook_exists=yes
echo $ac_n "checking for malloc_get_state""... $ac_c" 1>&6
-echo "configure:2920: checking for malloc_get_state" >&5
+echo "configure:2934: checking for malloc_get_state" >&5
cat > conftest.$ac_ext <<EOF
-#line 2923 "configure"
+#line 2937 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char malloc_get_state(); below. */
; return 0; }
EOF
-if { (eval echo configure:2946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_malloc_get_state=yes"
else
fi
echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:2966: checking for malloc_set_state" >&5
+echo "configure:2980: checking for malloc_set_state" >&5
cat > conftest.$ac_ext <<EOF
-#line 2969 "configure"
+#line 2983 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char malloc_set_state(); below. */
; 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:3006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_malloc_set_state=yes"
else
fi
echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:3012: checking whether __after_morecore_hook exists" >&5
+echo "configure:3026: checking whether __after_morecore_hook exists" >&5
cat > conftest.$ac_ext <<EOF
-#line 3014 "configure"
+#line 3028 "configure"
#include "confdefs.h"
extern void (* __after_morecore_hook)();
int main() {
__after_morecore_hook = 0
; return 0; }
EOF
-if { (eval echo configure:3021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
else
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3080: checking for $ac_word" >&5
+echo "configure:3094: checking for $ac_word" >&5
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
# 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:3135: checking for a BSD compatible install" >&5
+echo "configure:3149: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
# 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:3189: checking for $ac_word" >&5
+echo "configure:3203: checking for $ac_word" >&5
if test -n "$YACC"; then
ac_cv_prog_YACC="$YACC" # Let the user override the test.
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3221: checking for $ac_hdr" >&5
+echo "configure:3235: checking for $ac_hdr" >&5
cat > conftest.$ac_ext <<EOF
-#line 3224 "configure"
+#line 3238 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3243: \"$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*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3262: checking for $ac_hdr" >&5
+echo "configure:3276: checking for $ac_hdr" >&5
cat > conftest.$ac_ext <<EOF
-#line 3265 "configure"
+#line 3279 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3270: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3284: \"$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*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3303: checking for $ac_hdr" >&5
+echo "configure:3317: checking for $ac_hdr" >&5
cat > conftest.$ac_ext <<EOF
-#line 3306 "configure"
+#line 3320 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3311: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3325: \"$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*
done
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:3341: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:3355: checking for sys/wait.h that is POSIX.1 compatible" >&5
cat > conftest.$ac_ext <<EOF
-#line 3344 "configure"
+#line 3358 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if { (eval echo configure:3360: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3384: checking for ANSI C header files" >&5
+echo "configure:3398: checking for ANSI C header files" >&5
cat > conftest.$ac_ext <<EOF
-#line 3387 "configure"
+#line 3401 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3395: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3409: \"$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*
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 3412 "configure"
+#line 3426 "configure"
#include "confdefs.h"
#include <string.h>
EOF
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 3430 "configure"
+#line 3444 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
if test $ac_cv_header_stdc = yes; then
# /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
cat > conftest.$ac_ext <<EOF
-#line 3448 "configure"
+#line 3462 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
exit (0); }
EOF
-if { (eval echo configure:3459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:3473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
:
else
fi
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3485: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3499: checking whether time.h and sys/time.h may both be included" >&5
cat > conftest.$ac_ext <<EOF
-#line 3488 "configure"
+#line 3502 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
struct tm *tp;
; return 0; }
EOF
-if { (eval echo configure:3497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3511: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
fi
echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3521: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:3535: checking for sys_siglist declaration in signal.h or unistd.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 3524 "configure"
+#line 3538 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
char *msg = *(sys_siglist + 1);
; return 0; }
EOF
-if { (eval echo configure:3536: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3550: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_decl_sys_siglist=yes
else
echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6
-echo "configure:3561: checking for struct utimbuf" >&5
+echo "configure:3575: checking for struct utimbuf" >&5
cat > conftest.$ac_ext <<EOF
-#line 3563 "configure"
+#line 3577 "configure"
#include "confdefs.h"
#ifdef TIME_WITH_SYS_TIME
#include <sys/time.h>
static struct utimbuf x; x.actime = x.modtime;
; return 0; }
EOF
-if { (eval echo configure:3582: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3596: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
{ test "$extra_verbose" = "yes" && cat << \EOF
rm -f conftest*
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3602: checking return type of signal handlers" >&5
+echo "configure:3616: checking return type of signal handlers" >&5
cat > conftest.$ac_ext <<EOF
-#line 3605 "configure"
+#line 3619 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
int i;
; return 0; }
EOF
-if { (eval echo configure:3622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3644: checking for size_t" >&5
+echo "configure:3658: checking for size_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 3647 "configure"
+#line 3661 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3678: checking for pid_t" >&5
+echo "configure:3692: checking for pid_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 3681 "configure"
+#line 3695 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3712: checking for uid_t in sys/types.h" >&5
+echo "configure:3726: checking for uid_t in sys/types.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 3715 "configure"
+#line 3729 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
fi
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3751: checking for mode_t" >&5
+echo "configure:3765: checking for mode_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 3754 "configure"
+#line 3768 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3785: checking for off_t" >&5
+echo "configure:3799: checking for off_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 3788 "configure"
+#line 3802 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3819: checking for ssize_t" >&5
+echo "configure:3833: checking for ssize_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 3822 "configure"
+#line 3836 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:3854: checking for struct timeval" >&5
+echo "configure:3868: checking for struct timeval" >&5
cat > conftest.$ac_ext <<EOF
-#line 3856 "configure"
+#line 3870 "configure"
#include "confdefs.h"
#ifdef TIME_WITH_SYS_TIME
#include <sys/time.h>
static struct timeval x; x.tv_sec = x.tv_usec;
; return 0; }
EOF
-if { (eval echo configure:3872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3886: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
HAVE_TIMEVAL=yes
rm -f conftest*
echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:3894: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:3908: checking whether struct tm is in sys/time.h or time.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 3897 "configure"
+#line 3911 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <time.h>
struct tm *tp; tp->tm_sec;
; return 0; }
EOF
-if { (eval echo configure:3905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tm=time.h
else
fi
echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:3929: checking for tm_zone in struct tm" >&5
+echo "configure:3943: checking for tm_zone in struct tm" >&5
cat > conftest.$ac_ext <<EOF
-#line 3932 "configure"
+#line 3946 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_cv_struct_tm>
struct tm tm; tm.tm_zone;
; return 0; }
EOF
-if { (eval echo configure:3940: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tm_zone=yes
else
else
echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:3963: checking for tzname" >&5
+echo "configure:3977: checking for tzname" >&5
cat > conftest.$ac_ext <<EOF
-#line 3966 "configure"
+#line 3980 "configure"
#include "confdefs.h"
#include <time.h>
#ifndef tzname /* For SGI. */
atoi(*tzname);
; return 0; }
EOF
-if { (eval echo configure:3976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_var_tzname=yes
else
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4002: checking for working const" >&5
+echo "configure:4016: checking for working const" >&5
cat > conftest.$ac_ext <<EOF
-#line 4005 "configure"
+#line 4019 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:4054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4068: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:4079: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:4093: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
cat > conftestmake <<\EOF
echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4104: checking whether byte ordering is bigendian" >&5
+echo "configure:4118: checking whether byte ordering is bigendian" >&5
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
cat > conftest.$ac_ext <<EOF
-#line 4109 "configure"
+#line 4123 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
#endif
; return 0; }
EOF
-if { (eval echo configure:4120: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
cat > conftest.$ac_ext <<EOF
-#line 4124 "configure"
+#line 4138 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
#endif
; return 0; }
EOF
-if { (eval echo configure:4135: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_bigendian=yes
else
rm -f conftest*
if test $ac_cv_c_bigendian = unknown; then
cat > conftest.$ac_ext <<EOF
-#line 4152 "configure"
+#line 4166 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
exit (u.c[sizeof (long) - 1] == 1);
}
EOF
-if { (eval echo configure:4165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_c_bigendian=no
else
echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:4192: checking size of short" >&5
+echo "configure:4206: checking size of short" >&5
cat > conftest.$ac_ext <<EOF
-#line 4195 "configure"
+#line 4209 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
exit(0);
}
EOF
-if { (eval echo configure:4206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_sizeof_short=`cat conftestval`
else
exit 1
fi
echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:4234: checking size of int" >&5
+echo "configure:4248: checking size of int" >&5
cat > conftest.$ac_ext <<EOF
-#line 4237 "configure"
+#line 4251 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
exit(0);
}
EOF
-if { (eval echo configure:4248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_sizeof_int=`cat conftestval`
else
echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:4270: checking size of long" >&5
+echo "configure:4284: checking size of long" >&5
cat > conftest.$ac_ext <<EOF
-#line 4273 "configure"
+#line 4287 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
exit(0);
}
EOF
-if { (eval echo configure:4284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_sizeof_long=`cat conftestval`
else
echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4306: checking size of long long" >&5
+echo "configure:4320: checking size of long long" >&5
cat > conftest.$ac_ext <<EOF
-#line 4309 "configure"
+#line 4323 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
exit(0);
}
EOF
-if { (eval echo configure:4320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_sizeof_long_long=`cat conftestval`
else
echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:4342: checking size of void *" >&5
+echo "configure:4356: checking size of void *" >&5
cat > conftest.$ac_ext <<EOF
-#line 4345 "configure"
+#line 4359 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
exit(0);
}
EOF
-if { (eval echo configure:4356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_sizeof_void_p=`cat conftestval`
else
echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:4379: checking for long file names" >&5
+echo "configure:4393: checking for long file names" >&5
ac_cv_sys_long_file_names=yes
# Test for long file names in all the places we know might matter:
echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4425: checking for sin" >&5
+echo "configure:4439: checking for sin" >&5
cat > conftest.$ac_ext <<EOF
-#line 4428 "configure"
+#line 4442 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char sin(); below. */
; return 0; }
EOF
-if { (eval echo configure:4451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_sin=yes"
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4469: checking for sin in -lm" >&5
+echo "configure:4483: checking for sin in -lm" >&5
ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
xe_check_libs=" -lm "
cat > conftest.$ac_ext <<EOF
-#line 4474 "configure"
+#line 4488 "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
sin()
; return 0; }
EOF
-if { (eval echo configure:4485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4499: \"$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
cat > conftest.$ac_ext <<EOF
-#line 4529 "configure"
+#line 4543 "configure"
#include "confdefs.h"
#include <math.h>
int main() {
return atanh(1.0) + asinh(1.0) + acosh(1.0);
; return 0; }
EOF
-if { (eval echo configure:4536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
{ test "$extra_verbose" = "yes" && cat << \EOF
Defining HAVE_INVERSE_HYPERBOLIC
rm -f conftest*
echo "checking type of mail spool file locking" 1>&6
-echo "configure:4553: checking type of mail spool file locking" >&5
+echo "configure:4567: checking type of mail spool file locking" >&5
test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
if test "$mail_locking" = "lockf"; then { test "$extra_verbose" = "yes" && cat << \EOF
case "$opsys" in decosf*)
echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6
-echo "configure:4578: checking for cma_open in -lpthreads" >&5
+echo "configure:4592: checking for cma_open in -lpthreads" >&5
ac_lib_var=`echo pthreads'_'cma_open | sed 'y%./+-%__p_%'`
xe_check_libs=" -lpthreads "
cat > conftest.$ac_ext <<EOF
-#line 4583 "configure"
+#line 4597 "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
cma_open()
; return 0; }
EOF
-if { (eval echo configure:4594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4608: \"$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
esac
echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:4630: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:4644: checking whether the -xildoff compiler flag is required" >&5
if ${CC-cc} '-###' -xildon no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
then echo "$ac_t""no" 1>&6;
if test "$opsys" = "sol2" && test "$OS_RELEASE" -ge 56; then
echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6
-echo "configure:4641: checking for \"-z ignore\" linker flag" >&5
+echo "configure:4655: checking for \"-z ignore\" linker flag" >&5
case "`ld -h 2>&1`" in
*-z\ ignore\|record* ) echo "$ac_t""yes" 1>&6
ld_switch_site="-z ignore $ld_switch_site" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-z ignore\" to \$ld_switch_site"; fi ;;
echo "checking "for specified window system"" 1>&6
-echo "configure:4651: checking "for specified window system"" >&5
+echo "configure:4665: checking "for specified window system"" >&5
if test "$with_x11" != "no"; then
test "$x_includes $x_libraries" != "NONE NONE" && \
# 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:4684: checking for X" >&5
+echo "configure:4698: checking for X" >&5
# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
-#line 4744 "configure"
+#line 4758 "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:4749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4763: \"$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*
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4818 "configure"
+#line 4832 "configure"
#include "confdefs.h"
int main() {
${x_direct_test_function}()
; return 0; }
EOF
-if { (eval echo configure:4825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4839: \"$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.
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:4934: checking whether -R must be followed by a space" >&5
+echo "configure:4948: 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 4937 "configure"
+#line 4951 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:4944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_R_nospace=yes
else
else
LIBS="$ac_xsave_LIBS -R $x_libraries"
cat > conftest.$ac_ext <<EOF
-#line 4960 "configure"
+#line 4974 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:4967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_R_space=yes
else
else
echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:5003: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:5017: checking for dnet_ntoa in -ldnet" >&5
ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
xe_check_libs=" -ldnet "
cat > conftest.$ac_ext <<EOF
-#line 5008 "configure"
+#line 5022 "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
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:5019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5033: \"$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
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:5043: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:5057: checking for dnet_ntoa in -ldnet_stub" >&5
ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
xe_check_libs=" -ldnet_stub "
cat > conftest.$ac_ext <<EOF
-#line 5048 "configure"
+#line 5062 "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
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:5059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5073: \"$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
# 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:5088: checking for gethostbyname" >&5
+echo "configure:5102: checking for gethostbyname" >&5
cat > conftest.$ac_ext <<EOF
-#line 5091 "configure"
+#line 5105 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostbyname(); below. */
; return 0; }
EOF
-if { (eval echo configure:5114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5128: \"$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
if test $ac_cv_func_gethostbyname = no; then
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:5135: checking for gethostbyname in -lnsl" >&5
+echo "configure:5149: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
xe_check_libs=" -lnsl "
cat > conftest.$ac_ext <<EOF
-#line 5140 "configure"
+#line 5154 "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
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:5151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5165: \"$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
# -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:5181: checking for connect" >&5
+echo "configure:5195: checking for connect" >&5
cat > conftest.$ac_ext <<EOF
-#line 5184 "configure"
+#line 5198 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
; return 0; }
EOF
-if { (eval echo configure:5207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5221: \"$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
xe_msg_checking="for connect in -lsocket"
test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS"
echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:5230: checking "$xe_msg_checking"" >&5
+echo "configure:5244: checking "$xe_msg_checking"" >&5
ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
xe_check_libs=" -lsocket $X_EXTRA_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5235 "configure"
+#line 5249 "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
connect()
; return 0; }
EOF
-if { (eval echo configure:5246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5260: \"$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
# gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:5270: checking for remove" >&5
+echo "configure:5284: checking for remove" >&5
cat > conftest.$ac_ext <<EOF
-#line 5273 "configure"
+#line 5287 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char remove(); below. */
; return 0; }
EOF
-if { (eval echo configure:5296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5310: \"$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
if test $ac_cv_func_remove = no; then
echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:5317: checking for remove in -lposix" >&5
+echo "configure:5331: checking for remove in -lposix" >&5
ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
xe_check_libs=" -lposix "
cat > conftest.$ac_ext <<EOF
-#line 5322 "configure"
+#line 5336 "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
remove()
; return 0; }
EOF
-if { (eval echo configure:5333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5347: \"$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
# BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:5357: checking for shmat" >&5
+echo "configure:5371: checking for shmat" >&5
cat > conftest.$ac_ext <<EOF
-#line 5360 "configure"
+#line 5374 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char shmat(); below. */
; return 0; }
EOF
-if { (eval echo configure:5383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5397: \"$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
if test $ac_cv_func_shmat = no; then
echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:5404: checking for shmat in -lipc" >&5
+echo "configure:5418: checking for shmat in -lipc" >&5
ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
xe_check_libs=" -lipc "
cat > conftest.$ac_ext <<EOF
-#line 5409 "configure"
+#line 5423 "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
shmat()
; return 0; }
EOF
-if { (eval echo configure:5420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5434: \"$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
xe_msg_checking="for IceConnectionNumber in -lICE"
test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS"
echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:5456: checking "$xe_msg_checking"" >&5
+echo "configure:5470: checking "$xe_msg_checking"" >&5
ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
xe_check_libs=" -lICE $X_EXTRA_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5461 "configure"
+#line 5475 "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
IceConnectionNumber()
; return 0; }
EOF
-if { (eval echo configure:5472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5486: \"$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
echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:5641: checking for X defines extracted by xmkmf" >&5
+echo "configure:5655: checking for X defines extracted by xmkmf" >&5
rm -fr conftestdir
if mkdir conftestdir; then
cd conftestdir
ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6
-echo "configure:5673: checking for X11/Intrinsic.h" >&5
+echo "configure:5687: checking for X11/Intrinsic.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 5676 "configure"
+#line 5690 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5681: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5695: \"$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*
echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:5705: checking for XOpenDisplay in -lX11" >&5
+echo "configure:5719: checking for XOpenDisplay in -lX11" >&5
ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'`
xe_check_libs=" -lX11 "
cat > conftest.$ac_ext <<EOF
-#line 5710 "configure"
+#line 5724 "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
XOpenDisplay()
; return 0; }
EOF
-if { (eval echo configure:5721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5735: \"$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
xe_msg_checking="for XGetFontProperty in -lX11"
test -n "-b i486-linuxaout" && xe_msg_checking="$xe_msg_checking using extra libs -b i486-linuxaout"
echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:5746: checking "$xe_msg_checking"" >&5
+echo "configure:5760: checking "$xe_msg_checking"" >&5
ac_lib_var=`echo X11'_'XGetFontProperty | sed 'y%./+-%__p_%'`
xe_check_libs=" -lX11 -b i486-linuxaout"
cat > conftest.$ac_ext <<EOF
-#line 5751 "configure"
+#line 5765 "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
XGetFontProperty()
; return 0; }
EOF
-if { (eval echo configure:5762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5776: \"$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
echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:5789: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:5803: checking for XShapeSelectInput in -lXext" >&5
ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'`
xe_check_libs=" -lXext "
cat > conftest.$ac_ext <<EOF
-#line 5794 "configure"
+#line 5808 "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
XShapeSelectInput()
; return 0; }
EOF
-if { (eval echo configure:5805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5819: \"$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
echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:5828: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:5842: checking for XtOpenDisplay in -lXt" >&5
ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'`
xe_check_libs=" -lXt "
cat > conftest.$ac_ext <<EOF
-#line 5833 "configure"
+#line 5847 "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
XtOpenDisplay()
; return 0; }
EOF
-if { (eval echo configure:5844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5858: \"$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
echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:5867: checking the version of X11 being used" >&5
+echo "configure:5881: checking the version of X11 being used" >&5
cat > conftest.$ac_ext <<EOF
-#line 5869 "configure"
+#line 5883 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }
EOF
-if { (eval echo configure:5874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:5888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
./conftest foobar; x11_release=$?
else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5899: checking for $ac_hdr" >&5
+echo "configure:5913: checking for $ac_hdr" >&5
cat > conftest.$ac_ext <<EOF
-#line 5902 "configure"
+#line 5916 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5907: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5921: \"$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*
echo $ac_n "checking for XFree86""... $ac_c" 1>&6
-echo "configure:5938: checking for XFree86" >&5
+echo "configure:5952: checking for XFree86" >&5
if test -d "/usr/X386/include" -o \
-f "/etc/XF86Config" -o \
-f "/etc/X11/XF86Config" -o \
test -z "$with_xmu" && {
echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:5958: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:5972: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'`
xe_check_libs=" -lXmu "
cat > conftest.$ac_ext <<EOF
-#line 5963 "configure"
+#line 5977 "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
XmuReadBitmapDataFromFile()
; return 0; }
EOF
-if { (eval echo configure:5974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5988: \"$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
echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:6013: checking for main in -lXbsd" >&5
+echo "configure:6027: checking for main in -lXbsd" >&5
ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'`
xe_check_libs=" -lXbsd "
cat > conftest.$ac_ext <<EOF
-#line 6018 "configure"
+#line 6032 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:6025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6039: \"$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
fi
if test "$with_msw" != "no"; then
echo "checking for MS-Windows" 1>&6
-echo "configure:6062: checking for MS-Windows" >&5
+echo "configure:6076: checking for MS-Windows" >&5
echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:6065: checking for main in -lgdi32" >&5
+echo "configure:6079: checking for main in -lgdi32" >&5
ac_lib_var=`echo gdi32'_'main | sed 'y%./+-%__p_%'`
xe_check_libs=" -lgdi32 "
cat > conftest.$ac_ext <<EOF
-#line 6070 "configure"
+#line 6084 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:6077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6091: \"$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
fi
fi
cat > conftest.$ac_ext <<EOF
-#line 6143 "configure"
+#line 6157 "configure"
#include "confdefs.h"
#include <fcntl.h>
int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }
EOF
-if { (eval echo configure:6148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
{ test "$extra_verbose" = "yes" && cat << \EOF
Defining HAVE_MSG_SELECT
fi
if test "$with_x11" != "yes"; then
- for feature in tooltalk cde offix wmcommand xim xmu xpm nas_sound
+ for feature in tooltalk cde offix wmcommand xim xmu nas_sound
do
if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
echo "configure: warning: --with-$feature ignored: Not valid without X support" 1>&2
esac
echo "checking for WM_COMMAND option" 1>&6
-echo "configure:6224: checking for WM_COMMAND option" >&5;
+echo "configure:6238: checking for WM_COMMAND option" >&5;
if test "$with_wmcommand" != "no"; then
{ test "$extra_verbose" = "yes" && cat << \EOF
Defining HAVE_WMCOMMAND
test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
test -z "$with_xauth" && { ac_safe=`echo "X11/Xauth.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for X11/Xauth.h""... $ac_c" 1>&6
-echo "configure:6239: checking for X11/Xauth.h" >&5
+echo "configure:6253: checking for X11/Xauth.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 6242 "configure"
+#line 6256 "configure"
#include "confdefs.h"
#include <X11/Xauth.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6261: \"$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*
}
test -z "$with_xauth" && {
echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:6270: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:6284: checking for XauGetAuthByAddr in -lXau" >&5
ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'`
xe_check_libs=" -lXau "
cat > conftest.$ac_ext <<EOF
-#line 6275 "configure"
+#line 6289 "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
XauGetAuthByAddr()
; return 0; }
EOF
-if { (eval echo configure:6286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6300: \"$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
for dir in "" "Tt/" "desktop/" ; do
ac_safe=`echo "${dir}tt_c.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for ${dir}tt_c.h""... $ac_c" 1>&6
-echo "configure:6331: checking for ${dir}tt_c.h" >&5
+echo "configure:6345: checking for ${dir}tt_c.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 6334 "configure"
+#line 6348 "configure"
#include "confdefs.h"
#include <${dir}tt_c.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6353: \"$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*
xe_msg_checking="for tt_message_create in -ltt"
test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs"
echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6375: checking "$xe_msg_checking"" >&5
+echo "configure:6389: checking "$xe_msg_checking"" >&5
ac_lib_var=`echo tt'_'tt_message_create | sed 'y%./+-%__p_%'`
xe_check_libs=" -ltt $extra_libs"
cat > conftest.$ac_ext <<EOF
-#line 6380 "configure"
+#line 6394 "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
tt_message_create()
; return 0; }
EOF
-if { (eval echo configure:6391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6405: \"$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
test -z "$with_cde" && { ac_safe=`echo "Dt/Dt.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for Dt/Dt.h""... $ac_c" 1>&6
-echo "configure:6448: checking for Dt/Dt.h" >&5
+echo "configure:6462: checking for Dt/Dt.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 6451 "configure"
+#line 6465 "configure"
#include "confdefs.h"
#include <Dt/Dt.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6456: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6470: \"$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*
}
test -z "$with_cde" && {
echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:6479: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:6493: checking for DtDndDragStart in -lDtSvc" >&5
ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'`
xe_check_libs=" -lDtSvc "
cat > conftest.$ac_ext <<EOF
-#line 6484 "configure"
+#line 6498 "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
DtDndDragStart()
; return 0; }
EOF
-if { (eval echo configure:6495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6509: \"$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
fi
echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6
-echo "configure:6564: checking if drag and drop API is needed" >&5
+echo "configure:6578: checking if drag and drop API is needed" >&5
if test "$with_dragndrop" != "no" ; then
if test -n "$dragndrop_proto" ; then
with_dragndrop=yes
fi
echo "checking for LDAP" 1>&6
-echo "configure:6585: checking for LDAP" >&5
+echo "configure:6599: checking for LDAP" >&5
test -z "$with_ldap" && { ac_safe=`echo "ldap.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for ldap.h""... $ac_c" 1>&6
-echo "configure:6588: checking for ldap.h" >&5
+echo "configure:6602: checking for ldap.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 6591 "configure"
+#line 6605 "configure"
#include "confdefs.h"
#include <ldap.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6610: \"$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*
}
test -z "$with_ldap" && { ac_safe=`echo "lber.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for lber.h""... $ac_c" 1>&6
-echo "configure:6619: checking for lber.h" >&5
+echo "configure:6633: checking for lber.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 6622 "configure"
+#line 6636 "configure"
#include "confdefs.h"
#include <lber.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6627: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6641: \"$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*
if test "$with_ldap" != "no"; then
echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6
-echo "configure:6651: checking for ldap_search in -lldap" >&5
+echo "configure:6665: checking for ldap_search in -lldap" >&5
ac_lib_var=`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'`
xe_check_libs=" -lldap "
cat > conftest.$ac_ext <<EOF
-#line 6656 "configure"
+#line 6670 "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
ldap_search()
; return 0; }
EOF
-if { (eval echo configure:6667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6681: \"$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
xe_msg_checking="for ldap_open in -lldap"
test -n "-llber" && xe_msg_checking="$xe_msg_checking using extra libs -llber"
echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6692: checking "$xe_msg_checking"" >&5
+echo "configure:6706: checking "$xe_msg_checking"" >&5
ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
xe_check_libs=" -lldap -llber"
cat > conftest.$ac_ext <<EOF
-#line 6697 "configure"
+#line 6711 "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
ldap_open()
; return 0; }
EOF
-if { (eval echo configure:6708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6722: \"$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
xe_msg_checking="for ldap_open in -lldap"
test -n "-llber -lkrb" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb"
echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6733: checking "$xe_msg_checking"" >&5
+echo "configure:6747: checking "$xe_msg_checking"" >&5
ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
xe_check_libs=" -lldap -llber -lkrb"
cat > conftest.$ac_ext <<EOF
-#line 6738 "configure"
+#line 6752 "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
ldap_open()
; return 0; }
EOF
-if { (eval echo configure:6749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6763: \"$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
xe_msg_checking="for ldap_open in -lldap"
test -n "-llber -lkrb -ldes" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb -ldes"
echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6774: checking "$xe_msg_checking"" >&5
+echo "configure:6788: checking "$xe_msg_checking"" >&5
ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
xe_check_libs=" -lldap -llber -lkrb -ldes"
cat > conftest.$ac_ext <<EOF
-#line 6779 "configure"
+#line 6793 "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
ldap_open()
; return 0; }
EOF
-if { (eval echo configure:6790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6804: \"$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
for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6841: checking for $ac_func" >&5
+echo "configure:6855: checking for $ac_func" >&5
cat > conftest.$ac_ext <<EOF
-#line 6844 "configure"
+#line 6858 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:6867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6881: \"$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
if test "$window_system" != "none"; then
echo "checking for graphics libraries" 1>&6
-echo "configure:6899: checking for graphics libraries" >&5
+echo "configure:6913: checking for graphics libraries" >&5
xpm_problem=""
if test -z "$with_xpm"; then
echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6
-echo "configure:6904: checking for Xpm - no older than 3.4f" >&5
+echo "configure:6918: checking for Xpm - no older than 3.4f" >&5
xe_check_libs=-lXpm
cat > conftest.$ac_ext <<EOF
-#line 6907 "configure"
+#line 6921 "configure"
#include "confdefs.h"
#include <X11/xpm.h>
int main(int c, char **v) {
XpmIncludeVersion != XpmLibraryVersion() ? 1 :
XpmIncludeVersion < 30406 ? 2 : 0 ;}
EOF
-if { (eval echo configure:6915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
./conftest dummy_arg; xpm_status=$?;
if test "$xpm_status" = "0"; then
libs_x="-lXpm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXpm\" to \$libs_x"; fi
echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6
-echo "configure:6957: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:6971: checking for \"FOR_MSW\" xpm" >&5
xe_check_libs=-lXpm
cat > conftest.$ac_ext <<EOF
-#line 6960 "configure"
+#line 6974 "configure"
#include "confdefs.h"
int main() {
XpmCreatePixmapFromData()
; return 0; }
EOF
-if { (eval echo configure:6967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
xpm_for_msw=no
else
test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for compface.h""... $ac_c" 1>&6
-echo "configure:6993: checking for compface.h" >&5
+echo "configure:7007: checking for compface.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 6996 "configure"
+#line 7010 "configure"
#include "confdefs.h"
#include <compface.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7001: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7015: \"$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*
}
test -z "$with_xface" && {
echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:7024: checking for UnGenFace in -lcompface" >&5
+echo "configure:7038: checking for UnGenFace in -lcompface" >&5
ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'`
xe_check_libs=" -lcompface "
cat > conftest.$ac_ext <<EOF
-#line 7029 "configure"
+#line 7043 "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
UnGenFace()
; return 0; }
EOF
-if { (eval echo configure:7040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7054: \"$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
if test "$with_png $with_tiff" != "no no"; then
echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6
-echo "configure:7092: checking for inflate in -lc" >&5
+echo "configure:7106: checking for inflate in -lc" >&5
ac_lib_var=`echo c'_'inflate | sed 'y%./+-%__p_%'`
xe_check_libs=" -lc "
cat > conftest.$ac_ext <<EOF
-#line 7097 "configure"
+#line 7111 "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
inflate()
; return 0; }
EOF
-if { (eval echo configure:7108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7122: \"$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
echo "$ac_t""no" 1>&6
echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:7127: checking for inflate in -lz" >&5
+echo "configure:7141: checking for inflate in -lz" >&5
ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'`
xe_check_libs=" -lz "
cat > conftest.$ac_ext <<EOF
-#line 7132 "configure"
+#line 7146 "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
inflate()
; return 0; }
EOF
-if { (eval echo configure:7143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7157: \"$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
echo "$ac_t""no" 1>&6
echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:7162: checking for inflate in -lgz" >&5
+echo "configure:7176: checking for inflate in -lgz" >&5
ac_lib_var=`echo gz'_'inflate | sed 'y%./+-%__p_%'`
xe_check_libs=" -lgz "
cat > conftest.$ac_ext <<EOF
-#line 7167 "configure"
+#line 7181 "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
inflate()
; return 0; }
EOF
-if { (eval echo configure:7178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7192: \"$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
test -z "$with_jpeg" && { ac_safe=`echo "jpeglib.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6
-echo "configure:7208: checking for jpeglib.h" >&5
+echo "configure:7222: checking for jpeglib.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 7211 "configure"
+#line 7225 "configure"
#include "confdefs.h"
#include <jpeglib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7216: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7230: \"$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*
}
test -z "$with_jpeg" && {
echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:7239: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:7253: checking for jpeg_destroy_decompress in -ljpeg" >&5
ac_lib_var=`echo jpeg'_'jpeg_destroy_decompress | sed 'y%./+-%__p_%'`
xe_check_libs=" -ljpeg "
cat > conftest.$ac_ext <<EOF
-#line 7244 "configure"
+#line 7258 "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
jpeg_destroy_decompress()
; return 0; }
EOF
-if { (eval echo configure:7255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7269: \"$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
png_problem=""
test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:7291: checking for pow" >&5
+echo "configure:7305: checking for pow" >&5
cat > conftest.$ac_ext <<EOF
-#line 7294 "configure"
+#line 7308 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char pow(); below. */
; return 0; }
EOF
-if { (eval echo configure:7317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_pow=yes"
else
}
test -z "$with_png" && { ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for png.h""... $ac_c" 1>&6
-echo "configure:7338: checking for png.h" >&5
+echo "configure:7352: checking for png.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 7341 "configure"
+#line 7355 "configure"
#include "confdefs.h"
#include <png.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7360: \"$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*
}
test -z "$with_png" && {
echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:7369: checking for png_read_image in -lpng" >&5
+echo "configure:7383: checking for png_read_image in -lpng" >&5
ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'`
xe_check_libs=" -lpng "
cat > conftest.$ac_ext <<EOF
-#line 7374 "configure"
+#line 7388 "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
png_read_image()
; return 0; }
EOF
-if { (eval echo configure:7385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7399: \"$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
}
if test -z "$with_png"; then
echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:7408: checking for workable png version information" >&5
+echo "configure:7422: checking for workable png version information" >&5
xe_check_libs="-lpng -lz"
cat > conftest.$ac_ext <<EOF
-#line 7411 "configure"
+#line 7425 "configure"
#include "confdefs.h"
#include <png.h>
int main(int c, char **v) {
if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}
EOF
-if { (eval echo configure:7419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
./conftest dummy_arg; png_status=$?;
if test "$png_status" = "0"; then
test -z "$with_tiff" && { ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6
-echo "configure:7462: checking for tiffio.h" >&5
+echo "configure:7476: checking for tiffio.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 7465 "configure"
+#line 7479 "configure"
#include "confdefs.h"
#include <tiffio.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7484: \"$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*
}
test -z "$with_tiff" && {
echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:7493: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:7507: checking for TIFFClientOpen in -ltiff" >&5
ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'`
xe_check_libs=" -ltiff "
cat > conftest.$ac_ext <<EOF
-#line 7498 "configure"
+#line 7512 "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
TIFFClientOpen()
; return 0; }
EOF
-if { (eval echo configure:7509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7523: \"$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
if test "$with_x11" = "yes"; then
echo "checking for X11 graphics libraries" 1>&6
-echo "configure:7548: checking for X11 graphics libraries" >&5
+echo "configure:7562: checking for X11 graphics libraries" >&5
+
+ echo "checking for the Athena widgets" 1>&6
+echo "configure:7565: checking for the Athena widgets" >&5
+
+ case "$with_athena" in
+ "xaw" | "") athena_variant=Xaw athena_3d=no ;;
+ "3d") athena_variant=Xaw3d athena_3d=yes ;;
+ "next") athena_variant=neXtaw athena_3d=yes ;;
+ "95") athena_variant=Xaw95 athena_3d=yes ;;
+ "xpm") athena_variant=XawXpm athena_3d=yes ;;
+ *) { echo "Error:" "Unknown Athena widget set \`$with_athena'. This should not happen." >&2; exit 1; } ;;
+ esac
+ if test "$athena_3d" = "no"; then
-echo $ac_n "checking for XawScrollbarSetThumb in -lXaw""... $ac_c" 1>&6
-echo "configure:7552: checking for XawScrollbarSetThumb in -lXaw" >&5
-ac_lib_var=`echo Xaw'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6
+echo "configure:7579: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
+ac_lib_var=`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
-xe_check_libs=" -lXaw "
+xe_check_libs=" -l$athena_variant "
cat > conftest.$ac_ext <<EOF
-#line 7557 "configure"
+#line 7584 "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
XawScrollbarSetThumb()
; return 0; }
EOF
-if { (eval echo configure:7568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7595: \"$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
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+xe_check_libs=""
+
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
+ echo "$ac_t""yes" 1>&6
+
+echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6
+echo "configure:7611: checking for threeDClassRec in -l$athena_variant" >&5
+ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -l$athena_variant "
+cat > conftest.$ac_ext <<EOF
+#line 7616 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char threeDClassRec();
+
+int main() {
+threeDClassRec()
+; return 0; }
+EOF
+if { (eval echo configure:7627: \"$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
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
echo "$ac_t""yes" 1>&6
- have_xaw=yes
+ echo "configure: warning: "Could not find a non-3d Athena widget library."" 1>&2
else
echo "$ac_t""no" 1>&6
-have_xaw=no
+athena_lib=$athena_variant
fi
-
-
-echo $ac_n "checking for XawScrollbarSetThumb in -lXaw3d""... $ac_c" 1>&6
-echo "configure:7592: checking for XawScrollbarSetThumb in -lXaw3d" >&5
-ac_lib_var=`echo Xaw3d'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
+
+else
+ echo "$ac_t""no" 1>&6
+echo "configure: warning: "Could not find an Athena widget library."" 1>&2
+fi
+
-xe_check_libs=" -lXaw3d "
+ else
+
+echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6
+echo "configure:7658: checking for threeDClassRec in -l$athena_variant" >&5
+ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -l$athena_variant "
cat > conftest.$ac_ext <<EOF
-#line 7597 "configure"
+#line 7663 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char XawScrollbarSetThumb();
+char threeDClassRec();
int main() {
-XawScrollbarSetThumb()
+threeDClassRec()
+; return 0; }
+EOF
+if { (eval echo configure:7674: \"$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
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+xe_check_libs=""
+
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
+ echo "$ac_t""yes" 1>&6
+ athena_lib=$athena_variant
+else
+ echo "$ac_t""no" 1>&6
+echo $ac_n "checking for threeDClassRec in -lXaw""... $ac_c" 1>&6
+echo "configure:7692: checking for threeDClassRec in -lXaw" >&5
+ac_lib_var=`echo Xaw'_'threeDClassRec | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -lXaw "
+cat > conftest.$ac_ext <<EOF
+#line 7697 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char threeDClassRec();
+
+int main() {
+threeDClassRec()
; return 0; }
EOF
-if { (eval echo configure:7608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7708: \"$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
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
echo "$ac_t""yes" 1>&6
- have_xaw3d=yes
+ athena_lib=Xaw;
+ echo "configure: warning: "Assuming that libXaw is actually $athena_variant."" 1>&2;
+
+else
+ echo "$ac_t""no" 1>&6
+echo "configure: warning: "Could not find a 3d Athena widget library that looked like $athena_variant."" 1>&2
+fi
+
+
+fi
+
+
+ fi
+
+ if test "$athena_3d" = "no"; then
+ ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6
+echo "configure:7739: checking for X11/Xaw/ThreeD.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7742 "configure"
+#include "confdefs.h"
+#include <X11/Xaw/ThreeD.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:7747: \"$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*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ echo "configure: warning: "Could not find a non-3d Athena header set."" 1>&2
+else
+ echo "$ac_t""no" 1>&6
+ac_safe=`echo "X11/Xaw/XawInit.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for X11/Xaw/XawInit.h""... $ac_c" 1>&6
+echo "configure:7767: checking for X11/Xaw/XawInit.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7770 "configure"
+#include "confdefs.h"
+#include <X11/Xaw/XawInit.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:7775: \"$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*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ athena_h_path=X11/Xaw
+else
+ echo "$ac_t""no" 1>&6
+echo "configure: warning: "Could not find a non-3d Athena header set."" 1>&2
+fi
+
+fi
+
+ else
+ ac_safe=`echo "X11/$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for X11/$athena_variant/XawInit.h""... $ac_c" 1>&6
+echo "configure:7801: checking for X11/$athena_variant/XawInit.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7804 "configure"
+#include "confdefs.h"
+#include <X11/$athena_variant/XawInit.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:7809: \"$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*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_safe=`echo "X11/$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for X11/$athena_variant/ThreeD.h""... $ac_c" 1>&6
+echo "configure:7826: checking for X11/$athena_variant/ThreeD.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7829 "configure"
+#include "confdefs.h"
+#include <X11/$athena_variant/ThreeD.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:7834: \"$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*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ athena_h_path=X11/$athena_variant
+else
+ echo "$ac_t""no" 1>&6
+fi
+
else
echo "$ac_t""no" 1>&6
-have_xaw3d=no
fi
+ if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
+ ac_safe=`echo "X11/Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for X11/Xaw3d/XawInit.h""... $ac_c" 1>&6
+echo "configure:7862: checking for X11/Xaw3d/XawInit.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7865 "configure"
+#include "confdefs.h"
+#include <X11/Xaw3d/XawInit.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:7870: \"$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*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_safe=`echo "X11/Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for X11/Xaw3d/ThreeD.h""... $ac_c" 1>&6
+echo "configure:7887: checking for X11/Xaw3d/ThreeD.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7890 "configure"
+#include "confdefs.h"
+#include <X11/Xaw3d/ThreeD.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:7895: \"$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*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+
+ echo "configure: warning: "Assuming that X11/Xaw3d headers are suitable for $athena_variant."" 1>&2
+ athena_h_path=X11/Xaw3d
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ fi
+
+ if test -z "$athena_h_path"; then
+ ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6
+echo "configure:7927: checking for X11/Xaw/ThreeD.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7930 "configure"
+#include "confdefs.h"
+#include <X11/Xaw/ThreeD.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:7935: \"$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*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+
+ echo "configure: warning: "Assuming that X11/Xaw headers are suitable for $athena_variant."" 1>&2
+ athena_h_path=X11/Xaw
+
+else
+ echo "$ac_t""no" 1>&6
+echo "configure: warning: "Could not find a suitable 3d Athena header set."" 1>&2
+fi
+
+ fi
+ fi
+
+ if test -n "$athena_lib" -a -n "$athena_h_path"; then
+ have_xaw=yes
+ else
+ have_xaw=no
+ fi
ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:7632: checking for Xm/Xm.h" >&5
+echo "configure:7970: checking for Xm/Xm.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 7635 "configure"
+#line 7973 "configure"
#include "confdefs.h"
#include <Xm/Xm.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7978: \"$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*
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6
-echo "configure:7657: checking for XmStringFree in -lXm" >&5
+echo "configure:7995: checking for XmStringFree in -lXm" >&5
ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'`
xe_check_libs=" -lXm "
cat > conftest.$ac_ext <<EOF
-#line 7662 "configure"
+#line 8000 "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
XmStringFree()
; return 0; }
EOF
-if { (eval echo configure:7673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8011: \"$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
if test "$have_motif" = "yes"; then
echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:7702: checking for Lesstif" >&5
+echo "configure:8040: checking for Lesstif" >&5
cat > conftest.$ac_ext <<EOF
-#line 7704 "configure"
+#line 8042 "configure"
#include "confdefs.h"
#include <Xm/Xm.h>
#ifdef LESSTIF_VERSION
fi
-case "$with_menubars" in "" | "yes" | "athena" | "athena3d" )
+case "$with_menubars" in "" | "yes" | "athena" )
with_menubars="lucid" ;;
esac
case "$with_dialogs" in "" | "yes" | "lucid" )
- if test "$have_motif" = "yes"; then with_dialogs="motif"
- elif test "$have_xaw3d" = "yes"; then with_dialogs="athena3d"
- elif test "$have_xaw" = "yes"; then with_dialogs="athena"
+ if test "$have_motif" = "yes"; then with_dialogs="motif"
+ elif test "$have_xaw" = "yes"; then with_dialogs="athena"
else with_dialogs=no
fi ;;
esac
esac
case "$with_widgets" in "" | "yes" | "lucid")
if test "$have_motif" = "yes"; then with_widgets="motif"
- elif test "$have_xaw3d" = "yes"; then with_widgets="athena3d"
elif test "$have_xaw" = "yes"; then with_widgets="athena"
else with_widgets=no
fi ;;
all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars $with_widgets"
case "$all_widgets" in
- *athena*3d )
- { test "$extra_verbose" = "yes" && cat << \EOF
+ *athena* )
+ if test "$have_xaw" != "yes"; then
+ { echo "Error:" "Could not find a suitable Athena library to build with." >&2; exit 1; }
+ fi
+
+ lwlib_objs="$lwlib_objs lwlib-Xaw.o" && if test "$extra_verbose" = "yes"; then echo " Appending \"lwlib-Xaw.o\" to \$lwlib_objs"; fi
+
+ libs_x="-l$athena_lib $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-l$athena_lib\" to \$libs_x"; fi
+
+ { test "$extra_verbose" = "yes" && cat << EOF
+ Defining ATHENA_H_PATH = $athena_h_path
+EOF
+cat >> confdefs.h <<EOF
+#define ATHENA_H_PATH $athena_h_path
+EOF
+}
+
+
+ { test "$extra_verbose" = "yes" && cat << \EOF
Defining LWLIB_USES_ATHENA
EOF
cat >> confdefs.h <<\EOF
EOF
}
- { test "$extra_verbose" = "yes" && cat << \EOF
+ { test "$extra_verbose" = "yes" && cat << \EOF
Defining NEED_ATHENA
EOF
cat >> confdefs.h <<\EOF
EOF
}
- lwlib_objs="$lwlib_objs lwlib-Xaw.o" && if test "$extra_verbose" = "yes"; then echo " Appending \"lwlib-Xaw.o\" to \$lwlib_objs"; fi
- if test "$have_xaw3d"; then
- libs_x="-lXaw3d $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXaw3d\" to \$libs_x"; fi
- else
- libs_x="-lXaw $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXaw\" to \$libs_x"; fi
- fi ;;
- *athena* )
- { test "$extra_verbose" = "yes" && cat << \EOF
- Defining LWLIB_USES_ATHENA
-EOF
-cat >> confdefs.h <<\EOF
-#define LWLIB_USES_ATHENA 1
-EOF
-}
- { test "$extra_verbose" = "yes" && cat << \EOF
- Defining NEED_ATHENA
+ if test "$athena_3d" = "yes"; then
+ { test "$extra_verbose" = "yes" && cat << \EOF
+ Defining HAVE_ATHENA_3D
EOF
cat >> confdefs.h <<\EOF
-#define NEED_ATHENA 1
+#define HAVE_ATHENA_3D 1
EOF
}
- lwlib_objs="$lwlib_objs lwlib-Xaw.o" && if test "$extra_verbose" = "yes"; then echo " Appending \"lwlib-Xaw.o\" to \$lwlib_objs"; fi
- libs_x="-lXaw $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXaw\" to \$libs_x"; fi ;;
+ fi
+ ;;
esac
case "$all_widgets" in *motif* )
-case "$with_scrollbars" in athena* ) { test "$extra_verbose" = "yes" && cat << \EOF
+test "$with_scrollbars" = "athena" && { test "$extra_verbose" = "yes" && cat << \EOF
Defining LWLIB_SCROLLBARS_ATHENA
EOF
cat >> confdefs.h <<\EOF
#define LWLIB_SCROLLBARS_ATHENA 1
EOF
}
-;; esac
-case "$with_dialogs" in athena* ) { test "$extra_verbose" = "yes" && cat << \EOF
+
+test "$with_dialogs" = "athena" && { test "$extra_verbose" = "yes" && cat << \EOF
Defining LWLIB_DIALOGS_ATHENA
EOF
cat >> confdefs.h <<\EOF
#define LWLIB_DIALOGS_ATHENA 1
EOF
}
- ;; esac
-test "$with_scrollbars" = "athena3d" && { test "$extra_verbose" = "yes" && cat << \EOF
+
+
+if test "$athena_3d" = "yes"; then
+ test "$with_scrollbars" = "athena" && { test "$extra_verbose" = "yes" && cat << \EOF
Defining LWLIB_SCROLLBARS_ATHENA3D
EOF
cat >> confdefs.h <<\EOF
EOF
}
-test "$with_dialogs" = "athena3d" && { test "$extra_verbose" = "yes" && cat << \EOF
+ test "$with_dialogs" = "athena" && { test "$extra_verbose" = "yes" && cat << \EOF
Defining LWLIB_DIALOGS_ATHENA3D
EOF
cat >> confdefs.h <<\EOF
EOF
}
+fi
+
case "$with_widgets" in athena* ) { test "$extra_verbose" = "yes" && cat << \EOF
Defining LWLIB_WIDGETS_ATHENA
EOF
if test "$with_mule" = "yes" ; then
echo "checking for Mule-related features" 1>&6
-echo "configure:8031: checking for Mule-related features" >&5
+echo "configure:8375: checking for Mule-related features" >&5
{ test "$extra_verbose" = "yes" && cat << \EOF
Defining MULE
EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8056: checking for $ac_hdr" >&5
+echo "configure:8400: checking for $ac_hdr" >&5
cat > conftest.$ac_ext <<EOF
-#line 8059 "configure"
+#line 8403 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8064: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8408: \"$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*
echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:8095: checking for strerror in -lintl" >&5
+echo "configure:8439: checking for strerror in -lintl" >&5
ac_lib_var=`echo intl'_'strerror | sed 'y%./+-%__p_%'`
xe_check_libs=" -lintl "
cat > conftest.$ac_ext <<EOF
-#line 8100 "configure"
+#line 8444 "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
strerror()
; return 0; }
EOF
-if { (eval echo configure:8111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8455: \"$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
echo "checking for Mule input methods" 1>&6
-echo "configure:8144: checking for Mule input methods" >&5
+echo "configure:8488: checking for Mule input methods" >&5
case "$with_xim" in "" | "yes" )
echo "checking for XIM" 1>&6
-echo "configure:8147: checking for XIM" >&5
+echo "configure:8491: checking for XIM" >&5
echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6
-echo "configure:8150: checking for XOpenIM in -lX11" >&5
+echo "configure:8494: checking for XOpenIM in -lX11" >&5
ac_lib_var=`echo X11'_'XOpenIM | sed 'y%./+-%__p_%'`
xe_check_libs=" -lX11 "
cat > conftest.$ac_ext <<EOF
-#line 8155 "configure"
+#line 8499 "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
XOpenIM()
; return 0; }
EOF
-if { (eval echo configure:8166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8510: \"$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
if test "$have_motif $have_lesstif" = "yes no"; then
echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6
-echo "configure:8190: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:8534: checking for XmImMbLookupString in -lXm" >&5
ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'`
xe_check_libs=" -lXm "
cat > conftest.$ac_ext <<EOF
-#line 8195 "configure"
+#line 8539 "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
XmImMbLookupString()
; return 0; }
EOF
-if { (eval echo configure:8206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8550: \"$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
if test "$with_xfs" = "yes" ; then
echo "checking for XFontSet" 1>&6
-echo "configure:8271: checking for XFontSet" >&5
+echo "configure:8615: checking for XFontSet" >&5
echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:8274: checking for XmbDrawString in -lX11" >&5
+echo "configure:8618: checking for XmbDrawString in -lX11" >&5
ac_lib_var=`echo X11'_'XmbDrawString | sed 'y%./+-%__p_%'`
xe_check_libs=" -lX11 "
cat > conftest.$ac_ext <<EOF
-#line 8279 "configure"
+#line 8623 "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
XmbDrawString()
; return 0; }
EOF
-if { (eval echo configure:8290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8634: \"$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
test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
test -z "$with_wnn" && { ac_safe=`echo "wnn/jllib.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for wnn/jllib.h""... $ac_c" 1>&6
-echo "configure:8330: checking for wnn/jllib.h" >&5
+echo "configure:8674: checking for wnn/jllib.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 8333 "configure"
+#line 8677 "configure"
#include "confdefs.h"
#include <wnn/jllib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8682: \"$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*
for ac_func in crypt
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8363: checking for $ac_func" >&5
+echo "configure:8707: checking for $ac_func" >&5
cat > conftest.$ac_ext <<EOF
-#line 8366 "configure"
+#line 8710 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:8389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8733: \"$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
test "$ac_cv_func_crypt" != "yes" && {
echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:8418: checking for crypt in -lcrypt" >&5
+echo "configure:8762: checking for crypt in -lcrypt" >&5
ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
xe_check_libs=" -lcrypt "
cat > conftest.$ac_ext <<EOF
-#line 8423 "configure"
+#line 8767 "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
crypt()
; return 0; }
EOF
-if { (eval echo configure:8434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8778: \"$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
if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6
-echo "configure:8469: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:8813: checking for jl_dic_list_e in -lwnn" >&5
ac_lib_var=`echo wnn'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
xe_check_libs=" -lwnn "
cat > conftest.$ac_ext <<EOF
-#line 8474 "configure"
+#line 8818 "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
jl_dic_list_e()
; return 0; }
EOF
-if { (eval echo configure:8485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8829: \"$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
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for jl_dic_list_e in -lwnn4""... $ac_c" 1>&6
-echo "configure:8503: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:8847: checking for jl_dic_list_e in -lwnn4" >&5
ac_lib_var=`echo wnn4'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
xe_check_libs=" -lwnn4 "
cat > conftest.$ac_ext <<EOF
-#line 8508 "configure"
+#line 8852 "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
jl_dic_list_e()
; return 0; }
EOF
-if { (eval echo configure:8519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8863: \"$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
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for jl_dic_list_e in -lwnn6""... $ac_c" 1>&6
-echo "configure:8537: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:8881: checking for jl_dic_list_e in -lwnn6" >&5
ac_lib_var=`echo wnn6'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
xe_check_libs=" -lwnn6 "
cat > conftest.$ac_ext <<EOF
-#line 8542 "configure"
+#line 8886 "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
jl_dic_list_e()
; return 0; }
EOF
-if { (eval echo configure:8553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8897: \"$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
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for dic_list_e in -lwnn6_fromsrc""... $ac_c" 1>&6
-echo "configure:8571: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:8915: checking for dic_list_e in -lwnn6_fromsrc" >&5
ac_lib_var=`echo wnn6_fromsrc'_'dic_list_e | sed 'y%./+-%__p_%'`
xe_check_libs=" -lwnn6_fromsrc "
cat > conftest.$ac_ext <<EOF
-#line 8576 "configure"
+#line 8920 "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
dic_list_e()
; return 0; }
EOF
-if { (eval echo configure:8587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8931: \"$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
if test "$with_wnn6" != "no"; then
echo $ac_n "checking for jl_fi_dic_list in -l$libwnn""... $ac_c" 1>&6
-echo "configure:8635: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:8979: checking for jl_fi_dic_list in -l$libwnn" >&5
ac_lib_var=`echo $libwnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'`
xe_check_libs=" -l$libwnn "
cat > conftest.$ac_ext <<EOF
-#line 8640 "configure"
+#line 8984 "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
jl_fi_dic_list()
; return 0; }
EOF
-if { (eval echo configure:8651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8995: \"$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
if test "$with_canna" != "no"; then
ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6
-echo "configure:8686: checking for canna/jrkanji.h" >&5
+echo "configure:9030: checking for canna/jrkanji.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 8689 "configure"
+#line 9033 "configure"
#include "confdefs.h"
#include <canna/jrkanji.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8694: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9038: \"$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*
c_switch_site="$c_switch_site -I/usr/local/canna/include"
ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6
-echo "configure:8721: checking for canna/jrkanji.h" >&5
+echo "configure:9065: checking for canna/jrkanji.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 8724 "configure"
+#line 9068 "configure"
#include "confdefs.h"
#include <canna/jrkanji.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8729: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9073: \"$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*
test -z "$with_canna" && { ac_safe=`echo "canna/RK.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for canna/RK.h""... $ac_c" 1>&6
-echo "configure:8757: checking for canna/RK.h" >&5
+echo "configure:9101: checking for canna/RK.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 8760 "configure"
+#line 9104 "configure"
#include "confdefs.h"
#include <canna/RK.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8765: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9109: \"$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*
}
test -z "$with_canna" && {
echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6
-echo "configure:8788: checking for RkBgnBun in -lRKC" >&5
+echo "configure:9132: checking for RkBgnBun in -lRKC" >&5
ac_lib_var=`echo RKC'_'RkBgnBun | sed 'y%./+-%__p_%'`
xe_check_libs=" -lRKC "
cat > conftest.$ac_ext <<EOF
-#line 8793 "configure"
+#line 9137 "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
RkBgnBun()
; return 0; }
EOF
-if { (eval echo configure:8804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9148: \"$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
}
test -z "$with_canna" && {
echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6
-echo "configure:8827: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:9171: checking for jrKanjiControl in -lcanna" >&5
ac_lib_var=`echo canna'_'jrKanjiControl | sed 'y%./+-%__p_%'`
xe_check_libs=" -lcanna "
cat > conftest.$ac_ext <<EOF
-#line 8832 "configure"
+#line 9176 "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
jrKanjiControl()
; return 0; }
EOF
-if { (eval echo configure:8843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9187: \"$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
libs_x="-lXm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXm\" to \$libs_x"; fi
echo $ac_n "checking for layout_object_getvalue in -li18n""... $ac_c" 1>&6
-echo "configure:8892: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:9236: checking for layout_object_getvalue in -li18n" >&5
ac_lib_var=`echo i18n'_'layout_object_getvalue | sed 'y%./+-%__p_%'`
xe_check_libs=" -li18n "
cat > conftest.$ac_ext <<EOF
-#line 8897 "configure"
+#line 9241 "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
layout_object_getvalue()
; return 0; }
EOF
-if { (eval echo configure:8908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9252: \"$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
for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8994: checking for $ac_func" >&5
+echo "configure:9338: checking for $ac_func" >&5
cat > conftest.$ac_ext <<EOF
-#line 8997 "configure"
+#line 9341 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:9020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9364: \"$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
* ) for ac_func in realpath
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9061: checking for $ac_func" >&5
+echo "configure:9405: checking for $ac_func" >&5
cat > conftest.$ac_ext <<EOF
-#line 9064 "configure"
+#line 9408 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:9087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9431: \"$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
for ac_func in getloadavg
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9123: checking for $ac_func" >&5
+echo "configure:9467: checking for $ac_func" >&5
cat > conftest.$ac_ext <<EOF
-#line 9126 "configure"
+#line 9470 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:9149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9493: \"$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
echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:9185: checking for kstat_open in -lkstat" >&5
+echo "configure:9529: checking for kstat_open in -lkstat" >&5
ac_lib_var=`echo kstat'_'kstat_open | sed 'y%./+-%__p_%'`
xe_check_libs=" -lkstat "
cat > conftest.$ac_ext <<EOF
-#line 9190 "configure"
+#line 9534 "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
kstat_open()
; return 0; }
EOF
-if { (eval echo configure:9201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9545: \"$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
echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:9235: checking for kvm_read in -lkvm" >&5
+echo "configure:9579: checking for kvm_read in -lkvm" >&5
ac_lib_var=`echo kvm'_'kvm_read | sed 'y%./+-%__p_%'`
xe_check_libs=" -lkvm "
cat > conftest.$ac_ext <<EOF
-#line 9240 "configure"
+#line 9584 "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
kvm_read()
; return 0; }
EOF
-if { (eval echo configure:9251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9595: \"$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
fi
echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6
-echo "configure:9285: checking whether netdb declares h_errno" >&5
+echo "configure:9629: checking whether netdb declares h_errno" >&5
cat > conftest.$ac_ext <<EOF
-#line 9287 "configure"
+#line 9631 "configure"
#include "confdefs.h"
#include <netdb.h>
int main() {
return h_errno;
; return 0; }
EOF
-if { (eval echo configure:9294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
{ test "$extra_verbose" = "yes" && cat << \EOF
rm -f conftest*
echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6
-echo "configure:9314: checking for sigsetjmp" >&5
+echo "configure:9658: checking for sigsetjmp" >&5
cat > conftest.$ac_ext <<EOF
-#line 9316 "configure"
+#line 9660 "configure"
#include "confdefs.h"
#include <setjmp.h>
int main() {
sigjmp_buf bar; sigsetjmp (bar, 0);
; return 0; }
EOF
-if { (eval echo configure:9323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9667: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
{ test "$extra_verbose" = "yes" && cat << \EOF
rm -f conftest*
echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6
-echo "configure:9343: checking whether localtime caches TZ" >&5
+echo "configure:9687: checking whether localtime caches TZ" >&5
if test "$ac_cv_func_tzset" = "yes"; then
cat > conftest.$ac_ext <<EOF
-#line 9347 "configure"
+#line 9691 "configure"
#include "confdefs.h"
#include <time.h>
#if STDC_HEADERS
exit (0);
}
EOF
-if { (eval echo configure:9382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
emacs_cv_localtime_cache=no
else
if test "$HAVE_TIMEVAL" = "yes"; then
echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6
-echo "configure:9412: checking whether gettimeofday accepts one or two arguments" >&5
+echo "configure:9756: checking whether gettimeofday accepts one or two arguments" >&5
cat > conftest.$ac_ext <<EOF
-#line 9414 "configure"
+#line 9758 "configure"
#include "confdefs.h"
#ifdef TIME_WITH_SYS_TIME
; return 0; }
EOF
-if { (eval echo configure:9436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "$ac_t""two" 1>&6
else
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:9458: checking for inline" >&5
+echo "configure:9802: checking for inline" >&5
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 9463 "configure"
+#line 9807 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:9470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:9520: checking for working alloca.h" >&5
+echo "configure:9864: checking for working alloca.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 9523 "configure"
+#line 9867 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:9530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:9554: checking for alloca" >&5
+echo "configure:9898: checking for alloca" >&5
cat > conftest.$ac_ext <<EOF
-#line 9557 "configure"
+#line 9901 "configure"
#include "confdefs.h"
#ifdef __GNUC__
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:9585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:9624: checking whether alloca needs Cray hooks" >&5
+echo "configure:9968: checking whether alloca needs Cray hooks" >&5
cat > conftest.$ac_ext <<EOF
-#line 9627 "configure"
+#line 9971 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9651: checking for $ac_func" >&5
+echo "configure:9995: checking for $ac_func" >&5
cat > conftest.$ac_ext <<EOF
-#line 9654 "configure"
+#line 9998 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:9677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10021: \"$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
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:9707: checking stack direction for C alloca" >&5
+echo "configure:10051: checking stack direction for C alloca" >&5
cat > conftest.$ac_ext <<EOF
-#line 9710 "configure"
+#line 10054 "configure"
#include "confdefs.h"
find_stack_direction ()
{
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:9729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_c_stack_direction=1
else
ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:9758: checking for vfork.h" >&5
+echo "configure:10102: checking for vfork.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 9761 "configure"
+#line 10105 "configure"
#include "confdefs.h"
#include <vfork.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10110: \"$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*
fi
echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:9794: checking for working vfork" >&5
+echo "configure:10138: checking for working vfork" >&5
cat > conftest.$ac_ext <<EOF
-#line 9797 "configure"
+#line 10141 "configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
}
}
EOF
-if { (eval echo configure:9892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_func_vfork_works=yes
else
echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:9918: checking for working strcoll" >&5
+echo "configure:10262: checking for working strcoll" >&5
cat > conftest.$ac_ext <<EOF
-#line 9921 "configure"
+#line 10265 "configure"
#include "confdefs.h"
#include <string.h>
main ()
strcoll ("123", "456") >= 0);
}
EOF
-if { (eval echo configure:9931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_func_strcoll_works=yes
else
for ac_func in getpgrp
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9959: checking for $ac_func" >&5
+echo "configure:10303: checking for $ac_func" >&5
cat > conftest.$ac_ext <<EOF
-#line 9962 "configure"
+#line 10306 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:9985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10329: \"$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
done
echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:10013: checking whether getpgrp takes no argument" >&5
+echo "configure:10357: checking whether getpgrp takes no argument" >&5
cat > conftest.$ac_ext <<EOF
-#line 10016 "configure"
+#line 10360 "configure"
#include "confdefs.h"
/*
}
EOF
-if { (eval echo configure:10071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
ac_cv_func_getpgrp_void=yes
else
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:10098: checking for working mmap" >&5
+echo "configure:10442: checking for working mmap" >&5
case "$opsys" in ultrix* ) have_mmap=no ;; *)
cat > conftest.$ac_ext <<EOF
-#line 10101 "configure"
+#line 10445 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <unistd.h>
return 1;
}
EOF
-if { (eval echo configure:10134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
have_mmap=yes
else
ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:10169: checking for termios.h" >&5
+echo "configure:10513: checking for termios.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10172 "configure"
+#line 10516 "configure"
#include "confdefs.h"
#include <termios.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10521: \"$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*
echo "$ac_t""no" 1>&6
ac_safe=`echo "termio.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for termio.h""... $ac_c" 1>&6
-echo "configure:10220: checking for termio.h" >&5
+echo "configure:10564: checking for termio.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10223 "configure"
+#line 10567 "configure"
#include "confdefs.h"
#include <termio.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10228: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10572: \"$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*
echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:10260: checking for socket" >&5
+echo "configure:10604: checking for socket" >&5
cat > conftest.$ac_ext <<EOF
-#line 10263 "configure"
+#line 10607 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char socket(); below. */
; return 0; }
EOF
-if { (eval echo configure:10286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10630: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_socket=yes"
else
echo "$ac_t""yes" 1>&6
ac_safe=`echo "netinet/in.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for netinet/in.h""... $ac_c" 1>&6
-echo "configure:10301: checking for netinet/in.h" >&5
+echo "configure:10645: checking for netinet/in.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10304 "configure"
+#line 10648 "configure"
#include "confdefs.h"
#include <netinet/in.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10653: \"$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*
echo "$ac_t""yes" 1>&6
ac_safe=`echo "arpa/inet.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for arpa/inet.h""... $ac_c" 1>&6
-echo "configure:10326: checking for arpa/inet.h" >&5
+echo "configure:10670: checking for arpa/inet.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10329 "configure"
+#line 10673 "configure"
#include "confdefs.h"
#include <arpa/inet.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10678: \"$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*
}
echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:10359: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:10703: checking "for sun_len member in struct sockaddr_un"" >&5
cat > conftest.$ac_ext <<EOF
-#line 10361 "configure"
+#line 10705 "configure"
#include "confdefs.h"
#include <sys/types.h>
static struct sockaddr_un x; x.sun_len = 1;
; return 0; }
EOF
-if { (eval echo configure:10372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
Defining HAVE_SOCKADDR_SUN_LEN
fi
rm -f conftest*
echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:10390: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:10734: checking "for ip_mreq struct in netinet/in.h"" >&5
cat > conftest.$ac_ext <<EOF
-#line 10392 "configure"
+#line 10736 "configure"
#include "confdefs.h"
#include <sys/types.h>
static struct ip_mreq x;
; return 0; }
EOF
-if { (eval echo configure:10402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
Defining HAVE_MULTICAST
echo $ac_n "checking for msgget""... $ac_c" 1>&6
-echo "configure:10433: checking for msgget" >&5
+echo "configure:10777: checking for msgget" >&5
cat > conftest.$ac_ext <<EOF
-#line 10436 "configure"
+#line 10780 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char msgget(); below. */
; return 0; }
EOF
-if { (eval echo configure:10459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_msgget=yes"
else
echo "$ac_t""yes" 1>&6
ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6
-echo "configure:10474: checking for sys/ipc.h" >&5
+echo "configure:10818: checking for sys/ipc.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10477 "configure"
+#line 10821 "configure"
#include "confdefs.h"
#include <sys/ipc.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10482: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10826: \"$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*
echo "$ac_t""yes" 1>&6
ac_safe=`echo "sys/msg.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/msg.h""... $ac_c" 1>&6
-echo "configure:10499: checking for sys/msg.h" >&5
+echo "configure:10843: checking for sys/msg.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10502 "configure"
+#line 10846 "configure"
#include "confdefs.h"
#include <sys/msg.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10507: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10851: \"$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*
ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dirent.h""... $ac_c" 1>&6
-echo "configure:10545: checking for dirent.h" >&5
+echo "configure:10889: checking for dirent.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10548 "configure"
+#line 10892 "configure"
#include "confdefs.h"
#include <dirent.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10897: \"$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*
echo "$ac_t""no" 1>&6
ac_safe=`echo "sys/dir.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/dir.h""... $ac_c" 1>&6
-echo "configure:10580: checking for sys/dir.h" >&5
+echo "configure:10924: checking for sys/dir.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10583 "configure"
+#line 10927 "configure"
#include "confdefs.h"
#include <sys/dir.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10588: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10932: \"$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*
ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for nlist.h""... $ac_c" 1>&6
-echo "configure:10621: checking for nlist.h" >&5
+echo "configure:10965: checking for nlist.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10624 "configure"
+#line 10968 "configure"
#include "confdefs.h"
#include <nlist.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10629: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10973: \"$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*
echo "checking "for sound support"" 1>&6
-echo "configure:10659: checking "for sound support"" >&5
+echo "configure:11003: checking "for sound support"" >&5
test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
if test "$with_native_sound" != "no"; then
if test -n "$native_sound_lib"; then
ac_safe=`echo "multimedia/audio_device.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for multimedia/audio_device.h""... $ac_c" 1>&6
-echo "configure:10666: checking for multimedia/audio_device.h" >&5
+echo "configure:11010: checking for multimedia/audio_device.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10669 "configure"
+#line 11013 "configure"
#include "confdefs.h"
#include <multimedia/audio_device.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11018: \"$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*
if test -z "$native_sound_lib"; then
echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6
-echo "configure:10722: checking for ALopenport in -laudio" >&5
+echo "configure:11066: checking for ALopenport in -laudio" >&5
ac_lib_var=`echo audio'_'ALopenport | sed 'y%./+-%__p_%'`
xe_check_libs=" -laudio "
cat > conftest.$ac_ext <<EOF
-#line 10727 "configure"
+#line 11071 "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
ALopenport()
; return 0; }
EOF
-if { (eval echo configure:10738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11082: \"$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
if test -z "$native_sound_lib"; then
echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6
-echo "configure:10769: checking for AOpenAudio in -lAlib" >&5
+echo "configure:11113: checking for AOpenAudio in -lAlib" >&5
ac_lib_var=`echo Alib'_'AOpenAudio | sed 'y%./+-%__p_%'`
xe_check_libs=" -lAlib "
cat > conftest.$ac_ext <<EOF
-#line 10774 "configure"
+#line 11118 "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
AOpenAudio()
; return 0; }
EOF
-if { (eval echo configure:10785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11129: \"$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
for dir in "machine" "sys" "linux"; do
ac_safe=`echo "${dir}/soundcard.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for ${dir}/soundcard.h""... $ac_c" 1>&6
-echo "configure:10823: checking for ${dir}/soundcard.h" >&5
+echo "configure:11167: checking for ${dir}/soundcard.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10826 "configure"
+#line 11170 "configure"
#include "confdefs.h"
#include <${dir}/soundcard.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10831: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11175: \"$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*
if test "$with_nas_sound" != "no"; then
ac_safe=`echo "audio/audiolib.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for audio/audiolib.h""... $ac_c" 1>&6
-echo "configure:10885: checking for audio/audiolib.h" >&5
+echo "configure:11229: checking for audio/audiolib.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 10888 "configure"
+#line 11232 "configure"
#include "confdefs.h"
#include <audio/audiolib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10893: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11237: \"$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*
echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6
-echo "configure:10911: checking for AuOpenServer in -laudio" >&5
+echo "configure:11255: checking for AuOpenServer in -laudio" >&5
ac_lib_var=`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'`
xe_check_libs=" -laudio "
cat > conftest.$ac_ext <<EOF
-#line 10916 "configure"
+#line 11260 "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
AuOpenServer()
; return 0; }
EOF
-if { (eval echo configure:10927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11271: \"$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
fi
libs_x="-laudio $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-laudio\" to \$libs_x"; fi
cat > conftest.$ac_ext <<EOF
-#line 10966 "configure"
+#line 11310 "configure"
#include "confdefs.h"
#include <audio/Xtutil.h>
EOF
# Extract the first word of "esd-config", so it can be a program name with args.
set dummy esd-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:10997: checking for $ac_word" >&5
+echo "configure:11341: checking for $ac_word" >&5
if test -n "$have_esd_config"; then
ac_cv_prog_have_esd_config="$have_esd_config" # Let the user override the test.
c_switch_site="$c_switch_site `esd-config --cflags`" && if test "$extra_verbose" = "yes"; then echo " Appending \"`esd-config --cflags`\" to \$c_switch_site"; fi
LIBS="`esd-config --libs` $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"`esd-config --libs`\" to \$LIBS"; fi
echo $ac_n "checking for esd_play_stream""... $ac_c" 1>&6
-echo "configure:11026: checking for esd_play_stream" >&5
+echo "configure:11370: checking for esd_play_stream" >&5
cat > conftest.$ac_ext <<EOF
-#line 11029 "configure"
+#line 11373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char esd_play_stream(); below. */
; return 0; }
EOF
-if { (eval echo configure:11052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_esd_play_stream=yes"
else
if test "$with_tty" = "yes" ; then
echo "checking for TTY-related features" 1>&6
-echo "configure:11103: checking for TTY-related features" >&5
+echo "configure:11447: checking for TTY-related features" >&5
{ test "$extra_verbose" = "yes" && cat << \EOF
Defining HAVE_TTY
EOF
if test -z "$with_ncurses"; then
echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:11119: checking for tgetent in -lncurses" >&5
+echo "configure:11463: checking for tgetent in -lncurses" >&5
ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
xe_check_libs=" -lncurses "
cat > conftest.$ac_ext <<EOF
-#line 11124 "configure"
+#line 11468 "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
tgetent()
; return 0; }
EOF
-if { (eval echo configure:11135: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11479: \"$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
ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:11168: checking for ncurses/curses.h" >&5
+echo "configure:11512: checking for ncurses/curses.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 11171 "configure"
+#line 11515 "configure"
#include "confdefs.h"
#include <ncurses/curses.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11176: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11520: \"$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*
ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6
-echo "configure:11198: checking for ncurses/term.h" >&5
+echo "configure:11542: checking for ncurses/term.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 11201 "configure"
+#line 11545 "configure"
#include "confdefs.h"
#include <ncurses/term.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11206: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11550: \"$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*
c_switch_site="$c_switch_site -I/usr/include/ncurses"
ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:11236: checking for ncurses/curses.h" >&5
+echo "configure:11580: checking for ncurses/curses.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 11239 "configure"
+#line 11583 "configure"
#include "confdefs.h"
#include <ncurses/curses.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11588: \"$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*
for lib in curses termlib termcap; do
echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6
-echo "configure:11279: checking for tgetent in -l$lib" >&5
+echo "configure:11623: checking for tgetent in -l$lib" >&5
ac_lib_var=`echo $lib'_'tgetent | sed 'y%./+-%__p_%'`
xe_check_libs=" -l$lib "
cat > conftest.$ac_ext <<EOF
-#line 11284 "configure"
+#line 11628 "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
tgetent()
; return 0; }
EOF
-if { (eval echo configure:11295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11639: \"$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
else
echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:11326: checking for tgetent in -lcurses" >&5
+echo "configure:11670: checking for tgetent in -lcurses" >&5
ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'`
xe_check_libs=" -lcurses "
cat > conftest.$ac_ext <<EOF
-#line 11331 "configure"
+#line 11675 "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
tgetent()
; return 0; }
EOF
-if { (eval echo configure:11342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11686: \"$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
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:11360: checking for tgetent in -ltermcap" >&5
+echo "configure:11704: checking for tgetent in -ltermcap" >&5
ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
xe_check_libs=" -ltermcap "
cat > conftest.$ac_ext <<EOF
-#line 11365 "configure"
+#line 11709 "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
tgetent()
; return 0; }
EOF
-if { (eval echo configure:11376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11720: \"$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
test -z "$with_gpm" && { ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for gpm.h""... $ac_c" 1>&6
-echo "configure:11424: checking for gpm.h" >&5
+echo "configure:11768: checking for gpm.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 11427 "configure"
+#line 11771 "configure"
#include "confdefs.h"
#include <gpm.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11432: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11776: \"$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*
}
test -z "$with_gpm" && {
echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:11455: checking for Gpm_Open in -lgpm" >&5
+echo "configure:11799: checking for Gpm_Open in -lgpm" >&5
ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
xe_check_libs=" -lgpm "
cat > conftest.$ac_ext <<EOF
-#line 11460 "configure"
+#line 11804 "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
Gpm_Open()
; return 0; }
EOF
-if { (eval echo configure:11471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11815: \"$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
test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
!= "no no no" && echo "checking for database support" 1>&6
-echo "configure:11521: checking for database support" >&5
+echo "configure:11865: checking for database support" >&5
if test "$with_database_gdbm $with_database_dbm" != "no no"; then
ac_safe=`echo "ndbm.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for ndbm.h""... $ac_c" 1>&6
-echo "configure:11526: checking for ndbm.h" >&5
+echo "configure:11870: checking for ndbm.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 11529 "configure"
+#line 11873 "configure"
#include "confdefs.h"
#include <ndbm.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11878: \"$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*
if test "$with_database_gdbm" != "no"; then
echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:11564: checking for dbm_open in -lgdbm" >&5
+echo "configure:11908: checking for dbm_open in -lgdbm" >&5
ac_lib_var=`echo gdbm'_'dbm_open | sed 'y%./+-%__p_%'`
xe_check_libs=" -lgdbm "
cat > conftest.$ac_ext <<EOF
-#line 11569 "configure"
+#line 11913 "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
dbm_open()
; return 0; }
EOF
-if { (eval echo configure:11580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11924: \"$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
if test "$with_database_dbm" != "no"; then
echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:11608: checking for dbm_open" >&5
+echo "configure:11952: checking for dbm_open" >&5
cat > conftest.$ac_ext <<EOF
-#line 11611 "configure"
+#line 11955 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char dbm_open(); below. */
; return 0; }
EOF
-if { (eval echo configure:11634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_dbm_open=yes"
else
echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:11653: checking for dbm_open in -ldbm" >&5
+echo "configure:11997: checking for dbm_open in -ldbm" >&5
ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-%__p_%'`
xe_check_libs=" -ldbm "
cat > conftest.$ac_ext <<EOF
-#line 11658 "configure"
+#line 12002 "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
dbm_open()
; return 0; }
EOF
-if { (eval echo configure:11669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12013: \"$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
if test "$with_database_berkdb" != "no"; then
echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:11710: checking for Berkeley db.h" >&5
+echo "configure:12054: checking for Berkeley db.h" >&5
for path in "db/db.h" "db.h"; do
cat > conftest.$ac_ext <<EOF
-#line 11713 "configure"
+#line 12057 "configure"
#include "confdefs.h"
#ifdef HAVE_INTTYPES_H
#define __BIT_TYPES_DEFINED__
; return 0; }
EOF
-if { (eval echo configure:11731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
db_h_path="$path"; break
else
if test "$with_database_berkdb" != "no"; then
echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6
-echo "configure:11747: checking for Berkeley DB version" >&5
+echo "configure:12091: checking for Berkeley DB version" >&5
cat > conftest.$ac_ext <<EOF
-#line 11749 "configure"
+#line 12093 "configure"
#include "confdefs.h"
#include <$db_h_path>
#if DB_VERSION_MAJOR > 1
rm -f conftest*
echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6
-echo "configure:11768: checking for $dbfunc" >&5
+echo "configure:12112: checking for $dbfunc" >&5
cat > conftest.$ac_ext <<EOF
-#line 11771 "configure"
+#line 12115 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $dbfunc(); below. */
; return 0; }
EOF
-if { (eval echo configure:11794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$dbfunc=yes"
else
echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:11813: checking for $dbfunc in -ldb" >&5
+echo "configure:12157: checking for $dbfunc in -ldb" >&5
ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'`
xe_check_libs=" -ldb "
cat > conftest.$ac_ext <<EOF
-#line 11818 "configure"
+#line 12162 "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
$dbfunc()
; return 0; }
EOF
-if { (eval echo configure:11829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12173: \"$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
if test "$with_socks" = "yes"; then
echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6
-echo "configure:11893: checking for SOCKSinit in -lsocks" >&5
+echo "configure:12237: checking for SOCKSinit in -lsocks" >&5
ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'`
xe_check_libs=" -lsocks "
cat > conftest.$ac_ext <<EOF
-#line 11898 "configure"
+#line 12242 "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
SOCKSinit()
; return 0; }
EOF
-if { (eval echo configure:11909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12253: \"$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
if test "$with_modules" != "no"; then
echo "checking for module support" 1>&6
-echo "configure:11964: checking for module support" >&5
+echo "configure:12308: checking for module support" >&5
ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:11968: checking for dlfcn.h" >&5
+echo "configure:12312: checking for dlfcn.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 11971 "configure"
+#line 12315 "configure"
#include "confdefs.h"
#include <dlfcn.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11976: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12320: \"$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*
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:11994: checking for dlopen in -ldl" >&5
+echo "configure:12338: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
xe_check_libs=" -ldl "
cat > conftest.$ac_ext <<EOF
-#line 11999 "configure"
+#line 12343 "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
dlopen()
; return 0; }
EOF
-if { (eval echo configure:12010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12354: \"$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
echo "$ac_t""no" 1>&6
echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:12029: checking for dlopen in -lc" >&5
+echo "configure:12373: checking for dlopen in -lc" >&5
ac_lib_var=`echo c'_'dlopen | sed 'y%./+-%__p_%'`
xe_check_libs=" -lc "
cat > conftest.$ac_ext <<EOF
-#line 12034 "configure"
+#line 12378 "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
dlopen()
; return 0; }
EOF
-if { (eval echo configure:12045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12389: \"$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
else
echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:12084: checking for shl_load in -ldld" >&5
+echo "configure:12428: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
xe_check_libs=" -ldld "
cat > conftest.$ac_ext <<EOF
-#line 12089 "configure"
+#line 12433 "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
shl_load()
; return 0; }
EOF
-if { (eval echo configure:12100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12444: \"$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
echo "$ac_t""no" 1>&6
echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:12127: checking for dld_init in -ldld" >&5
+echo "configure:12471: checking for dld_init in -ldld" >&5
ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'`
xe_check_libs=" -ldld "
cat > conftest.$ac_ext <<EOF
-#line 12132 "configure"
+#line 12476 "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
dld_init()
; return 0; }
EOF
-if { (eval echo configure:12143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12487: \"$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
xealias=$internal_configuration
echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:12188: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:12532: checking how to build dynamic libraries for ${xehost}" >&5
# Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
case "$xehost" in
*-*-linux-gnu*) ;;
XEGCC=yes
else
echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:12216: checking checking whether we are using GNU C" >&5
+echo "configure:12560: checking checking whether we are using GNU C" >&5
cat > conftest.$ac_ext <<EOF
-#line 12218 "configure"
+#line 12562 "configure"
#include "confdefs.h"
#ifdef __GNUC__
fi
echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:12240: checking how to produce PIC code" >&5
+echo "configure:12584: checking how to produce PIC code" >&5
wl=
can_build_shared=yes
# Check to make sure the dll_cflags actually works.
echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" 1>&6
-echo "configure:12333: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:12677: checking if PIC flag ${dll_cflags} really works" >&5
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $dll_cflags -DPIC"
cat > conftest.$ac_ext <<EOF
-#line 12337 "configure"
+#line 12681 "configure"
#include "confdefs.h"
int main() {
int x=0;
; return 0; }
EOF
-if { (eval echo configure:12344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12688: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also
xldf=
xcldf=
echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:12375: checking if C compiler can produce shared libraries" >&5
+echo "configure:12719: checking if C compiler can produce shared libraries" >&5
if test "$XEGCC" = yes; then
xcldf="-shared"
xldf="-shared"
xe_libs=
ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
cat > conftest.$ac_ext <<EOF
-#line 12426 "configure"
+#line 12770 "configure"
#include "confdefs.h"
int main() {
int x=0;
; return 0; }
EOF
-if { (eval echo configure:12433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cc_produces_so=yes
else
if test "$XEGCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:12458: checking for ld used by GCC" >&5
+echo "configure:12802: checking for ld used by GCC" >&5
ac_prog=`($CC -print-prog-name=ld) 2>&5`
case "$ac_prog" in
# Accept absolute paths.
esac
else
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:12483: checking for GNU ld" >&5
+echo "configure:12827: checking for GNU ld" >&5
fi
if test -z "$LTLD"; then
# Check to see if it really is or isn't GNU ld.
echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6
-echo "configure:12521: checking if the linker is GNU ld" >&5
+echo "configure:12865: checking if the linker is GNU ld" >&5
# I'd rather use --version here, but apparently some GNU ld's only accept -v.
if $LTLD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
xe_gnu_ld=yes
# OK - only NOW do we futz about with ld.
# See if the linker supports building shared libraries.
echo $ac_n "checking whether the linker supports shared libraries""... $ac_c" 1>&6
-echo "configure:12548: checking whether the linker supports shared libraries" >&5
+echo "configure:12892: checking whether the linker supports shared libraries" >&5
dll_ld=$CC
dll_ldflags=$LDFLAGS
ld_shlibs=yes
for ac_func in dlerror _dlerror
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12763: checking for $ac_func" >&5
+echo "configure:13107: checking for $ac_func" >&5
cat > conftest.$ac_ext <<EOF
-#line 12766 "configure"
+#line 13110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:12789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13133: \"$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
fi
cat > conftest.$ac_ext <<EOF
-#line 12828 "configure"
+#line 13172 "configure"
#include "confdefs.h"
int main(int c,char *v[]){return 0;}
EOF
-if { (eval echo configure:12832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:13176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
then
:
else
done
;;
+ dnl Has the user specified a prefered Athena widget set?
+ dnl This bit expands any alias names out for us...
+ "with_athena" )
+ case "$val" in
+ xa | xaw ) val=xaw ;;
+ 3 | 3d | xaw3d ) val=3d ;;
+ dnl No `n' for next, someone may try `no'
+ ne | nex | next | naxtaw) val=next ;;
+ dnl Have not tested the next two...
+ 9 | 95 | xaw95 ) val=95 ;;
+ xp | xpm | xawxpm ) val=xpm ;;
+ * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
+ \`xaw', \`3d', \`next', \`95', or \`xpm'."]) ;;
+ esac
+ eval "$opt=\"$val\""
+ ;;
+
dnl Has the user requested XIM support?
"with_xim" )
case "$val" in
case "$val" in
l | lu | luc | luci | lucid ) val=lucid ;;
m | mo | mot | moti | motif ) val=motif ;;
- athena3d | athena-3d ) val=athena3d ;;
a | at | ath | athe | athen | athena ) val=athena ;;
n | no | non | none ) val=no ;;
* ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
- \`lucid', \`motif', \`athena', \`athena3d', or \`no'."]) ;;
+ \`lucid', \`motif', \`athena', or \`no'."]) ;;
esac
eval "$opt=\"$val\""
;;
dnl if test "$with_tty" = "no" ; then
dnl AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
dnl fi
- for feature in tooltalk cde offix wmcommand xim xmu xpm nas_sound
+ for feature in tooltalk cde offix wmcommand xim xmu nas_sound
do
if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
AC_MSG_WARN([--with-$feature ignored: Not valid without X support])
AC_CHECKING(for X11 graphics libraries)
- dnl Autodetect -lXaw
- AC_CHECK_LIB(Xaw, XawScrollbarSetThumb, have_xaw=yes, have_xaw=no)
- dnl if test "$have_xaw" = "yes"; then
- dnl AC_CHECK_HEADER(X11/Xaw/Reports.h, [
- dnl XE_APPEND(pkg-src/tree-x, MAKE_SUBDIR)
- dnl XE_APPEND(pkg-src/tree-x, INSTALL_ARCH_DEP_SUBDIR)])
- dnl fi
+ AC_CHECKING(for the Athena widgets)
+
+ dnl What in heck did the user actually want?
+ case "$with_athena" in
+ dnl This is the default, old fashioned flat Athena.
+ "xaw" | "") athena_variant=Xaw athena_3d=no ;;
+ "3d") athena_variant=Xaw3d athena_3d=yes ;;
+ "next") athena_variant=neXtaw athena_3d=yes ;;
+ "95") athena_variant=Xaw95 athena_3d=yes ;;
+ "xpm") athena_variant=XawXpm athena_3d=yes ;;
+ *) XE_DIE("Unknown Athena widget set \`$with_athena'. This should not happen.") ;;
+ esac
+
+ dnl Search for the Athena library...
+ if test "$athena_3d" = "no"; then
+ AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb,
+ [
+ dnl Must not be a 3d library...
+ AC_CHECK_LIB($athena_variant, threeDClassRec,
+ AC_MSG_WARN("Could not find a non-3d Athena widget library."),
+ athena_lib=$athena_variant)
+ ],
+ AC_MSG_WARN("Could not find an Athena widget library."))
+ else
+ dnl The real configuration, need 3d library
+ AC_CHECK_LIB($athena_variant, threeDClassRec, athena_lib=$athena_variant,
+ dnl OK, couldn't find it with a proper name, try the standard Athena lib
+ dnl If that is 3d, presume the user asked for what they have installed.
+ AC_CHECK_LIB(Xaw, threeDClassRec,
+ [
+ athena_lib=Xaw;
+ AC_MSG_WARN("Assuming that libXaw is actually $athena_variant.");
+ ],
+ AC_MSG_WARN("Could not find a 3d Athena widget library that looked like $athena_variant.")))
+ fi
+
+ dnl Now we locate the Athena headers that we need.
+ if test "$athena_3d" = "no"; then
+ AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
+ AC_MSG_WARN("Could not find a non-3d Athena header set."),
+ AC_CHECK_HEADER(X11/Xaw/XawInit.h,
+ athena_h_path=X11/Xaw,
+ AC_MSG_WARN("Could not find a non-3d Athena header set.")))
+ else
+ dnl The three-d Athena headers are so much more slippery.
+ dnl Curse this `Lets replace standard libraries' thing that they did. :/
+ AC_CHECK_HEADER(X11/$athena_variant/XawInit.h,
+ AC_CHECK_HEADER(X11/$athena_variant/ThreeD.h,
+ athena_h_path=X11/$athena_variant,))
+
+ dnl If we couldn't find the specific variant, try the generic Athena 3d headers
+ if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
+ AC_CHECK_HEADER(X11/Xaw3d/XawInit.h,
+ AC_CHECK_HEADER(X11/Xaw3d/ThreeD.h,
+ [
+ AC_MSG_WARN("Assuming that X11/Xaw3d headers are suitable for $athena_variant.")
+ athena_h_path=X11/Xaw3d
+ ],))
+ fi
+
+ dnl If nothing yet found, see if Xaw is a 3d header set...
+ dnl We AC_MSG_WARN if we fail because I am all out of ideas...
+ if test -z "$athena_h_path"; then
+ AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
+ [
+ AC_MSG_WARN("Assuming that X11/Xaw headers are suitable for $athena_variant.")
+ athena_h_path=X11/Xaw
+ ],
+ AC_MSG_WARN("Could not find a suitable 3d Athena header set."))
+ fi
+ fi
- dnl Autodetect -lXaw3d
- AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb, have_xaw3d=yes, have_xaw3d=no)
+ dnl Do we actually have a usable Athena widget set? Please?
+ if test -n "$athena_lib" -a -n "$athena_h_path"; then
+ have_xaw=yes
+ else
+ have_xaw=no
+ fi
dnl autodetect Motif - but only add to libs_x later (if necessary)
AC_CHECK_HEADER(Xm/Xm.h,
dnl Not all toolkits support all widgets
dnl if Motif is available we use it for the dialog boxes.
-case "$with_menubars" in "" | "yes" | "athena" | "athena3d" )
+case "$with_menubars" in "" | "yes" | "athena" )
with_menubars="lucid" ;;
esac
case "$with_dialogs" in "" | "yes" | "lucid" )
- if test "$have_motif" = "yes"; then with_dialogs="motif"
- elif test "$have_xaw3d" = "yes"; then with_dialogs="athena3d"
- elif test "$have_xaw" = "yes"; then with_dialogs="athena"
+ if test "$have_motif" = "yes"; then with_dialogs="motif"
+ elif test "$have_xaw" = "yes"; then with_dialogs="athena"
else with_dialogs=no
fi ;;
esac
esac
case "$with_widgets" in "" | "yes" | "lucid")
if test "$have_motif" = "yes"; then with_widgets="motif"
- elif test "$have_xaw3d" = "yes"; then with_widgets="athena3d"
elif test "$have_xaw" = "yes"; then with_widgets="athena"
else with_widgets=no
fi ;;
all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars $with_widgets"
case "$all_widgets" in
- *athena*3d )
- AC_DEFINE(LWLIB_USES_ATHENA)
- AC_DEFINE(NEED_ATHENA)
- XE_APPEND(lwlib-Xaw.o, lwlib_objs)
- if test "$have_xaw3d"; then
- XE_PREPEND(-lXaw3d, libs_x)
- else
- XE_PREPEND(-lXaw, libs_x)
- fi ;;
- *athena* )
- AC_DEFINE(LWLIB_USES_ATHENA)
- AC_DEFINE(NEED_ATHENA)
- XE_APPEND(lwlib-Xaw.o, lwlib_objs)
- XE_PREPEND(-lXaw, libs_x) ;;
+ *athena* )
+ if test "$have_xaw" != "yes"; then
+ XE_DIE("Could not find a suitable Athena library to build with.")
+ fi
+
+ dnl Add the Lucid widget Athena code
+ XE_APPEND(lwlib-Xaw.o, lwlib_objs)
+
+ dnl Add the Athena widget library we located earlier
+ XE_PREPEND(-l$athena_lib, libs_x)
+
+ dnl Export the path for lwlib, used to build and include the headers
+ dnl from the right place later on.
+ AC_DEFINE_UNQUOTED(ATHENA_H_PATH, $athena_h_path)
+
+ AC_DEFINE(LWLIB_USES_ATHENA)
+ AC_DEFINE(NEED_ATHENA)
+
+ if test "$athena_3d" = "yes"; then
+ AC_DEFINE(HAVE_ATHENA_3D)
+ fi
+ ;;
esac
case "$all_widgets" in *motif* )
AC_SUBST(lwlib_objs)
-case "$with_scrollbars" in athena* ) AC_DEFINE(LWLIB_SCROLLBARS_ATHENA);; esac
-case "$with_dialogs" in athena* ) AC_DEFINE(LWLIB_DIALOGS_ATHENA) ;; esac
-test "$with_scrollbars" = "athena3d" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
-test "$with_dialogs" = "athena3d" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
+test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA)
+test "$with_dialogs" = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA)
+
+if test "$athena_3d" = "yes"; then
+ test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
+ test "$with_dialogs" = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
+fi
+
case "$with_widgets" in athena* ) AC_DEFINE(LWLIB_WIDGETS_ATHENA);; esac
test "$with_widgets" != "no" && test "$with_widgets" != "msw" && \
AC_DEFINE(LWLIB_TABS_LUCID)
--without-toolbars Don't compile with any toolbar support.
--without-wmcommand Compile without realized leader window which will
keep the WM_COMMAND property.
+--with-athena=TYPE Use TYPE Athena widgets
+ (xaw, 3d, next, 95, or xpm)
--with-menubars=TYPE Use TYPE menubars (lucid, motif, or no). The Lucid
widgets emulate Motif (mostly) but are faster.
*WARNING* The Motif menubar is currently broken.
--with-scrollbars=TYPE Use TYPE scrollbars
- (lucid, motif, athena, athena3d, or no).
---with-dialogs=TYPE Use TYPE dialog boxes (motif, athena, athena3d, or no).
+ (lucid, motif, athena, or no).
+--with-dialogs=TYPE Use TYPE dialog boxes (motif, athena, or no).
Lucid menubars and scrollbars are the default.
Motif dialog boxes will be used if Motif can be found.
---with-widgets=TYPE Use TYPE widgets (motif, athena, athena3d, or no).
+--with-widgets=TYPE Use TYPE widgets (motif, athena, or no).
Motif widgets will be used if Motif can be found.
Other widget types are currently unsupported.
--with-dragndrop (*) Compile in the generic drag and drop API. This is
-Copyright (c) 1997, Adrian Aichner <aichner@ecf.teradyne.com>.
+Copyright (c) 1997, Adrian Aichner <adrian@xemacs.org>.
Copyright (c) 1985, 1996 Free Software Foundation, Inc. See end for conditions.
Ben Wing hat das Tutorial für X Windows erweitert. Martin Buchholz
und Hrvoje Niksic haben weitere Korrekturen für XEmacs beigetragen.
Ins Deutsche übertragen wurde es von Adrian Aichner
-<aichner@ecf.teradyne.com>.
+<adrian@xemacs.org>.
Diese Version des Tutorials ist, wie GNU Emacs selbst,
urheberrechtlich geschützt und erlaubt die Verteilung von Kopien unter
bestimmten Voraussetzungen:
-Copyright (c) 1997, Adrian Aichner <aichner@ecf.teradyne.com>.
+Copyright (c) 1997, Adrian Aichner <adrian@xemacs.org>.
Copyright (c) 1985, 1996 Free Software Foundation
lispref.info-8: 340704
lispref.info-9: 388026
lispref.info-10: 436665
-lispref.info-11: 484608
-lispref.info-12: 531220
-lispref.info-13: 579119
-lispref.info-14: 627342
-lispref.info-15: 675596
-lispref.info-16: 724798
-lispref.info-17: 772038
-lispref.info-18: 818888
-lispref.info-19: 865939
-lispref.info-20: 914669
-lispref.info-21: 964091
-lispref.info-22: 1011010
-lispref.info-23: 1058037
-lispref.info-24: 1107436
-lispref.info-25: 1157118
-lispref.info-26: 1207028
-lispref.info-27: 1256251
-lispref.info-28: 1305018
-lispref.info-29: 1353990
-lispref.info-30: 1395325
-lispref.info-31: 1444468
-lispref.info-32: 1493681
-lispref.info-33: 1543255
-lispref.info-34: 1591432
-lispref.info-35: 1637064
-lispref.info-36: 1678380
-lispref.info-37: 1723321
-lispref.info-38: 1773008
-lispref.info-39: 1822112
-lispref.info-40: 1871516
-lispref.info-41: 1921400
-lispref.info-42: 1970391
-lispref.info-43: 2014283
-lispref.info-44: 2052619
+lispref.info-11: 484903
+lispref.info-12: 531515
+lispref.info-13: 579414
+lispref.info-14: 627637
+lispref.info-15: 675891
+lispref.info-16: 725647
+lispref.info-17: 774398
+lispref.info-18: 821248
+lispref.info-19: 868299
+lispref.info-20: 917029
+lispref.info-21: 966451
+lispref.info-22: 1013370
+lispref.info-23: 1060397
+lispref.info-24: 1109796
+lispref.info-25: 1159478
+lispref.info-26: 1209388
+lispref.info-27: 1258611
+lispref.info-28: 1307378
+lispref.info-29: 1356815
+lispref.info-30: 1398150
+lispref.info-31: 1447293
+lispref.info-32: 1496506
+lispref.info-33: 1546080
+lispref.info-34: 1594257
+lispref.info-35: 1639889
+lispref.info-36: 1681205
+lispref.info-37: 1726146
+lispref.info-38: 1775833
+lispref.info-39: 1824937
+lispref.info-40: 1874341
+lispref.info-41: 1924225
+lispref.info-42: 1973216
+lispref.info-43: 2017108
+lispref.info-44: 2055444
\1f
Tag Table:
(Indirect)
Node: Defining Functions\7f456232
Node: Calling Functions\7f459272
Node: Mapping Functions\7f463121
-Node: Anonymous Functions\7f465514
-Node: Function Cells\7f468759
-Node: Inline Functions\7f473569
-Node: Related Topics\7f475379
-Node: Macros\7f476432
-Node: Simple Macro\7f477716
-Node: Expansion\7f478451
-Node: Compiling Macros\7f481455
-Node: Defining Macros\7f483291
-Node: Backquote\7f484608
-Node: Problems with Macros\7f487005
-Node: Argument Evaluation\7f487700
-Node: Surprising Local Vars\7f490615
-Node: Eval During Expansion\7f492683
-Node: Repeated Expansion\7f494376
-Node: Customization\7f496292
-Node: Common Keywords\7f496761
-Node: Group Definitions\7f499606
-Node: Variable Definitions\7f501798
-Node: Customization Types\7f506781
-Node: Simple Types\7f508216
-Node: Composite Types\7f510373
-Node: Splicing into Lists\7f515063
-Node: Type Keywords\7f516898
-Node: Loading\7f520418
-Node: How Programs Do Loading\7f522093
-Node: Autoload\7f531220
-Node: Repeated Loading\7f537299
-Node: Named Features\7f539412
-Node: Unloading\7f545844
-Node: Hooks for Loading\7f548000
-Node: Byte Compilation\7f548717
-Node: Speed of Byte-Code\7f550634
-Node: Compilation Functions\7f551841
-Node: Docs and Compilation\7f558228
-Node: Dynamic Loading\7f560881
-Node: Eval During Compile\7f563245
-Node: Compiled-Function Objects\7f564510
-Node: Disassembly\7f569308
-Node: Debugging\7f576562
-Node: Debugger\7f577974
-Node: Error Debugging\7f579119
-Node: Infinite Loops\7f581872
-Node: Function Debugging\7f583116
-Node: Explicit Debug\7f585906
-Node: Using Debugger\7f586677
-Node: Debugger Commands\7f588539
-Node: Invoking the Debugger\7f592856
-Node: Internals of Debugger\7f596771
-Node: Syntax Errors\7f601658
-Node: Excess Open\7f602906
-Node: Excess Close\7f604781
-Node: Compilation Errors\7f606202
-Node: Edebug\7f607490
-Node: Using Edebug\7f609598
-Node: Instrumenting\7f612295
-Node: Edebug Execution Modes\7f615784
-Node: Jumping\7f618894
-Node: Edebug Misc\7f621237
-Node: Breakpoints\7f622626
-Node: Global Break Condition\7f625432
-Node: Embedded Breakpoints\7f626387
-Node: Trapping Errors\7f627342
-Node: Edebug Views\7f629418
-Node: Edebug Eval\7f631383
-Node: Eval List\7f632560
-Node: Reading in Edebug\7f635945
-Node: Printing in Edebug\7f636744
-Node: Tracing\7f638459
-Node: Coverage Testing\7f640345
-Node: The Outside Context\7f642386
-Node: Checking Whether to Stop\7f643335
-Node: Edebug Display Update\7f643982
-Node: Edebug Recursive Edit\7f646005
-Node: Instrumenting Macro Calls\7f647660
-Node: Specification List\7f650142
-Node: Backtracking\7f659553
-Node: Debugging Backquote\7f661491
-Node: Specification Examples\7f665197
-Node: Edebug Options\7f667264
-Node: Read and Print\7f672601
-Node: Streams Intro\7f673578
-Node: Input Streams\7f675596
-Node: Input Functions\7f680497
-Node: Output Streams\7f682557
-Node: Output Functions\7f686608
-Node: Output Variables\7f690908
-Node: Minibuffers\7f695707
-Node: Intro to Minibuffers\7f696792
-Node: Text from Minibuffer\7f699118
-Node: Object from Minibuffer\7f703780
-Node: Minibuffer History\7f706997
-Node: Completion\7f709907
-Node: Basic Completion\7f711882
-Node: Minibuffer Completion\7f716906
-Node: Completion Commands\7f720151
-Node: High-Level Completion\7f724798
-Node: Reading File Names\7f728822
-Node: Programmed Completion\7f732511
-Node: Yes-or-No Queries\7f734721
-Node: Multiple Queries\7f740458
-Node: Minibuffer Misc\7f744522
-Node: Command Loop\7f749388
-Node: Command Overview\7f750732
-Node: Defining Commands\7f754010
-Node: Using Interactive\7f754758
-Node: Interactive Codes\7f759531
-Node: Interactive Examples\7f765323
-Node: Interactive Call\7f766637
-Node: Command Loop Info\7f772038
-Node: Events\7f777017
-Node: Event Types\7f778477
-Node: Event Contents\7f780400
-Node: Event Predicates\7f784876
-Node: Accessing Mouse Event Positions\7f786201
-Node: Frame-Level Event Position Info\7f786900
-Node: Window-Level Event Position Info\7f787940
-Node: Event Text Position Info\7f789704
-Node: Event Glyph Position Info\7f792196
-Node: Event Toolbar Position Info\7f793519
-Node: Other Event Position Info\7f794190
-Node: Accessing Other Event Info\7f794599
-Node: Working With Events\7f796219
-Node: Converting Events\7f802207
-Node: Reading Input\7f805160
-Node: Key Sequence Input\7f806162
-Node: Reading One Event\7f808116
-Node: Dispatching an Event\7f810877
-Node: Quoted Character Input\7f811328
-Node: Peeking and Discarding\7f812676
-Node: Waiting\7f816580
-Node: Quitting\7f818888
-Node: Prefix Command Arguments\7f823296
-Node: Recursive Editing\7f828383
-Node: Disabling Commands\7f833179
-Node: Command History\7f835247
-Node: Keyboard Macros\7f836984
-Node: Keymaps\7f839201
-Node: Keymap Terminology\7f840778
-Node: Format of Keymaps\7f843707
-Node: Creating Keymaps\7f844118
-Node: Inheritance and Keymaps\7f846197
-Node: Key Sequences\7f848569
-Node: Prefix Keys\7f853139
-Node: Active Keymaps\7f856724
-Node: Key Lookup\7f865939
-Node: Functions for Key Lookup\7f871102
-Node: Changing Key Bindings\7f876799
-Node: Key Binding Commands\7f883696
-Node: Scanning Keymaps\7f885761
-Node: Other Keymap Functions\7f894272
-Node: Menus\7f894894
-Node: Menu Format\7f895436
-Node: Menubar Format\7f904021
-Node: Menubar\7f904646
-Node: Modifying Menus\7f907759
-Node: Menu Filters\7f912773
-Node: Pop-Up Menus\7f914669
-Node: Menu Accelerators\7f916874
-Node: Creating Menu Accelerators\7f917596
-Node: Keyboard Menu Traversal\7f918914
-Node: Menu Accelerator Functions\7f919641
-Node: Buffers Menu\7f922676
-Node: Dialog Boxes\7f923970
-Node: Dialog Box Format\7f924137
-Node: Dialog Box Functions\7f925507
-Node: Toolbar\7f925904
-Node: Toolbar Intro\7f926229
-Node: Toolbar Descriptor Format\7f928639
-Node: Specifying the Toolbar\7f933133
-Node: Other Toolbar Variables\7f936738
-Node: Scrollbars\7f941165
-Node: Drag and Drop\7f941301
-Node: Supported Protocols\7f942377
-Node: OffiX DND\7f942880
-Node: CDE dt\7f943887
-Node: MSWindows OLE\7f944478
-Node: Loose ends\7f944649
-Node: Drop Interface\7f945041
-Node: Drag Interface\7f946063
-Node: Modes\7f946237
-Node: Major Modes\7f947188
-Node: Major Mode Conventions\7f950103
-Node: Example Major Modes\7f956058
-Node: Auto Major Mode\7f964091
-Node: Mode Help\7f971539
-Node: Derived Modes\7f972640
-Node: Minor Modes\7f974831
-Node: Minor Mode Conventions\7f976133
-Node: Keymaps and Minor Modes\7f978996
-Node: Modeline Format\7f979831
-Node: Modeline Data\7f981599
-Node: Modeline Variables\7f985869
-Node: %-Constructs\7f990585
-Node: Hooks\7f993496
-Node: Documentation\7f1000258
-Node: Documentation Basics\7f1001681
-Node: Accessing Documentation\7f1004731
-Node: Keys in Documentation\7f1011010
-Node: Describing Characters\7f1014489
-Node: Help Functions\7f1016838
-Node: Obsoleteness\7f1023289
-Node: Files\7f1026283
-Node: Visiting Files\7f1028208
-Node: Visiting Functions\7f1029713
-Node: Subroutines of Visiting\7f1034760
-Node: Saving Buffers\7f1036833
-Node: Reading from Files\7f1042926
-Node: Writing to Files\7f1045083
-Node: File Locks\7f1047800
-Node: Information about Files\7f1050853
-Node: Testing Accessibility\7f1051614
-Node: Kinds of Files\7f1055354
-Node: Truenames\7f1057035
-Node: File Attributes\7f1058037
-Node: Changing File Attributes\7f1063176
-Node: File Names\7f1068582
-Node: File Name Components\7f1070191
-Node: Directory Names\7f1073292
-Node: Relative File Names\7f1076745
-Node: File Name Expansion\7f1077823
-Node: Unique File Names\7f1081730
-Node: File Name Completion\7f1083345
-Node: User Name Completion\7f1086006
-Node: Contents of Directories\7f1087346
-Node: Create/Delete Dirs\7f1090659
-Node: Magic File Names\7f1091765
-Node: Partial Files\7f1097395
-Node: Intro to Partial Files\7f1097623
-Node: Creating a Partial File\7f1098863
-Node: Detached Partial Files\7f1099798
-Node: Format Conversion\7f1100920
-Node: Files and MS-DOS\7f1107436
-Node: Backups and Auto-Saving\7f1109500
-Node: Backup Files\7f1110175
-Node: Making Backups\7f1111572
-Node: Rename or Copy\7f1114321
-Node: Numbered Backups\7f1116814
-Node: Backup Names\7f1119058
-Node: Auto-Saving\7f1122350
-Node: Reverting\7f1130492
-Node: Buffers\7f1133650
-Node: Buffer Basics\7f1135067
-Node: Current Buffer\7f1137120
-Node: Buffer Names\7f1141808
-Node: Buffer File Name\7f1145013
-Node: Buffer Modification\7f1149132
-Node: Modification Time\7f1151325
-Node: Read Only Buffers\7f1154700
-Node: The Buffer List\7f1157118
-Node: Creating Buffers\7f1161948
-Node: Killing Buffers\7f1164094
-Node: Indirect Buffers\7f1167825
-Node: Windows\7f1170397
-Node: Basic Windows\7f1171875
-Node: Splitting Windows\7f1174973
-Node: Deleting Windows\7f1181862
-Node: Selecting Windows\7f1184542
-Node: Cyclic Window Ordering\7f1187671
-Node: Buffers and Windows\7f1192295
-Node: Displaying Buffers\7f1194136
-Node: Choosing Window\7f1199312
-Node: Window Point\7f1207028
-Node: Window Start\7f1209074
-Node: Vertical Scrolling\7f1213564
-Node: Horizontal Scrolling\7f1219701
-Node: Size of Window\7f1223210
-Node: Position of Window\7f1227928
-Node: Resizing Windows\7f1230168
-Node: Window Configurations\7f1235597
-Node: Frames\7f1239022
-Node: Creating Frames\7f1240791
-Node: Frame Properties\7f1242132
-Node: Property Access\7f1242948
-Node: Initial Properties\7f1243797
-Node: X Frame Properties\7f1246283
-Node: Size and Position\7f1250917
-Node: Frame Name\7f1252913
-Node: Frame Titles\7f1253827
-Node: Deleting Frames\7f1255651
-Node: Finding All Frames\7f1256251
-Node: Frames and Windows\7f1258245
-Node: Minibuffers and Frames\7f1259950
-Node: Input Focus\7f1260868
-Node: Visibility of Frames\7f1263945
-Node: Raising and Lowering\7f1265864
-Node: Frame Configurations\7f1268240
-Node: Frame Hooks\7f1268834
-Node: Consoles and Devices\7f1270639
-Node: Basic Console Functions\7f1273383
-Node: Basic Device Functions\7f1273806
-Node: Console Types and Device Classes\7f1274522
-Node: Connecting to a Console or Device\7f1276719
-Node: The Selected Console and Device\7f1278882
-Node: Console and Device I/O\7f1279908
-Node: Positions\7f1280672
-Node: Point\7f1281641
-Node: Motion\7f1284731
-Node: Character Motion\7f1285498
-Node: Word Motion\7f1287735
-Node: Buffer End Motion\7f1289236
-Node: Text Lines\7f1290733
-Node: Screen Lines\7f1295328
-Node: List Motion\7f1299391
-Node: Skipping Characters\7f1302799
-Node: Excursions\7f1305018
-Node: Narrowing\7f1308050
-Node: Markers\7f1313375
-Node: Overview of Markers\7f1314281
-Node: Predicates on Markers\7f1318973
-Node: Creating Markers\7f1320219
-Node: Information from Markers\7f1324256
-Node: Changing Markers\7f1325354
-Node: The Mark\7f1326732
-Node: The Region\7f1335226
-Node: Text\7f1340913
-Node: Near Point\7f1343612
-Node: Buffer Contents\7f1347334
-Node: Comparing Text\7f1348740
-Node: Insertion\7f1350148
-Node: Commands for Insertion\7f1353990
-Node: Deletion\7f1356946
-Node: User-Level Deletion\7f1360541
-Node: The Kill Ring\7f1364702
-Node: Kill Ring Concepts\7f1366876
-Node: Kill Functions\7f1367930
-Node: Yank Commands\7f1369835
-Node: Low-Level Kill Ring\7f1371706
-Node: Internals of Kill Ring\7f1374492
-Node: Undo\7f1377272
-Node: Maintaining Undo\7f1381601
-Node: Filling\7f1384221
-Node: Margins\7f1390215
-Node: Auto Filling\7f1394144
-Node: Sorting\7f1395325
-Node: Columns\7f1404625
-Node: Indentation\7f1407141
-Node: Primitive Indent\7f1407920
-Node: Mode-Specific Indent\7f1409164
-Node: Region Indent\7f1411675
-Node: Relative Indent\7f1414623
-Node: Indent Tabs\7f1417005
-Node: Motion by Indent\7f1418326
-Node: Case Changes\7f1419105
-Node: Text Properties\7f1422356
-Node: Examining Properties\7f1424169
-Node: Changing Properties\7f1426036
-Node: Property Search\7f1429627
-Node: Special Properties\7f1434338
-Node: Saving Properties\7f1434619
-Node: Substitution\7f1437761
-Node: Registers\7f1441031
-Node: Transposition\7f1443574
-Node: Change Hooks\7f1444468
-Node: Transformations\7f1446508
-Node: Searching and Matching\7f1450893
-Node: String Search\7f1452024
-Node: Regular Expressions\7f1456748
-Node: Syntax of Regexps\7f1458115
-Node: Regexp Example\7f1472494
-Node: Regexp Search\7f1474664
-Node: POSIX Regexps\7f1480752
-Node: Search and Replace\7f1482587
-Node: Match Data\7f1485952
-Node: Simple Match Data\7f1487082
-Node: Replacing Match\7f1491347
-Node: Entire Match Data\7f1493681
-Node: Saving Match Data\7f1495672
-Node: Searching and Case\7f1497053
-Node: Standard Regexps\7f1499087
-Node: Syntax Tables\7f1501285
-Node: Syntax Basics\7f1502399
-Node: Syntax Descriptors\7f1505371
-Node: Syntax Class Table\7f1507221
-Node: Syntax Flags\7f1513259
-Node: Syntax Table Functions\7f1516476
-Node: Motion and Syntax\7f1520340
-Node: Parsing Expressions\7f1521792
-Node: Standard Syntax Tables\7f1527861
-Node: Syntax Table Internals\7f1528705
-Node: Abbrevs\7f1529731
-Node: Abbrev Mode\7f1531534
-Node: Abbrev Tables\7f1532254
-Node: Defining Abbrevs\7f1533787
-Node: Abbrev Files\7f1535692
-Node: Abbrev Expansion\7f1537465
-Node: Standard Abbrev Tables\7f1542096
-Node: Extents\7f1543255
-Node: Intro to Extents\7f1544498
-Node: Creating and Modifying Extents\7f1548492
-Node: Extent Endpoints\7f1549999
-Node: Finding Extents\7f1553262
-Node: Mapping Over Extents\7f1557011
-Node: Extent Properties\7f1563128
-Node: Detached Extents\7f1573272
-Node: Extent Parents\7f1575131
-Node: Duplicable Extents\7f1576826
-Node: Extents and Events\7f1580047
-Node: Atomic Extents\7f1581954
-Node: Specifiers\7f1582401
-Node: Introduction to Specifiers\7f1584208
-Node: Specifiers In-Depth\7f1586518
-Node: Specifier Instancing\7f1591432
-Node: Specifier Types\7f1594694
-Node: Adding Specifications\7f1599768
-Node: Retrieving Specifications\7f1609130
-Node: Specifier Tag Functions\7f1612865
-Node: Specifier Instancing Functions\7f1616099
-Node: Specifier Example\7f1619506
-Node: Creating Specifiers\7f1622612
-Node: Specifier Validation Functions\7f1624861
-Node: Other Specification Functions\7f1627245
-Node: Faces and Window-System Objects\7f1631064
-Node: Faces\7f1631388
-Node: Merging Faces\7f1633005
-Node: Basic Face Functions\7f1634966
-Node: Face Properties\7f1637064
-Node: Face Convenience Functions\7f1646623
-Node: Other Face Display Functions\7f1649753
-Node: Fonts\7f1650566
-Node: Font Specifiers\7f1651267
-Node: Font Instances\7f1651508
-Node: Font Instance Names\7f1652475
-Node: Font Instance Size\7f1653316
-Node: Font Instance Characteristics\7f1654602
-Node: Font Convenience Functions\7f1655771
-Node: Colors\7f1657061
-Node: Color Specifiers\7f1657501
-Node: Color Instances\7f1657728
-Node: Color Instance Properties\7f1658472
-Node: Color Convenience Functions\7f1659098
-Node: Glyphs\7f1660151
-Node: Glyph Functions\7f1661743
-Node: Creating Glyphs\7f1662150
-Node: Glyph Properties\7f1663737
-Node: Glyph Convenience Functions\7f1672904
-Node: Glyph Dimensions\7f1676851
-Node: Images\7f1677931
-Node: Image Specifiers\7f1678380
-Node: Image Instantiator Conversion\7f1689802
-Node: Image Instances\7f1691167
-Node: Image Instance Types\7f1691918
-Node: Image Instance Functions\7f1694573
-Node: Glyph Types\7f1699142
-Node: Mouse Pointer\7f1700914
-Node: Redisplay Glyphs\7f1703917
-Node: Subwindows\7f1704950
-Node: Annotations\7f1705193
-Node: Annotation Basics\7f1706209
-Node: Annotation Primitives\7f1710147
-Node: Annotation Properties\7f1711476
-Node: Locating Annotations\7f1714516
-Node: Margin Primitives\7f1715353
-Node: Annotation Hooks\7f1717247
-Node: Display\7f1717907
-Node: Refresh Screen\7f1718885
-Node: Truncation\7f1720796
-Node: The Echo Area\7f1723321
-Node: Warnings\7f1729756
-Node: Invisible Text\7f1734192
-Node: Selective Display\7f1736771
-Node: Overlay Arrow\7f1740897
-Node: Temporary Displays\7f1742250
-Node: Blinking\7f1746371
-Node: Usual Display\7f1748556
-Node: Display Tables\7f1751105
-Node: Display Table Format\7f1751909
-Node: Active Display Table\7f1753351
-Node: Character Descriptors\7f1754543
-Node: Beeping\7f1755300
-Node: Hash Tables\7f1760066
-Node: Introduction to Hash Tables\7f1760674
-Node: Working With Hash Tables\7f1766697
-Node: Weak Hash Tables\7f1767814
-Node: Range Tables\7f1769613
-Node: Introduction to Range Tables\7f1770302
-Node: Working With Range Tables\7f1770733
-Node: Databases\7f1771618
-Node: Connecting to a Database\7f1771917
-Node: Working With a Database\7f1773008
-Node: Other Database Functions\7f1773866
-Node: Processes\7f1774440
-Node: Subprocess Creation\7f1776664
-Node: Synchronous Processes\7f1779953
-Node: MS-DOS Subprocesses\7f1786671
-Node: Asynchronous Processes\7f1787745
-Node: Deleting Processes\7f1791458
-Node: Process Information\7f1793329
-Node: Input to Processes\7f1797255
-Node: Signals to Processes\7f1799545
-Node: Output from Processes\7f1803965
-Node: Process Buffers\7f1804777
-Node: Filter Functions\7f1807644
-Node: Accepting Output\7f1813214
-Node: Sentinels\7f1814741
-Node: Process Window Size\7f1818231
-Node: Transaction Queues\7f1818580
-Node: Network\7f1820278
-Node: System Interface\7f1822112
-Node: Starting Up\7f1823382
-Node: Start-up Summary\7f1823976
-Node: Init File\7f1827530
-Node: Terminal-Specific\7f1829911
-Node: Command Line Arguments\7f1833070
-Node: Getting Out\7f1836559
-Node: Killing XEmacs\7f1837128
-Node: Suspending XEmacs\7f1838797
-Node: System Environment\7f1842139
-Node: User Identification\7f1848806
-Node: Time of Day\7f1852335
-Node: Time Conversion\7f1855122
-Node: Timers\7f1860162
-Node: Terminal Input\7f1862335
-Node: Input Modes\7f1862838
-Node: Translating Input\7f1865251
-Node: Recording Input\7f1869416
-Node: Terminal Output\7f1871516
-Node: Flow Control\7f1875139
-Node: Batch Mode\7f1878931
-Node: X-Windows\7f1880313
-Node: X Selections\7f1881125
-Node: X Server\7f1883335
-Node: Resources\7f1883736
-Node: Server Data\7f1888877
-Node: Grabs\7f1890084
-Node: X Miscellaneous\7f1891665
-Node: ToolTalk Support\7f1894050
-Node: XEmacs ToolTalk API Summary\7f1894267
-Node: Sending Messages\7f1895567
-Node: Example of Sending Messages\7f1895818
-Node: Elisp Interface for Sending Messages\7f1896880
-Node: Receiving Messages\7f1903273
-Node: Example of Receiving Messages\7f1903496
-Node: Elisp Interface for Receiving Messages\7f1904332
-Node: LDAP Support\7f1908157
-Node: Building XEmacs with LDAP support\7f1908653
-Node: XEmacs LDAP API\7f1909631
-Node: LDAP Variables\7f1910361
-Node: The High-Level LDAP API\7f1912837
-Node: The Low-Level LDAP API\7f1913942
-Node: The LDAP Lisp Object\7f1914216
-Node: Opening and Closing a LDAP Connection\7f1914769
-Node: Searching on a LDAP Server (Low-level)\7f1916552
-Node: Syntax of Search Filters\7f1917945
-Node: Internationalization\7f1919243
-Node: I18N Levels 1 and 2\7f1919580
-Node: I18N Level 3\7f1920286
-Node: Level 3 Basics\7f1920567
-Node: Level 3 Primitives\7f1921400
-Node: Dynamic Messaging\7f1923006
-Node: Domain Specification\7f1923469
-Node: Documentation String Extraction\7f1925372
-Node: I18N Level 4\7f1926290
-Node: MULE\7f1926482
-Node: Internationalization Terminology\7f1927593
-Node: Charsets\7f1936132
-Node: Charset Properties\7f1936828
-Node: Basic Charset Functions\7f1941514
-Node: Charset Property Functions\7f1943695
-Node: Predefined Charsets\7f1945738
-Node: MULE Characters\7f1948658
-Node: Composite Characters\7f1949505
-Node: ISO 2022\7f1950759
-Node: Coding Systems\7f1956481
-Node: Coding System Types\7f1958403
-Node: EOL Conversion\7f1960222
-Node: Coding System Properties\7f1961405
-Node: Basic Coding System Functions\7f1965257
-Node: Coding System Property Functions\7f1967161
-Node: Encoding and Decoding Text\7f1967719
-Node: Detection of Textual Encoding\7f1968855
-Node: Big5 and Shift-JIS Functions\7f1970391
-Node: CCL\7f1971479
-Node: CCL Syntax\7f1974583
-Node: CCL Statements\7f1976171
-Node: CCL Expressions\7f1980819
-Node: Calling CCL\7f1983358
-Node: CCL Examples\7f1986347
-Node: Category Tables\7f1986484
-Node: Tips\7f1988843
-Node: Style Tips\7f1989484
-Node: Compilation Tips\7f1999003
-Node: Documentation Tips\7f2000917
-Node: Comment Tips\7f2006426
-Node: Library Headers\7f2009428
-Node: Building XEmacs and Object Allocation\7f2013400
-Node: Building XEmacs\7f2014283
-Node: Pure Storage\7f2020618
-Node: Garbage Collection\7f2023406
-Node: Standard Errors\7f2034545
-Node: Standard Buffer-Local Variables\7f2038754
-Node: Standard Keymaps\7f2041387
-Node: Standard Hooks\7f2045119
-Node: Index\7f2052619
+Node: Anonymous Functions\7f465809
+Node: Function Cells\7f469054
+Node: Inline Functions\7f473864
+Node: Related Topics\7f475674
+Node: Macros\7f476727
+Node: Simple Macro\7f478011
+Node: Expansion\7f478746
+Node: Compiling Macros\7f481750
+Node: Defining Macros\7f483586
+Node: Backquote\7f484903
+Node: Problems with Macros\7f487300
+Node: Argument Evaluation\7f487995
+Node: Surprising Local Vars\7f490910
+Node: Eval During Expansion\7f492978
+Node: Repeated Expansion\7f494671
+Node: Customization\7f496587
+Node: Common Keywords\7f497056
+Node: Group Definitions\7f499901
+Node: Variable Definitions\7f502093
+Node: Customization Types\7f507076
+Node: Simple Types\7f508511
+Node: Composite Types\7f510668
+Node: Splicing into Lists\7f515358
+Node: Type Keywords\7f517193
+Node: Loading\7f520713
+Node: How Programs Do Loading\7f522388
+Node: Autoload\7f531515
+Node: Repeated Loading\7f537594
+Node: Named Features\7f539707
+Node: Unloading\7f546139
+Node: Hooks for Loading\7f548295
+Node: Byte Compilation\7f549012
+Node: Speed of Byte-Code\7f550929
+Node: Compilation Functions\7f552136
+Node: Docs and Compilation\7f558523
+Node: Dynamic Loading\7f561176
+Node: Eval During Compile\7f563540
+Node: Compiled-Function Objects\7f564805
+Node: Disassembly\7f569603
+Node: Debugging\7f576857
+Node: Debugger\7f578269
+Node: Error Debugging\7f579414
+Node: Infinite Loops\7f582167
+Node: Function Debugging\7f583411
+Node: Explicit Debug\7f586201
+Node: Using Debugger\7f586972
+Node: Debugger Commands\7f588834
+Node: Invoking the Debugger\7f593151
+Node: Internals of Debugger\7f597066
+Node: Syntax Errors\7f601953
+Node: Excess Open\7f603201
+Node: Excess Close\7f605076
+Node: Compilation Errors\7f606497
+Node: Edebug\7f607785
+Node: Using Edebug\7f609893
+Node: Instrumenting\7f612590
+Node: Edebug Execution Modes\7f616079
+Node: Jumping\7f619189
+Node: Edebug Misc\7f621532
+Node: Breakpoints\7f622921
+Node: Global Break Condition\7f625727
+Node: Embedded Breakpoints\7f626682
+Node: Trapping Errors\7f627637
+Node: Edebug Views\7f629713
+Node: Edebug Eval\7f631678
+Node: Eval List\7f632855
+Node: Reading in Edebug\7f636240
+Node: Printing in Edebug\7f637039
+Node: Tracing\7f638754
+Node: Coverage Testing\7f640640
+Node: The Outside Context\7f642681
+Node: Checking Whether to Stop\7f643630
+Node: Edebug Display Update\7f644277
+Node: Edebug Recursive Edit\7f646300
+Node: Instrumenting Macro Calls\7f647955
+Node: Specification List\7f650437
+Node: Backtracking\7f659848
+Node: Debugging Backquote\7f661786
+Node: Specification Examples\7f665492
+Node: Edebug Options\7f667559
+Node: Read and Print\7f672896
+Node: Streams Intro\7f673873
+Node: Input Streams\7f675891
+Node: Input Functions\7f680792
+Node: Output Streams\7f682852
+Node: Output Functions\7f686903
+Node: Output Variables\7f691203
+Node: Minibuffers\7f696002
+Node: Intro to Minibuffers\7f697154
+Node: Text from Minibuffer\7f699342
+Node: Object from Minibuffer\7f704217
+Node: Minibuffer History\7f707444
+Node: Completion\7f710423
+Node: Basic Completion\7f712398
+Node: Minibuffer Completion\7f717427
+Node: Completion Commands\7f721004
+Node: High-Level Completion\7f725647
+Node: Reading File Names\7f729671
+Node: Programmed Completion\7f733355
+Node: Yes-or-No Queries\7f735737
+Node: Multiple Queries\7f741474
+Node: Reading a Password\7f745541
+Node: Minibuffer Misc\7f746878
+Node: Command Loop\7f751748
+Node: Command Overview\7f753092
+Node: Defining Commands\7f756370
+Node: Using Interactive\7f757118
+Node: Interactive Codes\7f761891
+Node: Interactive Examples\7f767683
+Node: Interactive Call\7f768997
+Node: Command Loop Info\7f774398
+Node: Events\7f779377
+Node: Event Types\7f780837
+Node: Event Contents\7f782760
+Node: Event Predicates\7f787236
+Node: Accessing Mouse Event Positions\7f788561
+Node: Frame-Level Event Position Info\7f789260
+Node: Window-Level Event Position Info\7f790300
+Node: Event Text Position Info\7f792064
+Node: Event Glyph Position Info\7f794556
+Node: Event Toolbar Position Info\7f795879
+Node: Other Event Position Info\7f796550
+Node: Accessing Other Event Info\7f796959
+Node: Working With Events\7f798579
+Node: Converting Events\7f804567
+Node: Reading Input\7f807520
+Node: Key Sequence Input\7f808522
+Node: Reading One Event\7f810476
+Node: Dispatching an Event\7f813237
+Node: Quoted Character Input\7f813688
+Node: Peeking and Discarding\7f815036
+Node: Waiting\7f818940
+Node: Quitting\7f821248
+Node: Prefix Command Arguments\7f825656
+Node: Recursive Editing\7f830743
+Node: Disabling Commands\7f835539
+Node: Command History\7f837607
+Node: Keyboard Macros\7f839344
+Node: Keymaps\7f841561
+Node: Keymap Terminology\7f843138
+Node: Format of Keymaps\7f846067
+Node: Creating Keymaps\7f846478
+Node: Inheritance and Keymaps\7f848557
+Node: Key Sequences\7f850929
+Node: Prefix Keys\7f855499
+Node: Active Keymaps\7f859084
+Node: Key Lookup\7f868299
+Node: Functions for Key Lookup\7f873462
+Node: Changing Key Bindings\7f879159
+Node: Key Binding Commands\7f886056
+Node: Scanning Keymaps\7f888121
+Node: Other Keymap Functions\7f896632
+Node: Menus\7f897254
+Node: Menu Format\7f897796
+Node: Menubar Format\7f906381
+Node: Menubar\7f907006
+Node: Modifying Menus\7f910119
+Node: Menu Filters\7f915133
+Node: Pop-Up Menus\7f917029
+Node: Menu Accelerators\7f919234
+Node: Creating Menu Accelerators\7f919956
+Node: Keyboard Menu Traversal\7f921274
+Node: Menu Accelerator Functions\7f922001
+Node: Buffers Menu\7f925036
+Node: Dialog Boxes\7f926330
+Node: Dialog Box Format\7f926497
+Node: Dialog Box Functions\7f927867
+Node: Toolbar\7f928264
+Node: Toolbar Intro\7f928589
+Node: Toolbar Descriptor Format\7f930999
+Node: Specifying the Toolbar\7f935493
+Node: Other Toolbar Variables\7f939098
+Node: Scrollbars\7f943525
+Node: Drag and Drop\7f943661
+Node: Supported Protocols\7f944737
+Node: OffiX DND\7f945240
+Node: CDE dt\7f946247
+Node: MSWindows OLE\7f946838
+Node: Loose ends\7f947009
+Node: Drop Interface\7f947401
+Node: Drag Interface\7f948423
+Node: Modes\7f948597
+Node: Major Modes\7f949548
+Node: Major Mode Conventions\7f952463
+Node: Example Major Modes\7f958418
+Node: Auto Major Mode\7f966451
+Node: Mode Help\7f973899
+Node: Derived Modes\7f975000
+Node: Minor Modes\7f977191
+Node: Minor Mode Conventions\7f978493
+Node: Keymaps and Minor Modes\7f981356
+Node: Modeline Format\7f982191
+Node: Modeline Data\7f983959
+Node: Modeline Variables\7f988229
+Node: %-Constructs\7f992945
+Node: Hooks\7f995856
+Node: Documentation\7f1002618
+Node: Documentation Basics\7f1004041
+Node: Accessing Documentation\7f1007091
+Node: Keys in Documentation\7f1013370
+Node: Describing Characters\7f1016849
+Node: Help Functions\7f1019198
+Node: Obsoleteness\7f1025649
+Node: Files\7f1028643
+Node: Visiting Files\7f1030568
+Node: Visiting Functions\7f1032073
+Node: Subroutines of Visiting\7f1037120
+Node: Saving Buffers\7f1039193
+Node: Reading from Files\7f1045286
+Node: Writing to Files\7f1047443
+Node: File Locks\7f1050160
+Node: Information about Files\7f1053213
+Node: Testing Accessibility\7f1053974
+Node: Kinds of Files\7f1057714
+Node: Truenames\7f1059395
+Node: File Attributes\7f1060397
+Node: Changing File Attributes\7f1065536
+Node: File Names\7f1070942
+Node: File Name Components\7f1072551
+Node: Directory Names\7f1075652
+Node: Relative File Names\7f1079105
+Node: File Name Expansion\7f1080183
+Node: Unique File Names\7f1084090
+Node: File Name Completion\7f1085705
+Node: User Name Completion\7f1088366
+Node: Contents of Directories\7f1089706
+Node: Create/Delete Dirs\7f1093019
+Node: Magic File Names\7f1094125
+Node: Partial Files\7f1099755
+Node: Intro to Partial Files\7f1099983
+Node: Creating a Partial File\7f1101223
+Node: Detached Partial Files\7f1102158
+Node: Format Conversion\7f1103280
+Node: Files and MS-DOS\7f1109796
+Node: Backups and Auto-Saving\7f1111860
+Node: Backup Files\7f1112535
+Node: Making Backups\7f1113932
+Node: Rename or Copy\7f1116681
+Node: Numbered Backups\7f1119174
+Node: Backup Names\7f1121418
+Node: Auto-Saving\7f1124710
+Node: Reverting\7f1132852
+Node: Buffers\7f1136010
+Node: Buffer Basics\7f1137427
+Node: Current Buffer\7f1139480
+Node: Buffer Names\7f1144168
+Node: Buffer File Name\7f1147373
+Node: Buffer Modification\7f1151492
+Node: Modification Time\7f1153685
+Node: Read Only Buffers\7f1157060
+Node: The Buffer List\7f1159478
+Node: Creating Buffers\7f1164308
+Node: Killing Buffers\7f1166454
+Node: Indirect Buffers\7f1170185
+Node: Windows\7f1172757
+Node: Basic Windows\7f1174235
+Node: Splitting Windows\7f1177333
+Node: Deleting Windows\7f1184222
+Node: Selecting Windows\7f1186902
+Node: Cyclic Window Ordering\7f1190031
+Node: Buffers and Windows\7f1194655
+Node: Displaying Buffers\7f1196496
+Node: Choosing Window\7f1201672
+Node: Window Point\7f1209388
+Node: Window Start\7f1211434
+Node: Vertical Scrolling\7f1215924
+Node: Horizontal Scrolling\7f1222061
+Node: Size of Window\7f1225570
+Node: Position of Window\7f1230288
+Node: Resizing Windows\7f1232528
+Node: Window Configurations\7f1237957
+Node: Frames\7f1241382
+Node: Creating Frames\7f1243151
+Node: Frame Properties\7f1244492
+Node: Property Access\7f1245308
+Node: Initial Properties\7f1246157
+Node: X Frame Properties\7f1248643
+Node: Size and Position\7f1253277
+Node: Frame Name\7f1255273
+Node: Frame Titles\7f1256187
+Node: Deleting Frames\7f1258011
+Node: Finding All Frames\7f1258611
+Node: Frames and Windows\7f1260605
+Node: Minibuffers and Frames\7f1262310
+Node: Input Focus\7f1263228
+Node: Visibility of Frames\7f1266305
+Node: Raising and Lowering\7f1268224
+Node: Frame Configurations\7f1270600
+Node: Frame Hooks\7f1271194
+Node: Consoles and Devices\7f1272999
+Node: Basic Console Functions\7f1275743
+Node: Basic Device Functions\7f1276166
+Node: Console Types and Device Classes\7f1276882
+Node: Connecting to a Console or Device\7f1279079
+Node: The Selected Console and Device\7f1281242
+Node: Console and Device I/O\7f1282268
+Node: Positions\7f1283032
+Node: Point\7f1284001
+Node: Motion\7f1287091
+Node: Character Motion\7f1287858
+Node: Word Motion\7f1290095
+Node: Buffer End Motion\7f1291596
+Node: Text Lines\7f1293093
+Node: Screen Lines\7f1297688
+Node: List Motion\7f1301751
+Node: Skipping Characters\7f1305159
+Node: Excursions\7f1307378
+Node: Narrowing\7f1310410
+Node: Markers\7f1315735
+Node: Overview of Markers\7f1316641
+Node: Predicates on Markers\7f1321333
+Node: Creating Markers\7f1322579
+Node: Information from Markers\7f1326616
+Node: Changing Markers\7f1327714
+Node: The Mark\7f1329092
+Node: The Region\7f1337586
+Node: Text\7f1343273
+Node: Near Point\7f1345972
+Node: Buffer Contents\7f1350159
+Node: Comparing Text\7f1351565
+Node: Insertion\7f1352973
+Node: Commands for Insertion\7f1356815
+Node: Deletion\7f1359771
+Node: User-Level Deletion\7f1363366
+Node: The Kill Ring\7f1367527
+Node: Kill Ring Concepts\7f1369701
+Node: Kill Functions\7f1370755
+Node: Yank Commands\7f1372660
+Node: Low-Level Kill Ring\7f1374531
+Node: Internals of Kill Ring\7f1377317
+Node: Undo\7f1380097
+Node: Maintaining Undo\7f1384426
+Node: Filling\7f1387046
+Node: Margins\7f1393040
+Node: Auto Filling\7f1396969
+Node: Sorting\7f1398150
+Node: Columns\7f1407450
+Node: Indentation\7f1409966
+Node: Primitive Indent\7f1410745
+Node: Mode-Specific Indent\7f1411989
+Node: Region Indent\7f1414500
+Node: Relative Indent\7f1417448
+Node: Indent Tabs\7f1419830
+Node: Motion by Indent\7f1421151
+Node: Case Changes\7f1421930
+Node: Text Properties\7f1425181
+Node: Examining Properties\7f1426994
+Node: Changing Properties\7f1428861
+Node: Property Search\7f1432452
+Node: Special Properties\7f1437163
+Node: Saving Properties\7f1437444
+Node: Substitution\7f1440586
+Node: Registers\7f1443856
+Node: Transposition\7f1446399
+Node: Change Hooks\7f1447293
+Node: Transformations\7f1449333
+Node: Searching and Matching\7f1453718
+Node: String Search\7f1454849
+Node: Regular Expressions\7f1459573
+Node: Syntax of Regexps\7f1460940
+Node: Regexp Example\7f1475319
+Node: Regexp Search\7f1477489
+Node: POSIX Regexps\7f1483577
+Node: Search and Replace\7f1485412
+Node: Match Data\7f1488777
+Node: Simple Match Data\7f1489907
+Node: Replacing Match\7f1494172
+Node: Entire Match Data\7f1496506
+Node: Saving Match Data\7f1498497
+Node: Searching and Case\7f1499878
+Node: Standard Regexps\7f1501912
+Node: Syntax Tables\7f1504110
+Node: Syntax Basics\7f1505224
+Node: Syntax Descriptors\7f1508196
+Node: Syntax Class Table\7f1510046
+Node: Syntax Flags\7f1516084
+Node: Syntax Table Functions\7f1519301
+Node: Motion and Syntax\7f1523165
+Node: Parsing Expressions\7f1524617
+Node: Standard Syntax Tables\7f1530686
+Node: Syntax Table Internals\7f1531530
+Node: Abbrevs\7f1532556
+Node: Abbrev Mode\7f1534359
+Node: Abbrev Tables\7f1535079
+Node: Defining Abbrevs\7f1536612
+Node: Abbrev Files\7f1538517
+Node: Abbrev Expansion\7f1540290
+Node: Standard Abbrev Tables\7f1544921
+Node: Extents\7f1546080
+Node: Intro to Extents\7f1547323
+Node: Creating and Modifying Extents\7f1551317
+Node: Extent Endpoints\7f1552824
+Node: Finding Extents\7f1556087
+Node: Mapping Over Extents\7f1559836
+Node: Extent Properties\7f1565953
+Node: Detached Extents\7f1576097
+Node: Extent Parents\7f1577956
+Node: Duplicable Extents\7f1579651
+Node: Extents and Events\7f1582872
+Node: Atomic Extents\7f1584779
+Node: Specifiers\7f1585226
+Node: Introduction to Specifiers\7f1587033
+Node: Specifiers In-Depth\7f1589343
+Node: Specifier Instancing\7f1594257
+Node: Specifier Types\7f1597519
+Node: Adding Specifications\7f1602593
+Node: Retrieving Specifications\7f1611955
+Node: Specifier Tag Functions\7f1615690
+Node: Specifier Instancing Functions\7f1618924
+Node: Specifier Example\7f1622331
+Node: Creating Specifiers\7f1625437
+Node: Specifier Validation Functions\7f1627686
+Node: Other Specification Functions\7f1630070
+Node: Faces and Window-System Objects\7f1633889
+Node: Faces\7f1634213
+Node: Merging Faces\7f1635830
+Node: Basic Face Functions\7f1637791
+Node: Face Properties\7f1639889
+Node: Face Convenience Functions\7f1649448
+Node: Other Face Display Functions\7f1652578
+Node: Fonts\7f1653391
+Node: Font Specifiers\7f1654092
+Node: Font Instances\7f1654333
+Node: Font Instance Names\7f1655300
+Node: Font Instance Size\7f1656141
+Node: Font Instance Characteristics\7f1657427
+Node: Font Convenience Functions\7f1658596
+Node: Colors\7f1659886
+Node: Color Specifiers\7f1660326
+Node: Color Instances\7f1660553
+Node: Color Instance Properties\7f1661297
+Node: Color Convenience Functions\7f1661923
+Node: Glyphs\7f1662976
+Node: Glyph Functions\7f1664568
+Node: Creating Glyphs\7f1664975
+Node: Glyph Properties\7f1666562
+Node: Glyph Convenience Functions\7f1675729
+Node: Glyph Dimensions\7f1679676
+Node: Images\7f1680756
+Node: Image Specifiers\7f1681205
+Node: Image Instantiator Conversion\7f1692627
+Node: Image Instances\7f1693992
+Node: Image Instance Types\7f1694743
+Node: Image Instance Functions\7f1697398
+Node: Glyph Types\7f1701967
+Node: Mouse Pointer\7f1703739
+Node: Redisplay Glyphs\7f1706742
+Node: Subwindows\7f1707775
+Node: Annotations\7f1708018
+Node: Annotation Basics\7f1709034
+Node: Annotation Primitives\7f1712972
+Node: Annotation Properties\7f1714301
+Node: Locating Annotations\7f1717341
+Node: Margin Primitives\7f1718178
+Node: Annotation Hooks\7f1720072
+Node: Display\7f1720732
+Node: Refresh Screen\7f1721710
+Node: Truncation\7f1723621
+Node: The Echo Area\7f1726146
+Node: Warnings\7f1732581
+Node: Invisible Text\7f1737017
+Node: Selective Display\7f1739596
+Node: Overlay Arrow\7f1743722
+Node: Temporary Displays\7f1745075
+Node: Blinking\7f1749196
+Node: Usual Display\7f1751381
+Node: Display Tables\7f1753930
+Node: Display Table Format\7f1754734
+Node: Active Display Table\7f1756176
+Node: Character Descriptors\7f1757368
+Node: Beeping\7f1758125
+Node: Hash Tables\7f1762891
+Node: Introduction to Hash Tables\7f1763499
+Node: Working With Hash Tables\7f1769522
+Node: Weak Hash Tables\7f1770639
+Node: Range Tables\7f1772438
+Node: Introduction to Range Tables\7f1773127
+Node: Working With Range Tables\7f1773558
+Node: Databases\7f1774443
+Node: Connecting to a Database\7f1774742
+Node: Working With a Database\7f1775833
+Node: Other Database Functions\7f1776691
+Node: Processes\7f1777265
+Node: Subprocess Creation\7f1779489
+Node: Synchronous Processes\7f1782778
+Node: MS-DOS Subprocesses\7f1789496
+Node: Asynchronous Processes\7f1790570
+Node: Deleting Processes\7f1794283
+Node: Process Information\7f1796154
+Node: Input to Processes\7f1800080
+Node: Signals to Processes\7f1802370
+Node: Output from Processes\7f1806790
+Node: Process Buffers\7f1807602
+Node: Filter Functions\7f1810469
+Node: Accepting Output\7f1816039
+Node: Sentinels\7f1817566
+Node: Process Window Size\7f1821056
+Node: Transaction Queues\7f1821405
+Node: Network\7f1823103
+Node: System Interface\7f1824937
+Node: Starting Up\7f1826207
+Node: Start-up Summary\7f1826801
+Node: Init File\7f1830355
+Node: Terminal-Specific\7f1832736
+Node: Command Line Arguments\7f1835895
+Node: Getting Out\7f1839384
+Node: Killing XEmacs\7f1839953
+Node: Suspending XEmacs\7f1841622
+Node: System Environment\7f1844964
+Node: User Identification\7f1851631
+Node: Time of Day\7f1855160
+Node: Time Conversion\7f1857947
+Node: Timers\7f1862987
+Node: Terminal Input\7f1865160
+Node: Input Modes\7f1865663
+Node: Translating Input\7f1868076
+Node: Recording Input\7f1872241
+Node: Terminal Output\7f1874341
+Node: Flow Control\7f1877964
+Node: Batch Mode\7f1881756
+Node: X-Windows\7f1883138
+Node: X Selections\7f1883950
+Node: X Server\7f1886160
+Node: Resources\7f1886561
+Node: Server Data\7f1891702
+Node: Grabs\7f1892909
+Node: X Miscellaneous\7f1894490
+Node: ToolTalk Support\7f1896875
+Node: XEmacs ToolTalk API Summary\7f1897092
+Node: Sending Messages\7f1898392
+Node: Example of Sending Messages\7f1898643
+Node: Elisp Interface for Sending Messages\7f1899705
+Node: Receiving Messages\7f1906098
+Node: Example of Receiving Messages\7f1906321
+Node: Elisp Interface for Receiving Messages\7f1907157
+Node: LDAP Support\7f1910982
+Node: Building XEmacs with LDAP support\7f1911478
+Node: XEmacs LDAP API\7f1912456
+Node: LDAP Variables\7f1913186
+Node: The High-Level LDAP API\7f1915662
+Node: The Low-Level LDAP API\7f1916767
+Node: The LDAP Lisp Object\7f1917041
+Node: Opening and Closing a LDAP Connection\7f1917594
+Node: Searching on a LDAP Server (Low-level)\7f1919377
+Node: Syntax of Search Filters\7f1920770
+Node: Internationalization\7f1922068
+Node: I18N Levels 1 and 2\7f1922405
+Node: I18N Level 3\7f1923111
+Node: Level 3 Basics\7f1923392
+Node: Level 3 Primitives\7f1924225
+Node: Dynamic Messaging\7f1925831
+Node: Domain Specification\7f1926294
+Node: Documentation String Extraction\7f1928197
+Node: I18N Level 4\7f1929115
+Node: MULE\7f1929307
+Node: Internationalization Terminology\7f1930418
+Node: Charsets\7f1938957
+Node: Charset Properties\7f1939653
+Node: Basic Charset Functions\7f1944339
+Node: Charset Property Functions\7f1946520
+Node: Predefined Charsets\7f1948563
+Node: MULE Characters\7f1951483
+Node: Composite Characters\7f1952330
+Node: ISO 2022\7f1953584
+Node: Coding Systems\7f1959306
+Node: Coding System Types\7f1961228
+Node: EOL Conversion\7f1963047
+Node: Coding System Properties\7f1964230
+Node: Basic Coding System Functions\7f1968082
+Node: Coding System Property Functions\7f1969986
+Node: Encoding and Decoding Text\7f1970544
+Node: Detection of Textual Encoding\7f1971680
+Node: Big5 and Shift-JIS Functions\7f1973216
+Node: CCL\7f1974304
+Node: CCL Syntax\7f1977408
+Node: CCL Statements\7f1978996
+Node: CCL Expressions\7f1983644
+Node: Calling CCL\7f1986183
+Node: CCL Examples\7f1989172
+Node: Category Tables\7f1989309
+Node: Tips\7f1991668
+Node: Style Tips\7f1992309
+Node: Compilation Tips\7f2001828
+Node: Documentation Tips\7f2003742
+Node: Comment Tips\7f2009251
+Node: Library Headers\7f2012253
+Node: Building XEmacs and Object Allocation\7f2016225
+Node: Building XEmacs\7f2017108
+Node: Pure Storage\7f2023443
+Node: Garbage Collection\7f2026231
+Node: Standard Errors\7f2037370
+Node: Standard Buffer-Local Variables\7f2041579
+Node: Standard Keymaps\7f2044212
+Node: Standard Hooks\7f2047944
+Node: Index\7f2055444
\1f
End Tag Table
`%{'
`%}'
- The text inside will be displayed with the face specified by
+ The text inside will be displayed in the face specified by
`:sample-face'.
`%v'
- This will be replaces with the buffer representation of the
- widgets value. What this is depends on the widget type.
+ This will be replaced with the buffer representation of the
+ widget's value. What this is depends on the widget type.
`%d'
Insert the string specified by `:doc' here.
`:validate'
A function which takes a widget as an argument, and return nil if
- the widgets current value is valid for the widget. Otherwise, it
+ the widget's current value is valid for the widget. Otherwise it
should return the widget containing the invalid data, and set that
- widgets `:error' property to a string explaining the error.
+ widget's `:error' property to a string explaining the error.
The following predefined function can be used:
TYPE ::= (menu-choice [KEYWORD ARGUMENT]... TYPE ... )
- The TYPE arguments represents each possible choice. The widgets
-value of will be the value of the chosen TYPE argument. This widget
-will match any value that matches at least one of the specified TYPE
-arguments.
+ The TYPE argument represents each possible choice. The widget's
+value will be that of the chosen TYPE argument. This widget will match
+any value matching at least one of the specified TYPE arguments.
`:void'
Widget type used as a fallback when the value does not match any
TYPE ::= (radio-button-choice [KEYWORD ARGUMENT]... TYPE ... )
- The TYPE arguments represents each possible choice. The widgets
-value of will be the value of the chosen TYPE argument. This widget
-will match any value that matches at least one of the specified TYPE
-arguments.
+ The TYPE argument represents each possible choice. The widget's
+value will be that of the chosen TYPE argument. This widget will match
+any value matching at least one of the specified TYPE arguments.
The following extra properties are recognized.
TYPE ::= (toggle [KEYWORD ARGUMENT]...)
- The widget has two possible states, `on' and `off', which
-corresponds to a `t' or `nil' value.
+ The widget has two possible states, `on' and `off', which correspond
+to a `t' or `nil' value respectively.
The following extra properties are recognized.
TYPE ::= (checklist [KEYWORD ARGUMENT]... TYPE ... )
- The TYPE arguments represents each checklist item. The widgets
-value of will be a list containing the value of each ticked TYPE
-argument. The checklist widget will match a list whose elements all
-matches at least one of the specified TYPE arguments.
+ The TYPE arguments represents each checklist item. The widget's
+value will be a list containing the values of all ticked TYPE
+arguments. The checklist widget will match a list whose elements all
+match at least one of the specified TYPE arguments.
The following extra properties are recognized.
Insert a literal `%'.
`:greedy'
- Usually, a checklist will only match if the items are in the exact
+ Usually a checklist will only match if the items are in the exact
sequence given in the specification. By setting `:greedy' to
- non-nil, it will allow the items to come in any sequence.
- However, if you extract the value they will be in the sequence
- given in the checklist. I.e. the original sequence is forgotten.
+ non-nil, it will allow the items to appear in any sequence.
+ However, if you extract the values they will be in the sequence
+ given in the checklist. I.e. the original sequence is forgotten.
`button-args'
A list of keywords to pass to the checkboxes. Useful for setting
t)' or `(file string string)'.
This concept of inline is probably hard to understand. It was
-certainly hard to implement so instead of confuse you more by trying to
-explain it here, I'll just suggest you meditate over it for a while.
+certainly hard to implement so instead of confusing you more by trying
+to explain it here, I'll just suggest you meditate over it for a while.
- Widget: choice
- Allows you to edit a sexp which may have one of fixed set of
+ Allows you to edit a sexp which may have one of a fixed set of
types. It is currently implemented with the `choice-menu' basic
widget, and has a similar syntax.
;; Make WIDGET active.
(widget-apply WIDGET :activate)
- A widget is inactive if itself, or any of its ancestors (found by
+ A widget is inactive if itself or any of its ancestors (found by
following the `:parent' link) have been deactivated. To make sure a
-widget is really active, you must therefore activate both itself, and
+widget is really active, you must therefore activate both itself and
all its ancestors.
(while widget
(setq widget (widget-get widget :parent)))
You can check if a widget has been made inactive by examining the
-value of `:inactive' keyword. If this is non-nil, the widget itself has
-been deactivated. This is different from using the `:active' keyword,
-in that the later tell you if the widget *or* any of its ancestors have
-been deactivated. Do not attempt to set the `:inactive' keyword
-directly. Use the `:activate' `:deactivated' keywords instead.
+value of the `:inactive' keyword. If this is non-nil, the widget itself
+has been deactivated. This is different from using the `:active'
+keyword, in that the latter tells you if the widget *or* any of its
+ancestors have been deactivated. Do not attempt to set the `:inactive'
+keyword directly. Use the `:activate' `:deactivate' keywords instead.
\1f
File: widget.info, Node: Defining New Widgets, Next: Widget Browser, Prev: Widget Properties, Up: Top
====================
You can define specialized widgets with `define-widget'. It allows
-you to create a shorthand for more complex widgets, including specifying
-component widgets and default new default values for the keyword
+you to create a shorthand for more complex widgets. This includes
+specifying component widgets and new default values for the keyword
arguments.
- Function: widget-define name class doc &rest args
The third argument DOC is a documentation string for the widget.
- After the new widget has been defined, the following two calls will
+ After the new widget has been defined the following two calls will
create identical widgets:
* (widget-create NAME)
* (apply widget-create CLASS ARGS)
- Using `widget-define' does just store the definition of the widget
-type in the `widget-type' property of NAME, which is what
-`widget-create' uses.
+ Using `widget-define' just stores the definition of the widget type
+in the `widget-type' property of NAME, which is what `widget-create'
+uses.
If you just want to specify defaults for keywords with no complex
conversions, you can use `identity' as your conversion function.
Function to convert a widget type before creating a widget of that
type. It takes a widget type as an argument, and returns the
converted widget type. When a widget is created, this function is
- called for the widget type and all the widgets parent types, most
+ called for the widget type and all the widget's parent types, most
derived first.
The following predefined functions can be used here:
`:value-to-internal'
Function to convert the value to the internal format. The function
- takes two arguments, a widget and an external value, and returns
+ takes two arguments, a widget and an external value. It returns
the internal value. The function is called on the present `:value'
when the widget is created, and on any value set later with
`widget-value-set'.
`:create'
Function to create a widget from scratch. The function takes one
- argument, a widget type, and create a widget of that type, insert
- it in the buffer, and return a widget object.
+ argument, a widget type, and creates a widget of that type,
+ inserts it in the buffer, and returns a widget object.
`:delete'
Function to delete a widget. The function takes one argument, a
`:value-create'
Function to expand the `%v' escape in the format string. It will
- be called with the widget as its argument. Should insert a
- representation of the widgets value in the buffer.
+ be called with the widget as its argument and should insert a
+ representation of the widget's value in the buffer.
`:value-delete'
- Should remove the representation of the widgets value from the
+ Should remove the representation of the widget's value from the
buffer. It will be called with the widget as its argument. It
doesn't have to remove the text, but it should release markers and
- delete nested widgets if such has been used.
+ delete nested widgets if such have been used.
The following predefined function can be used here:
non-standard escapes.
You should end up calling `widget-default-format-handler' to handle
- unknown escape sequences, which will handle the `%h' and any future
- escape sequences, as well as give an error for unknown escapes.
+ unknown escape sequences. It will handle the `%h' and any future
+ escape sequences as well as give an error for unknown escapes.
`:action'
Function to handle user initiated events. By default, `:notify'
should take four arguments, WIDGET, PROMPT, VALUE, and UNBOUND and
should return a value for widget entered by the user. PROMPT is
the prompt to use. VALUE is the default value to use, unless
- UNBOUND is non-nil in which case there are no default value. The
+ UNBOUND is non-nil. In this case there is no default value. The
function should read the value using the method most natural for
- this widget, and does not have to check that it matches.
+ this widget and does not have to check whether it matches.
If you want to define a new widget from scratch, use the `default'
widget as its base.
Node: editable-field\7f21728
Node: text\7f23067
Node: menu-choice\7f23365
-Node: radio-button-choice\7f24230
-Node: item\7f25809
-Node: choice-item\7f26197
-Node: toggle\7f26695
-Node: checkbox\7f27420
-Node: checklist\7f27726
-Node: editable-list\7f29170
-Node: group\7f30352
-Node: Sexp Types\7f30639
-Node: constants\7f30952
-Node: generic\7f32031
-Node: atoms\7f32564
-Node: composite\7f34511
-Node: Widget Properties\7f36977
-Node: Defining New Widgets\7f40040
-Node: Widget Browser\7f45340
-Node: Widget Minor Mode\7f46198
-Node: Utilities\7f46755
-Node: Widget Wishlist\7f47236
+Node: radio-button-choice\7f24218
+Node: item\7f25785
+Node: choice-item\7f26173
+Node: toggle\7f26671
+Node: checkbox\7f27408
+Node: checklist\7f27714
+Node: editable-list\7f29158
+Node: group\7f30340
+Node: Sexp Types\7f30627
+Node: constants\7f30940
+Node: generic\7f32019
+Node: atoms\7f32552
+Node: composite\7f34499
+Node: Widget Properties\7f36969
+Node: Defining New Widgets\7f40034
+Node: Widget Browser\7f45334
+Node: Widget Minor Mode\7f46192
+Node: Utilities\7f46749
+Node: Widget Wishlist\7f47230
\1f
End Tag Table
\1f
Indirect:
xemacs-faq.info-1: 195
-xemacs-faq.info-2: 47856
-xemacs-faq.info-3: 94965
-xemacs-faq.info-4: 144800
-xemacs-faq.info-5: 194688
+xemacs-faq.info-2: 47990
+xemacs-faq.info-3: 95703
+xemacs-faq.info-4: 145538
+xemacs-faq.info-5: 195121
\1f
Tag Table:
(Indirect)
Node: Top\7f195
-Node: Introduction\7f16711
-Node: Q1.0.1\7f20230
-Node: Q1.0.2\7f20766
-Node: Q1.0.3\7f21261
-Node: Q1.0.4\7f21523
-Node: Q1.0.5\7f22973
-Node: Q1.0.6\7f23662
-Node: Q1.0.7\7f24668
-Node: Q1.0.8\7f24917
-Node: Q1.0.9\7f25132
-Node: Q1.0.10\7f25410
-Node: Q1.0.11\7f25653
-Node: Q1.0.12\7f26110
-Node: Q1.0.13\7f26478
-Node: Q1.0.14\7f26713
-Node: Q1.1.1\7f27187
-Node: Q1.1.2\7f28149
-Node: Q1.1.3\7f28542
-Node: Q1.2.1\7f29493
-Node: Q1.2.2\7f30549
-Node: Q1.2.3\7f30983
-Node: Q1.3.1\7f31934
-Node: Q1.3.2\7f35852
-Node: Q1.3.3\7f36407
-Node: Q1.3.4\7f36648
-Node: Q1.3.5\7f37412
-Node: Q1.3.6\7f39827
-Node: Q1.3.7\7f41322
-Node: Q1.4.1\7f42257
-Node: Q1.4.2\7f43119
-Node: Q1.4.3\7f43460
-Node: Q1.4.4\7f43879
-Node: Q1.4.5\7f45419
-Node: Q1.4.6\7f45723
-Node: Q1.4.7\7f46731
-Node: Installation\7f47856
-Node: Q2.0.1\7f50262
-Node: Q2.0.2\7f51135
-Node: Q2.0.3\7f58338
-Node: Q2.0.4\7f59636
-Node: Q2.0.5\7f60228
-Node: Q2.0.6\7f60596
-Node: Q2.0.7\7f60977
-Node: Q2.0.8\7f61358
-Node: Q2.0.9\7f62936
-Node: Q2.0.10\7f64374
-Node: Q2.0.11\7f65218
-Node: Q2.0.12\7f66159
-Node: Q2.0.13\7f67682
-Node: Q2.0.14\7f68340
-Node: Q2.1.1\7f68908
-Node: Q2.1.2\7f71650
-Node: Q2.1.3\7f72827
-Node: Q2.1.4\7f74120
-Node: Q2.1.5\7f74919
-Node: Q2.1.6\7f75281
-Node: Q2.1.7\7f75758
-Node: Q2.1.8\7f76111
-Node: Q2.1.9\7f77627
-Node: Q2.1.10\7f78049
-Node: Q2.1.11\7f78806
-Node: Q2.1.12\7f79671
-Node: Q2.1.13\7f80626
-Node: Q2.1.14\7f81657
-Node: Q2.1.15\7f82768
-Node: Q2.1.16\7f88726
-Node: Q2.1.17\7f89420
-Node: Q2.1.18\7f90017
-Node: Q2.1.19\7f91814
-Node: Q2.1.20\7f92344
-Node: Q2.1.21\7f92726
-Node: Q2.1.22\7f93016
-Node: Q2.1.23\7f94313
-Node: Customization\7f94965
-Node: Q3.0.1\7f99852
-Node: Q3.0.2\7f100558
-Node: Q3.0.3\7f101122
-Node: Q3.0.4\7f101539
-Node: Q3.0.5\7f102372
-Node: Q3.0.6\7f103153
-Node: Q3.0.7\7f103733
-Node: Q3.0.8\7f104397
-Node: Q3.0.9\7f105243
-Node: Q3.1.1\7f105804
-Node: Q3.1.2\7f106541
-Node: Q3.1.3\7f106972
-Node: Q3.1.4\7f107557
-Node: Q3.1.5\7f108093
-Node: Q3.1.6\7f108477
-Node: Q3.1.7\7f109158
-Node: Q3.1.8\7f111382
-Node: Q3.2.1\7f111924
-Node: Q3.2.2\7f113332
-Node: Q3.2.3\7f114131
-Node: Q3.2.4\7f114733
-Node: Q3.2.5\7f115767
-Node: Q3.2.6\7f116234
-Node: Q3.3.1\7f117196
-Node: Q3.3.2\7f117589
-Node: Q3.3.3\7f118220
-Node: Q3.3.4\7f118601
-Node: Q3.3.5\7f119695
-Node: Q3.4.1\7f121189
-Node: Q3.4.2\7f121832
-Node: Q3.5.1\7f122344
-Node: Q3.5.2\7f123798
-Node: Q3.5.3\7f124216
-Node: Q3.5.4\7f125056
-Node: Q3.5.5\7f125888
-Node: Q3.5.6\7f127028
-Node: Q3.5.7\7f128018
-Node: Q3.5.8\7f129370
-Node: Q3.5.9\7f130117
-Node: Q3.5.10\7f130897
-Node: Q3.5.11\7f131533
-Node: Q3.6.1\7f132086
-Node: Q3.6.2\7f132826
-Node: Q3.6.3\7f133254
-Node: Q3.7.1\7f133754
-Node: Q3.7.2\7f134642
-Node: Q3.7.3\7f135301
-Node: Q3.7.4\7f135723
-Node: Q3.7.5\7f136066
-Node: Q3.7.6\7f136534
-Node: Q3.7.7\7f137249
-Node: Q3.7.8\7f138269
-Node: Q3.8.1\7f138688
-Node: Q3.8.2\7f139148
-Node: Q3.8.3\7f139611
-Node: Q3.8.4\7f140217
-Node: Q3.8.5\7f140936
-Node: Q3.9.1\7f141721
-Node: Q3.9.2\7f142661
-Node: Q3.9.3\7f143259
-Node: Q3.9.4\7f143921
-Node: Q3.10.1\7f144800
-Node: Q3.10.2\7f145618
-Node: Q3.10.3\7f146399
-Node: Q3.10.4\7f147127
-Node: Q3.10.5\7f147510
-Node: Subsystems\7f148520
-Node: Q4.0.1\7f151005
-Node: Q4.0.2\7f151530
-Node: Q4.0.3\7f152088
-Node: Q4.0.4\7f152409
-Node: Q4.0.5\7f152651
-Node: Q4.0.6\7f152882
-Node: Q4.0.7\7f153463
-Node: Q4.0.8\7f153788
-Node: Q4.0.9\7f155015
-Node: Q4.0.10\7f157053
-Node: Q4.0.11\7f157507
-Node: Q4.0.12\7f158357
-Node: Q4.1.1\7f159330
-Node: Q4.1.2\7f159733
-Node: Q4.1.3\7f160060
-Node: Q4.2.1\7f160369
-Node: Q4.2.2\7f160999
-Node: Q4.2.3\7f161239
-Node: Q4.2.4\7f161783
-Node: Q4.3.1\7f162436
-Node: Q4.3.2\7f163020
-Node: Q4.3.3\7f164501
-Node: Q4.3.4\7f164773
-Node: Q4.3.5\7f165450
-Node: Q4.4.1\7f166078
-Node: Q4.4.2\7f167564
-Node: Q4.5.1\7f168768
-Node: Q4.6.1\7f169537
-Node: Q4.7.1\7f174797
-Node: Q4.7.2\7f175752
-Node: Q4.7.3\7f176049
-Node: Q4.7.4\7f176395
-Node: Q4.7.5\7f177279
-Node: Q4.7.6\7f178921
-Node: Miscellaneous\7f179515
-Node: Q5.0.1\7f182935
-Node: Q5.0.2\7f183669
-Node: Q5.0.3\7f184523
-Node: Q5.0.4\7f185225
-Node: Q5.0.5\7f186164
-Node: Q5.0.6\7f188144
-Node: Q5.0.7\7f188801
-Node: Q5.0.8\7f189406
-Node: Q5.0.9\7f189925
-Node: Q5.0.10\7f190439
-Node: Q5.0.11\7f190687
-Node: Q5.0.12\7f191248
-Node: Q5.0.13\7f192165
-Node: Q5.0.14\7f192849
-Node: Q5.0.15\7f193614
-Node: Q5.0.16\7f193911
-Node: Q5.0.17\7f194423
-Node: Q5.0.18\7f194688
-Node: Q5.0.19\7f195214
-Node: Q5.0.20\7f195638
-Node: Q5.1.1\7f196553
-Node: Q5.1.2\7f198622
-Node: Q5.1.3\7f199358
-Node: Q5.1.4\7f202752
-Node: Q5.1.5\7f203287
-Node: Q5.1.6\7f205381
-Node: Q5.1.7\7f206770
-Node: Q5.1.8\7f208371
-Node: Q5.1.9\7f208923
-Node: Q5.1.10\7f209808
-Node: Q5.1.11\7f210939
-Node: Q5.2.1\7f211488
-Node: Q5.2.2\7f212059
-Node: Q5.2.3\7f212476
-Node: Q5.2.4\7f212711
-Node: Q5.3.1\7f213621
-Node: Q5.3.2\7f214842
-Node: Q5.3.3\7f215618
-Node: Q5.3.4\7f216102
-Node: Q5.3.5\7f216769
-Node: Q5.3.6\7f217638
-Node: Q5.3.7\7f217883
-Node: Q5.3.8\7f220073
-Node: Q5.3.9\7f220320
-Node: Q5.3.10\7f221273
-Node: Q5.3.11\7f223357
-Node: Q5.3.12\7f224906
-Node: MS Windows\7f226180
-Node: Q6.0.1\7f227511
-Node: Q6.0.2\7f228258
-Node: Q6.0.3\7f228723
-Node: Q6.0.4\7f229003
-Node: Q6.1.1\7f231284
-Node: Q6.1.2\7f232155
-Node: Q6.1.3\7f232436
-Node: Q6.1.4\7f232718
-Node: Q6.1.5\7f233096
-Node: Q6.1.6\7f233928
-Node: Q6.2.1\7f234512
-Node: Q6.2.2\7f235413
-Node: Q6.2.3\7f235814
-Node: Q6.3.1\7f236103
-Node: Q6.3.2\7f237197
-Node: Q6.3.3\7f240378
-Node: Current Events\7f240632
-Node: Q7.0.1\7f241286
-Node: Q7.0.2\7f241925
-Node: Q7.0.3\7f242999
-Node: Q7.0.4\7f243227
+Node: Introduction\7f16769
+Node: Q1.0.1\7f20249
+Node: Q1.0.2\7f20785
+Node: Q1.0.3\7f21280
+Node: Q1.0.4\7f21542
+Node: Q1.0.5\7f22992
+Node: Q1.0.6\7f23681
+Node: Q1.0.7\7f24687
+Node: Q1.0.8\7f24936
+Node: Q1.0.9\7f25151
+Node: Q1.0.10\7f25429
+Node: Q1.0.11\7f25672
+Node: Q1.0.12\7f26129
+Node: Q1.0.13\7f26497
+Node: Q1.0.14\7f26732
+Node: Q1.1.1\7f27206
+Node: Q1.1.2\7f28283
+Node: Q1.1.3\7f28676
+Node: Q1.2.1\7f29627
+Node: Q1.2.2\7f30683
+Node: Q1.2.3\7f31117
+Node: Q1.3.1\7f32068
+Node: Q1.3.2\7f35986
+Node: Q1.3.3\7f36541
+Node: Q1.3.4\7f36782
+Node: Q1.3.5\7f37546
+Node: Q1.3.6\7f39961
+Node: Q1.3.7\7f41456
+Node: Q1.4.1\7f42391
+Node: Q1.4.2\7f43253
+Node: Q1.4.3\7f43594
+Node: Q1.4.4\7f44013
+Node: Q1.4.5\7f45553
+Node: Q1.4.6\7f45857
+Node: Q1.4.7\7f46865
+Node: Installation\7f47990
+Node: Q2.0.1\7f50454
+Node: Q2.0.2\7f51327
+Node: Q2.0.3\7f58530
+Node: Q2.0.4\7f59828
+Node: Q2.0.5\7f60420
+Node: Q2.0.6\7f60788
+Node: Q2.0.7\7f61169
+Node: Q2.0.8\7f61550
+Node: Q2.0.9\7f63128
+Node: Q2.0.10\7f64566
+Node: Q2.0.11\7f65410
+Node: Q2.0.12\7f66351
+Node: Q2.0.13\7f67874
+Node: Q2.0.14\7f68532
+Node: Q2.1.1\7f69100
+Node: Q2.1.2\7f71842
+Node: Q2.1.3\7f73019
+Node: Q2.1.4\7f74312
+Node: Q2.1.5\7f75111
+Node: Q2.1.6\7f75473
+Node: Q2.1.7\7f75950
+Node: Q2.1.8\7f76303
+Node: Q2.1.9\7f77819
+Node: Q2.1.10\7f78241
+Node: Q2.1.11\7f78998
+Node: Q2.1.12\7f79863
+Node: Q2.1.13\7f80818
+Node: Q2.1.14\7f81849
+Node: Q2.1.15\7f82960
+Node: Q2.1.16\7f88918
+Node: Q2.1.17\7f89612
+Node: Q2.1.18\7f90209
+Node: Q2.1.19\7f92006
+Node: Q2.1.20\7f92536
+Node: Q2.1.21\7f92918
+Node: Q2.1.22\7f93208
+Node: Q2.1.23\7f94505
+Node: Q2.1.24\7f95173
+Node: Customization\7f95703
+Node: Q3.0.1\7f100590
+Node: Q3.0.2\7f101296
+Node: Q3.0.3\7f101860
+Node: Q3.0.4\7f102277
+Node: Q3.0.5\7f103110
+Node: Q3.0.6\7f103891
+Node: Q3.0.7\7f104471
+Node: Q3.0.8\7f105135
+Node: Q3.0.9\7f105981
+Node: Q3.1.1\7f106542
+Node: Q3.1.2\7f107279
+Node: Q3.1.3\7f107710
+Node: Q3.1.4\7f108295
+Node: Q3.1.5\7f108831
+Node: Q3.1.6\7f109215
+Node: Q3.1.7\7f109896
+Node: Q3.1.8\7f112120
+Node: Q3.2.1\7f112662
+Node: Q3.2.2\7f114070
+Node: Q3.2.3\7f114869
+Node: Q3.2.4\7f115471
+Node: Q3.2.5\7f116505
+Node: Q3.2.6\7f116972
+Node: Q3.3.1\7f117934
+Node: Q3.3.2\7f118327
+Node: Q3.3.3\7f118958
+Node: Q3.3.4\7f119339
+Node: Q3.3.5\7f120433
+Node: Q3.4.1\7f121927
+Node: Q3.4.2\7f122570
+Node: Q3.5.1\7f123082
+Node: Q3.5.2\7f124536
+Node: Q3.5.3\7f124954
+Node: Q3.5.4\7f125794
+Node: Q3.5.5\7f126626
+Node: Q3.5.6\7f127766
+Node: Q3.5.7\7f128756
+Node: Q3.5.8\7f130108
+Node: Q3.5.9\7f130855
+Node: Q3.5.10\7f131635
+Node: Q3.5.11\7f132271
+Node: Q3.6.1\7f132824
+Node: Q3.6.2\7f133564
+Node: Q3.6.3\7f133992
+Node: Q3.7.1\7f134492
+Node: Q3.7.2\7f135380
+Node: Q3.7.3\7f136039
+Node: Q3.7.4\7f136461
+Node: Q3.7.5\7f136804
+Node: Q3.7.6\7f137272
+Node: Q3.7.7\7f137987
+Node: Q3.7.8\7f139007
+Node: Q3.8.1\7f139426
+Node: Q3.8.2\7f139886
+Node: Q3.8.3\7f140349
+Node: Q3.8.4\7f140955
+Node: Q3.8.5\7f141674
+Node: Q3.9.1\7f142459
+Node: Q3.9.2\7f143399
+Node: Q3.9.3\7f143997
+Node: Q3.9.4\7f144659
+Node: Q3.10.1\7f145538
+Node: Q3.10.2\7f146356
+Node: Q3.10.3\7f147137
+Node: Q3.10.4\7f147865
+Node: Q3.10.5\7f148248
+Node: Subsystems\7f149258
+Node: Q4.0.1\7f151743
+Node: Q4.0.2\7f152268
+Node: Q4.0.3\7f152826
+Node: Q4.0.4\7f153147
+Node: Q4.0.5\7f153389
+Node: Q4.0.6\7f153620
+Node: Q4.0.7\7f154201
+Node: Q4.0.8\7f154526
+Node: Q4.0.9\7f155753
+Node: Q4.0.10\7f157791
+Node: Q4.0.11\7f158245
+Node: Q4.0.12\7f159095
+Node: Q4.1.1\7f160068
+Node: Q4.1.2\7f160471
+Node: Q4.1.3\7f160798
+Node: Q4.2.1\7f161107
+Node: Q4.2.2\7f161737
+Node: Q4.2.3\7f161977
+Node: Q4.2.4\7f162521
+Node: Q4.3.1\7f163174
+Node: Q4.3.2\7f163758
+Node: Q4.3.3\7f165239
+Node: Q4.3.4\7f165511
+Node: Q4.3.5\7f166188
+Node: Q4.4.1\7f166816
+Node: Q4.4.2\7f168302
+Node: Q4.5.1\7f169506
+Node: Q4.6.1\7f170275
+Node: Q4.7.1\7f175535
+Node: Q4.7.2\7f176490
+Node: Q4.7.3\7f176787
+Node: Q4.7.4\7f177133
+Node: Q4.7.5\7f178017
+Node: Q4.7.6\7f179659
+Node: Miscellaneous\7f179948
+Node: Q5.0.1\7f183368
+Node: Q5.0.2\7f184102
+Node: Q5.0.3\7f184956
+Node: Q5.0.4\7f185658
+Node: Q5.0.5\7f186597
+Node: Q5.0.6\7f188577
+Node: Q5.0.7\7f189234
+Node: Q5.0.8\7f189839
+Node: Q5.0.9\7f190358
+Node: Q5.0.10\7f190872
+Node: Q5.0.11\7f191120
+Node: Q5.0.12\7f191681
+Node: Q5.0.13\7f192598
+Node: Q5.0.14\7f193282
+Node: Q5.0.15\7f194047
+Node: Q5.0.16\7f194344
+Node: Q5.0.17\7f194856
+Node: Q5.0.18\7f195121
+Node: Q5.0.19\7f195647
+Node: Q5.0.20\7f196071
+Node: Q5.1.1\7f196986
+Node: Q5.1.2\7f199055
+Node: Q5.1.3\7f199791
+Node: Q5.1.4\7f203185
+Node: Q5.1.5\7f203720
+Node: Q5.1.6\7f205814
+Node: Q5.1.7\7f207203
+Node: Q5.1.8\7f208804
+Node: Q5.1.9\7f209356
+Node: Q5.1.10\7f210241
+Node: Q5.1.11\7f211372
+Node: Q5.2.1\7f211921
+Node: Q5.2.2\7f212492
+Node: Q5.2.3\7f212909
+Node: Q5.2.4\7f213144
+Node: Q5.3.1\7f214054
+Node: Q5.3.2\7f215275
+Node: Q5.3.3\7f216051
+Node: Q5.3.4\7f216535
+Node: Q5.3.5\7f217202
+Node: Q5.3.6\7f218071
+Node: Q5.3.7\7f218316
+Node: Q5.3.8\7f220506
+Node: Q5.3.9\7f220753
+Node: Q5.3.10\7f221706
+Node: Q5.3.11\7f223790
+Node: Q5.3.12\7f225339
+Node: MS Windows\7f226613
+Node: Q6.0.1\7f227944
+Node: Q6.0.2\7f228691
+Node: Q6.0.3\7f229156
+Node: Q6.0.4\7f229436
+Node: Q6.1.1\7f231717
+Node: Q6.1.2\7f232588
+Node: Q6.1.3\7f232869
+Node: Q6.1.4\7f233151
+Node: Q6.1.5\7f233529
+Node: Q6.1.6\7f234361
+Node: Q6.2.1\7f234945
+Node: Q6.2.2\7f235846
+Node: Q6.2.3\7f236247
+Node: Q6.3.1\7f236536
+Node: Q6.3.2\7f237630
+Node: Q6.3.3\7f240811
+Node: Current Events\7f241065
+Node: Q7.0.1\7f241719
+Node: Q7.0.2\7f242358
+Node: Q7.0.3\7f243432
+Node: Q7.0.4\7f243660
\1f
End Tag Table
* Q2.1.21:: Every so often the XEmacs frame freezes.
* Q2.1.22:: XEmacs seems to take a really long time to do some things.
* Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later.
+* Q2.1.24:: XEmacs won't start without network. (NEW)
Customization and Options
available resources.
The previous maintainer of the FAQ was Anthony Rossini
-<rossini@stat.sc.edu>, who started it, after getting tired of hearing
-JWZ complain about repeatedly having to answer questions. Ben Wing
-<ben@xemacs.org> and Chuck Thompson <cthomp@xemacs.org>, the principal
-authors of XEmacs, then took over and Ben did a massive update
-reorganizing the whole thing. At which point Anthony took back over,
-but then had to give it up again. Some of the other contributors to
-this FAQ are listed later in this document.
+<rossini@biostat.washington.edu>, who started it, after getting tired
+of hearing JWZ complain about repeatedly having to answer questions.
+Ben Wing <ben@xemacs.org> and Chuck Thompson <cthomp@xemacs.org>, the
+principal authors of XEmacs, then took over and Ben did a massive
+update reorganizing the whole thing. At which point Anthony took back
+over, but then had to give it up again. Some of the other contributors
+to this FAQ are listed later in this document.
The previous version was converted to hypertext format, and edited by
Steven L. Baur <steve@xemacs.org>. It was converted back to texinfo by
-Hrvoje Niksic <hniksic@xemacs.org>.
-
- The FAQ was then maintained by Andreas Kaempf <andreas@sccon.com>,
-who passed it on to Christian Nyb/o <faq@xemacs.org>, the current FAQ
-maintainer.
+Hrvoje Niksic <hniksic@xemacs.org>. The FAQ was then maintained by
+Andreas Kaempf <andreas@sccon.com>, who passed it on to ChristianNyb/o.
If you notice any errors or items which should be added or amended to
-this FAQ please send email to Christian Nyb/o <faq@xemacs.org>. Include
+this FAQ please send email to Sandra Wambold <faq@xemacs.org>. Include
`XEmacs FAQ' on the Subject: line.
* Menu:
-----------------------------------------
The FAQ is actively maintained and modified regularly. All links
-should be up to date. All submissions are welcome. E-mail submissions
-to XEmacs FAQ maintainers <faq@xemacs.org>.
+should be up to date. Unfortunately, some of the information is out of
+date - a situation which the FAQ maintainer is working on. All
+submissions are welcome, please e-mail submissions to XEmacs FAQ
+maintainers <faq@xemacs.org>.
Please make sure that `XEmacs FAQ' appears on the Subject: line. If
you think you have a better way of answering a question, or think a
* Q2.1.21:: Every so often the XEmacs frame freezes.
* Q2.1.22:: XEmacs seems to take a really long time to do some things.
* Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later.
+* Q2.1.24:: XEmacs won't start without network. (NEW)
\1f
File: xemacs-faq.info, Node: Q2.0.1, Next: Q2.0.2, Prev: Installation, Up: Installation
or in some other strange cases.
\1f
-File: xemacs-faq.info, Node: Q2.1.23, Prev: Q2.1.22, Up: Installation
+File: xemacs-faq.info, Node: Q2.1.23, Next: Q2.1.24, Prev: Q2.1.22, Up: Installation
Q2.1.23: Movemail on Linux does not work for XEmacs 19.15 and later.
---------------------------------------------------------------------
#define MAIL_USE_FLOCK
+\1f
+File: xemacs-faq.info, Node: Q2.1.24, Prev: Q2.1.23, Up: Installation
+
+Q2.1.24: XEmacs won't start without network. (NEW)
+---------------------------------------------------
+
+ Q2.1.23: Movemail on Linux does not work for XEmacs 19.15 and later.
+
+ If XEmacs starts when you're on the network, but fails when you're
+not on the network, you may be missing a "localhost" entry in your
+`/etc/hosts' file. The file should contain an entry like:
+
+ 127.0.0.1 localhost
+
+ Add that line, and XEmacs will be happy.
+
+1999-12-24 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.25 is released.
+
+1999-12-21 Martin Buchholz <martin@xemacs.org>
+
+ * fakemail.c (cuserid): ((expr)) ==> (expr)
+
+ * fakemail.c (xmalloc): ANSIfy.
+
+1999-12-14 Martin Buchholz <martin@xemacs.org>
+
+ * config.values.sh: Only update config.values.in if changed.
+ No external dependencies except perl.
+ No temporary files.
+
1999-12-14 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.24 is released.
-#! /bin/sh
+: #-*- Perl -*-
+eval 'exec perl -w -S $0 ${1+"$@"}' # Portability kludge
+ if 0;
+
# config.values.sh --- create config.values.in from ../configure
# Author: Martin Buchholz
## by an XEmacs Maintainer (consider yourself so blessed, if you are
## actually reading this commentary).
##
-if test ! -r ./configure; then
- cd ..
- if test ! -r ./configure; then
- echo "Can't find configure!";
- exit 1;
- fi
-fi
-
-exec < ./configure > "lib-src/config.values.in"
-cat <<\EOF
-;;; Do not edit this file!
+
+if (! -r "./configure") {
+ chdir ".." or die "Can't chdir: $!";
+ if (! -r "./configure") {
+ die "Can't find configure!";
+ }
+}
+
+sub FileContents {
+ local $/ = undef; # Slurp mode
+ open (FILE, "< $_[0]") or die "$_[0]: $!";
+ my $contents = <FILE>;
+ close FILE or die "$_[0]: $!";
+ return $contents;
+}
+
+my $configure_contents = FileContents "./configure";
+my $cvi_contents = FileContents "lib-src/config.values.in";
+
+my $new_cvi_contents =
+";;; Do not edit this file!
;;; This file was automatically generated, by the config.values.sh script,
;;; from configure, which was itself automatically generated from configure.in.
;;;
;;; Variables defined in configure by AC_SUBST follow:
;;; (These are used in Makefiles)
-EOF
-sed -n '/^s%@\([A-Za-z_][A-Za-z_]*\)@%\$\1%g$/ {
- s/^s%@\([A-Za-z_][A-Za-z_]*\)@%\$\1%g$/\1 "@\1@"/
- p
-}' | \
-sort -u
-cat <<\EOF
+";
+
+my %done;
+for my $var (sort { $a cmp $b }
+ $configure_contents =~
+ /^s\%\@([A-Za-z0-9_]+)\@\%\$[A-Za-z0-9_]+\%g/mg) {
+ $new_cvi_contents .= "$var \"\@$var\@\"\n" unless exists $done{$var};
+ $done{$var} = 1;
+}
+$new_cvi_contents .= "
;;; Variables defined in configure by AC_DEFINE and AC_DEFINE_UNQUOTED follow:
;;; (These are used in C code)
-EOF
+";
+
+if ($cvi_contents ne $new_cvi_contents) {
+ unlink "lib-src/config.values.in";
+ open (CVI, "> lib-src/config.values.in")
+ or die "lib-src/config.values.in: $!";
+ print CVI $new_cvi_contents;
+ close CVI
+ or die "lib-src/config.values.in: $!";
+}
extern unsigned short geteuid ();
static struct passwd *my_entry;
#define cuserid(s) \
-(my_entry = getpwuid (((int) geteuid ())), \
+(my_entry = getpwuid ((int) geteuid ()), \
my_entry->pw_name)
#endif
\f
static char *
xmalloc (size_t size)
{
- char *result = malloc (((unsigned) size));
+ char *result = (char *) malloc (size);
if (result == ((char *) NULL))
fatal ("virtual memory exhausted", (char *) 0);
return result;
+1999-12-24 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.25 is released.
+
+1999-12-24 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
+
+ * hyper-apropos.el (hyper-apropos): Toggle
+ hyper-apropos-programming-apropos correctly.
+ Set REGEXP when user accepts default value.
+
+1999-12-22 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
+
+ * minibuf.el (read-from-minibuffer): Bind minibuffer-default.
+ (read-file-name-2): Use DEFAULT argument of read-from-minibuffer.
+
+1999-12-22 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
+
+ * mule/mule-category.el (undefined-category-designator):
+ Return char instead of character. Search for undefined one.
+ (describe-category): Use with-displaying-help-buffer.
+
+1999-12-21 Martin Buchholz <martin@xemacs.org>
+
+ * byte-optimize.el (byte-optimize-plus):
+ Optimize (+ 1) to 1 instead of (1+ nil).
+
+ * files.el (basic-save-buffer): Rewrite for clarity. Use (char-before).
+
+ * byte-optimize.el (byte-compile-butlast): Remove. Use butlast instead.
+
+ * byte-optimize.el (byte-optimize-char-before): New function.
+ Remove performance penalty for using (char-before) instead of (char-after).
+
+1999-12-20 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
+
+ * mule/mule-category.el (char-category-list): Return character
+ instead of integer.
+
+1999-12-17 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
+
+ * minibuf.el (read-buffer): Check default is buffer object.
+
+1999-11-25 Andy Piper <andy@xemacs.org>
+
+ * cus-edit.el (custom-buffer-create-buttons): Use native widgets
+ for buttons.
+
+1999-12-16 Andreas Jaeger <aj@suse.de>
+
+ * package-get.el (package-get-maybe-save-index): Fixed typo.
+ Patch by Jeff Miller <jmiller@smart.net>.
+
+1999-12-13 Charles G Waldman <cgw@alum.mit.edu>
+
+ * gnuserv.el (gnuserv-process-filter): don't call
+ gnuserv-write-to-client when gnuserv-current-client is nil
+
1999-12-14 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.24 is released.
completing-read returns.
(describe-variable): Ditto.
-1999-11-16 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-11-16 Adrian Aichner <adrian@xemacs.org>
* hyper-apropos.el (hyper-apropos-this-symbol): Handle
`hyper-apropos-help-mode' here to find symbol to customize
* files.el (recover-file): Don't use ls under windows for revert buffer.
-1999-09-25 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-09-25 Adrian Aichner <adrian@xemacs.org>
* package-get.el (package-get-download-menu): Make menu really
toggle download sites.
Installation.el needs to be loaded before `dump-paths', otherwise
the dumping process won't find it.
-1999-03-13 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-03-13 Adrian Aichner <adrian@xemacs.org>
* dumped-lisp.el (preloaded-file-list): Load Installation.el after
subr so that we can use `replace-in-string' in Installation.el to
* x-faces.el (x-init-face-from-resources):
Only set fonts in the 'x locale.
-1999-03-04 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-03-04 Adrian Aichner <adrian@xemacs.org>
* package-ui.el (pui-install-selected-packages): Don't throw on
`package-admin-delete-binary-package' returning nil since it's
* dumped-lisp.el (preloaded-file-list): Core mule files moved out
of mule-base into lisp/mule.
-1999-02-10 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-02-10 Adrian Aichner <adrian@xemacs.org>
* process.el (exec-to-string): Use `shell-command-switch' in place
of hard-wired "-c" (for WindowsNT).
* about.el (about-url-alist): Update my entry.
(xemacs-hackers): Ditto.
-1999-01-14 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-01-14 Adrian Aichner <adrian@xemacs.org>
* buffer.el (switch-to-buffer): Fixing documentation.
* minibuf.el (minibuffer-completion-table): ditto.
* subr.el (buffer-substring-no-properties): Comment out.
-1998-11-07 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-11-07 Adrian Aichner <adrian@xemacs.org>
* msw-faces.el (mswindows-find-smaller-font): Turning font names
into font instances first, like `x-frob-font-size' does.
* ldap.el (ldap-host-parameters-alist): New name of
`ldap-host-parameters-plist'
-1998-06-26 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-06-26 Adrian Aichner <adrian@xemacs.org>
* package-get.el: Using (require 'package-get-base), now that it
provides itself. Consequently removed all instances of (load
(font-lock-match-c++-style-declaration-item-and-skip-to-next):
Let declaration items contain non-word symbol characters.
-1998-06-15 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-06-15 Adrian Aichner <adrian@xemacs.org>
* package-get.el (package-get-package-provider): Added autoload
cookie. Loading "package-get-base.el" in ALL functions that use
* dumped-lisp.el (preloaded-file-list): Added msw-mouse.el
-1998-05-17 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-05-17 Adrian Aichner <adrian@xemacs.org>
* itimer.el (activate-itimer): Fixed usage of integers
as argument to `concat'.
;; Copyright (C) 1997 Adrian Aichner
-;; Author: Adrian Aichner, Teradyne GmbH Munich <aichner@ecf.teradyne.com>
-;; Date: Sun., Apr. 20, 1997.
+;; Author: Adrian Aichner <adrian@xemacs.org>
+;; Date: Sun., Apr. 20, 1997, 1998, 1999.
;; Version: 1.35
;; Keywords: internal
(setq form (byte-optimize-delay-constants-math form 1 '+))
(if (memq 0 form) (setq form (delq 0 (copy-sequence form))))
;;(setq form (byte-optimize-associative-two-args-math form))
- (cond ((null (cdr form))
- (condition-case ()
- (eval form)
- (error form)))
-
- ;; `add1' and `sub1' are a marginally fewer instructions
- ;; than `plus' and `minus', so use them when possible.
- ((and (null (nthcdr 3 form))
- (eq (nth 2 form) 1))
- (list '1+ (nth 1 form))) ; (+ x 1) --> (1+ x)
- ((and (null (nthcdr 3 form))
- (eq (nth 1 form) 1))
- (list '1+ (nth 2 form))) ; (+ 1 x) --> (1+ x)
- ((and (null (nthcdr 3 form))
- (eq (nth 2 form) -1))
- (list '1- (nth 1 form))) ; (+ x -1) --> (1- x)
- ((and (null (nthcdr 3 form))
- (eq (nth 1 form) -1))
- (list '1- (nth 2 form))) ; (+ -1 x) --> (1- x)
-
-;;; It is not safe to delete the function entirely
-;;; (actually, it would be safe if we know the sole arg
-;;; is not a marker).
-;; ((null (cdr (cdr form))) (nth 1 form))
- (t form)))
+ (case (length (cdr form))
+ ((0)
+ (condition-case ()
+ (eval form)
+ (error form)))
+
+ ;; `add1' and `sub1' are a marginally fewer instructions
+ ;; than `plus' and `minus', so use them when possible.
+ ((2)
+ (cond
+ ((eq (nth 1 form) 1) `(1+ ,(nth 2 form))) ; (+ 1 x) --> (1+ x)
+ ((eq (nth 2 form) 1) `(1+ ,(nth 1 form))) ; (+ x 1) --> (1+ x)
+ ((eq (nth 1 form) -1) `(1- ,(nth 2 form))) ; (+ -1 x) --> (1- x)
+ ((eq (nth 2 form) -1) `(1- ,(nth 1 form))) ; (+ x -1) --> (1- x)
+ (t form)))
+
+ ;; It is not safe to delete the function entirely
+ ;; (actually, it would be safe if we know the sole arg
+ ;; is not a marker).
+ ;; ((null (cdr (cdr form))) (nth 1 form))
+ (t form)))
(defun byte-optimize-minus (form)
;; Put constants at the end, except the last constant.
(setcar form (list '+ (car form) (car form)))))
(form))))))
-(defsubst byte-compile-butlast (form)
- (nreverse (cdr (reverse form))))
-
(defun byte-optimize-divide (form)
(setq form (byte-optimize-delay-constants-math form 2 '*))
(let ((last (car (reverse (cdr (cdr form))))))
(error nil)))
(setq form (list 'progn (/ (nth 1 form) last)))))
((= last 1)
- (setq form (byte-compile-butlast form)))
+ (setq form (butlast form)))
((numberp (nth 1 form))
(setq form (cons (car form)
(cons (/ (nth 1 form) last)
- (byte-compile-butlast (cdr (cdr form)))))
+ (butlast (cdr (cdr form)))))
last nil))))
(cond
;;; ((null (cdr (cdr form)))
(append '(progn) (cdr (cdr form)) '(0)))
((eq last -1)
(list '- (if (nthcdr 3 form)
- (byte-compile-butlast form)
+ (butlast form)
(nth 1 form))))
(form))))
(put 'if 'byte-optimizer 'byte-optimize-if)
(put 'while 'byte-optimizer 'byte-optimize-while)
+;; Remove any reason for avoiding `char-before'.
+(defun byte-optimize-char-before (form)
+ `(char-after (1- ,(or (nth 1 form) '(point))) ,@(cdr (cdr form))))
+
+(put 'char-before 'byte-optimizer 'byte-optimize-char-before)
+
;; byte-compile-negation-optimizer lives in bytecomp.el
;(put '/= 'byte-optimizer 'byte-compile-negation-optimizer)
(put 'atom 'byte-optimizer 'byte-compile-negation-optimizer)
(widget-insert "\nOperate on everything in this buffer:\n ")
(widget-create 'push-button
:tag "Set"
- :tag-glyph '("set-up" "set-down")
:help-echo "\
Make your editing in this buffer take effect for this session"
:action (lambda (widget &optional event)
(widget-insert " ")
(widget-create 'push-button
:tag "Save"
- :tag-glyph '("save-up" "save-down")
:help-echo "\
Make your editing in this buffer take effect for future Emacs sessions"
:action (lambda (widget &optional event)
(widget-insert " ")
(widget-create 'push-button
:tag "Done"
- :tag-glyph '("done-up" "done-down")
:help-echo "Remove the buffer"
:action (lambda (widget &optional event)
(Custom-buffer-done)))
(error "Save not confirmed"))
(save-restriction
(widen)
- (and (> (point-max) 1)
- (/= (char-after (1- (point-max))) ?\n)
- (not (and (eq selective-display t)
- (= (char-after (1- (point-max))) ?\r)))
- (or (eq require-final-newline t)
- (and require-final-newline
- (y-or-n-p
- (format "Buffer %s does not end in newline. Add one? "
- (buffer-name)))))
- (save-excursion
- (goto-char (point-max))
- (insert ?\n)))
- ;;
+
+ ;; Add final newline if required. See `require-final-newline'.
+ (when (and (not (eq (char-before (point-max)) ?\n)) ; common case
+ (char-before (point-max)) ; empty buffer?
+ (not (and (eq selective-display t)
+ (eq (char-before (point-max)) ?\r)))
+ (or (eq require-final-newline t)
+ (and require-final-newline
+ (y-or-n-p
+ (format "Buffer %s does not end in newline. Add one? "
+ (buffer-name))))))
+ (save-excursion
+ (goto-char (point-max))
+ (insert ?\n)))
+
;; Run the write-file-hooks until one returns non-null.
;; Bind after-save-hook to nil while running the
;; write-file-hooks so that if this function is called
;; In case of an error, write the description to the
;; client, and then signal it.
(error (setq gnuserv-string "")
- (gnuserv-write-to-client gnuserv-current-client oops)
+ (when gnuserv-current-client
+ (gnuserv-write-to-client gnuserv-current-client oops))
(setq gnuserv-current-client nil)
(signal (car oops) (cdr oops)))
(quit (setq gnuserv-string "")
- (gnuserv-write-to-client gnuserv-current-client oops)
+ (when gnuserv-current-client
+ (gnuserv-write-to-client gnuserv-current-client oops))
(setq gnuserv-current-client nil)
(signal 'quit nil)))
(setq gnuserv-string "")))
(setq hyper-apropos-prev-wconfig (current-window-configuration)))
(if (string= "" regexp)
(if (get-buffer hyper-apropos-apropos-buf)
- (if toggle-apropos
- (hyper-apropos-toggle-programming-flag)
- (message "Using last search results"))
+ (progn
+ (setq regexp hyper-apropos-last-regexp)
+ (if toggle-apropos
+ (hyper-apropos-toggle-programming-flag)
+ (message "Using last search results")))
(error "Be more specific..."))
(set-buffer (get-buffer-create hyper-apropos-apropos-buf))
(setq buffer-read-only nil)
(erase-buffer)
(if toggle-apropos
- (set (make-local-variable 'hyper-apropos-programming-apropos)
- (not (default-value 'hyper-apropos-programming-apropos))))
+ (if (local-variable-p 'hyper-apropos-programming-apropos
+ (current-buffer))
+ (setq hyper-apropos-programming-apropos
+ (not hyper-apropos-programming-apropos))
+ (set (make-local-variable 'hyper-apropos-programming-apropos)
+ (not (default-value 'hyper-apropos-programming-apropos)))))
(let ((flist (apropos-internal regexp
(if hyper-apropos-programming-apropos
#'fboundp
;; `M-x doctor' makes history a local variable, and thus
;; our binding above is buffer-local and doesn't apply
;; once we switch buffers!!!! We demand better scope!
- (_history_ history))
+ (_history_ history)
+ (minibuffer-default default))
(unwind-protect
(progn
(set-buffer (reset-buffer buffer))
(while (progn
(setq result (completing-read prompt alist nil require-match
nil 'buffer-history
- (if default (buffer-name default))))
+ (if (bufferp default)
+ (buffer-name default)
+ default)))
(cond ((not (equal result ""))
nil)
((not require-match)
read-file-name-map
read-file-name-must-match-map)
nil
- history))
- ))
+ history
+ nil
+ default))))
;;; ;; Kludge! Put "/foo/bar" on history rather than "/default//foo/bar"
;;; (let ((hist (cond ((not history) 'minibuffer-history)
;;; ((consp history) (car history))
"Return an undefined category designator, or nil if there are none."
(let ((a 32) found)
(while (and (< a 127) (not found))
- (if (gethash a defined-category-hashtable)
- (setq found a))
+ (unless (gethash a defined-category-hashtable)
+ (setq found (make-char 'ascii a)))
(setq a (1+ a)))
found))
(let ((a 32) list)
(while (< a 127)
(if (= 1 (aref vec (- a 32)))
- (setq list (cons a list)))
+ (setq list (cons (make-char 'ascii a) list)))
(setq a (1+ a)))
(nreverse list)))))
"Describe the category specifications in the category table.
The descriptions are inserted in a buffer, which is then displayed."
(interactive)
- (with-output-to-temp-buffer "*Help*"
- (describe-category-table (category-table) standard-output)))
+ (with-displaying-help-buffer
+ (lambda ()
+ (describe-category-table (category-table) standard-output))))
(defun describe-category-table (table stream)
(let (first-char
(md5 (current-buffer)))))
(unless (and location (file-writable-p location))
(setq location package-get-user-index-filename))
- (when (y-or-n-p (concat "Update package index in" location "? "))
+ (when (y-or-n-p (concat "Update package index in " location "? "))
(write-file location))))))
+1999-12-24 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.25 is released.
+
+1999-12-23 Andy Piper <andy@xemacs.org>
+
+ * lwlib.c (lw_copy_widget_value_args): don't create empty
+ widget_args just because someone might use them later. This makes
+ all widgets look like they've changed.
+
+1999-12-22 Andy Piper <andy@xemacs.org>
+
+ * xlwtabs.c: Fix for X11R5 from Damon Lipparelli
+ <lipp@primus.com>.
+
+1999-12-21 Martin Buchholz <martin@xemacs.org>
+
+ * xlwscrollbar.c (seg_pixel_sizes): ((expr)) ==> (expr)
+
+1999-12-12 Daniel Pittman <daniel@danann.net>
+
+ * lwlib-Xaw.c:
+ * xlwcheckbox.c:
+ * xlwgauge.h:
+ * xlwgaugeP.h:
+ * xlwradio.c:
+ * xlwradio.h:
+ * xlwradioP.h:
+ Clean up Athena widget support:
+ - Athena headers now use dynamic include paths.
+
+1999-12-08 Andy Piper <andy@xemacs.org>
+
+ * xlwtabs.c: sync with Tabs 2.2.
+ * xlwtabP.h: ditto.
+
1999-12-14 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.24 is released.
#undef NEED_ATHENA
#undef NEED_LUCID
+/* The path to the Athena widgets - the usual value is `X11/Xaw' */
+#undef ATHENA_H_PATH
+
+/* For use in #include statements. This extra level of macro indirection
+ is necessary because you can't use macros directly within <> or "" */
+#define ATHENA_INCLUDE(header_file) <ATHENA_H_PATH/header_file>
+
+
#endif /* _LWLIB_CONFIG_H_ */
#include <X11/Shell.h>
#ifdef LWLIB_SCROLLBARS_ATHENA
-#include <X11/Xaw/Scrollbar.h>
+#include ATHENA_INCLUDE(Scrollbar.h)
#endif
#ifdef LWLIB_DIALOGS_ATHENA
-#include <X11/Xaw/Dialog.h>
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/Command.h>
-#include <X11/Xaw/Label.h>
+#include ATHENA_INCLUDE(Dialog.h)
+#include ATHENA_INCLUDE(Form.h)
+#include ATHENA_INCLUDE(Command.h)
+#include ATHENA_INCLUDE(Label.h)
#endif
#ifdef LWLIB_WIDGETS_ATHENA
-#include <X11/Xaw/Toggle.h>
+#include ATHENA_INCLUDE(Toggle.h)
#include "xlwradio.h"
#include "xlwcheckbox.h"
#include "xlwgauge.h"
#ifndef NEED_MOTIF
-#include <X11/Xaw/AsciiText.h>
+#include ATHENA_INCLUDE(AsciiText.h)
#endif
#endif
#include <X11/Xatom.h>
xaw_update_one_widget (widget_instance *instance, Widget widget,
widget_value *val, Boolean deep_p)
{
- if (val->nargs)
- XtSetValues (widget, val->args, val->nargs);
+ if (val->args && val->args->nargs)
+ XtSetValues (widget, val->args->args, val->args->nargs);
if (0)
;
}
#endif /* LWLIB_DIALOGS_ATHENA */
#ifdef LWLIB_WIDGETS_ATHENA
- else if (XtClass (widget) == labelWidgetClass)
+ else if (XtIsSubclass (widget, labelWidgetClass))
{
Arg al [1];
XtSetArg (al [0], XtNlabel, val->value);
#endif
#ifdef NEED_MOTIF
#include "lwlib-Xm.h"
+#ifdef LWLIB_WIDGETS_MOTIF
+#include <Xm/Xm.h>
+#endif
#endif
#ifdef NEED_ATHENA
#include "lwlib-Xaw.h"
\f
/* Forward declarations */
-static void
-instantiate_widget_instance (widget_instance *instance);
+static void instantiate_widget_instance (widget_instance *instance);
+static void free_widget_value_args (widget_value* wv);
\f
/* utility functions for widget_instance and widget_info */
free_widget_value_tree (wv->contents);
wv->contents = (widget_value *) 0xDEADBEEF;
}
- if (wv->args && wv->nargs)
- {
- if (wv->free_args)
- free (wv->args);
- wv->args = (ArgList) 0xDEADBEEF;
- wv->nargs = 0;
- wv->free_args = 0;
- }
+
+ free_widget_value_args (wv);
+
if (wv->next)
{
free_widget_value_tree (wv->next);
#endif /* NEED_SCROLLBARS */
+#ifdef HAVE_WIDGETS
+/*
+ * Return true if old->args was not equivalent
+ * to new->args.
+ */
+static Boolean
+merge_widget_value_args (widget_value *old, widget_value *new)
+{
+ Boolean changed = False;
+
+ if (new->args && !old->args)
+ {
+ lw_copy_widget_value_args (new, old);
+ changed = True;
+ }
+ /* Generally we don't want to lose values that are already in the
+ widget. */
+ else if (!new->args && old->args)
+ {
+ lw_copy_widget_value_args (old, new);
+ changed = True;
+ }
+ else if (new->args && old->args)
+ {
+ /* #### Do something more sensible here than just copying the
+ new values (like actually merging the values). */
+ free_widget_value_args (old);
+ lw_copy_widget_value_args (new, old);
+ changed = True;
+ }
+
+ return changed;
+}
+#endif /* HAVE_WIDGETS */
+
/* Make a complete copy of a widget_value tree. Store CHANGE into
the widget_value tree's `change' field. */
copy->next = copy_widget_value_tree (val->next, change);
copy->toolkit_data = NULL;
copy->free_toolkit_data = False;
- if (val->nargs)
- {
- copy->args = (ArgList)malloc (sizeof (Arg) * val->nargs);
- memcpy (copy->args, val->args, sizeof(Arg) * val->nargs);
- copy->nargs = val->nargs;
- copy->free_args = True;
- }
+
+ lw_copy_widget_value_args (val, copy);
#ifdef NEED_SCROLLBARS
copy_scrollbar_values (val, copy);
#endif
change = max (change, INVISIBLE_CHANGE);
val1->call_data = val2->call_data;
}
+#ifdef HAVE_WIDGETS
+ if (merge_widget_value_args (val1, val2))
+ {
+ EXPLAIN (val1->name, change, VISIBLE_CHANGE, "widget change", 0, 0);
+ change = max (change, VISIBLE_CHANGE);
+ }
+#endif
+
#ifdef NEED_SCROLLBARS
if (merge_scrollbar_values (val1, val2))
{
void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset)
{
int i;
- if (wv->nargs && wv->args)
+ if (wv->args && wv->args->nargs)
{
- for (i = 0; i<wv->nargs; i++)
+ for (i = 0; i<wv->args->nargs; i++)
{
- addto[i + *offset] = wv->args[i];
+ addto[i + *offset] = wv->args->args[i];
}
- *offset += wv->nargs;
+ *offset += wv->args->nargs;
+ }
+}
+
+void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value)
+{
+ if (!wv->args)
+ {
+ wv->args = (widget_args *) malloc (sizeof (widget_args));
+ memset (wv->args, 0, sizeof (widget_args));
+ wv->args->ref_count = 1;
+ wv->args->nargs = 0;
+ wv->args->args = (ArgList) malloc (sizeof (Arg) * 10);
+ memset (wv->args->args, 0, sizeof (Arg) * 10);
+ }
+
+ if (wv->args->nargs > 10)
+ return;
+
+ XtSetArg (wv->args->args [wv->args->nargs], name, value); wv->args->nargs++;
+}
+
+static void free_widget_value_args (widget_value* wv)
+{
+ if (wv->args)
+ {
+ if (--wv->args->ref_count <= 0)
+ {
+#ifdef LWLIB_WIDGETS_MOTIF
+ int i;
+ for (i = 0; i < wv->args->nargs; i++)
+ {
+ if (!strcmp (wv->args->args[i].name, XmNfontList))
+ XmFontListFree ((XmFontList)wv->args->args[i].value);
+ }
+#endif
+ free (wv->args->args);
+ free (wv->args);
+ wv->args = (widget_args*)0xDEADBEEF;
+ }
+ }
+}
+
+void lw_copy_widget_value_args (widget_value* val, widget_value* copy)
+{
+ if (!val->args)
+ {
+ if (copy->args)
+ free_widget_value_args (copy);
+ copy->args = 0;
+ }
+ else
+ {
+ copy->args = val->args;
+ copy->args->ref_count++;
}
}
int scrollbar_x, scrollbar_y;
} scrollbar_values;
+typedef struct _widget_args
+{
+ /* some things are only possible at creation time. args are applied
+ to widgets at creation time. */
+ ArgList args;
+ int nargs;
+ /* Copying args is impossible so we make the caller give us heap allocated
+ args and free them when on-one wants them any more. */
+ int ref_count;
+} widget_args;
+
typedef struct _widget_value
{
/* This slot is only partially utilized right now. */
/* data defining a scrollbar; only valid if type == "scrollbar" */
scrollbar_values *scrollbar_data;
+ /* A reference counted arg structure. */
+ struct _widget_args *args;
/* we resource the widget_value structures; this points to the next
one on the free list if this one has been deallocated. */
struct _widget_value *free_list;
- /* some things are only possible at creation time. args are applied
- to widgets at creation time. */
- ArgList args;
- int nargs;
- Boolean free_args;
} widget_value;
void lw_pop_up_all_widgets (LWLIB_ID id);
void lw_pop_down_all_widgets (LWLIB_ID id);
void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset);
+void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value);
+void lw_copy_widget_value_args (widget_value* copy, widget_value* val);
widget_value *malloc_widget_value (void);
void free_widget_value (widget_value *);
#include <X11/IntrinsicP.h>
#include <X11/StringDefs.h>
-#include <X11/Xaw/XawInit.h>
+#include ATHENA_INCLUDE(XawInit.h)
#include "../src/xmu.h"
#include "xlwcheckboxP.h"
#include <X11/IntrinsicP.h>
#include <X11/Xatom.h>
#include <X11/StringDefs.h>
-#include <X11/Xaw/XawInit.h>
+#include ATHENA_INCLUDE(XawInit.h)
#include "xlwgaugeP.h"
#include "../src/xmu.h"
#ifdef HAVE_XMU
*
***********************************************************************/
-#include <X11/Xaw/Label.h>
+#include ATHENA_INCLUDE(Label.h)
/* Resources:
***********************************************************************/
#include "xlwgauge.h"
-#include <X11/Xaw/LabelP.h>
+#include ATHENA_INCLUDE(LabelP.h)
/* New fields for the Gauge widget class record */
#include <X11/IntrinsicP.h>
#include <X11/StringDefs.h>
-#include <X11/Xaw/XawInit.h>
+#include ATHENA_INCLUDE(XawInit.h)
#include "../src/xmu.h"
#include "xlwradioP.h"
*
***********************************************************************/
-#include <X11/Xaw/Toggle.h>
+#include ATHENA_INCLUDE(Toggle.h)
/* Resources:
#define _XawRadioP_h
#include "xlwradio.h"
-#include <X11/Xaw/ToggleP.h>
+#include ATHENA_INCLUDE(ToggleP.h)
/***********************************************************************
*
if (ss < SS_MIN)
{
/* add a percent amount for integer rounding */
- float tmp = ((((float) (SS_MIN - ss) * (float) value)) / total) + 0.5;
+ float tmp = (((float) (SS_MIN - ss) * (float) value) / total) + 0.5;
above -= (int) tmp;
ss = SS_MIN;
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
- /* Synched up with: Tabs.c 1.25 */
+ /* Synched up with: Tabs.c 1.27 */
/*
* Tabs.c - Index Tabs composite widget
* the frame.
*/
-/* TODO: min child height = tab height
- *
+/*
+ * TODO: min child height = tab height
*/
#include <config.h>
static void TabsDestroy();
static void TabsRealize();
static Boolean TabsSetValues();
+static Boolean TabsAcceptFocus();
static XtGeometryResult TabsQueryGeometry();
static XtGeometryResult TabsGeometryManager();
static void TabsChangeManaged();
static void TabsResize( Widget w) ;
static void TabsExpose( Widget w, XEvent *event, Region region) ;
static Boolean TabsSetValues(Widget, Widget, Widget, ArgList, Cardinal *) ;
+static Boolean TabsAcceptFocus(Widget, Time *);
static Boolean TabsConstraintSetValues(Widget, Widget, Widget,
ArgList, Cardinal *) ;
static XtGeometryResult TabsQueryGeometry(Widget,
static int TabLayout( TabsWidget, int wid, int hgt, Dimension *r_hgt,
Bool query_only) ;
static void GetPreferredSizes(TabsWidget) ;
-static void MaxChild(TabsWidget) ;
+static void MaxChild(TabsWidget, Widget except, Dimension, Dimension) ;
static void TabsShuffleRows( TabsWidget tw) ;
static int PreferredSize( TabsWidget,
Dimension *reply_width, Dimension *reply_height,
/* num_resources */ XtNumber(resources),
/* xrm_class */ NULLQUARK,
/* compress_motion */ TRUE,
- /* compress_exposure */ TRUE,
+#if XtSpecificationRelease < 6
+ /* compress_exposure */ XtExposeCompressMaximal,
+#else
+ /* compress_exposure */ XtExposeCompressMaximal|XtExposeNoRegion,
+#endif
/* compress_enterleave*/ TRUE,
- /* visible_interest */ FALSE,
+ /* visible_interest */ TRUE,
/* destroy */ TabsDestroy,
/* resize */ TabsResize,
/* expose */ TabsExpose,
/* set_values_hook */ NULL,
/* set_values_almost */ XtInheritSetValuesAlmost,
/* get_values_hook */ NULL,
- /* accept_focus */ NULL,
+ /* accept_focus */ TabsAcceptFocus,
/* version */ XtVersion,
/* callback_private */ NULL,
/* tm_table */ defaultTranslations,
newTw->tabs.grey50 = None ;
newTw->tabs.needs_layout = False ;
-
+
newTw->tabs.hilight = NULL ;
#ifdef NEED_MOTIF
{
TabsConstraints tab = (TabsConstraints) new->core.constraints ;
tab->tabs.greyAlloc = False ; /* defer allocation of pixel */
- tab->tabs.queried = False ; /* defer size query */
getBitmapInfo((TabsWidget)XtParent(new), tab) ;
TabWidth(new) ;
* to the bottom row.
*/
+ tw->tabs.needs_layout = False ;
+
if( num_children > 0 && tw->composite.children != NULL )
{
/* Loop through the tabs and assign rows & x positions */
tw->tabs.child_width = cw = tw->core.width - 2 * SHADWID ;
tw->tabs.child_height = ch =
- tw->core.height - tw->tabs.tab_total - 2 * SHADWID ;
+ tw->core.height - tw->tabs.tab_total - 2 * SHADWID ;
for(i=0, childP=tw->composite.children;
- i < num_children;
+ i < num_children;
++i, ++childP)
if( XtIsManaged(*childP) )
{
tab = (TabsConstraints) (*childP)->core.constraints ;
- bw = tab->tabs.bwid ;
+ bw = (*childP)->core.border_width ;
XtConfigureWidget(*childP, SHADWID,tw->tabs.tab_total+SHADWID,
cw-bw*2,ch-bw*2, bw) ;
}
- if( XtIsRealized(w) )
- {
- XClearWindow(XtDisplay((Widget)tw), XtWindow((Widget)tw)) ;
- tw->tabs.needs_layout = False ;
- XtClass(tw)->core_class.expose((Widget)tw,NULL,None) ;
- }
+ if( XtIsRealized(w) ) {
+ XClearWindow(XtDisplay((Widget)tw), XtWindow((Widget)tw)) ;
+ /* should not be necessary to explicitly repaint after a
+ * resize, but XEmacs folks tell me it is.
+ */
+ XtClass(tw)->core_class.expose((Widget)tw,NULL,None) ;
+ }
}
-
- tw->tabs.needs_layout = False ;
} /* Resize */
}
+static Boolean
+TabsAcceptFocus(Widget w, Time *t)
+{
+ if( !w->core.being_destroyed && XtIsRealized(w) &&
+ XtIsSensitive(w) && XtIsManaged(w) && w->core.visible )
+ {
+ Widget p ;
+ for(p = XtParent(w); !XtIsShell(p); p = XtParent(p)) ;
+ XtSetKeyboardFocus(p,w) ;
+ return True ;
+ }
+ else
+ return False ;
+}
+
+
/*
* Return preferred size. Happily accept anything >= our preferred size.
(!(mode & CWHeight) || intended->height == w->core.height) )
return XtGeometryNo ;
-#ifdef COMMENT
if( (!(mode & CWWidth) || intended->width >= preferred->width) &&
(!(mode & CWHeight) || intended->height >= preferred->height) )
return XtGeometryYes;
-#endif /* COMMENT */
return XtGeometryAlmost;
}
Dimension s = SHADWID ;
TabsConstraints tab = (TabsConstraints)w->core.constraints;
XtGeometryResult result ;
+ Dimension rw, rh ;
/* Position request always denied */
req->border_width == w->core.border_width )
return XtGeometryNo ;
- /* updated cached preferred size of the child */
- tab->tabs.bwid = req->border_width ;
- tab->tabs.wid = req->width + req->border_width * 2 ;
- tab->tabs.hgt = req->height + req->border_width * 2 ;
- MaxChild(tw) ;
+ rw = req->width + 2 * req->border_width ;
+ rh = req->height + 2 * req->border_width ;
+
+ /* find out how big the children want to be now */
+ MaxChild(tw, w, rw, rh) ;
/* Size changes must see if the new size can be accommodated.
* size. A request to shrink will be accepted only if the
* new size is still big enough for all other children. A
* request to shrink that is not big enough for all children
- * returns an "almost" response with the new proposed size.
+ * returns an "almost" response with the new proposed size
+ * or a "no" response if unable to shrink at all.
+ *
* A request to grow will be accepted only if the Tabs parent can
* grow to accommodate.
*
if (req->request_mode & (CWWidth | CWHeight | CWBorderWidth))
{
- Dimension rw,rh ; /* child's requested width, height */
Dimension cw,ch ; /* children's preferred size */
Dimension aw,ah ; /* available size we can give child */
Dimension th ; /* space used by tabs */
Dimension wid,hgt ; /* Tabs widget size */
- rw = cw = tab->tabs.wid ;
- rh = ch = tab->tabs.hgt ;
+ cw = tw->tabs.max_cw ;
+ ch = tw->tabs.max_ch ;
- /* find out what the resulting preferred size would be */
+ /* find out what *my* resulting preferred size would be */
-#ifdef COMMENT
- MaxChild(tw, &cw, &ch) ;
-#endif /* COMMENT */
- PreferredSize2(tw,
- cw=tw->tabs.max_cw, ch=tw->tabs.max_ch, &wid, &hgt) ;
+ PreferredSize2(tw, cw, ch, &wid, &hgt) ;
- /* Ask to be resized to accommodate. */
+ /* Would my size change? If so, ask to be resized. */
if( wid != tw->core.width || hgt != tw->core.height )
{
result = XtMakeGeometryRequest((Widget)tw, &myrequest, &myreply) ;
- /* !$@# Box widget changes the core size even if QueryOnly
+ /* !$@# Athena Box widget changes the core size even if QueryOnly
* is set. I'm convinced this is a bug. At any rate, to work
* around the bug, we need to restore the core size after every
* query geometry request. This is only partly effective,
switch( result ) {
case XtGeometryYes:
case XtGeometryDone:
+ tw->tabs.needs_layout = True ;
break ;
case XtGeometryNo:
case XtGeometryAlmost:
wid = myreply.width ;
hgt = myreply.height ;
+ tw->tabs.needs_layout = True ;
+ break ;
}
}
if( tw->tabs.topWidget != NULL )
XtVaSetValues(tw->tabs.topWidget, XmNtraversalOn, True, 0) ;
#endif
-
-
-
}
if( !XtIsSubclass(w->core.parent, tabsWidgetClass) )
{
- char line[1024] ;
- sprintf(line, "XawTabsSetTop: widget \"%s\" is not the child of a tabs widget.", XtName(w)) ;
+ char line[256] ;
+ sprintf(line, "XawTabsSetTop: widget \"%.64s\" is not the child of a tabs widget.", XtName(w)) ;
XtAppWarning(XtWidgetToApplicationContext(w), line) ;
return ;
}
if( callCallbacks )
XtCallCallbackList(w, tw->tabs.popdownCallbacks,
- (XtPointer)tw->tabs.topWidget) ;
+ (XtPointer)tw->tabs.topWidget) ;
if( !XtIsRealized(w) ) {
tw->tabs.topWidget = w ;
{
if( tab->tabs.lbm_depth == 1 )
XCopyPlane(dpy, tab->tabs.left_bitmap, win,gc,
- 0,0, tab->tabs.lbm_width, tab->tabs.lbm_height,
+ 0,0, tab->tabs.lbm_width, tab->tabs.lbm_height,
x+tab->tabs.lbm_x, y+tab->tabs.lbm_y, 1L) ;
else
XCopyArea(dpy, tab->tabs.left_bitmap, win,gc,
- 0,0, tab->tabs.lbm_width, tab->tabs.lbm_height,
+ 0,0, tab->tabs.lbm_width, tab->tabs.lbm_height,
x+tab->tabs.lbm_x, y+tab->tabs.lbm_y) ;
}
\f
/* GEOMETRY UTILITIES */
+ /* Overview:
+ *
+ * MaxChild(): ask all children (except possibly one) their
+ * preferred sizes, set max_cw, max_ch accordingly.
+ *
+ * GetPreferredSizes(): ask all children their preferred sizes,
+ * set max_cw, max_ch accordingly.
+ *
+ * PreferredSize(): given max_cw, max_ch, return tabs widget
+ * preferred size. Iterate with other widths in order to get
+ * a reasonable aspect ratio.
+ *
+ * PreferredSize2(): Given child dimensions, return Tabs
+ * widget dimensions.
+ *
+ * PreferredSize3(): Same, except given child dimensions plus
+ * shadow.
+ */
+
- /* Compute the size of one child's tab. Positions will be computed
+ /* Compute the width of one child's tab. Positions will be computed
* elsewhere.
*
* height: font height + vertical_space*2 + shadowWid*2
{
tab->tabs.width += XTextWidth( font, lbl, (int)strlen(lbl) ) + iw ;
tab->tabs.l_y = (tw->tabs.tab_height +
- tw->tabs.font->max_bounds.ascent -
+ tw->tabs.font->max_bounds.ascent -
tw->tabs.font->max_bounds.descent)/2 ;
}
}
/* Find max preferred child size. Returned sizes include child
- * border widths. We only ever ask a child its preferred
- * size once. After that, the preferred size is updated only
- * if the child makes a geometry request.
+ * border widths.
*/
static void
GetPreferredSizes(TabsWidget tw)
{
- int i ;
- Widget *childP = tw->composite.children ;
- XtWidgetGeometry preferred ;
- TabsConstraints tab ;
- Dimension cw = 0, ch = 0 ;
-
- for(i=tw->tabs.displayChildren; --i >= 0; ++childP)
- if( XtIsManaged(*childP) )
- {
- tab = (TabsConstraints) (*childP)->core.constraints ;
- if( !tab->tabs.queried ) {
- (void) XtQueryGeometry(*childP, NULL, &preferred) ;
- tab->tabs.bwid = preferred.border_width ;
- tab->tabs.wid = preferred.width + preferred.border_width * 2 ;
- tab->tabs.hgt = preferred.height + preferred.border_width * 2 ;
- tab->tabs.queried = True ;
- }
- cw = Max(cw, tab->tabs.wid ) ;
- ch = Max(ch, tab->tabs.hgt ) ;
- }
- tw->tabs.max_cw = cw ;
- tw->tabs.max_ch = ch ;
+ MaxChild(tw, NULL, 0,0) ;
}
/* Find max preferred child size. Returned sizes include child
- * border widths. */
+ * border widths. If except is non-null, don't ask that one.
+ */
static void
-MaxChild(TabsWidget tw)
+MaxChild(TabsWidget tw, Widget except, Dimension cw, Dimension ch)
{
- Dimension cw,ch ; /* child width, height */
- int i ;
- Widget *childP = tw->composite.children ;
- TabsConstraints tab ;
-
- cw = ch = 0 ;
+ int i ;
+ Widget *childP = tw->composite.children ;
+ XtWidgetGeometry preferred ;
for(i=tw->composite.num_children; --i >=0; ++childP)
- if( XtIsManaged(*childP) )
+ if( XtIsManaged(*childP) && *childP != except )
{
- tab = (TabsConstraints) (*childP)->core.constraints ;
- cw = Max(cw, tab->tabs.wid ) ;
- ch = Max(ch, tab->tabs.hgt ) ;
+ (void) XtQueryGeometry(*childP, NULL, &preferred) ;
+ cw = Max(cw, preferred.width + preferred.border_width * 2 ) ;
+ ch = Max(ch, preferred.height + preferred.border_width * 2 ) ;
}
tw->tabs.max_cw = cw ;
}
- /* find preferred size. Ask children, find size of largest,
+ /* Find preferred size. Ask children, find size of largest,
* add room for tabs & return. This can get a little involved,
* as we don't want to have too many rows of tabs; we may widen
* the widget to reduce # of rows.
+ *
+ * This function requires that max_cw, max_ch already be set.
*/
static int
Dimension rwid,rhgt ;
int nrow ;
-
- /* find max desired child height */
-#ifdef COMMENT
- MaxChild(tw, &cw, &ch) ;
-#endif /* COMMENT */
-
wid = cw = tw->tabs.max_cw ;
hgt = ch = tw->tabs.max_ch ;
if( nrow > 2 && rhgt > rwid )
{
Dimension w0, w1 ;
+ int maxloop = 20 ;
/* step 1: start doubling size until it's too big */
do {
/* step 2: use Newton's method to find ideal size. Stop within
* 8 pixels.
*/
- while( w1 > w0 + 8 )
+ while( --maxloop > 0 && w1 > w0 + 8 )
{
wid = (w0+w1)/2 ;
nrow = PreferredSize2(tw, wid,hgt, &rwid,&rhgt) ;
if( tab->tabs.left_bitmap == None ||
!XGetGeometry(XtDisplay(tw), tab->tabs.left_bitmap, &root, &x, &y,
- &tab->tabs.lbm_width, &tab->tabs.lbm_height,
+ &tab->tabs.lbm_width, &tab->tabs.lbm_height,
&bw, &tab->tabs.lbm_depth) )
tab->tabs.lbm_width = tab->tabs.lbm_height = 0 ;
}
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-/* Synched up with: TabsP.h 1.7 */
+/* Synched up with: TabsP.h 1.8 */
/*
* TabsP.h - Private definitions for Index Tabs widget
Dimension width ; /* tab width */
Position x,y ; /* tab base position */
short row ; /* tab row */
- Dimension wid,hgt ; /* desired size */
- Dimension bwid ; /* desired border width */
- Boolean queried ; /* we've asked child it's pref. size */
Position l_x, l_y ; /* label position */
Position lbm_x, lbm_y ; /* bitmap position */
unsigned int lbm_width, lbm_height, lbm_depth ;
+1999-12-24 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.25 is released.
+
+1999-12-21 Martin Buchholz <martin@xemacs.org>
+
+ * lispref/text.texi (Near Point): Document `char-before'.
+
+1999-12-20 Adrian Aichner <adrian@xemacs.org>
+
+ * widget.texi: Fix typos and possessive singular errors. Break
+ long sentences for readability. Remove some redundant commas.
+
+1999-12-18 Martin Buchholz <martin@xemacs.org>
+
+ * lispref/functions.texi (Mapping Functions):
+ Warn about mapping functions modifying their sequences.
+
+1999-12-15 Sandra Wambold <wambold@xemacs.org>
+
+ * xemacs-faq.texi: link to matlab.el added; misc. address changes
+
1999-12-14 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.24 is released.
* xemacs-faq.texi (Q5.0.6): Describe `shell-multiple-shells'
-1999-08-01 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-08-01 Adrian Aichner <adrian@xemacs.org>
* xemacs/programs.texi (Balanced Editing): Remove broken
line-break.
* XEmacs 21.2.19 is released
-1999-07-10 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-07-10 Adrian Aichner <adrian@xemacs.org>
* emodules.texi: Use @set emacs and @value{emacs} instead of
@macro (unsupported by texinfo package). Remove stray @code.
* XEmacs 21.2.9 is released
-1999-01-14 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-01-14 Adrian Aichner <adrian@xemacs.org>
* internals\internals.texi (Techniques for XEmacs Developers):
Fixing documentation.
* lispref/files.texi (User Name Completion): new section.
-1998-07-23 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-07-23 Adrian Aichner <adrian@xemacs.org>
* xemacs/packages.texi (Packages): Changing @itemize @emph to
@itemize @bullet (this is what all other files included in
* standards.texi (Preface): Revert previous change to @node
because it doesn't pass makeinfo.
-1998-06-27 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-06-27 Adrian Aichner <adrian@xemacs.org>
* cl.texi: See ALL.
* info-stnd.texi: Fixed @setfilename.
* xemacs/startup.texi:
* xemacs/packages.texi: Created.
-1998-06-10 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-06-10 Adrian Aichner <adrian@xemacs.org>
* texinfo.texi: added ../info/ to @setfilename, broke line after
@noindent. Changed @var{arg-not-used-by-@TeX{}} to
* lispref/dragndrop.texi: naming changed to Drag and Drop
added some docu about the drop procedure
-1998-06-09 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-06-09 Adrian Aichner <adrian@xemacs.org>
* info-stnd.texi: added ../info/ to @setfilename.
* info.texi: added ../info/ to @setfilename.
* xemacs/custom.texi (Init Syntax): document #b, #o, and #x reader
syntax for integers.
- From Adrian Aichner <aichner@ecf.teradyne.com>
+ From Adrian Aichner <adrian@xemacs.org>
* cl.texi (Porting Common Lisp): ' '
* lispref/numbers.texi (Numbers): ' '
@cindex mapping functions
A @dfn{mapping function} applies a given function to each element of a
-list or other collection. XEmacs Lisp has three such functions;
+list or other collection. XEmacs Lisp has several such functions;
@code{mapcar} and @code{mapconcat}, which scan a list, are described
-here. For the third mapping function, @code{mapatoms}, see
-@ref{Creating Symbols}.
+here. @xref{Creating Symbols}, for the function @code{mapatoms} which
+maps over the symbols in an obarray.
+
+Mapping functions should never modify the sequence being mapped over.
+The results are unpredictable.
@defun mapcar function sequence
@code{mapcar} applies @var{function} to each element of @var{sequence}
in turn, and returns a list of the results.
-The argument @var{sequence} may be a list, a vector, or a string. The
-result is always a list. The length of the result is the same as the
-length of @var{sequence}.
+The argument @var{sequence} can be any kind of sequence; that is, a
+list, a vector, a bit vector, or a string. The result is always a list.
+The length of the result is the same as the length of @var{sequence}.
@smallexample
@group
other suitable punctuation.
The argument @var{function} must be a function that can take one
-argument and return a string.
+argument and return a string. The argument @var{sequence} can be any
+kind of sequence; that is, a list, a vector, a bit vector, or a string.
@smallexample
@group
* Completion:: How to invoke and customize completion.
* Yes-or-No Queries:: Asking a question with a simple answer.
* Multiple Queries:: Asking a series of similar questions.
+* Reading a Password:: Reading a password from the terminal.
* Minibuffer Misc:: Various customization hooks and variables.
@end menu
to minibuffers. The name of a minibuffer always has the form @w{@samp{
*Minibuf-@var{number}}}, and it cannot be changed. Minibuffers are
displayed only in special windows used only for minibuffers; these
-windows always appear at the bottom of a frame. (Sometime frames have
+windows always appear at the bottom of a frame. (Sometimes frames have
no minibuffer window, and sometimes a special kind of frame contains
nothing but a minibuffer window; see @ref{Minibuffers and Frames}.)
@code{minibuffer-local-map} is for ordinary input (no completion).
@item
-@code{minibuffer-local-ns-map} is similar, except that @key{SPC} exits
-just like @key{RET}. This is used mainly for Mocklisp compatibility.
-
-@item
@code{minibuffer-local-completion-map} is for permissive completion.
@item
reading the arguments for a command, in the @code{interactive} spec.
@xref{Defining Commands}.
-@defun read-from-minibuffer prompt-string &optional initial-contents keymap read hist
+@defun read-from-minibuffer prompt-string &optional initial-contents keymap read hist abbrev-table default
This function is the most general way to get input through the
minibuffer. By default, it accepts arbitrary text and returns it as a
string; however, if @var{read} is non-@code{nil}, then it uses
@var{string} in the minibuffer but put point @var{position} characters
from the beginning, rather than at the end.
+When the user types a command to exit the minibuffer,
+@code{read-from-minibuffer} constructs the return value from the text in
+the minibuffer. Normally it returns a string containing that text.
+However, if @var{read} is non-@code{nil}, @code{read-from-minibuffer}
+reads the text and returns the resulting Lisp object, unevaluated.
+(@xref{Input Functions}, for information about reading.)
+
+The argument @var{default} specifies a default value to make available
+through the history commands. It should be a string, or @code{nil}.
+
If @var{keymap} is non-@code{nil}, that keymap is the local keymap to
use in the minibuffer. If @var{keymap} is omitted or @code{nil}, the
value of @code{minibuffer-local-map} is used as the keymap. Specifying
a keymap is the most important way to customize the minibuffer for
various applications such as completion.
+The argument @var{abbrev-table} specifies @code{local-abbrev-table} in
+the minibuffer (@pxref{Standard Abbrev Tables}).
+
The argument @var{hist} specifies which history list variable to use
for saving the input and for history commands used in the minibuffer.
It defaults to @code{minibuffer-history}. @xref{Minibuffer History}.
@code{read-from-minibuffer} reads the text and returns the resulting
Lisp object, unevaluated. (@xref{Input Functions}, for information
about reading.)
+
+@strong{Usage note:} The @var{initial-contents} argument and the
+@var{default} argument are two alternative features for more or less the
+same job. It does not make sense to use both features in a single call
+to @code{read-from-minibuffer}. In general, we recommend using
+@var{default}, since this permits the user to insert the default value
+when it is wanted, but does not burden the user with deleting it from
+the minibuffer on other occasions. However, if user is supposed to edit
+default value, @var{initial-contents} may be preferred.
@end defun
-@defun read-string prompt &optional initial
+@defun read-string prompt &optional initial history
This function reads a string from the minibuffer and returns it. The
arguments @var{prompt} and @var{initial} are used as in
@code{read-from-minibuffer}. The keymap used is
@code{minibuffer-local-map}.
-This is a simplified interface to the
+The optional argument @var{history}, if non-nil, specifies a history
+list and optionally the initial position in the list.
+
+This function is a simplified interface to the
@code{read-from-minibuffer} function:
@smallexample
default, it makes the following bindings:
@table @asis
-@item @key{LFD}
+@item @kbd{C-j}
@code{exit-minibuffer}
@item @key{RET}
@end table
@end defvar
-@c In version 18, initial is required
-@c Emacs 19 feature
-@defun read-no-blanks-input prompt &optional initial
-This function reads a string from the minibuffer, but does not allow
-whitespace characters as part of the input: instead, those characters
-terminate the input. The arguments @var{prompt} and @var{initial} are
-used as in @code{read-from-minibuffer}.
-
-This is a simplified interface to the @code{read-from-minibuffer}
-function, and passes the value of the @code{minibuffer-local-ns-map}
-keymap as the @var{keymap} argument for that function. Since the keymap
-@code{minibuffer-local-ns-map} does not rebind @kbd{C-q}, it @emph{is}
-possible to put a space into the string, by quoting it.
-
-@smallexample
-@group
-(read-no-blanks-input @var{prompt} @var{initial})
-@equiv{}
-(read-from-minibuffer @var{prompt} @var{initial} minibuffer-local-ns-map)
-@end group
-@end smallexample
-@end defun
-
-@defvar minibuffer-local-ns-map
-This built-in variable is the keymap used as the minibuffer local keymap
-in the function @code{read-no-blanks-input}. By default, it makes the
-following bindings, in addition to those of @code{minibuffer-local-map}:
-
-@table @asis
-@item @key{SPC}
-@cindex @key{SPC} in minibuffer
-@code{exit-minibuffer}
-
-@item @key{TAB}
-@cindex @key{TAB} in minibuffer
-@code{exit-minibuffer}
-
-@item @kbd{?}
-@cindex @kbd{?} in minibuffer
-@code{self-insert-and-exit}
-@end table
-@end defvar
-
@node Object from Minibuffer
@section Reading Lisp Objects with the Minibuffer
minibuffer.
@defun read-minibuffer prompt &optional initial
-This function reads a Lisp object in the minibuffer and returns it,
+This function reads a Lisp object using the minibuffer, and returns it
without evaluating it. The arguments @var{prompt} and @var{initial} are
used as in @code{read-from-minibuffer}.
@end defun
@defun eval-minibuffer prompt &optional initial
-This function reads a Lisp expression in the minibuffer, evaluates it,
-then returns the result. The arguments @var{prompt} and @var{initial}
-are used as in @code{read-from-minibuffer}.
+This function reads a Lisp expression using the minibuffer, evaluates
+it, then returns the result. The arguments @var{prompt} and
+@var{initial} are used as in @code{read-from-minibuffer}.
This function simply evaluates the result of a call to
@code{read-minibuffer}:
The first thing @code{edit-and-eval-command} does is to activate the
minibuffer with @var{prompt} as the prompt. Then it inserts the printed
-representation of @var{form} in the minibuffer, and lets the user edit.
+representation of @var{form} in the minibuffer, and lets the user edit it.
When the user exits the minibuffer, the edited text is read with
@code{read} and then evaluated. The resulting value becomes the value
of @code{edit-and-eval-command}.
name to the input functions when you wish. But it is safe to modify the
list by hand when the minibuffer input functions are not using it.
+ Here are some of the standard minibuffer history list variables:
+
@defvar minibuffer-history
The default history list for minibuffer history input.
@end defvar
@defun all-completions string collection &optional predicate nospace
This function returns a list of all possible completions of
-@var{string}. The parameters to this function are the same as to
+@var{string}. The arguments to this function are the same as those of
@code{try-completion}.
If @var{collection} is a function, it is called with three arguments:
This section describes the basic interface for reading from the
minibuffer with completion.
-@defun completing-read prompt collection &optional predicate require-match initial hist
+@defun completing-read prompt collection &optional predicate require-match initial hist default
This function reads a string in the minibuffer, assisting the user by
providing completion. It activates the minibuffer with prompt
@var{prompt}, which must be a string. If @var{initial} is
@var{collection}. If @var{require-match} is @code{nil}, the exit
commands work regardless of the input in the minibuffer.
+However, empty input is always permitted, regardless of the value of
+@var{require-match}; in that case, @code{completing-read} returns
+@var{default}. The value of @var{default} (if non-@code{nil}) is also
+available to the user through the history commands.
+
The user can exit with null input by typing @key{RET} with an empty
-minibuffer. Then @code{completing-read} returns @code{nil}. This is
-how the user requests whatever default the command uses for the value
-being read. The user can return using @key{RET} in this way regardless
-of the value of @var{require-match}.
+minibuffer. Then @code{completing-read} returns @code{""}. This is how
+the user requests whatever default the command uses for the value being
+read. The user can return using @key{RET} in this way regardless of the
+value of @var{require-match}, and regardless of whether the empty string
+is included in @var{collection}.
The function @code{completing-read} works by calling
@code{read-minibuffer}. It uses @code{minibuffer-local-completion-map}
@item @key{TAB}
@code{minibuffer-complete}
-@item @key{LFD}
+@item @kbd{C-j}
@code{minibuffer-complete-and-exit}
@item @key{RET}
@deffn Command minibuffer-complete-and-exit
This function completes the minibuffer contents, and exits if
confirmation is not required, i.e., if
-@code{minibuffer-completion-confirm} is non-@code{nil}. If confirmation
+@code{minibuffer-completion-confirm} is @code{nil}. If confirmation
@emph{is} required, it is given by repeating this command
immediately---the command is programmed to work without confirmation
when run twice in succession.
@c Emacs 19 feature
If you specify @var{initial}, that is an initial file name to insert in
-the buffer (after with @var{directory}, if that is inserted). In this
+the buffer (after @var{directory}, if that is inserted). In this
case, point goes at the beginning of @var{initial}. The default for
@var{initial} is @code{nil}---don't insert any file name. To see what
@var{initial} does, try the command @kbd{C-x C-v}.
@item
@code{nil} specifies @code{try-completion}. The completion function
should return the completion of the specified string, or @code{t} if the
-string is an exact match already, or @code{nil} if the string matches no
-possibility.
+string is a unique and exact match already, or @code{nil} if the string
+matches no possibility.
+
+If the string is an exact match for one possibility, but also matches
+other longer possibilities, the function should return the string, not
+@code{t}.
@item
@code{t} specifies @code{all-completions}. The completion function
The return value of @code{map-y-or-n-p} is the number of objects acted on.
@end defun
+@node Reading a Password
+@section Reading a Password
+@cindex passwords, reading
+
+ To read a password to pass to another program, you can use the
+function @code{read-passwd}.
+
+@defun read-passwd prompt &optional confirm default
+This function reads a password, prompting with @var{prompt}. It does
+not echo the password as the user types it; instead, it echoes @samp{.}
+for each character in the password.
+
+The optional argument @var{confirm}, if non-@code{nil}, says to read the
+password twice and insist it must be the same both times. If it isn't
+the same, the user has to type it over and over until the last two
+times match.
+
+The optional argument @var{default} specifies the default password to
+return if the user enters empty input. It is translated to @samp{.}
+and inserted in the minibuffer. If @var{default} is @code{nil}, then
+@code{read-passwd} returns the null string in that case.
+@end defun
+
+@defopt passwd-invert-frame-when-keyboard-grabbed
+If non-nil swap the foreground and background colors of all faces while
+reading a password. Default values is @code{t} unless feature
+@code{infodock} is provided.
+@end defopt
+
+@defopt passwd-echo
+This specifies the character echoed when typing a password. When nil,
+nothing is echoed.
+@end defopt
+
@node Minibuffer Misc
@section Minibuffer Miscellany
@defopt enable-recursive-minibuffers
If this variable is non-@code{nil}, you can invoke commands (such as
-@code{find-file}) that use minibuffers even while in the minibuffer
-window. Such invocation produces a recursive editing level for a new
+@code{find-file}) that use minibuffers even while the minibuffer window
+is active. Such invocation produces a recursive editing level for a new
minibuffer. The outer-level minibuffer is invisible while you are
editing the inner one.
in this fashion, just use an evaluated interactive spec and bind
@code{enable-recursive-minibuffers} while reading from the minibuffer.
See the definition of @code{next-matching-history-element} in
-@file{lisp/prim/minibuf.el}.
+@file{lisp/minibuf.el}.
and always operated on the current buffer.)
-@defun char-after position &optional buffer
+@defun char-after &optional position buffer
This function returns the character in the buffer at (i.e.,
immediately after) position @var{position}. If @var{position} is out of
range for this purpose, either before the beginning of the buffer, or at
-or beyond the end, then the value is @code{nil}. If optional argument
-@var{buffer} is @code{nil}, the current buffer is assumed.
+or beyond the end, then the value is @code{nil}. The default for
+@var{position} is point. If optional argument @var{buffer} is
+@code{nil}, the current buffer is assumed.
In the following example, assume that the first character in the
buffer is @samp{@@}:
@end example
@end defun
+@defun char-before &optional position buffer
+This function returns the character in the current buffer immediately
+before position @var{position}. If @var{position} is out of range for
+this purpose, either at or before the beginning of the buffer, or beyond
+the end, then the value is @code{nil}. The default for
+@var{position} is point. If optional argument @var{buffer} is
+@code{nil}, the current buffer is assumed.
+@end defun
+
@defun following-char &optional buffer
This function returns the character following point in the buffer.
This is similar to @code{(char-after (point))}. However, if point is at
@item %@{
@itemx %@}
-The text inside will be displayed with the face specified by
-@code{:sample-face}.
+The text inside will be displayed in the face specified by
+@code{:sample-face}.
@item %v
-This will be replaces with the buffer representation of the widgets
+This will be replaced with the buffer representation of the widget's
value. What this is depends on the widget type.
@item %d
@item :validate
A function which takes a widget as an argument, and return nil if the
-widgets current value is valid for the widget. Otherwise, it should
-return the widget containing the invalid data, and set that widgets
+widget's current value is valid for the widget. Otherwise it should
+return the widget containing the invalid data, and set that widget's
@code{:error} property to a string explaining the error.
The following predefined function can be used:
TYPE ::= (menu-choice [KEYWORD ARGUMENT]... TYPE ... )
@end example
-The @var{type} arguments represents each possible choice. The widgets
-value of will be the value of the chosen @var{type} argument. This
-widget will match any value that matches at least one of the specified
-@var{type} arguments.
+The @var{type} argument represents each possible choice. The widget's
+value will be that of the chosen @var{type} argument. This widget will
+match any value matching at least one of the specified @var{type}
+arguments.
@table @code
@item :void
TYPE ::= (radio-button-choice [KEYWORD ARGUMENT]... TYPE ... )
@end example
-The @var{type} arguments represents each possible choice. The widgets
-value of will be the value of the chosen @var{type} argument. This
-widget will match any value that matches at least one of the specified
-@var{type} arguments.
+The @var{type} argument represents each possible choice. The widget's
+value will be that of the chosen @var{type} argument. This widget will
+match any value matching at least one of the specified @var{type}
+arguments.
The following extra properties are recognized.
TYPE ::= (toggle [KEYWORD ARGUMENT]...)
@end example
-The widget has two possible states, `on' and `off', which corresponds to
-a @code{t} or @code{nil} value.
+The widget has two possible states, `on' and `off', which correspond to
+a @code{t} or @code{nil} value respectively.
The following extra properties are recognized.
TYPE ::= (checklist [KEYWORD ARGUMENT]... TYPE ... )
@end example
-The @var{type} arguments represents each checklist item. The widgets
-value of will be a list containing the value of each ticked @var{type}
-argument. The checklist widget will match a list whose elements all
-matches at least one of the specified @var{type} arguments.
+The @var{type} arguments represents each checklist item. The widget's
+value will be a list containing the values of all ticked @var{type}
+arguments. The checklist widget will match a list whose elements all
+match at least one of the specified @var{type} arguments.
The following extra properties are recognized.
@end table
@item :greedy
-Usually, a checklist will only match if the items are in the exact
+Usually a checklist will only match if the items are in the exact
sequence given in the specification. By setting @code{:greedy} to
-non-nil, it will allow the items to come in any sequence. However, if
-you extract the value they will be in the sequence given in the
-checklist. I.e. the original sequence is forgotten.
+non-nil, it will allow the items to appear in any sequence. However, if
+you extract the values they will be in the sequence given in the
+checklist. I.e. the original sequence is forgotten.
@item button-args
A list of keywords to pass to the checkboxes. Useful for setting
@samp{(file t)} or @code{(file string string)}.
This concept of inline is probably hard to understand. It was certainly
-hard to implement so instead of confuse you more by trying to explain it
-here, I'll just suggest you meditate over it for a while.
+hard to implement so instead of confusing you more by trying to explain
+it here, I'll just suggest you meditate over it for a while.
@deffn Widget choice
-Allows you to edit a sexp which may have one of fixed set of types. It
-is currently implemented with the @code{choice-menu} basic widget, and
-has a similar syntax.
+Allows you to edit a sexp which may have one of a fixed set of types.
+It is currently implemented with the @code{choice-menu} basic widget,
+and has a similar syntax.
@end deffn
@deffn Widget set
(widget-apply @var{widget} :activate)
@end lisp
-A widget is inactive if itself, or any of its ancestors (found by
+A widget is inactive if itself or any of its ancestors (found by
following the @code{:parent} link) have been deactivated. To make sure
-a widget is really active, you must therefore activate both itself, and
+a widget is really active, you must therefore activate both itself and
all its ancestors.
@lisp
@end lisp
You can check if a widget has been made inactive by examining the value
-of @code{:inactive} keyword. If this is non-nil, the widget itself has
-been deactivated. This is different from using the @code{:active}
-keyword, in that the later tell you if the widget @strong{or} any of its
-ancestors have been deactivated. Do not attempt to set the
+of the @code{:inactive} keyword. If this is non-nil, the widget itself
+has been deactivated. This is different from using the @code{:active}
+keyword, in that the latter tells you if the widget @strong{or} any of
+its ancestors have been deactivated. Do not attempt to set the
@code{:inactive} keyword directly. Use the @code{:activate}
-@code{:deactivated} keywords instead.
+@code{:deactivate} keywords instead.
@node Defining New Widgets, Widget Browser, Widget Properties, Top
@section Defining New Widgets
You can define specialized widgets with @code{define-widget}. It allows
-you to create a shorthand for more complex widgets, including specifying
-component widgets and default new default values for the keyword
-arguments.
+you to create a shorthand for more complex widgets. This includes
+specifying component widgets and new default values for the keyword
+arguments.
@defun widget-define name class doc &rest args
Define a new widget type named @var{name} from @code{class}.
The third argument @var{DOC} is a documentation string for the widget.
-After the new widget has been defined, the following two calls will
+After the new widget has been defined the following two calls will
create identical widgets:
@itemize @bullet
@end defun
-Using @code{widget-define} does just store the definition of the widget
-type in the @code{widget-type} property of @var{name}, which is what
+Using @code{widget-define} just stores the definition of the widget type
+in the @code{widget-type} property of @var{name}, which is what
@code{widget-create} uses.
If you just want to specify defaults for keywords with no complex
Function to convert a widget type before creating a widget of that
type. It takes a widget type as an argument, and returns the converted
widget type. When a widget is created, this function is called for the
-widget type and all the widgets parent types, most derived first.
+widget type and all the widget's parent types, most derived first.
The following predefined functions can be used here:
@item :value-to-internal
Function to convert the value to the internal format. The function
-takes two arguments, a widget and an external value, and returns the
+takes two arguments, a widget and an external value. It returns the
internal value. The function is called on the present @code{:value}
when the widget is created, and on any value set later with
@code{widget-value-set}.
@item :create
Function to create a widget from scratch. The function takes one
-argument, a widget type, and create a widget of that type, insert it in
-the buffer, and return a widget object.
+argument, a widget type, and creates a widget of that type, inserts it
+in the buffer, and returns a widget object.
@item :delete
Function to delete a widget. The function takes one argument, a widget,
@item :value-create
Function to expand the @samp{%v} escape in the format string. It will
-be called with the widget as its argument. Should
-insert a representation of the widgets value in the buffer.
+be called with the widget as its argument and should insert a
+representation of the widget's value in the buffer.
@item :value-delete
-Should remove the representation of the widgets value from the buffer.
+Should remove the representation of the widget's value from the buffer.
It will be called with the widget as its argument. It doesn't have to
remove the text, but it should release markers and delete nested widgets
-if such has been used.
+if such have been used.
The following predefined function can be used here:
You can set this to allow your widget to handle non-standard escapes.
You should end up calling @code{widget-default-format-handler} to handle
-unknown escape sequences, which will handle the @samp{%h} and any future
-escape sequences, as well as give an error for unknown escapes.
+unknown escape sequences. It will handle the @samp{%h} and any future
+escape sequences as well as give an error for unknown escapes.
@item :action
Function to handle user initiated events. By default, @code{:notify}
take four arguments, @var{widget}, @var{prompt}, @var{value}, and
@var{unbound} and should return a value for widget entered by the user.
@var{prompt} is the prompt to use. @var{value} is the default value to
-use, unless @var{unbound} is non-nil in which case there are no default
+use, unless @var{unbound} is non-nil. In this case there is no default
value. The function should read the value using the method most natural
-for this widget, and does not have to check that it matches.
+for this widget and does not have to check whether it matches.
@end table
If you want to define a new widget from scratch, use the @code{default}
@finalout
@titlepage
@title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 1999/12/07 03:11:46 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 1999/12/23 01:50:47 $
@sp 1
-@author Tony Rossini <arossini@@stat.sc.edu>
+@author Tony Rossini <rossini@@biostat.washington.edu>
@author Ben Wing <ben@@xemacs.org>
@author Chuck Thompson <cthomp@@xemacs.org>
@author Steve Baur <steve@@xemacs.org>
@author Andreas Kaempf <andreas@@sccon.com>
@author Christian Nyb@o{} <chr@@mediascience.no>
-@author Sandra Wambold <wambold@@pobox.com>
+@author Sandra Wambold <wambold@@xemacs.org>
@page
@end titlepage
* Q2.1.21:: Every so often the XEmacs frame freezes.
* Q2.1.22:: XEmacs seems to take a really long time to do some things.
* Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later.
+* Q2.1.24:: XEmacs won't start without network. (NEW)
Customization and Options
wondering what to do next. It is also useful as a reference to
available resources.
-The previous maintainer of the FAQ was @email{rossini@@stat.sc.edu,
+The previous maintainer of the FAQ was @email{rossini@@biostat.washington.edu,
Anthony Rossini}, who started it, after getting tired of hearing JWZ
complain about repeatedly having to answer questions.
@email{ben@@xemacs.org, Ben Wing} and @email{cthomp@@xemacs.org, Chuck
The previous version was converted to hypertext format, and edited by
@email{steve@@xemacs.org, Steven L. Baur}. It was converted back to
-texinfo by @email{hniksic@@xemacs.org, Hrvoje Niksic}.
-
-The FAQ was then maintained by @email{andreas@@sccon.com, Andreas
-Kaempf}, who passed it on to @email{faq@@xemacs.org, Christian
-Nyb@o{}}, the current FAQ maintainer.
+texinfo by @email{hniksic@@xemacs.org, Hrvoje Niksic}. The FAQ was then
+maintained by @email{andreas@@sccon.com, Andreas Kaempf}, who passed it
+on to ChristianNyb@o{}.
If you notice any errors or items which should be added or amended to
-this FAQ please send email to @email{faq@@xemacs.org, Christian
-Nyb@o{}}. Include @samp{XEmacs FAQ} on the Subject: line.
+this FAQ please send email to @email{faq@@xemacs.org, Sandra
+Wambold}. Include @samp{XEmacs FAQ} on the Subject: line.
@menu
Introduction:
@unnumberedsubsec Q1.1.1: What is the FAQ editorial policy?
The FAQ is actively maintained and modified regularly. All links should
-be up to date. All submissions are welcome. E-mail submissions to
-@email{faq@@xemacs.org, XEmacs FAQ maintainers}.
+be up to date. Unfortunately, some of the information is out of date --
+a situation which the FAQ maintainer is working on. All submissions are
+welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ
+maintainers}.
Please make sure that @samp{XEmacs FAQ} appears on the Subject: line.
If you think you have a better way of answering a question, or think a
* Q2.1.21:: Every so often the XEmacs frame freezes.
* Q2.1.22:: XEmacs seems to take a really long time to do some things.
* Q2.1.23:: Movemail on Linux does not work for XEmacs 19.15 and later.
+* Q2.1.24:: XEmacs won't start without network. (NEW)
@end menu
@node Q2.0.1, Q2.0.2, Installation, Installation
some other strange cases.
@end quotation
-@node Q2.1.23, , Q2.1.22, Installation
+@node Q2.1.23, Q2.1.24, Q2.1.22, Installation
@unnumberedsubsec Q2.1.23: Movemail on Linux does not work for XEmacs 19.15 and later.
Movemail used to work fine in 19.14 but has stopped working in 19.15
@end example
@end quotation
+@node Q2.1.24, , Q2.1.23, Installation
+@unnumberedsubsec Q2.1.24: XEmacs won't start without network. (NEW)
+Q2.1.23: Movemail on Linux does not work for XEmacs 19.15 and later.
+
+If XEmacs starts when you're on the network, but fails when you're not
+on the network, you may be missing a "localhost" entry in your
+@file{/etc/hosts} file. The file should contain an entry like:
+
+@example
+127.0.0.1 localhost
+@end example
+
+Add that line, and XEmacs will be happy.
+
@node Customization, Subsystems, Installation, Top
@unnumbered 3 Customization and Options
@node Q4.7.6, , Q4.7.5, Subsystems
@unnumberedsubsec Q4.7.5: Is there a MatLab mode?
-@c New
-Is there any way I can get syntax highlighting for MatLab .m files?
-Can I "teach" emacs what words are MatLab commands, comments, etc. ?
-
-@email{elsner@@mathematik.tu-chemnitz.de, Ulrich Elsner} writes:
-@quotation
-One way to do this (and much more) is by using the
-@iftex
-@*
-@end iftex
-@comment @uref{ftp://ftp.mathworks.com/pub/contrib/v5/tools/matlab.el, matlab mode}.
-matlab mode. (If someone knows where this can be found, please contact
-the @email{faq@@xemacs.org,XEmacs FAQ maintainer}.
-
-Instructions on how to install this mode are included in this file.
-@end quotation
+Yes, a matlab mode and other items are available at the
+@uref{ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons,
+MathWorks' emacs_add_ons ftp directory}.
@node Miscellaneous, MS Windows, Subsystems, Top
@unnumbered 5 The Miscellaneous Stuff
+1999-12-24 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.25 is released.
+
+1999-12-15 Scott Blachowicz <Scott.Blachowicz@seaslug.org>
+
+ * minitar.c (main): Add explicit exit(0) to get successful return
+ code.
+
1999-12-14 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.24 is released.
-1999-11-28 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-11-28 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak (depend): Only update `depend' if there were changes.
Use "perl ./make-src-depend" instead of "mkdepend".
* XEmacs 21.2.23 is released.
-1999-11-27 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-11-27 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak (SRCDIR): Make path to xemacs absolute to
facilitate building info in man subdirs. Echo all cd commands,
* xemacs.mak: Ignore return code of 'del' calls. Use a make
variable for 'del'.
-1999-09-26 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-09-26 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak (all): Update $(LISP)/auto-autoloads.elc? and
$(LISP)/custom-load.el using XEmacs itself, like xemacs-packages
* xemacs.mak (HAVE_WIDGETS): add define to appropriate places.
-1999-07-26 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-07-26 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak ($(MANDIR)\lispref\lispref.texi): Replace bad
dependency.
* XEmacs 21.2.19 is released
-1999-07-10 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-07-10 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak (.SUFFIXES): Add .texi.
(check): Improve automated test section.
* XEmacs 21.2.17 is released
-1999-06-13 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-06-13 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak (DOC_SRC8): Remove mule-coding.c.
(TEMACS_MULE_OBJS): Remove mule-coding.obj
* XEmacs 21.2.16 is released
-1999-05-14 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-05-14 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak (GUNG_HO): Explicitly default to 0.
Fix some comment typos.
* xemacs.mak ($(LISP)\Installation.el): Don't use
`replace-in-string'.
-1999-03-17 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-03-17 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak: Remove ESC macro -- no longer needed.
Remove small configuration report. Remove simplified version of
* XEmacs 21.2.9 is released
-1999-01-14 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-01-14 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak (MODULES): Adding variable.
(update-elc): Setting EMACSBOOTSTRAPMODULEPATH.
* XEmacs 21.2.6 is released
-1998-12-11 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-12-11 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak (DOC_SRC2): CLASH_DETECTION is not supported under
native Windows NT. Therefore src\filelock.c is not to be
(DOC_SRC4):
- Remove pure.c, pure.obj
-1998-11-04 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-11-04 Adrian Aichner <adrian@xemacs.org>
* xemacs.mak: Creating minimal versions of Installation,
Installation.el, and config.values to make
* XEmacs 21.2-beta2 is released.
-1998-09-19 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-09-19 Adrian Aichner <adrian@xemacs.org>
* tiff.mak: New file provided by Charles Wilson
<cwilson@ee.gatech.edu>
* config.h:
* xemacs.mak: NT native sound fixes
- From Fabrice POPINEAU via Adrian Aichner <aichner@ecf.teradyne.com>
+ From Fabrice POPINEAU via Adrian Aichner <adrian@xemacs.org>
1998-06-21 Martin Buchholz <martin@xemacs.org>
* xemacs.mak (distclean): Reorder when puresize-adjust.h gets
deleted.
- From Adrian Aichner <aichner@ecf.teradyne.com>
+ From Adrian Aichner <adrian@xemacs.org>
1998-06-08 Kirill M. Katsnelson <kkm@kis.ru>
in_block = 0;
}
}
+ exit (0);
}
+1999-12-24 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.25 is released.
+
+1999-12-22 Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
+
+ * syntax.c (vars_of_syntax): Initialize parse-sexp_ignore_comments.
+
+1999-12-21 Martin Buchholz <martin@xemacs.org>
+
+ * editfns.c (Fpoint_min):
+ (Fpoint_min_marker):
+ (Fpoint_max):
+ (Fpoint_max_marker):
+ (Fchar_after):
+ (Fchar_before):
+ Docstring fixes. What's a `buffer pointer' anyways?
+
+ * editfns.c (char=): Remove unused and undocumented optional
+ third BUFFER argument.
+
+ * toolbar.h (DEVICE_SUPPORTS_TOOLBARS_P):
+ * fns.c (plists_differ):
+ * elhash.c (HASH_CODE):
+ * elhash.c (KEYS_EQUAL_P):
+ * redisplay-output.c (redisplay_move_cursor):
+ * redisplay.c (create_text_block):
+ * floatfns.c (Flogb):
+ * glyphs-msw.c (mswindows_initialize_image_instance_mask):
+ * glyphs-msw.c (xpm_to_eimage):
+ * buffer.h (POINT_MARKER_P):
+ * syntax.c (scan_lists):
+ * cmdloop.c (Fcommand_loop_1):
+ * widget.c (Fwidget_apply):
+ * regex.c (STREQ):
+ Remove extra parens, esp. of the form ((expr))
+
+ * floatfns.c (Flogb): Make 64-bit clean.
+
+1999-12-12 Daniel Pittman <daniel@danann.net>
+
+ * configure.in:
+ * configure.usage:
+ Clean up Athena widget support:
+ - Add `with-athena' to select a variant.
+ - Remove all `athena3d' options.
+ - Robust detection of Athena libraries and headers.
+ - Refuse to build with mismatched library and headers.
+ - Only build a 3d Athena if the user asks for it.
+
+1999-12-21 Andy Piper <andy@xemacs.org>
+
+ * redisplay.c (redisplay_frame): check for faces changed when
+ reseting subwindow caches.
+
+ * glyphs.h (struct ii_keyword_entry): add copy_p.
+ (struct image_instantiator_methods): add query_geometry_method and
+ layout_children_method.
+ (IIFORMAT_VALID_GENERIC_KEYWORD): new macro to take into account
+ copying characteristics of keywords.
+ (IIFORMAT_VALID_NONCOPY_KEYWORD): new macro for defining keywords
+ whose arguments should not be copied by the specifier code.
+ (image_instance_geometry): new enum for layouts.
+ (struct Lisp_Image_Instance): re-jig for layouts and update
+ macros.
+
+ * glyphs.c (string_instantiate): rename variables.
+ (image_instantiate): add strings to those widgets that are
+ instantiated per-window.
+ (image_copy_vector_instantiator): new function for copying glyph
+ specifier instantiators.
+ (image_copy_instantiator): ditto.
+
+ * glyphs-x.c (x_update_subwindow): use new face update functions.
+ (update_widget_face): update to use new lwlib arg functions.
+ (update_tab_widget_face): new function for updating tab control
+ label faces.
+ (x_widget_instantiate): use new face update functions and new
+ lwlib arg functions.
+ (x_tab_control_instantiate): ditto.
+ (x_tab_control_set_property): ditto.
+
+ * glyphs-widget.c (VALID_GUI_KEYWORDS): use NONCOPY keyword for
+ callbacks and other things that could recurse.
+ (VALID_GUI_KEYWORDS):
+
+ * event-msw.c: fix cpp stuff for cygwin < b20.
+
+ * config.h.in: move uid_t and friends to before the s&m files so
+ that they can be used there.
+
+ * Makefile.in.in (debug-temacs): new target that adds emacs
+ environment before invoking gdb.
+
+ * lwlib.h (_widget_args): new structure for holding widget
+ args. It is reference counted so that we don't have to copy Xt
+ args.
+ (_widget_value): remove widget args. Add reference to widget_args.
+
+ * lwlib.c (free_widget_value_contents): free widget args using
+ free_widget_value_args.
+
+ * lwlib-Xaw.c (xaw_update_one_widget): use new arg packet.
+ (xaw_update_one_widget): use XtIsSubclass for determining labels.
+
+ * lwlib.c (lw_add_value_args_to_args): modify to use our reference
+ counted arg packet.
+ (lw_add_widget_value_arg): new function. Add an arg to the arg
+ packet.
+ (free_widget_value_args): new function. Remove a reference counted
+ arg packet.
+ (lw_copy_widget_value_args): new function. Copy reference counted
+ arg packet.
+ (merge_widget_value_args): new function. Do a merge of widget
+ args.
+ (merge_widget_value): use it.
+ (copy_widget_value_tree): copy widget args using reference
+ counting, since we can't easily copy the args we have been given.
+
+ * specifier.h (struct specifier_methods): add copy_instantiator_method.
+
+ * specifier.c (build_up_processed_list): use
+ copy_instantiator_method if defined.
+
+1999-12-19 Martin Buchholz <martin@xemacs.org>
+
+ * fns.c (Ffillarray): Use O(N), not O(N^2) algorithm for strings.
+
+1999-12-19 Hrvoje Niksic <hniksic@iskon.hr>
+
+ * profile.c (sigprof_handler): FUN retrieved from the backtrace
+ can also be a cons representing anonymous interpreted function.
+
+1999-12-18 Martin Buchholz <martin@xemacs.org>
+
+ * fns.c (mapcar1):
+ (Fmapconcat):
+ (Fmapcar):
+ (Fmapvector):
+ Docstring fixes. Make them consistent with the lispref and ANSI Lisp.
+
+1999-12-17 Martin Buchholz <martin@xemacs.org>
+
+ * print.c (print_internal): print ?+ instead of ?\+, etc...
+ Make printing a little more efficient.
+ Prevent buffer overflow if sizeof EMACS_INT > 8.
+ My first 128-bit fix!
+
+1999-12-14 Karl M. Hegbloom <karlheg@inetarena.com>
+
+ * filelock.c (unlock_all_files): GC_CONSP should be CONSP
+
+1999-12-17 Martin Buchholz <martin@xemacs.org>
+
+ * database.c:
+ * window.c:
+ * event-stream.c:
+ Remove last vestigial uses of GC_*
+
+ * fns.c (mapcar1): Fix ***THREE*** obscure crashes in one function!
+ - Two of those involve evil mapping functions that destructively
+ modify a list being mapped over.
+ - Any garbage collection when mapping over a string could cause a
+ crash (typically in mapconcat).
+
+1999-12-08 Adrian Aichner <adrian@xemacs.org>
+
+ * s\windowsnt.h (DIRECTORY_SEP): Initialize from
+ `Vdirectory_sep_char'.
+
+ * lisp.h: Add declaration for `Vdirectory_sep_char' to allow
+ customization of `DIRECTORY_SEP' under native Windows NT.
+
+1999-12-14 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * buffer.c (Fbury_buffer): Add directions to the docstring.
+
1999-12-14 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.24 is released.
* fileio.c (vars_of_fileio): directory separator fix from Mike Alexander.
* windowsnt.h (ditto):
-1999-11-27 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-11-27 Adrian Aichner <adrian@xemacs.org>
* sysfile.h: Encapsulate `fstat' for Windows NT just like stat to
get consistent file modification times.
* esd.c: New file
-1999-10-24 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-10-24 Adrian Aichner <adrian@xemacs.org>
* lisp.h (Dynarr_declare): Fix boo-boo.
(image_instantiator_format_create): xface declarations moved from
glyphs-x.c.
-1999-01-14 Adrian Aichner <aichner@ecf.teradyne.com>
+1999-01-14 Adrian Aichner <adrian@xemacs.org>
* event-stream.c (vars_of_event_stream): Fixing documentation.
substitute-in-file-name because we don't know that the
filename refers to a local file.
-1998-06-24 Adrian Aichner <aichner@ecf.teradyne.com>
+1998-06-24 Adrian Aichner <adrian@xemacs.org>
* process-nt.c (nt_create_process): Try appending the standard
executable file extensions to the filename if none supplied.
temacs_loadup = $(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el
dump_temacs = ${temacs_loadup} dump
run_temacs = ${temacs_loadup} run-temacs
+debug_temacs = $(DUMPENV) gdb temacs
release: temacs ${libsrc}DOC $(mo_file) ${other_files}
#ifdef CANNOT_DUMP
runargs -batch -l ${srcdir}/../lisp/loadup.el run-temacs -q; \
run' rtcmacs
+debug-temacs: temacs
+ -${debug_temacs}
+
## Purify, Quantify, PureCoverage are software quality products from
## Rational, formerly Pure Atria, formerly Pure Software.
##
If BUFFER is nil or omitted, bury the current buffer.
Also, if BUFFER is nil or omitted, remove the current buffer from the
selected window if it is displayed there.
+Because of this, you may need to specify (current-buffer) as
+BUFFER when calling from minibuffer.
If BEFORE is non-nil, it specifies a buffer before which BUFFER
will be placed, instead of being placed at the end.
*/
#define POINT_MARKER_P(marker) \
(XMARKER (marker)->buffer != 0 && \
- EQ ((marker), XMARKER (marker)->buffer->point_marker))
+ EQ (marker, XMARKER (marker)->buffer->point_marker))
#define BUF_MARKERS(buf) ((buf)->markers)
like the real thing. This is slightly bogus, but it's in here for
compatibility with Emacs 18. It's not even clear what the "right
thing" is. */
- if (!(((STRINGP (Vexecuting_macro) || VECTORP (Vexecuting_macro))
- && XINT (Flength (Vexecuting_macro)) == 1)))
+ if (!((STRINGP (Vexecuting_macro) || VECTORP (Vexecuting_macro))
+ && XINT (Flength (Vexecuting_macro)) == 1))
Vlast_command = Qt;
#ifndef LISP_COMMAND_LOOP
focus is selected. */
if (focus_follows_mouse)
investigate_frame_change ();
-
+
/* Make sure the current window's buffer is selected. */
{
Lisp_Object selected_window = Fselected_window (Qnil);
#define CONST const
+/* Allow the source to use standard types. Include these before the
+ s&m files so that they can use them. */
+#undef ssize_t
+#undef size_t
+#undef pid_t
+#undef mode_t
+#undef off_t
+#undef uid_t
+#undef gid_t
+
/* If defined, use unions instead of ints. A few systems (DEC Alpha)
seem to require this, probably because something with the int
definitions isn't right with 64-bit systems. */
#define SIGRETURN return
#endif
-/* Allow the source to use standard types */
-#undef ssize_t
-#undef size_t
-#undef pid_t
-#undef mode_t
-#undef off_t
-#undef uid_t
-#undef gid_t
-
/* Define DYNODUMP if it is necessary to properly dump on this system.
Currently this is only Solaris 2.x, for x < 6. */
#undef DYNODUMP
#define XDATABASE(x) XRECORD (x, database, Lisp_Database)
#define XSETDATABASE(x, p) XSETRECORD (x, p, database)
#define DATABASEP(x) RECORDP (x, database)
-#define GC_DATABASEP(x) GC_RECORDP (x, database)
#define CHECK_DATABASE(x) CHECK_RECORD (x, database)
#define CONCHECK_DATABASE(x) CONCHECK_RECORD (x, database)
#define DATABASE_LIVE_P(x) (x->live_p)
DEFUN ("point-min", Fpoint_min, 0, 1, 0, /*
Return the minimum permissible value of point in BUFFER.
-This is 1, unless narrowing (a buffer restriction) is in effect.
+This is 1, unless narrowing (a buffer restriction)
+is in effect, in which case it may be greater.
If BUFFER is nil, the current buffer is assumed.
*/
(buffer))
DEFUN ("point-min-marker", Fpoint_min_marker, 0, 1, 0, /*
Return a marker to the minimum permissible value of point in BUFFER.
-This is the beginning, unless narrowing (a buffer restriction) is in effect.
+This is the beginning, unless narrowing (a buffer restriction)
+is in effect, in which case it may be greater.
If BUFFER is nil, the current buffer is assumed.
*/
(buffer))
DEFUN ("point-max", Fpoint_max, 0, 1, 0, /*
Return the maximum permissible value of point in BUFFER.
This is (1+ (buffer-size)), unless narrowing (a buffer restriction)
-is in effect, in which case it is less.
+is in effect, in which case it may be less.
If BUFFER is nil, the current buffer is assumed.
*/
(buffer))
}
DEFUN ("point-max-marker", Fpoint_max_marker, 0, 1, 0, /*
-Return a marker to the maximum permissible value of point BUFFER.
+Return a marker to the maximum permissible value of point in BUFFER.
This is (1+ (buffer-size)), unless narrowing (a buffer restriction)
-is in effect, in which case it is less.
+is in effect, in which case it may be less.
If BUFFER is nil, the current buffer is assumed.
*/
(buffer))
}
DEFUN ("char-after", Fchar_after, 0, 2, 0, /*
-Return character in BUFFER at position POS.
-POS is an integer or a buffer pointer.
+Return the character at position POS in BUFFER.
+POS is an integer or a marker.
If POS is out of range, the value is nil.
-If BUFFER is nil, the current buffer is assumed.
if POS is nil, the value of point is assumed.
+If BUFFER is nil, the current buffer is assumed.
*/
(pos, buffer))
{
}
DEFUN ("char-before", Fchar_before, 0, 2, 0, /*
-Return character in BUFFER before position POS.
-POS is an integer or a buffer pointer.
+Return the character preceding position POS in BUFFER.
+POS is an integer or a marker.
If POS is out of range, the value is nil.
-If BUFFER is nil, the current buffer is assumed.
if POS is nil, the value of point is assumed.
+If BUFFER is nil, the current buffer is assumed.
*/
(pos, buffer))
{
struct buffer *b = decode_buffer (buffer, 1);
- Bufpos n = ((NILP (pos) ? BUF_PT (b) :
- get_buffer_pos_char (b, pos, GB_NO_ERROR_IF_BAD)));
+ Bufpos n = (NILP (pos) ? BUF_PT (b) :
+ get_buffer_pos_char (b, pos, GB_NO_ERROR_IF_BAD));
n--;
? Qt : Qnil;
}
-DEFUN ("char=", Fchar_Equal, 2, 3, 0, /*
+DEFUN ("char=", Fchar_Equal, 2, 2, 0, /*
Return t if two characters match, case is significant.
Both arguments must be characters (i.e. NOT integers).
-The optional buffer argument is for symmetry and is ignored.
*/
- (c1, c2, buffer))
+ (c1, c2))
{
CHECK_CHAR_COERCE_INT (c1);
CHECK_CHAR_COERCE_INT (c2);
- return XCHAR(c1) == XCHAR(c2) ? Qt : Qnil;
+ return EQ (c1, c2) ? Qt : Qnil;
}
\f
#if 0 /* Undebugged FSFmacs code */
#define HASH_TABLE_DEFAULT_REHASH_SIZE 1.3
#define HASH_TABLE_MIN_SIZE 10
-#define HASH_CODE(key, ht) \
- (((((ht)->hash_function ? (ht)->hash_function (key) : LISP_HASH (key)) \
- * (ht)->golden_ratio) \
- % (ht)->size))
+#define HASH_CODE(key, ht) \
+((((ht)->hash_function ? (ht)->hash_function (key) : LISP_HASH (key)) \
+ * (ht)->golden_ratio) \
+ % (ht)->size)
#define KEYS_EQUAL_P(key1, key2, testfun) \
- (EQ ((key1), (key2)) || ((testfun) && (testfun) ((key1), (key2))))
+ (EQ (key1, key2) || ((testfun) && (testfun) (key1, key2)))
#define LINEAR_PROBING_LOOP(probe, entries, size) \
for (; \
#include <io.h>
#include <errno.h>
-#if defined (__CYGWIN32__) && !defined (CYGWIN_VERSION_DLL_MAJOR)
+#if defined (__CYGWIN32__) && (CYGWIN_VERSION_DLL_MAJOR < 20)
typedef NMHDR *LPNMHDR;
#endif
XRECORD (x, command_builder, struct command_builder)
#define XSETCOMMAND_BUILDER(x, p) XSETRECORD (x, p, command_builder)
#define COMMAND_BUILDERP(x) RECORDP (x, command_builder)
-#define GC_COMMAND_BUILDERP(x) GC_RECORDP (x, command_builder)
#define CHECK_COMMAND_BUILDER(x) CHECK_RECORD (x, command_builder)
static Lisp_Object
register Lisp_Object tail;
register struct buffer *b;
- for (tail = Vbuffer_alist; GC_CONSP (tail); tail = XCDR (tail))
+ for (tail = Vbuffer_alist; CONSP (tail); tail = XCDR (tail))
{
b = XBUFFER (XCDR (XCAR (tail)));
if (STRINGP (b->file_truename) && BUF_SAVE_MODIFF (b) < BUF_MODIFF (b))
double f = extract_float (arg);
if (f == 0.0)
- return make_int (- (int)((((EMACS_UINT) 1) << (VALBITS - 1)))); /* most-negative-fixnum */
+ return make_int (- (EMACS_INT)(((EMACS_UINT) 1) << (VALBITS - 1))); /* most-negative-fixnum */
#ifdef HAVE_LOGB
{
Lisp_Object val;
- IN_FLOAT (val = make_int ((int) logb (f)), "logb", arg);
- return (val);
+ IN_FLOAT (val = make_int ((EMACS_INT) logb (f)), "logb", arg);
+ return val;
}
#else
#ifdef HAVE_FREXP
{
int exqp;
IN_FLOAT (frexp (f, &exqp), "logb", arg);
- return (make_int (exqp - 1));
+ return make_int (exqp - 1);
}
#else
{
f /= d;
val += i;
}
- return (make_int (val));
+ return make_int (val);
}
#endif /* ! HAVE_FREXP */
#endif /* ! HAVE_LOGB */
{
if (!laxp ? EQ (k, keys [i]) : internal_equal (k, keys [i], depth))
{
- if ((eqp
- /* We narrowly escaped being Ebolified here. */
- ? !EQ_WITH_EBOLA_NOTICE (v, vals [i])
- : !internal_equal (v, vals [i], depth)))
+ if (eqp
+ /* We narrowly escaped being Ebolified here. */
+ ? !EQ_WITH_EBOLA_NOTICE (v, vals [i])
+ : !internal_equal (v, vals [i], depth))
/* a property in B has a different value than in A */
goto MISMATCH;
flags [i] = 1;
\f
DEFUN ("fillarray", Ffillarray, 2, 2, 0, /*
-Store each element of ARRAY with ITEM.
+Destructively modify ARRAY by replacing each element with ITEM.
ARRAY is a vector, bit vector, or string.
*/
(array, item))
retry:
if (STRINGP (array))
{
- Emchar charval;
struct Lisp_String *s = XSTRING (array);
- Charcount len = string_char_length (s);
- Charcount i;
+ Bytecount old_bytecount = string_length (s);
+ Bytecount new_bytecount;
+ Bytecount item_bytecount;
+ Bufbyte item_buf[MAX_EMCHAR_LEN];
+ Bufbyte *p;
+ Bufbyte *end;
+
CHECK_CHAR_COERCE_INT (item);
CHECK_LISP_WRITEABLE (array);
- charval = XCHAR (item);
- for (i = 0; i < len; i++)
- set_string_char (s, i, charval);
+
+ item_bytecount = set_charptr_emchar (item_buf, XCHAR (item));
+ new_bytecount = item_bytecount * string_char_length (s);
+
+ resize_string (s, -1, new_bytecount - old_bytecount);
+
+ for (p = string_data (s), end = p + new_bytecount;
+ p < end;
+ p += item_bytecount)
+ memcpy (p, item_buf, item_bytecount);
+ *p = '\0';
+
bump_string_modiff (array);
}
else if (VECTORP (array))
}
\f
-/* This is the guts of all mapping functions.
- Apply fn to each element of seq, one by one,
- storing the results into elements of vals, a C vector of Lisp_Objects.
- leni is the length of vals, which should also be the length of seq.
+/* This is the guts of several mapping functions.
+ Apply FUNCTION to each element of SEQUENCE, one by one,
+ storing the results into elements of VALS, a C vector of Lisp_Objects.
+ LENI is the length of VALS, which should also be the length of SEQUENCE.
If VALS is a null pointer, do not accumulate the results. */
static void
-mapcar1 (size_t leni, Lisp_Object *vals, Lisp_Object fn, Lisp_Object seq)
+mapcar1 (size_t leni, Lisp_Object *vals,
+ Lisp_Object function, Lisp_Object sequence)
{
Lisp_Object result;
Lisp_Object args[2];
gcpro1.nvars = 0;
}
- args[0] = fn;
+ args[0] = function;
- if (LISTP (seq))
+ if (LISTP (sequence))
{
- for (i = 0; i < leni; i++)
+ /* A devious `function' could either:
+ - insert garbage into the list in front of us, causing XCDR to crash
+ - amputate the list behind us using (setcdr), causing the remaining
+ elts to lose their GCPRO status.
+
+ if (vals != 0) we avoid this by copying the elts into the
+ `vals' array. By a stroke of luck, `vals' is exactly large
+ enough to hold the elts left to be traversed as well as the
+ results computed so far.
+
+ if (vals == 0) we don't have any free space available and
+ don't want to eat up any more stack with alloca().
+ So we use EXTERNAL_LIST_LOOP_3 and GCPRO the tail. */
+
+ if (vals)
{
- args[1] = XCAR (seq);
- seq = XCDR (seq);
- result = Ffuncall (2, args);
- if (vals) vals[gcpro1.nvars++] = result;
+ Lisp_Object *val = vals;
+ Lisp_Object elt;
+
+ LIST_LOOP_2 (elt, sequence)
+ *val++ = elt;
+
+ gcpro1.nvars = leni;
+
+ for (i = 0; i < leni; i++)
+ {
+ args[1] = vals[i];
+ vals[i] = Ffuncall (2, args);
+ }
+ }
+ else
+ {
+ Lisp_Object elt, tail;
+ struct gcpro ngcpro1;
+
+ NGCPRO1 (tail);
+
+ {
+ EXTERNAL_LIST_LOOP_3 (elt, sequence, tail)
+ {
+ args[1] = elt;
+ Ffuncall (2, args);
+ }
+ }
+
+ NUNGCPRO;
}
}
- else if (VECTORP (seq))
+ else if (VECTORP (sequence))
{
- Lisp_Object *objs = XVECTOR_DATA (seq);
+ Lisp_Object *objs = XVECTOR_DATA (sequence);
for (i = 0; i < leni; i++)
{
args[1] = *objs++;
if (vals) vals[gcpro1.nvars++] = result;
}
}
- else if (STRINGP (seq))
+ else if (STRINGP (sequence))
{
- Bufbyte *p = XSTRING_DATA (seq);
- for (i = 0; i < leni; i++)
+ /* The string data of `sequence' might be relocated during GC. */
+ Bytecount slen = XSTRING_LENGTH (sequence);
+ Bufbyte *p = alloca_array (Bufbyte, slen);
+ Bufbyte *end = p + slen;
+
+ memcpy (p, XSTRING_DATA (sequence), slen);
+
+ while (p < end)
{
args[1] = make_char (charptr_emchar (p));
INC_CHARPTR (p);
if (vals) vals[gcpro1.nvars++] = result;
}
}
- else if (BIT_VECTORP (seq))
+ else if (BIT_VECTORP (sequence))
{
- struct Lisp_Bit_Vector *v = XBIT_VECTOR (seq);
+ struct Lisp_Bit_Vector *v = XBIT_VECTOR (sequence);
for (i = 0; i < leni; i++)
{
args[1] = make_int (bit_vector_bit (v, i));
}
}
else
- abort(); /* cannot get here since Flength(seq) did not get an error */
+ abort(); /* cannot get here since Flength(sequence) did not get an error */
if (vals)
UNGCPRO;
}
DEFUN ("mapconcat", Fmapconcat, 3, 3, 0, /*
-Apply FN to each element of SEQ, and concat the results as strings.
-In between each pair of results, stick in SEP.
-Thus, " " as SEP results in spaces between the values returned by FN.
+Apply FUNCTION to each element of SEQUENCE, and concat the results as strings.
+In between each pair of results, insert SEPARATOR. Thus, using " " as
+SEPARATOR results in spaces between the values returned by FUNCTION.
+SEQUENCE may be a list, a vector, a bit vector, or a string.
*/
- (fn, seq, sep))
+ (function, sequence, separator))
{
- size_t len = XINT (Flength (seq));
+ size_t len = XINT (Flength (sequence));
Lisp_Object *args;
int i;
struct gcpro gcpro1;
args = alloca_array (Lisp_Object, nargs);
- GCPRO1 (sep);
- mapcar1 (len, args, fn, seq);
+ GCPRO1 (separator);
+ mapcar1 (len, args, function, sequence);
UNGCPRO;
for (i = len - 1; i >= 0; i--)
args[i + i] = args[i];
for (i = 1; i < nargs; i += 2)
- args[i] = sep;
+ args[i] = separator;
return Fconcat (nargs, args);
}
DEFUN ("mapcar", Fmapcar, 2, 2, 0, /*
-Apply FUNCTION to each element of SEQUENCE, and make a list of the results.
-The result is a list just as long as SEQUENCE.
+Apply FUNCTION to each element of SEQUENCE; return a list of the results.
+The result is a list of the same length as SEQUENCE.
SEQUENCE may be a list, a vector, a bit vector, or a string.
*/
- (fn, seq))
+ (function, sequence))
{
- size_t len = XINT (Flength (seq));
+ size_t len = XINT (Flength (sequence));
Lisp_Object *args = alloca_array (Lisp_Object, len);
- mapcar1 (len, args, fn, seq);
+ mapcar1 (len, args, function, sequence);
return Flist (len, args);
}
DEFUN ("mapvector", Fmapvector, 2, 2, 0, /*
-Apply FUNCTION to each element of SEQUENCE, making a vector of the results.
+Apply FUNCTION to each element of SEQUENCE; return a vector of the results.
The result is a vector of the same length as SEQUENCE.
-SEQUENCE may be a list, a vector or a string.
+SEQUENCE may be a list, a vector, a bit vector, or a string.
*/
- (fn, seq))
+ (function, sequence))
{
- size_t len = XINT (Flength (seq));
+ size_t len = XINT (Flength (sequence));
Lisp_Object result = make_vector (len, Qnil);
struct gcpro gcpro1;
GCPRO1 (result);
- mapcar1 (len, XVECTOR_DATA (result), fn, seq);
+ mapcar1 (len, XVECTOR_DATA (result), function, sequence);
UNGCPRO;
return result;
The difference between this and `mapc' is that `mapc' supports all
the spiffy Common Lisp arguments. You should normally use `mapc'.
*/
- (fn, seq))
+ (function, sequence))
{
- mapcar1 (XINT (Flength (seq)), 0, fn, seq);
+ mapcar1 (XINT (Flength (sequence)), 0, function, sequence);
- return seq;
+ return sequence;
}
\f
/* mswindows-specific glyph objects.
Copyright (C) 1998, 1999 Andy Piper.
-
+
This file is part of XEmacs.
XEmacs is free software; you can redistribute it and/or modify it
#endif
#ifdef HAVE_TIFF
DECLARE_IMAGE_INSTANTIATOR_FORMAT (tiff);
-#endif
+#endif
#ifdef HAVE_PNG
DECLARE_IMAGE_INSTANTIATOR_FORMAT (png);
-#endif
+#endif
#ifdef HAVE_GIF
DECLARE_IMAGE_INSTANTIATOR_FORMAT (gif);
-#endif
+#endif
#ifdef HAVE_XPM
DEFINE_DEVICE_IIFORMAT (mswindows, xpm);
#endif
int slices,
enum image_instance_type type);
static void
-mswindows_initialize_image_instance_mask (struct Lisp_Image_Instance* image,
+mswindows_initialize_image_instance_mask (struct Lisp_Image_Instance* image,
struct frame* f);
COLORREF mswindows_string_to_color (CONST char *name);
* structure - unless it has memory / color allocation implications
* .... */
bmp_info=xnew_and_zero (BITMAPINFO);
-
+
if (!bmp_info)
{
return NULL;
bmp_info->bmiHeader.biBitCount=24; /* just RGB triples for now */
bmp_info->bmiHeader.biCompression=BI_RGB; /* just RGB triples for now */
- bmp_info->bmiHeader.biSizeImage=width*height*3;
+ bmp_info->bmiHeader.biSizeImage=width*height*3;
/* bitmap data needs to be in blue, green, red triples - in that
order, eimage is in RGB format so we need to convert */
/* use our quantize table to allocate the colors */
ncolors = qtable->num_active_colors;
- bmp_info=(BITMAPINFO*)xmalloc_and_zero (sizeof(BITMAPINFOHEADER) +
+ bmp_info=(BITMAPINFO*)xmalloc_and_zero (sizeof(BITMAPINFOHEADER) +
sizeof(RGBQUAD) * ncolors);
if (!bmp_info)
{
colortbl=(RGBQUAD*)(((unsigned char*)bmp_info)+sizeof(BITMAPINFOHEADER));
- bmp_info->bmiHeader.biBitCount=8;
- bmp_info->bmiHeader.biCompression=BI_RGB;
+ bmp_info->bmiHeader.biBitCount=8;
+ bmp_info->bmiHeader.biCompression=BI_RGB;
bmp_info->bmiHeader.biSizeImage=bpline*height;
- bmp_info->bmiHeader.biClrUsed=ncolors;
- bmp_info->bmiHeader.biClrImportant=ncolors;
-
+ bmp_info->bmiHeader.biClrUsed=ncolors;
+ bmp_info->bmiHeader.biClrImportant=ncolors;
+
*bmp_data = (unsigned char *) xmalloc_and_zero (bpline * height);
*bit_count = bpline * height;
xfree (bmp_info);
return NULL;
}
-
+
/* build up an RGBQUAD colortable */
for (i = 0; i < qtable->num_active_colors; i++) {
colortbl[i].rgbRed = (BYTE) qtable->rm[i];
}
}
xfree (qtable);
- }
+ }
/* fix up the standard stuff */
bmp_info->bmiHeader.biWidth=width;
bmp_info->bmiHeader.biHeight=height;
bmp_info->bmiHeader.biPlanes=1;
bmp_info->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
bmp_info->bmiHeader.biXPelsPerMeter=0; /* unless you know better */
- bmp_info->bmiHeader.biYPelsPerMeter=0;
+ bmp_info->bmiHeader.biYPelsPerMeter=0;
return bmp_info;
}
locate_file (temp, name, Qnil, &found, R_OK);
UNGCPRO;
}
-
+
return found;
}
void *bmp_data,
int bmp_bits,
int slices,
- Lisp_Object instantiator,
+ Lisp_Object instantiator,
int x_hot, int y_hot,
int create_mask)
{
signal_simple_error ("No selected frame on mswindows device", device);
f = XFRAME (DEVICE_SELECTED_FRAME (d));
-
+
if (dest_mask & IMAGE_COLOR_PIXMAP_MASK)
type = IMAGE_COLOR_PIXMAP;
else if (dest_mask & IMAGE_POINTER_MASK)
type = IMAGE_POINTER;
- else
+ else
incompatible_image_types (instantiator, dest_mask,
IMAGE_COLOR_PIXMAP_MASK | IMAGE_POINTER_MASK);
hdc = FRAME_MSWINDOWS_CDC (f);
- bitmap=CreateDIBSection (hdc,
+ bitmap=CreateDIBSection (hdc,
bmp_info,
DIB_RGB_COLORS,
- &bmp_buf,
+ &bmp_buf,
0,0);
if (!bitmap || !bmp_buf)
{
mswindows_initialize_image_instance_mask (ii, f);
}
-
+
if (type == IMAGE_POINTER)
{
mswindows_initialize_image_instance_icon(ii, TRUE);
struct frame *f = XFRAME (DEVICE_SELECTED_FRAME (d));
void* bmp_buf=0;
HDC hdc = FRAME_MSWINDOWS_CDC (f);
- HBITMAP bitmap = CreateDIBSection (hdc,
+ HBITMAP bitmap = CreateDIBSection (hdc,
bmp_info,
DIB_RGB_COLORS,
- &bmp_buf,
+ &bmp_buf,
0,0);
-
+
if (!bitmap || !bmp_buf)
signal_simple_error ("Unable to create bitmap", instantiator);
mswindows_init_image_instance_from_eimage (struct Lisp_Image_Instance *ii,
int width, int height,
int slices,
- unsigned char *eimage,
+ unsigned char *eimage,
int dest_mask,
Lisp_Object instantiator,
Lisp_Object domain)
int bmp_bits;
COLORREF bkcolor;
int slice;
-
+
if (!DEVICE_MSWINDOWS_P (XDEVICE (device)))
signal_simple_error ("Not an mswindows device", device);
/* this is a hack but MaskBlt and TransparentBlt are not supported
on most windows variants */
- bkcolor = COLOR_INSTANCE_MSWINDOWS_COLOR
+ bkcolor = COLOR_INSTANCE_MSWINDOWS_COLOR
(XCOLOR_INSTANCE (FACE_BACKGROUND (Vdefault_face, domain)));
for (slice = 0; slice < slices; slice++)
{
/* build a bitmap from the eimage */
- if (!(bmp_info=convert_EImage_to_DIBitmap (device, width, height,
+ if (!(bmp_info=convert_EImage_to_DIBitmap (device, width, height,
eimage + (width * height * 3 * slice),
&bmp_bits, &bmp_data)))
{
else
image_instance_add_dibitmap (ii, bmp_info, bmp_data, bmp_bits, slice,
instantiator);
-
+
xfree (bmp_info);
xfree (bmp_data);
}
}
-static void set_mono_pixel ( unsigned char* bits,
- int bpline, int height,
- int x, int y, int white )
-{
+static void set_mono_pixel ( unsigned char* bits,
+ int bpline, int height,
+ int x, int y, int white )
+{
int index;
- unsigned char bitnum;
+ unsigned char bitnum;
/* Find the byte on which this scanline begins */
- index = (height - y - 1) * bpline;
+ index = (height - y - 1) * bpline;
/* Find the byte containing this pixel */
- index += (x >> 3);
+ index += (x >> 3);
/* Which bit is it? */
- bitnum = (unsigned char)( 7 - (x % 8) );
+ bitnum = (unsigned char)( 7 - (x % 8) );
if( white ) /* Turn it on */
bits[index] |= (1<<bitnum);
else /* Turn it off */
- bits[index] &= ~(1<<bitnum);
-}
+ bits[index] &= ~(1<<bitnum);
+}
static void
-mswindows_initialize_image_instance_mask (struct Lisp_Image_Instance* image,
+mswindows_initialize_image_instance_mask (struct Lisp_Image_Instance* image,
struct frame* f)
{
HBITMAP mask;
HGDIOBJ old = NULL;
HDC hcdc = FRAME_MSWINDOWS_CDC (f);
unsigned char* dibits;
- BITMAPINFO* bmp_info =
+ BITMAPINFO* bmp_info =
xmalloc_and_zero (sizeof(BITMAPINFO) + sizeof(RGBQUAD));
int i, j;
int height = IMAGE_INSTANCE_PIXMAP_HEIGHT (image);
-
- void* and_bits;
- int maskbpline = BPLINE (((IMAGE_INSTANCE_PIXMAP_WIDTH (image)+7)/8));
- int bpline = BPLINE (IMAGE_INSTANCE_PIXMAP_WIDTH (image) * 3);
+
+ void* and_bits;
+ int maskbpline = BPLINE ((IMAGE_INSTANCE_PIXMAP_WIDTH (image)+7)/8);
+ int bpline = BPLINE (IMAGE_INSTANCE_PIXMAP_WIDTH (image) * 3);
if (!bmp_info)
return;
bmp_info->bmiHeader.biHeight = height;
bmp_info->bmiHeader.biPlanes=1;
bmp_info->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
- bmp_info->bmiHeader.biBitCount=1;
- bmp_info->bmiHeader.biCompression=BI_RGB;
- bmp_info->bmiHeader.biClrUsed = 2;
- bmp_info->bmiHeader.biClrImportant = 2;
- bmp_info->bmiHeader.biSizeImage = height * maskbpline;
+ bmp_info->bmiHeader.biBitCount=1;
+ bmp_info->bmiHeader.biCompression=BI_RGB;
+ bmp_info->bmiHeader.biClrUsed = 2;
+ bmp_info->bmiHeader.biClrImportant = 2;
+ bmp_info->bmiHeader.biSizeImage = height * maskbpline;
bmp_info->bmiColors[0].rgbRed = 0;
bmp_info->bmiColors[0].rgbGreen = 0;
bmp_info->bmiColors[0].rgbBlue = 0;
bmp_info->bmiColors[1].rgbGreen = 255;
bmp_info->bmiColors[1].rgbBlue = 255;
bmp_info->bmiColors[0].rgbReserved = 0;
-
- if (!(mask = CreateDIBSection (hcdc,
+
+ if (!(mask = CreateDIBSection (hcdc,
bmp_info,
DIB_RGB_COLORS,
- &and_bits,
+ &and_bits,
0,0)))
{
xfree (bmp_info);
bmp_info->bmiHeader.biHeight = -height;
bmp_info->bmiHeader.biPlanes=1;
bmp_info->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
- bmp_info->bmiHeader.biBitCount=24;
- bmp_info->bmiHeader.biCompression=BI_RGB;
- bmp_info->bmiHeader.biClrUsed = 0;
- bmp_info->bmiHeader.biClrImportant = 0;
+ bmp_info->bmiHeader.biBitCount=24;
+ bmp_info->bmiHeader.biCompression=BI_RGB;
+ bmp_info->bmiHeader.biClrUsed = 0;
+ bmp_info->bmiHeader.biClrImportant = 0;
bmp_info->bmiHeader.biSizeImage = height * bpline;
dibits = xmalloc_and_zero (bpline * height);
/* now set the colored bits in the mask and transparent ones to
black in the original */
- for(i=0; i<IMAGE_INSTANCE_PIXMAP_WIDTH (image); i++)
- {
- for(j=0; j<height; j++)
- {
+ for(i=0; i<IMAGE_INSTANCE_PIXMAP_WIDTH (image); i++)
+ {
+ for(j=0; j<height; j++)
+ {
unsigned char* idx = &dibits[j * bpline + i * 3];
if( RGB (idx[2], idx[1], idx[0]) == transparent_color )
- {
+ {
idx[0] = idx[1] = idx[2] = 0;
set_mono_pixel( and_bits, maskbpline, height, i, j, TRUE );
}
- else
- {
+ else
+ {
set_mono_pixel( and_bits, maskbpline, height, i, j, FALSE );
}
}
xfree (bmp_info);
xfree (dibits);
-
+
SelectObject(hcdc, old);
IMAGE_INSTANCE_MSWINDOWS_MASK (image) = mask;
x_icon.yHotspot=XINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (image));
x_icon.hbmMask=IMAGE_INSTANCE_MSWINDOWS_MASK (image);
x_icon.hbmColor=IMAGE_INSTANCE_MSWINDOWS_BITMAP (image);
-
+
IMAGE_INSTANCE_MSWINDOWS_ICON (image)=
CreateIconIndirect (&x_icon);
}
HBITMAP newbmp;
HGDIOBJ old1, old2;
HDC hcdc = FRAME_MSWINDOWS_CDC (f);
- HDC hdcDst = CreateCompatibleDC (hcdc);
-
- old1 = SelectObject (hcdc, IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii));
-
+ HDC hdcDst = CreateCompatibleDC (hcdc);
+
+ old1 = SelectObject (hcdc, IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii));
+
newbmp = CreateCompatibleBitmap (hcdc, newx, newy);
old2 = SelectObject (hdcDst, newbmp);
-
+
if (!StretchBlt (hdcDst, 0, 0, newx, newy,
- hcdc, 0, 0,
- IMAGE_INSTANCE_PIXMAP_WIDTH (ii),
- IMAGE_INSTANCE_PIXMAP_HEIGHT (ii),
+ hcdc, 0, 0,
+ IMAGE_INSTANCE_PIXMAP_WIDTH (ii),
+ IMAGE_INSTANCE_PIXMAP_HEIGHT (ii),
SRCCOPY))
{
DeleteObject (newbmp);
HBITMAP newmask;
HGDIOBJ old1, old2;
HDC hcdc = FRAME_MSWINDOWS_CDC (f);
- HDC hdcDst = CreateCompatibleDC (hcdc);
-
- old1 = SelectObject (hcdc, IMAGE_INSTANCE_MSWINDOWS_MASK (ii));
+ HDC hdcDst = CreateCompatibleDC (hcdc);
+
+ old1 = SelectObject (hcdc, IMAGE_INSTANCE_MSWINDOWS_MASK (ii));
newmask = CreateCompatibleBitmap(hcdc, newx, newy);
old2 = SelectObject (hdcDst, newmask);
if (!StretchBlt(hdcDst, 0, 0, newx, newy,
- hcdc, 0, 0,
- IMAGE_INSTANCE_PIXMAP_WIDTH (ii),
- IMAGE_INSTANCE_PIXMAP_HEIGHT (ii),
+ hcdc, 0, 0,
+ IMAGE_INSTANCE_PIXMAP_WIDTH (ii),
+ IMAGE_INSTANCE_PIXMAP_HEIGHT (ii),
SRCCOPY))
{
DeleteObject (newmask);
DeleteDC (hdcDst);
return NULL;
}
-
+
SelectObject (hdcDst, old2);
SelectObject (hcdc, old1);
if (!newbmp)
return FALSE;
-
+
if (IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii))
DeleteObject (IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii));
if (IMAGE_INSTANCE_MSWINDOWS_MASK (ii))
for (j=0; j<i; j++)
{
Lisp_Object cons = XCAR (results);
- colortbl[j].color =
+ colortbl[j].color =
COLOR_INSTANCE_MSWINDOWS_COLOR (XCOLOR_INSTANCE (XCDR (cons)));
GET_C_STRING_OS_DATA_ALLOCA (XCAR (cons), colortbl[j].name);
unsigned char* dptr;
unsigned int* sptr;
COLORREF color; /* the american spelling virus hits again .. */
- COLORREF* colortbl;
+ COLORREF* colortbl;
xzero (xpmimage);
xzero (xpminfo);
make_int (result), image);
}
}
-
+
*width = xpmimage.width;
*height = xpmimage.height;
- maskbpline = BPLINE (((~7UL & (unsigned long)(*width + 7)) / 8));
-
+ maskbpline = BPLINE ((~7UL & (unsigned long)(*width + 7)) / 8);
+
*data = xnew_array_and_zero (unsigned char, *width * *height * 3);
if (!*data)
!strcasecmp (xpmimage.colorTable[i].symbolic,"None"))
{
*transp=TRUE;
- colortbl[i]=transparent_color;
+ colortbl[i]=transparent_color;
transp_idx=i;
goto label_found_color;
}
if (!strcasecmp (xpmimage.colorTable[i].c_color,"None"))
{
*transp=TRUE;
- colortbl[i]=transparent_color;
+ colortbl[i]=transparent_color;
transp_idx=i;
goto label_found_color;
}
mswindows_string_to_color (xpmimage.colorTable[i].c_color);
goto label_found_color;
}
-
+
label_no_color:
xfree (*data);
xfree (colortbl);
XpmFreeXpmImage (&xpmimage);
XpmFreeXpmInfo (&xpminfo);
return 0;
-
+
label_found_color:;
}
int bmp_bits;
int nsymbols=0, transp;
struct color_symbol* color_symbols=NULL;
-
+
Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
Lisp_Object color_symbol_alist = find_keyword_in_vector (instantiator,
Q_color_symbols);
if (!xpm_to_eimage (image_instance, bytes, &eimage, &width, &height,
&x_hot, &y_hot, &transp, color_symbols, nsymbols))
{
- signal_simple_error ("XPM to EImage conversion failed",
+ signal_simple_error ("XPM to EImage conversion failed",
image_instance);
}
-
+
if (color_symbols)
{
while (nsymbols--)
}
xfree(color_symbols);
}
-
+
/* build a bitmap from the eimage */
if (!(bmp_info=convert_EImage_to_DIBitmap (device, width, height, eimage,
&bmp_bits, &bmp_data)))
assert (!NILP (data));
GET_STRING_BINARY_DATA_ALLOCA (data, bytes, len);
-
+
/* Then slurp the image into memory, decoding along the way.
The result is the image in a simple one-byte-per-pixel
format. */
-
+
bmp_file_header=(BITMAPFILEHEADER*)bytes;
bmp_info = (BITMAPINFO*)(bytes + sizeof(BITMAPFILEHEADER));
bmp_data = (Extbyte*)bytes + bmp_file_header->bfOffBits;
static void
mswindows_resource_validate (Lisp_Object instantiator)
{
- if ((NILP (find_keyword_in_vector (instantiator, Q_file))
+ if ((NILP (find_keyword_in_vector (instantiator, Q_file))
&&
- NILP (find_keyword_in_vector (instantiator, Q_resource_id)))
+ NILP (find_keyword_in_vector (instantiator, Q_resource_id)))
||
NILP (find_keyword_in_vector (instantiator, Q_resource_type)))
signal_simple_error ("Must supply :file, :resource-id and :resource-type",
GCPRO2 (file, alist);
- file = potential_pixmap_file_instantiator (inst, Q_file, Q_data,
+ file = potential_pixmap_file_instantiator (inst, Q_file, Q_data,
console_type);
if (CONSP (file)) /* failure locating filename */
return IMAGE_POINTER_MASK | IMAGE_COLOR_PIXMAP_MASK;
}
-typedef struct
+typedef struct
{
char *name;
int resource_id;
#endif
#endif
-static CONST resource_t bitmap_table[] =
+static CONST resource_t bitmap_table[] =
{
/* bitmaps */
{ "close", OBM_CLOSE },
{0}
};
-static CONST resource_t cursor_table[] =
+static CONST resource_t cursor_table[] =
{
/* cursors */
{ "normal", OCR_NORMAL },
{ 0 }
};
-static CONST resource_t icon_table[] =
+static CONST resource_t icon_table[] =
{
/* icons */
{ "sample", OIC_SAMPLE },
static int resource_name_to_resource (Lisp_Object name, int type)
{
- CONST resource_t* res = (type == IMAGE_CURSOR ? cursor_table
- : type == IMAGE_ICON ? icon_table
+ CONST resource_t* res = (type == IMAGE_CURSOR ? cursor_table
+ : type == IMAGE_ICON ? icon_table
: bitmap_table);
if (INTP (name))
{
signal_simple_error ("invalid resource identifier", name);
}
-
+
do {
Extbyte* nm=0;
GET_C_STRING_OS_DATA_ALLOCA (name, nm);
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
Lisp_Object file = find_keyword_in_vector (instantiator, Q_file);
- Lisp_Object resource_type = find_keyword_in_vector (instantiator,
+ Lisp_Object resource_type = find_keyword_in_vector (instantiator,
Q_resource_type);
- Lisp_Object resource_id = find_keyword_in_vector (instantiator,
+ Lisp_Object resource_id = find_keyword_in_vector (instantiator,
Q_resource_id);
xzero (iconinfo);
iitype = IMAGE_POINTER;
else if (dest_mask & IMAGE_COLOR_PIXMAP_MASK)
iitype = IMAGE_COLOR_PIXMAP;
- else
+ else
incompatible_image_types (instantiator, dest_mask,
IMAGE_COLOR_PIXMAP_MASK | IMAGE_POINTER_MASK);
#else
fname = f;
#endif
-
+
if (NILP (resource_id))
resid = (LPCTSTR)fname;
else
LOAD_LIBRARY_AS_DATAFILE);
resid = MAKEINTRESOURCE (resource_name_to_resource (resource_id,
type));
-
+
if (!resid)
GET_C_STRING_OS_DATA_ALLOCA (resource_id, resid);
}
else if (!(resid = MAKEINTRESOURCE (resource_name_to_resource (resource_id,
type))))
signal_simple_error ("Invalid resource identifier", resource_id);
-
+
/* load the image */
if (!(himage = LoadImage (hinst, resid, type, 0, 0,
- LR_CREATEDIBSECTION | LR_DEFAULTSIZE |
- LR_SHARED |
+ LR_CREATEDIBSECTION | LR_DEFAULTSIZE |
+ LR_SHARED |
(!NILP (file) ? LR_LOADFROMFILE : 0))))
{
signal_simple_error ("Cannot load image", instantiator);
mswindows_initialize_dibitmap_image_instance (ii, 1, iitype);
IMAGE_INSTANCE_PIXMAP_FILENAME (ii) = file;
- IMAGE_INSTANCE_PIXMAP_WIDTH (ii) =
+ IMAGE_INSTANCE_PIXMAP_WIDTH (ii) =
GetSystemMetrics (type == IMAGE_CURSOR ? SM_CXCURSOR : SM_CXICON);
- IMAGE_INSTANCE_PIXMAP_HEIGHT (ii) =
+ IMAGE_INSTANCE_PIXMAP_HEIGHT (ii) =
GetSystemMetrics (type == IMAGE_CURSOR ? SM_CYCURSOR : SM_CYICON);
IMAGE_INSTANCE_PIXMAP_DEPTH (ii) = 1;
* and return data
*
* Note that this file and ../X/XRdBitF.c look very similar.... Keep them
- * that way (but don't use common source code so that people can have one
+ * that way (but don't use common source code so that people can have one
* without the other).
*/
hexTable[' '] = -1; hexTable[','] = -1;
hexTable['}'] = -1; hexTable['\n'] = -1;
hexTable['\t'] = -1;
-
+
initialized = TRUE;
}
int value = 0;
int gotone = 0;
int done = 0;
-
+
/* loop, accumulate hex value until find delimiter */
/* skip any initial delimiters found in read stream */
}
continue;
}
-
+
if (sscanf(line, "static short %s = {", name_and_type) == 1)
version10p = 1;
else if (sscanf(line,"static unsigned char %s = {",name_and_type) == 1)
if (strcmp("bits[]", type))
continue;
-
+
if (!ww || !hh)
RETURN (BitmapFileInvalid);
size = bytes_per_line * hh;
data = (unsigned char *) Xmalloc ((unsigned int) size);
- if (!data)
+ if (!data)
RETURN (BitmapNoMemory);
if (version10p) {
int bytes;
for (bytes=0, ptr=data; bytes<size; bytes++, ptr++) {
- if ((value = NextInt(fstream)) < 0)
+ if ((value = NextInt(fstream)) < 0)
RETURN (BitmapFileInvalid);
*ptr=value;
}
}
-int read_bitmap_data_from_file (CONST char *filename, unsigned int *width,
+int read_bitmap_data_from_file (CONST char *filename, unsigned int *width,
unsigned int *height, unsigned char **datap,
int *x_hot, int *y_hot)
{
void *bmp_buf = 0;
unsigned char *new_data, *new_offset;
int i, j;
- BITMAPINFO* bmp_info =
+ BITMAPINFO* bmp_info =
xmalloc_and_zero (sizeof(BITMAPINFO) + sizeof(RGBQUAD));
HBITMAP bitmap;
if (!bmp_info)
return NULL;
-
+
new_data = (unsigned char *) xmalloc_and_zero (height * new_width);
-
+
if (!new_data)
{
xfree (bmp_info);
return NULL;
}
-
+
for (i=0; i<height; i++)
{
offset = data + i*old_width;
bmp_info->bmiHeader.biHeight=-(LONG)height;
bmp_info->bmiHeader.biPlanes=1;
bmp_info->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
- bmp_info->bmiHeader.biBitCount=1;
+ bmp_info->bmiHeader.biBitCount=1;
bmp_info->bmiHeader.biCompression=BI_RGB;
- bmp_info->bmiHeader.biClrUsed = 2;
- bmp_info->bmiHeader.biClrImportant = 2;
- bmp_info->bmiHeader.biSizeImage = height * new_width;
+ bmp_info->bmiHeader.biClrUsed = 2;
+ bmp_info->bmiHeader.biClrImportant = 2;
+ bmp_info->bmiHeader.biSizeImage = height * new_width;
bmp_info->bmiColors[0].rgbRed = GetRValue (fg);
bmp_info->bmiColors[0].rgbGreen = GetGValue (fg);
bmp_info->bmiColors[0].rgbBlue = GetBValue (fg);
bmp_info->bmiColors[1].rgbGreen = GetGValue (bg);
bmp_info->bmiColors[1].rgbBlue = GetBValue (bg);
bmp_info->bmiColors[1].rgbReserved = 0;
-
- bitmap = CreateDIBSection (hdc,
+
+ bitmap = CreateDIBSection (hdc,
bmp_info,
DIB_RGB_COLORS,
- &bmp_buf,
+ &bmp_buf,
0,0);
xfree (bmp_info);
-
+
if (!bitmap || !bmp_buf)
{
xfree (new_data);
return NULL;
}
-
+
/* copy in the actual bitmap */
memcpy (bmp_buf, new_data, height * new_width);
xfree (new_data);
| IMAGE_POINTER_MASK);
mswindows_initialize_dibitmap_image_instance (ii, 1, type);
-
+
IMAGE_INSTANCE_PIXMAP_FILENAME (ii) =
find_keyword_in_vector (instantiator, Q_file);
IMAGE_INSTANCE_PIXMAP_WIDTH (ii) = width;
XSETINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii), 0);
XSETINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii), 0);
IMAGE_INSTANCE_MSWINDOWS_MASK (ii) = mask ? mask :
- xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height,
+ xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height,
TRUE, black, white);
switch (type)
{
case IMAGE_MONO_PIXMAP:
- IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) =
- xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height,
+ IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) =
+ xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height,
FALSE, black, black);
break;
IMAGE_INSTANCE_PIXMAP_FG (ii) = foreground;
IMAGE_INSTANCE_PIXMAP_BG (ii) = background;
- IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) =
- xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height,
+ IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) =
+ xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height,
FALSE, fg, black);
}
break;
if (NILP (background))
background = pointer_bg;
- IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii) =
+ IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii) =
find_keyword_in_vector (instantiator, Q_hotspot_x);
- IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii) =
+ IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii) =
find_keyword_in_vector (instantiator, Q_hotspot_y);
IMAGE_INSTANCE_PIXMAP_FG (ii) = foreground;
IMAGE_INSTANCE_PIXMAP_BG (ii) = background;
if (COLOR_INSTANCEP (background))
bg = COLOR_INSTANCE_MSWINDOWS_COLOR (XCOLOR_INSTANCE (background));
- IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) =
- xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height,
+ IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) =
+ xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height,
TRUE, fg, black);
mswindows_initialize_image_instance_icon (ii, TRUE);
}
Lisp_Object mask_data = find_keyword_in_vector (instantiator, Q_mask_data);
Lisp_Object mask_file = find_keyword_in_vector (instantiator, Q_mask_file);
struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
- struct frame* f = XFRAME (DEVICE_SELECTED_FRAME
+ struct frame* f = XFRAME (DEVICE_SELECTED_FRAME
(XDEVICE (IMAGE_INSTANCE_DEVICE (ii))));
HDC hdc = FRAME_MSWINDOWS_CDC (f);
HBITMAP mask = 0;
/* Instantiate method for XBM's. */
static void
-mswindows_xbm_instantiate (Lisp_Object image_instance,
+mswindows_xbm_instantiate (Lisp_Object image_instance,
Lisp_Object instantiator,
Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
case IMAGE_MONO_PIXMAP:
case IMAGE_COLOR_PIXMAP:
case IMAGE_POINTER:
- sprintf (buf, " (0x%lx",
+ sprintf (buf, " (0x%lx",
(unsigned long) IMAGE_INSTANCE_MSWINDOWS_BITMAP (p));
write_c_string (buf, printcharfun);
if (IMAGE_INSTANCE_MSWINDOWS_MASK (p))
{
- sprintf (buf, "/0x%lx",
+ sprintf (buf, "/0x%lx",
(unsigned long) IMAGE_INSTANCE_MSWINDOWS_MASK (p));
write_c_string (buf, printcharfun);
}
if (DEVICE_LIVE_P (XDEVICE (p->device)))
{
if (IMAGE_INSTANCE_TYPE (p) == IMAGE_WIDGET
- ||
+ ||
IMAGE_INSTANCE_TYPE (p) == IMAGE_SUBWINDOW)
{
#ifdef DEBUG_WIDGETS
{
if (IMAGE_INSTANCE_SUBWINDOW_ID (p))
{
- SetWindowPos (IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (p),
- NULL,
+ SetWindowPos (IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (p),
+ NULL,
0, 0, 0, 0,
SWP_HIDEWINDOW | SWP_NOMOVE | SWP_NOSIZE
| SWP_NOSENDCHANGING);
{
/* move the window before mapping it ... */
SetWindowPos (IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (p),
- NULL,
+ NULL,
x, y, dga->width, dga->height,
- SWP_NOZORDER
+ SWP_NOZORDER
| SWP_NOCOPYBITS | SWP_NOSENDCHANGING);
/* ... adjust the child ... */
SetWindowPos (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
- NULL,
+ NULL,
-dga->xoffset, -dga->yoffset, 0, 0,
SWP_NOZORDER | SWP_NOSIZE
| SWP_NOCOPYBITS | SWP_NOSENDCHANGING);
/* ... now map it - we are not allowed to move it at the same time. */
- SetWindowPos (IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (p),
- NULL,
+ SetWindowPos (IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (p),
+ NULL,
0, 0, 0, 0,
SWP_NOZORDER | SWP_NOSIZE | SWP_NOMOVE
- | SWP_SHOWWINDOW | SWP_NOCOPYBITS
+ | SWP_SHOWWINDOW | SWP_NOCOPYBITS
| SWP_NOSENDCHANGING);
}
/* resize the subwindow instance */
-static void
+static void
mswindows_resize_subwindow (struct Lisp_Image_Instance* ii, int w, int h)
{
/* Set the size of the control .... */
- SetWindowPos (WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii),
- NULL,
+ SetWindowPos (WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii),
+ NULL,
0, 0, w, h,
SWP_NOZORDER | SWP_NOMOVE
| SWP_NOCOPYBITS | SWP_NOSENDCHANGING);
if ( EQ (IMAGE_INSTANCE_WIDGET_TYPE (p), Qbutton))
{
if (gui_item_selected_p (IMAGE_INSTANCE_WIDGET_ITEM (p)))
- SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
- BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
+ SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
+ BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
else
SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
/* set the widget font from the widget face */
SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
- WM_SETFONT,
- (WPARAM)FONT_INSTANCE_MSWINDOWS_HFONT
+ WM_SETFONT,
+ (WPARAM)FONT_INSTANCE_MSWINDOWS_HFONT
(XFONT_INSTANCE (widget_face_font_info
- (IMAGE_INSTANCE_SUBWINDOW_FRAME (p),
+ (IMAGE_INSTANCE_SUBWINDOW_FRAME (p),
IMAGE_INSTANCE_WIDGET_FACE (p),
- 0, 0))),
+ 0, 0))),
MAKELPARAM (TRUE, 0));
}
}
NULL, /* No menu */
NULL, /* must be null for this class */
NULL)) == NULL)
- signal_simple_error ("window creation failed with code",
+ signal_simple_error ("window creation failed with code",
make_int (GetLastError()));
- wnd = CreateWindow( "STATIC",
+ wnd = CreateWindow( "STATIC",
"",
- WS_CHILD,
+ WS_CHILD,
0, /* starting x position */
0, /* starting y position */
IMAGE_INSTANCE_WIDGET_WIDTH (ii),
IMAGE_INSTANCE_WIDGET_HEIGHT (ii),
IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (ii),
0,
- (HINSTANCE)
+ (HINSTANCE)
GetWindowLong (FRAME_MSWINDOWS_HANDLE (XFRAME (frame)),
- GWL_HINSTANCE),
+ GWL_HINSTANCE),
NULL);
SetWindowLong (wnd, GWL_USERDATA, (LONG)LISP_TO_VOID(image_instance));
case IMAGE_MONO_PIXMAP:
case IMAGE_COLOR_PIXMAP:
case IMAGE_POINTER:
- if (IMAGE_INSTANCE_MSWINDOWS_BITMAP (p1)
+ if (IMAGE_INSTANCE_MSWINDOWS_BITMAP (p1)
!= IMAGE_INSTANCE_MSWINDOWS_BITMAP (p2))
return 0;
break;
-
+
default:
break;
}
case IMAGE_COLOR_PIXMAP:
case IMAGE_POINTER:
return (unsigned long) IMAGE_INSTANCE_MSWINDOWS_BITMAP (p);
-
+
default:
return 0;
}
IMAGE_INSTANCE_PIXMAP_FG (ii) = Qnil;
IMAGE_INSTANCE_PIXMAP_BG (ii) = Qnil;
IMAGE_INSTANCE_PIXMAP_MAXSLICE (ii) = slices;
- IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES (ii) =
+ IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES (ii) =
xnew_array_and_zero (HBITMAP, slices);
}
(HMENU)id, /* No menu */
NULL, /* must be null for this class */
NULL)) == NULL)
- signal_simple_error ("window creation failed with code",
+ signal_simple_error ("window creation failed with code",
make_int (GetLastError()));
- if ((wnd = CreateWindowEx(
+ if ((wnd = CreateWindowEx(
exflags /* | WS_EX_NOPARENTNOTIFY*/,
- class,
+ class,
nm,
flags | WS_CHILD | WS_VISIBLE,
0, /* starting x position */
/* parent window */
IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (ii),
(HMENU)id, /* No menu */
- (HINSTANCE)
- GetWindowLong
+ (HINSTANCE)
+ GetWindowLong
(FRAME_MSWINDOWS_HANDLE (XFRAME (frame)),
- GWL_HINSTANCE),
+ GWL_HINSTANCE),
NULL)) == NULL)
- signal_simple_error ("window creation failed with code",
+ signal_simple_error ("window creation failed with code",
make_int (GetLastError()));
IMAGE_INSTANCE_SUBWINDOW_ID (ii) = wnd;
SetWindowLong (wnd, GWL_USERDATA, (LONG)LISP_TO_VOID(image_instance));
/* set the widget font from the widget face */
- SendMessage (wnd, WM_SETFONT,
- (WPARAM)FONT_INSTANCE_MSWINDOWS_HFONT
- (XFONT_INSTANCE (widget_face_font_info
- (domain,
+ SendMessage (wnd, WM_SETFONT,
+ (WPARAM)FONT_INSTANCE_MSWINDOWS_HFONT
+ (XFONT_INSTANCE (widget_face_font_info
+ (domain,
IMAGE_INSTANCE_WIDGET_FACE (ii),
- 0, 0))),
+ 0, 0))),
MAKELPARAM (TRUE, 0));
}
glyph = glyph_image_instance (glyph, domain, ERROR_ME, 1);
if (IMAGE_INSTANCEP (glyph))
- flags |= XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
+ flags |= XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
BS_BITMAP : BS_ICON;
}
flags |= BS_DEFPUSHBUTTON;
mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
- pointer_bg, dest_mask, domain, "BUTTON", flags,
+ pointer_bg, dest_mask, domain, "BUTTON", flags,
WS_EX_CONTROLPARENT);
wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
/* set the checked state */
if (gui_item_selected_p (gui))
- SendMessage (wnd, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
+ SendMessage (wnd, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
else
SendMessage (wnd, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0);
/* add the image if one was given */
if (!NILP (glyph) && IMAGE_INSTANCEP (glyph))
{
- SendMessage (wnd, BM_SETIMAGE,
- (WPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
+ SendMessage (wnd, BM_SETIMAGE,
+ (WPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
IMAGE_BITMAP : IMAGE_ICON),
(LPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ?
XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) :
int dest_mask, Lisp_Object domain)
{
mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
- pointer_bg, dest_mask, domain, "EDIT",
+ pointer_bg, dest_mask, domain, "EDIT",
ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP
| WS_BORDER,
WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT);
HWND wnd;
struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
- pointer_bg, dest_mask, domain, PROGRESS_CLASS,
+ pointer_bg, dest_mask, domain, PROGRESS_CLASS,
WS_TABSTOP | WS_BORDER | PBS_SMOOTH,
WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT);
wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
/* set the colors */
#ifdef PBS_SETBKCOLOR
- SendMessage (wnd, PBS_SETBKCOLOR, 0,
- (LPARAM) (COLOR_INSTANCE_MSWINDOWS_COLOR
- (XCOLOR_INSTANCE
- (FACE_BACKGROUND
+ SendMessage (wnd, PBS_SETBKCOLOR, 0,
+ (LPARAM) (COLOR_INSTANCE_MSWINDOWS_COLOR
+ (XCOLOR_INSTANCE
+ (FACE_BACKGROUND
(XIMAGE_INSTANCE_WIDGET_FACE (ii),
XIMAGE_INSTANCE_SUBWINDOW_FRAME (ii))))));
#endif
#ifdef PBS_SETBARCOLOR
- SendMessage (wnd, PBS_SETBARCOLOR, 0,
- (L:PARAM) (COLOR_INSTANCE_MSWINDOWS_COLOR
- (XCOLOR_INSTANCE
- (FACE_FOREGROUND
+ SendMessage (wnd, PBS_SETBARCOLOR, 0,
+ (L:PARAM) (COLOR_INSTANCE_MSWINDOWS_COLOR
+ (XCOLOR_INSTANCE
+ (FACE_FOREGROUND
(XIMAGE_INSTANCE_WIDGET_FACE (ii),
XIMAGE_INSTANCE_SUBWINDOW_FRAME (ii))))));
#endif
tvitem.hInsertAfter = TVI_LAST;
tvitem.item.mask = TVIF_TEXT | TVIF_CHILDREN;
tvitem.item.cChildren = children;
-
+
if (GUI_ITEMP (item))
{
tvitem.item.lParam = mswindows_register_gui_item (item, domain);
tvitem.item.mask |= TVIF_PARAM;
- GET_C_STRING_OS_DATA_ALLOCA (XGUI_ITEM (item)->name,
+ GET_C_STRING_OS_DATA_ALLOCA (XGUI_ITEM (item)->name,
tvitem.item.pszText);
}
else
tvitem.item.cchTextMax = strlen (tvitem.item.pszText);
- if ((ret = (HTREEITEM)SendMessage (wnd, TVM_INSERTITEM,
+ if ((ret = (HTREEITEM)SendMessage (wnd, TVM_INSERTITEM,
0, (LPARAM)&tvitem)) == 0)
signal_simple_error ("error adding tree view entry", item);
HTREEITEM parent;
struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
- pointer_bg, dest_mask, domain, WC_TREEVIEW,
+ pointer_bg, dest_mask, domain, WC_TREEVIEW,
WS_TABSTOP | WS_BORDER | PBS_SMOOTH
| TVS_HASLINES | TVS_HASBUTTONS,
WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT);
wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
-
+
/* define a root */
- parent = add_tree_item (image_instance, wnd, NULL,
- XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)),
+ parent = add_tree_item (image_instance, wnd, NULL,
+ XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)),
TRUE, domain);
-
+
/* recursively add items to the tree view */
/* add items to the tab */
LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)))
TC_ITEM tvitem, *ret;
tvitem.mask = TCIF_TEXT;
-
+
if (GUI_ITEMP (item))
{
tvitem.lParam = mswindows_register_gui_item (item, domain);
tvitem.mask |= TCIF_PARAM;
- GET_C_STRING_OS_DATA_ALLOCA (XGUI_ITEM (item)->name,
+ GET_C_STRING_OS_DATA_ALLOCA (XGUI_ITEM (item)->name,
tvitem.pszText);
}
else
tvitem.cchTextMax = strlen (tvitem.pszText);
- if ((ret = (TC_ITEM*)SendMessage (wnd, TCM_INSERTITEM,
+ if ((ret = (TC_ITEM*)SendMessage (wnd, TCM_INSERTITEM,
index, (LPARAM)&tvitem)) < 0)
signal_simple_error ("error adding tab entry", item);
int index = 0;
struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
- pointer_bg, dest_mask, domain, WC_TABCONTROL,
+ pointer_bg, dest_mask, domain, WC_TABCONTROL,
/* borders don't suit tabs so well */
WS_TABSTOP,
WS_EX_CONTROLPARENT);
/* delete the pre-existing items */
SendMessage (wnd, TCM_DELETEALLITEMS, 0, 0);
-
- IMAGE_INSTANCE_WIDGET_ITEMS (ii) =
- Fcons (XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)),
+
+ IMAGE_INSTANCE_WIDGET_ITEMS (ii) =
+ Fcons (XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)),
parse_gui_item_tree_children (val));
/* add items to the tab */
LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)))
{
- add_tab_item (image_instance, wnd, XCAR (rest),
+ add_tab_item (image_instance, wnd, XCAR (rest),
IMAGE_INSTANCE_SUBWINDOW_FRAME (ii), index);
index++;
}
int dest_mask, Lisp_Object domain)
{
mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
- pointer_bg, dest_mask, domain, "STATIC",
+ pointer_bg, dest_mask, domain, "STATIC",
0, WS_EX_STATICEDGE);
}
int dest_mask, Lisp_Object domain)
{
mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
- pointer_bg, dest_mask, domain, "SCROLLBAR",
+ pointer_bg, dest_mask, domain, "SCROLLBAR",
0,
WS_EX_CLIENTEDGE );
}
pointer_bg, dest_mask, domain, len + 1, 0, 0);
mswindows_widget_instantiate (image_instance, instantiator, pointer_fg,
- pointer_bg, dest_mask, domain, "COMBOBOX",
+ pointer_bg, dest_mask, domain, "COMBOBOX",
WS_BORDER | WS_TABSTOP | CBS_DROPDOWN
- | CBS_AUTOHSCROLL
+ | CBS_AUTOHSCROLL
| CBS_HASSTRINGS | WS_VSCROLL,
WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT);
/* reset the height */
- widget_text_to_pixel_conversion (domain,
- IMAGE_INSTANCE_WIDGET_FACE (ii), 1, 0,
+ widget_text_to_pixel_conversion (domain,
+ IMAGE_INSTANCE_WIDGET_FACE (ii), 1, 0,
&IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii), 0);
wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
/* add items to the combo box */
{
Extcount len = SendMessage (wnd, WM_GETTEXTLENGTH, 0, 0);
Extbyte* buf =alloca (len+1);
-
+
SendMessage (wnd, WM_GETTEXT, (WPARAM)len+1, (LPARAM) buf);
return build_ext_string (buf, FORMAT_OS);
}
#endif
#ifdef HAVE_TIFF
IIFORMAT_VALID_CONSOLE (mswindows, tiff);
-#endif
+#endif
#ifdef HAVE_PNG
IIFORMAT_VALID_CONSOLE (mswindows, png);
-#endif
+#endif
#ifdef HAVE_GIF
IIFORMAT_VALID_CONSOLE (mswindows, gif);
-#endif
+#endif
#ifdef HAVE_WIDGETS
/* button widget */
INITIALIZE_DEVICE_IIFORMAT (mswindows, button);
INITIALIZE_DEVICE_IIFORMAT (mswindows, edit_field);
IIFORMAT_HAS_DEVMETHOD (mswindows, edit_field, instantiate);
-
+
INITIALIZE_DEVICE_IIFORMAT (mswindows, subwindow);
IIFORMAT_HAS_DEVMETHOD (mswindows, subwindow, instantiate);
IIFORMAT_HAS_METHOD (mswindows_resource, possible_dest_types);
IIFORMAT_HAS_METHOD (mswindows_resource, instantiate);
- IIFORMAT_VALID_KEYWORD (mswindows_resource, Q_resource_type,
+ IIFORMAT_VALID_KEYWORD (mswindows_resource, Q_resource_type,
check_valid_resource_symbol);
IIFORMAT_VALID_KEYWORD (mswindows_resource, Q_resource_id, check_valid_resource_id);
IIFORMAT_VALID_KEYWORD (mswindows_resource, Q_file, check_valid_string);
return inst;
}
-/* Instantiate a layout widget. */
+/* Instantiate a layout widget. Sizing commentary: we have a number of
+ problems that we would like to address. Some consider some of these
+ more important than others. Currently size information is
+ determined at instantiation time and is then fixed forever
+ after. Generally this is not what we want. Users want size to be
+ "big enough" to accommodate whatever they are trying to show and
+ this is dependent on text length, lines, font metrics etc. Of
+ course these attributes can change dynamically and so the size
+ should changed dynamically also. Only in a few limited cases should
+ the size be fixed and remain fixed. Of course this actually means
+ that we don't really want to specifiy the size *at all* for most
+ widgets - we want it to be discovered dynamically. Thus we can
+ envisage the following scenarios:
+
+ 1. A button is sized to accommodate its text, the text changes and the
+ button should change size also.
+
+ 2. A button is given an explicit size. Its size should never change.
+
+ 3. Layout is put inside an area. The size of the area changes, the
+ layout should change with it.
+
+ 4. A button grows to accommodate additional text. The whitespace
+ around it should be modified to cope with the new layout
+ requirements.
+
+ 5. A button grows. The area surrounding it should grow also if
+ possible.
+
+ What metrics are important?
+ 1. Actual width and height.
+
+ 2. Whether the width and height are what the widget actually wants, or
+ whether it can grow or shrink.
+
+ Text glyphs are particularly troublesome since their metrics depend
+ on the context in which they are being viewed. For instance they
+ can appear differently depending on the window face, frame face or
+ glyph face. All other glyphs are essentially fixed in
+ appearance. Perhaps the problem is that text glyphs are cached on a
+ device basis like most other glyphs. Instead they should be cached
+ per-window and then the instance would be fixed and we wouldn't
+ have to mess around with font metrics and the rest. */
static void
layout_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
Lisp_Object pointer_fg, Lisp_Object pointer_bg,
image_instantiator_format_create_glyphs_widget (void)
{
#define VALID_GUI_KEYWORDS(type) \
- IIFORMAT_VALID_KEYWORD (type, Q_active, check_valid_anything); \
- IIFORMAT_VALID_KEYWORD (type, Q_suffix, check_valid_anything); \
+ IIFORMAT_VALID_NONCOPY_KEYWORD (type, Q_active, check_valid_anything); \
+ IIFORMAT_VALID_KEYWORD (type, Q_suffix, check_valid_anything); \
IIFORMAT_VALID_KEYWORD (type, Q_keys, check_valid_string); \
IIFORMAT_VALID_KEYWORD (type, Q_style, check_valid_symbol); \
- IIFORMAT_VALID_KEYWORD (type, Q_selected, check_valid_anything); \
+ IIFORMAT_VALID_NONCOPY_KEYWORD (type, Q_selected, check_valid_anything); \
IIFORMAT_VALID_KEYWORD (type, Q_filter, check_valid_anything); \
IIFORMAT_VALID_KEYWORD (type, Q_config, check_valid_symbol); \
IIFORMAT_VALID_KEYWORD (type, Q_included, check_valid_anything); \
IIFORMAT_VALID_KEYWORD (type, Q_key_sequence, check_valid_string); \
- IIFORMAT_VALID_KEYWORD (type, Q_accelerator, check_valid_string); \
+ IIFORMAT_VALID_KEYWORD (type, Q_accelerator, check_valid_string); \
IIFORMAT_VALID_KEYWORD (type, Q_label, check_valid_anything); \
- IIFORMAT_VALID_KEYWORD (type, Q_callback, check_valid_callback); \
- IIFORMAT_VALID_KEYWORD (type, Q_descriptor, check_valid_string_or_vector)
+ IIFORMAT_VALID_NONCOPY_KEYWORD (type, Q_callback, check_valid_callback); \
+ IIFORMAT_VALID_NONCOPY_KEYWORD (type, Q_descriptor, check_valid_string_or_vector)
#define VALID_WIDGET_KEYWORDS(type) \
IIFORMAT_VALID_KEYWORD (type, Q_width, check_valid_int); \
#ifdef HAVE_WIDGETS
static void
-update_widget_face (struct Lisp_Image_Instance* ii, Lisp_Object domain);
+update_widget_face (widget_value* wv,
+ struct Lisp_Image_Instance* ii, Lisp_Object domain);
+static void
+update_tab_widget_face (widget_value* wv,
+ struct Lisp_Image_Instance* ii, Lisp_Object domain);
#endif
#include "bitmaps.h"
/* This seems ugly, but I'm not sure what else to do. */
if (EQ (IMAGE_INSTANCE_WIDGET_TYPE (p), Qtab_control))
{
- widget_value* cur = 0;
- /* Give each child label the correct foreground color. */
- Lisp_Object pixel = FACE_FOREGROUND
- (IMAGE_INSTANCE_WIDGET_FACE (p),
- IMAGE_INSTANCE_SUBWINDOW_FRAME (p));
- XColor fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
- XtSetArg (al [0], XtNtabForeground, fcolor.pixel);
-
- for (cur = wv->contents; cur; cur = cur->next)
- {
- if (cur->value)
- {
- cur->nargs = 1;
- cur->args = al;
- }
- }
+ update_tab_widget_face (wv, p,
+ IMAGE_INSTANCE_SUBWINDOW_FRAME (p));
}
-
+ /* update the colors and font */
+ update_widget_face (wv, p, IMAGE_INSTANCE_SUBWINDOW_FRAME (p));
+
/* now modify the widget */
lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (p),
wv, True);
free_widget_value_tree (wv);
- /* update the colors and font */
- update_widget_face (p, IMAGE_INSTANCE_SUBWINDOW_FRAME (p));
/* We have to do this otherwise Motif will unceremoniously
resize us when the label gets set. */
XtSetArg (al [0], XtNwidth, IMAGE_INSTANCE_WIDGET_WIDTH (p));
/************************************************************************/
static void
-update_widget_face (struct Lisp_Image_Instance* ii, Lisp_Object domain)
+update_widget_face (widget_value* wv, struct Lisp_Image_Instance *ii,
+ Lisp_Object domain)
{
- Arg al[3];
#ifdef LWLIB_WIDGETS_MOTIF
XmFontList fontList;
#endif
-
+
Lisp_Object pixel = FACE_FOREGROUND
(IMAGE_INSTANCE_WIDGET_FACE (ii),
- IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
+ domain);
XColor fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
- XColor bcolor;
-
- pixel = FACE_BACKGROUND
- (IMAGE_INSTANCE_WIDGET_FACE (ii),
- IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
- bcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
-
- XtSetArg (al [0], XtNbackground, bcolor.pixel);
- XtSetArg (al [1], XtNforeground, fcolor.pixel);
+ lw_add_widget_value_arg (wv, XtNforeground, fcolor.pixel);
#ifdef LWLIB_WIDGETS_MOTIF
fontList = XmFontListCreate
(FONT_INSTANCE_X_FONT
(XFONT_INSTANCE (widget_face_font_info
- (domain, IMAGE_INSTANCE_WIDGET_FACE (ii),
+ (domain,
+ IMAGE_INSTANCE_WIDGET_FACE (ii),
0, 0))), XmSTRING_DEFAULT_CHARSET);
- XtSetArg (al [2], XmNfontList, fontList );
-#else
- XtSetArg (al [2], XtNfont, (void*)FONT_INSTANCE_X_FONT
- (XFONT_INSTANCE (widget_face_font_info
- (domain,
- IMAGE_INSTANCE_WIDGET_FACE (ii),
- 0, 0))));
-#endif
- XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (ii), al, 3);
-#ifdef LWLIB_WIDGETS_MOTIF
- XmFontListFree (fontList);
+ lw_add_widget_value_arg (wv, XmNfontList, (XtArgVal)fontList);
#endif
+ lw_add_widget_value_arg
+ (wv, XtNfont, (XtArgVal)FONT_INSTANCE_X_FONT
+ (XFONT_INSTANCE (widget_face_font_info
+ (domain,
+ IMAGE_INSTANCE_WIDGET_FACE (ii),
+ 0, 0))));
+}
+
+static void
+update_tab_widget_face (widget_value* wv, struct Lisp_Image_Instance *ii,
+ Lisp_Object domain)
+{
+ if (wv->contents)
+ {
+ widget_value* val = wv->contents, *cur;
+
+ /* Give each child label the correct foreground color. */
+ Lisp_Object pixel = FACE_FOREGROUND
+ (IMAGE_INSTANCE_WIDGET_FACE (ii),
+ domain);
+ XColor fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
+ lw_add_widget_value_arg (val, XtNtabForeground, fcolor.pixel);
+
+ for (cur = val->next; cur; cur = cur->next)
+ {
+ if (cur->value)
+ {
+ lw_copy_widget_value_args (val, cur);
+ }
+ }
+ }
}
static void
required. */
clip_wv = xmalloc_widget_value ();
- XtSetArg (al [ac], XtNresize, False); ac++;
- XtSetArg (al [ac], XtNwidth,
- (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii)); ac++;
- XtSetArg (al [ac], XtNheight,
- (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii)); ac++;
-
+ lw_add_widget_value_arg (clip_wv, XtNresize, False);
+ lw_add_widget_value_arg (clip_wv, XtNwidth,
+ (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii));
+ lw_add_widget_value_arg (clip_wv, XtNheight,
+ (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii));
clip_wv->enabled = True;
- clip_wv->nargs = ac;
- clip_wv->args = al;
+
clip_wv->name = xstrdup ("clip-window");
clip_wv->value = xstrdup ("clip-window");
/* copy any args we were given */
ac = 0;
-
- if (wv->nargs)
- lw_add_value_args_to_args (wv, al, &ac);
+ lw_add_value_args_to_args (wv, al, &ac);
/* Fixup the colors. We have to do this *before* the widget gets
created so that Motif will fix up the shadow colors
IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
bcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
- XtSetArg (al [ac], XtNbackground, bcolor.pixel); ac++;
- XtSetArg (al [ac], XtNforeground, fcolor.pixel); ac++;
+ lw_add_widget_value_arg (wv, XtNbackground, bcolor.pixel);
+ lw_add_widget_value_arg (wv, XtNforeground, fcolor.pixel);
/* we cannot allow widgets to resize themselves */
- XtSetArg (al [ac], XtNresize, False); ac++;
- XtSetArg (al [ac], XtNwidth,
- (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii)); ac++;
- XtSetArg (al [ac], XtNheight,
- (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii)); ac++;
-
- wv->nargs = ac;
- wv->args = al;
+ lw_add_widget_value_arg (wv, XtNresize, False);
+ lw_add_widget_value_arg (wv, XtNwidth,
+ (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii));
+ lw_add_widget_value_arg (wv, XtNheight,
+ (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii));
+ /* update the font. */
+ update_widget_face (wv, ii, domain);
wid = lw_create_widget (type, wv->name, id, wv, IMAGE_INSTANCE_X_CLIPWIDGET (ii),
False, 0, popup_selection_callback, 0);
IMAGE_INSTANCE_SUBWINDOW_ID (ii) = (void*)wid;
IMAGE_INSTANCE_X_WIDGET_LWID (ii) = id;
- /* update the font. */
- update_widget_face (ii, domain);
-
/* Resize the widget here so that the values do not get copied by
lwlib. */
ac = 0;
{
struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ /* Modify the text properties of the widget */
if (EQ (prop, Q_text))
{
char* str;
lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, False);
return Qt;
}
- /* Modify the face properties of the widget */
- if (EQ (prop, Q_face))
+
+ /* Modify the text properties of the widget */
+ else if (EQ (prop, Q_face))
{
- update_widget_face (ii, IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
+ widget_value* wv = lw_get_all_values (IMAGE_INSTANCE_X_WIDGET_LWID (ii));
+ update_widget_face (wv, ii, IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
+ lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, False);
return Qt;
}
return Qunbound;
int dest_mask, Lisp_Object domain)
{
struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
- Arg al [1];
- XColor fcolor;
- Lisp_Object pixel;
- widget_value* cur;
-
widget_value * wv =
gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
- /* Give each child label the correct foreground color. */
- pixel = FACE_FOREGROUND
- (IMAGE_INSTANCE_WIDGET_FACE (ii),
- IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
- fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
- XtSetArg (al [0], XtNtabForeground, fcolor.pixel);
-
- for (cur = wv->contents; cur; cur = cur->next)
- {
- if (cur->value)
- {
- cur->nargs = 1;
- cur->args = al;
- }
- }
+ update_tab_widget_face (wv, ii,
+ IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
x_widget_instantiate (image_instance, instantiator, pointer_fg,
pointer_bg, dest_mask, domain, "tab-control", wv);
if (EQ (prop, Q_items))
{
- widget_value * wv = 0, *cur;
- Arg al [1];
- XColor fcolor;
- Lisp_Object pixel;
-
+ widget_value * wv = 0;
check_valid_item_list_1 (val);
IMAGE_INSTANCE_WIDGET_ITEMS (ii) =
parse_gui_item_tree_children (val));
wv = gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
-
- /* Give each child label the correct foreground color. */
- pixel = FACE_FOREGROUND
- (IMAGE_INSTANCE_WIDGET_FACE (ii),
- IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
- fcolor = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel));
- XtSetArg (al [0], XtNtabForeground, fcolor.pixel);
- for (cur = wv->contents; cur; cur = cur->next)
- {
- if (cur->value)
- {
- cur->nargs = 1;
- cur->args = al;
- }
- }
+ update_tab_widget_face (wv, ii,
+ IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, True);
Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
- Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
+ Lisp_Object string = find_keyword_in_vector (instantiator, Q_data);
struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
- assert (!NILP (data));
+ assert (!NILP (string));
if (dest_mask & IMAGE_TEXT_MASK)
{
IMAGE_INSTANCE_TYPE (ii) = IMAGE_TEXT;
- IMAGE_INSTANCE_TEXT_STRING (ii) = data;
+ IMAGE_INSTANCE_TEXT_STRING (ii) = string;
}
else
incompatible_image_types (instantiator, dest_mask, IMAGE_TEXT_MASK);
round it. */
if (UNBOUNDP (instance)
&&
- dest_mask & (IMAGE_SUBWINDOW_MASK | IMAGE_WIDGET_MASK))
+ dest_mask & (IMAGE_SUBWINDOW_MASK
+ | IMAGE_WIDGET_MASK
+ | IMAGE_TEXT_MASK))
{
if (!WINDOWP (domain))
- signal_simple_error ("Can't instantiate subwindow outside a window",
+ signal_simple_error ("Can't instantiate text or subwindow outside a window",
instantiator);
instance = Fgethash (instantiator,
XWINDOW (domain)->subwindow_instance_cache,
return retlist;
}
+/* Copy an image instantiator. We can't use Fcopy_tree since widgets
+ may contain circular references which would send Fcopy_tree into
+ infloop death. */
+static Lisp_Object
+image_copy_vector_instantiator (Lisp_Object instantiator)
+{
+ int i;
+ struct image_instantiator_methods *meths;
+ Lisp_Object *elt;
+ int instantiator_len;
+
+ CHECK_VECTOR (instantiator);
+
+ instantiator = Fcopy_sequence (instantiator);
+ elt = XVECTOR_DATA (instantiator);
+ instantiator_len = XVECTOR_LENGTH (instantiator);
+
+ meths = decode_image_instantiator_format (elt[0], ERROR_ME);
+
+ for (i = 1; i < instantiator_len; i += 2)
+ {
+ int j;
+ Lisp_Object keyword = elt[i];
+ Lisp_Object value = elt[i+1];
+
+ /* Find the keyword entry. */
+ for (j = 0; j < Dynarr_length (meths->keywords); j++)
+ {
+ if (EQ (keyword, Dynarr_at (meths->keywords, j).keyword))
+ break;
+ }
+
+ /* Only copy keyword values that should be copied. */
+ if (Dynarr_at (meths->keywords, j).copy_p
+ &&
+ (CONSP (value) || VECTORP (value)))
+ {
+ elt [i+1] = Fcopy_tree (value, Qt);
+ }
+ }
+
+ return instantiator;
+}
+
+static Lisp_Object
+image_copy_instantiator (Lisp_Object arg)
+{
+ if (CONSP (arg))
+ {
+ Lisp_Object rest;
+ rest = arg = Fcopy_sequence (arg);
+ while (CONSP (rest))
+ {
+ Lisp_Object elt = XCAR (rest);
+ if (CONSP (elt))
+ XCAR (rest) = Fcopy_tree (elt, Qt);
+ else if (VECTORP (elt))
+ XCAR (rest) = image_copy_vector_instantiator (elt);
+ if (VECTORP (XCDR (rest))) /* hack for (a b . [c d]) */
+ XCDR (rest) = Fcopy_tree (XCDR (rest), Qt);
+ rest = XCDR (rest);
+ }
+ }
+ else if (VECTORP (arg))
+ {
+ arg = image_copy_vector_instantiator (arg);
+ }
+ return arg;
+}
+
DEFUN ("image-specifier-p", Fimage_specifier_p, 1, 1, 0, /*
Return non-nil if OBJECT is an image specifier.
SPECIFIER_HAS_METHOD (image, validate);
SPECIFIER_HAS_METHOD (image, after_change);
SPECIFIER_HAS_METHOD (image, going_to_add);
+ SPECIFIER_HAS_METHOD (image, copy_instantiator);
}
void
Lisp_Object keyword;
void (*validate) (Lisp_Object data);
int multiple_p;
+ int copy_p;
};
typedef struct
Lisp_Object (*set_property_method) (Lisp_Object image_instance,
Lisp_Object property,
Lisp_Object val);
+
+ /* Find out the geometry of this image instance. */
+ void (*query_geometry_method) (Lisp_Object image_instance,
+ int* width, int* height, int disp);
+
+ /* Layout the instances children. */
+ void (*layout_children_method) (Lisp_Object image_instance);
};
/***** Calling an image-instantiator method *****/
/* Declare that KEYW is a valid keyword for image-instantiator format
FORMAT. VALIDATE_FUN if a function that returns whether the data
is valid. The keyword may not appear more than once. */
-#define IIFORMAT_VALID_KEYWORD(format, keyw, validate_fun) \
- do { \
+#define IIFORMAT_VALID_GENERIC_KEYWORD(format, keyw, validate_fun, copy, multi) \
+ do { \
struct ii_keyword_entry entry; \
- \
- entry.keyword = keyw; \
+ \
+ entry.keyword = keyw; \
entry.validate = validate_fun; \
- entry.multiple_p = 0; \
+ entry.multiple_p = multi; \
+ entry.copy_p = copy; \
Dynarr_add (format##_image_instantiator_methods->keywords, \
entry); \
} while (0)
+#define IIFORMAT_VALID_KEYWORD(format, keyw, validate_fun) \
+IIFORMAT_VALID_GENERIC_KEYWORD(format, keyw, validate_fun, 1, 0)
+
/* Same as IIFORMAT_VALID_KEYWORD except that the keyword may
appear multiple times. */
-#define IIFORMAT_VALID_MULTI_KEYWORD(format, keyword, validate_fun) \
- do { \
- struct ii_keyword_entry entry; \
- \
- entry.keyword = keyword; \
- entry.validate = validate_fun; \
- entry.multiple_p = 1; \
- Dynarr_add (format##_image_instantiator_methods->keywords, \
- entry); \
- } while (0)
+#define IIFORMAT_VALID_MULTI_KEYWORD(format, keyw, validate_fun) \
+IIFORMAT_VALID_GENERIC_KEYWORD(format, keyw, validate_fun, 1, 1)
+
+/* Same as IIFORMAT_VALID_KEYWORD execpt that the argument is not
+ copied by the specifier functions. This is necessary for things
+ like callbacks etc. */
+#define IIFORMAT_VALID_NONCOPY_KEYWORD(format, keyw, validate_fun) \
+IIFORMAT_VALID_GENERIC_KEYWORD(format, keyw, validate_fun, 0, 0)
/* Declare that image-instantiator format FORMAT is supported on
CONSOLE type. */
IMAGE_LAYOUT
};
+enum image_instance_geometry
+{
+ IMAGE_GEOMETRY,
+ IMAGE_DESIRED_GEOMETRY,
+ IMAGE_MIN_GEOMETRY,
+ IMAGE_MAX_GEOMETRY
+};
+
#define IMAGE_NOTHING_MASK (1 << 0)
#define IMAGE_TEXT_MASK (1 << 1)
#define IMAGE_MONO_PIXMAP_MASK (1 << 2)
Lisp_Object device;
Lisp_Object name;
enum image_instance_type type;
- int x_offset, y_offset; /* for layout purposes */
+ unsigned int x_offset, y_offset; /* for layout purposes */
+ unsigned int width, height;
unsigned int dirty : 1;
union
{
struct
{
+ unsigned int descent;
Lisp_Object string;
} text;
struct
{
- int width, height, depth;
- int slice, maxslice, timeout;
+ unsigned int depth;
+ unsigned int slice, maxslice, timeout;
Lisp_Object hotspot_x, hotspot_y; /* integer or Qnil */
Lisp_Object filename; /* string or Qnil */
Lisp_Object mask_filename; /* string or Qnil */
struct
{
Lisp_Object frame;
- unsigned int width, height;
void* subwindow; /* specific devices can use this as necessary */
unsigned int being_displayed : 1; /* used to detect when needs to be unmapped */
union
#define IMAGE_INSTANCE_TYPE(i) ((i)->type)
#define IMAGE_INSTANCE_XOFFSET(i) ((i)->x_offset)
#define IMAGE_INSTANCE_YOFFSET(i) ((i)->y_offset)
+#define IMAGE_INSTANCE_WIDTH(i) ((i)->width)
+#define IMAGE_INSTANCE_HEIGHT(i) ((i)->height)
#define IMAGE_INSTANCE_PIXMAP_TYPE_P(i) \
((IMAGE_INSTANCE_TYPE (i) == IMAGE_MONO_PIXMAP) \
|| (IMAGE_INSTANCE_TYPE (i) == IMAGE_COLOR_PIXMAP))
#define IMAGE_INSTANCE_DIRTYP(i) ((i)->dirty)
#define IMAGE_INSTANCE_TEXT_STRING(i) ((i)->u.text.string)
-
-#define IMAGE_INSTANCE_PIXMAP_WIDTH(i) ((i)->u.pixmap.width)
-#define IMAGE_INSTANCE_PIXMAP_HEIGHT(i) ((i)->u.pixmap.height)
+#define IMAGE_INSTANCE_TEXT_WIDTH(i) \
+ IMAGE_INSTANCE_WIDTH(i)
+#define IMAGE_INSTANCE_TEXT_HEIGHT(i) \
+ IMAGE_INSTANCE_HEIGHT(i)
+#define IMAGE_INSTANCE_TEXT_DESCENT(i) ((i)->u.text.descent)
+
+#define IMAGE_INSTANCE_PIXMAP_WIDTH(i) \
+ IMAGE_INSTANCE_WIDTH(i)
+#define IMAGE_INSTANCE_PIXMAP_HEIGHT(i) \
+ IMAGE_INSTANCE_HEIGHT(i)
#define IMAGE_INSTANCE_PIXMAP_DEPTH(i) ((i)->u.pixmap.depth)
#define IMAGE_INSTANCE_PIXMAP_FILENAME(i) ((i)->u.pixmap.filename)
#define IMAGE_INSTANCE_PIXMAP_MASK_FILENAME(i) ((i)->u.pixmap.mask_filename)
#define IMAGE_INSTANCE_PIXMAP_MAXSLICE(i) ((i)->u.pixmap.maxslice)
#define IMAGE_INSTANCE_PIXMAP_TIMEOUT(i) ((i)->u.pixmap.timeout)
-#define IMAGE_INSTANCE_SUBWINDOW_WIDTH(i) ((i)->u.subwindow.width)
-#define IMAGE_INSTANCE_SUBWINDOW_HEIGHT(i) ((i)->u.subwindow.height)
+#define IMAGE_INSTANCE_SUBWINDOW_WIDTH(i) \
+ IMAGE_INSTANCE_WIDTH(i)
+#define IMAGE_INSTANCE_SUBWINDOW_HEIGHT(i) \
+ IMAGE_INSTANCE_HEIGHT(i)
#define IMAGE_INSTANCE_SUBWINDOW_ID(i) ((i)->u.subwindow.subwindow)
#define IMAGE_INSTANCE_SUBWINDOW_FRAME(i) ((i)->u.subwindow.frame)
#define IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP(i) \
((i)->u.subwindow.being_displayed)
#define IMAGE_INSTANCE_WIDGET_WIDTH(i) \
- IMAGE_INSTANCE_SUBWINDOW_WIDTH(i)
+ IMAGE_INSTANCE_WIDTH(i)
#define IMAGE_INSTANCE_WIDGET_HEIGHT(i) \
- IMAGE_INSTANCE_SUBWINDOW_HEIGHT(i)
+ IMAGE_INSTANCE_HEIGHT(i)
#define IMAGE_INSTANCE_WIDGET_TYPE(i) ((i)->u.subwindow.s.widget.type)
#define IMAGE_INSTANCE_WIDGET_PROPS(i) ((i)->u.subwindow.s.widget.props)
#define IMAGE_INSTANCE_WIDGET_FACE(i) ((i)->u.subwindow.s.widget.face)
#include "specifier.h"
-#define DEVICE_SUPPORTS_GUTTERS_P(d) \
- (HAS_DEVMETH_P ((d), output_frame_gutters))
+#define DEVICE_SUPPORTS_GUTTERS_P(d) HAS_DEVMETH_P (d, output_frame_gutters)
DECLARE_SPECIFIER_TYPE (gutter);
#define XGUTTER_SPECIFIER(x) XSPECIFIER_TYPE (x, gutter)
extern Lisp_Object Vconsole_list, Vcontrolling_terminal;
extern Lisp_Object Vcurrent_compiled_function_annotation, Vcurrent_load_list;
extern Lisp_Object Vcurrent_mouse_event, Vcurrent_prefix_arg, Vdata_directory;
-extern Lisp_Object Vdisabled_command_hook, Vdoc_directory, Vinternal_doc_file_name;
+extern Lisp_Object Vdirectory_sep_char, Vdisabled_command_hook;
+extern Lisp_Object Vdoc_directory, Vinternal_doc_file_name;
extern Lisp_Object Vecho_area_buffer, Vemacs_major_version;
extern Lisp_Object Vemacs_minor_version, Vexec_directory, Vexec_path;
extern Lisp_Object Vexecuting_macro, Vfeatures, Vfile_domain;
case Lisp_Type_Int_Even:
case Lisp_Type_Int_Odd:
{
- char buf[24];
+ /* ASCII Decimal representation uses 2.4 times as many bits as
+ machine binary. */
+ char buf[3 * sizeof (EMACS_INT) + 5];
long_to_string (buf, XINT (obj));
write_c_string (buf, printcharfun);
break;
Emchar ch = XCHAR (obj);
char *p = buf;
*p++ = '?';
- if (ch == '\n')
- *p++ = '\\', *p++ = 'n';
- else if (ch == '\r')
- *p++ = '\\', *p++ = 'r';
- else if (ch == '\t')
- *p++ = '\\', *p++ = 't';
- else if (ch < 32)
+ if (ch < 32)
{
- *p++ = '\\', *p++ = '^';
- *p++ = ch + 64;
- if ((ch + 64) == '\\')
- *p++ = '\\';
+ *p++ = '\\';
+ switch (ch)
+ {
+ case '\t': *p++ = 't'; break;
+ case '\n': *p++ = 'n'; break;
+ case '\r': *p++ = 'r'; break;
+ default:
+ *p++ = '^';
+ *p++ = ch + 64;
+ if ((ch + 64) == '\\')
+ *p++ = '\\';
+ break;
+ }
+ }
+ else if (ch < 127)
+ {
+ /* syntactically special characters should be escaped. */
+ switch (ch)
+ {
+ case ' ':
+ case '"':
+ case '#':
+ case '\'':
+ case '(':
+ case ')':
+ case ',':
+ case '.':
+ case ';':
+ case '?':
+ case '[':
+ case '\\':
+ case ']':
+ case '`':
+ *p++ = '\\';
+ }
+ *p++ = ch;
}
else if (ch == 127)
- *p++ = '\\', *p++ = '^', *p++ = '?';
- else if (ch >= 128 && ch < 160)
+ {
+ *p++ = '\\', *p++ = '^', *p++ = '?';
+ }
+ else if (ch < 160)
{
*p++ = '\\', *p++ = '^';
- p += set_charptr_emchar ((Bufbyte *)p, ch + 64);
+ p += set_charptr_emchar ((Bufbyte *) p, ch + 64);
}
- else if (ch < 127
- && !isdigit (ch)
- && !isalpha (ch)
- && ch != '^') /* must not backslash this or it will
- be interpreted as the start of a
- control char */
- *p++ = '\\', *p++ = ch;
else
- p += set_charptr_emchar ((Bufbyte *)p, ch);
- output_string (printcharfun, (Bufbyte *)buf, Qnil, 0, p - buf);
+ {
+ p += set_charptr_emchar ((Bufbyte *) p, ch);
+ }
+
+ output_string (printcharfun, (Bufbyte *) buf, Qnil, 0, p - buf);
+
break;
}
{
fun = *backtrace_list->function;
- if (!SYMBOLP (fun) &&
- !COMPILED_FUNCTIONP (fun) &&
- !SUBRP (fun))
+ if (!SYMBOLP (fun)
+ && !COMPILED_FUNCTIONP (fun)
+ && !SUBRP (fun)
+ && !CONSP (fun))
fun = QSunknown;
}
else
int run_end_begin_glyphs);
static void redisplay_output_display_block (struct window *w, struct display_line *dl,
int block, int start, int end, int start_pixpos,
- int cursor_start, int cursor_width,
+ int cursor_start, int cursor_width,
int cursor_height);
-static void redisplay_normalize_display_box (struct display_box* dest,
+static void redisplay_normalize_display_box (struct display_box* dest,
struct display_glyph_area* src);
static int redisplay_display_boxes_in_window_p (struct window* w,
struct display_box* db,
struct display_glyph_area* dga);
-static void redisplay_clear_clipped_region (Lisp_Object locale, face_index findex,
- struct display_box* dest,
- struct display_glyph_area* glyphsrc,
+static void redisplay_clear_clipped_region (Lisp_Object locale, face_index findex,
+ struct display_box* dest,
+ struct display_glyph_area* glyphsrc,
int fullheight_p, Lisp_Object);
/*****************************************************************************
#### It would really be worth it to arrange for this function to
be (almost) a single call to memcmp. */
-
+
if ((crb->findex != drb->findex) ||
(WINDOW_FACE_CACHEL_DIRTY (w, drb->findex)))
return 0;
(crb->object.hline.thickness != drb->object.hline.thickness ||
crb->object.hline.yoffset != drb->object.hline.yoffset))
return 0;
- else if (crb->type == RUNE_DGLYPH &&
+ else if (crb->type == RUNE_DGLYPH &&
(!EQ (crb->object.dglyph.glyph, drb->object.dglyph.glyph) ||
!EQ (crb->object.dglyph.extent, drb->object.dglyph.extent) ||
crb->object.dglyph.xoffset != drb->object.dglyph.xoffset))
up-to-date. */
if (GLYPH_CACHEL_DIRTYP (w, gindex))
return 0;
- else
+ else
return 1;
}
else
if (x < ddl->bounds.left_in)
{
findex = ddl->left_margin_findex ?
- ddl->left_margin_findex
+ ddl->left_margin_findex
: get_builtin_face_cache_index (w, Vleft_margin_face);
}
else if (x < ddl->bounds.right_in)
else if (x < ddl->bounds.right_out)
{
findex = ddl->right_margin_findex ?
- ddl->right_margin_findex
+ ddl->right_margin_findex
: get_builtin_face_cache_index (w, Vright_margin_face);
}
else
region or if it was a block of a different type, then
output the entire ddb. Otherwise, compare cdb and
ddb and output only the changed region. */
- if (!force && cdb && ddb->type == cdb->type
+ if (!force && cdb && ddb->type == cdb->type
/* If there was no buffer being display before the
compare anyway as we might be outputting a gutter. */
- &&
+ &&
(b == old_b || !old_b))
{
must_sync |= compare_display_blocks (w, cdl, ddl, old_block,
cursor_start, cursor_width,
cursor_height);
}
-
+
start_pixpos = next_start_pixpos;
}
}
y -= MODELINE_SHADOW_THICKNESS (w);
height += (2 * MODELINE_SHADOW_THICKNESS (w));
}
-
+
if (window_is_leftmost (w))
clear_left_border (w, y, height);
if (window_is_rightmost (w))
}
}
- while ((up ? (cur_dl < Dynarr_length (cla)) : (cur_dl >= 0)))
+ while (up ? (cur_dl < Dynarr_length (cla)) : (cur_dl >= 0))
{
dl = Dynarr_atp (cla, cur_dl);
db = get_display_block_from_line (dl, TEXT);
cachel->x + cachel->width > x && cachel->x < x + width
&&
cachel->y + cachel->height > y && cachel->y < y + height
- &&
+ &&
!EQ (cachel->subwindow, ignored_window))
{
unmap_subwindow (cachel->subwindow);
}
}
-static void redisplay_unmap_subwindows_except_us (struct frame* f, int x, int y, int width,
+static void redisplay_unmap_subwindows_except_us (struct frame* f, int x, int y, int width,
int height, Lisp_Object subwindow)
{
if (Dynarr_length (FRAME_SUBWINDOW_CACHE (f)))
pixmaps, backgrounds etc.
****************************************************************************/
void
-redisplay_output_subwindow (struct window *w,
+redisplay_output_subwindow (struct window *w,
Lisp_Object image_instance,
struct display_box* db, struct display_glyph_area* dga,
face_index findex, int cursor_start, int cursor_width,
sdga.yoffset = -dga->yoffset;
sdga.height = IMAGE_INSTANCE_SUBWINDOW_HEIGHT (p);
sdga.width = IMAGE_INSTANCE_SUBWINDOW_WIDTH (p);
-
+
if (redisplay_display_boxes_in_window_p (w, db, &sdga) < 0)
{
map_subwindow (image_instance, db->xpos, db->ypos, dga);
else
{
sdga.xoffset = sdga.yoffset = 0;
- map_subwindow (image_instance, db->xpos - dga->xoffset,
+ map_subwindow (image_instance, db->xpos - dga->xoffset,
db->ypos - dga->yoffset, &sdga);
}
}
Output a widget hierarchy. This can safely call itself recursively.
****************************************************************************/
void
-redisplay_output_layout (struct window *w,
+redisplay_output_layout (struct window *w,
Lisp_Object image_instance,
struct display_box* db, struct display_glyph_area* dga,
face_index findex, int cursor_start, int cursor_width,
thing to do since we have many gaps that we have to make sure are
filled in. */
redisplay_clear_clipped_region (window, findex, db, dga, 1, Qnil);
-
+
/* Output a border if required */
if (!NILP (IMAGE_INSTANCE_LAYOUT_BORDER (p)))
{
enum edge_style style;
int ypos = db->ypos;
int height = dga->height;
-
+
if (dga->xoffset >= 0)
edges |= EDGE_LEFT;
if (dga->width - dga->xoffset == layout_width)
edges |= EDGE_TOP;
if (dga->height - dga->yoffset == layout_height)
edges |= EDGE_BOTTOM;
-
+
if (EQ (IMAGE_INSTANCE_LAYOUT_BORDER (p), Qetched_in))
style = EDGE_ETCHED_IN;
else if (EQ (IMAGE_INSTANCE_LAYOUT_BORDER (p), Qetched_out))
else
style = EDGE_BEVEL_OUT;
- MAYBE_DEVMETH (d, bevel_area,
+ MAYBE_DEVMETH (d, bevel_area,
(w, findex, db->xpos,
- ypos,
+ ypos,
dga->width, height, 2, edges, style));
}
}
-
+
/* This shrinks the display box to exactly enclose the glyph
area. */
redisplay_normalize_display_box (db, dga);
{
/* #### This is well hacked and could use some
generalisation.*/
- if (redisplay_normalize_glyph_area (&cdb, &cdga)
- &&
+ if (redisplay_normalize_glyph_area (&cdb, &cdga)
+ &&
(frame_really_changed || IMAGE_INSTANCE_DIRTYP (childii)))
{
struct display_line dl; /* this is fake */
IMAGE_INSTANCE_TEXT_STRING (childii);
convert_bufbyte_string_into_emchar_dynarr
(XSTRING_DATA (string), XSTRING_LENGTH (string), buf);
-
+
redisplay_normalize_display_box (&cdb, &cdga);
/* Offsets are now +ve again so be careful
when fixing up the display line. */
}
}
break;
-
+
case IMAGE_MONO_PIXMAP:
case IMAGE_COLOR_PIXMAP:
if (frame_really_changed || IMAGE_INSTANCE_DIRTYP (childii))
redisplay_output_pixmap (w, child, &cdb, &cdga, findex,
0, 0, 0, 0);
break;
-
+
case IMAGE_WIDGET:
case IMAGE_SUBWINDOW:
if (frame_really_changed || IMAGE_INSTANCE_DIRTYP (childii))
redisplay_output_subwindow (w, child, &cdb, &cdga, findex,
0, 0, 0);
break;
-
+
case IMAGE_LAYOUT:
redisplay_output_layout (w, child, &cdb, &cdga, findex,
0, 0, 0);
break;
-
+
case IMAGE_NOTHING:
/* nothing is as nothing does */
break;
-
+
case IMAGE_POINTER:
default:
abort ();
output a pixmap.
****************************************************************************/
void
-redisplay_output_pixmap (struct window *w,
+redisplay_output_pixmap (struct window *w,
Lisp_Object image_instance,
struct display_box* db, struct display_glyph_area* dga,
face_index findex, int cursor_start, int cursor_width,
if (!offset_bitmap)
{
redisplay_clear_clipped_region (window, findex,
- db, dga,
+ db, dga,
(int)IMAGE_INSTANCE_PIXMAP_MASK (p),
Qnil);
/* #### This isn't quite right for when this function is called
from the toolbar code. */
-
+
/* Don't use a backing pixmap in the border area */
if (x >= FRAME_LEFT_BORDER_END (f)
&& x < FRAME_RIGHT_BORDER_START (f)
&& y < FRAME_BOTTOM_BORDER_START (f))
{
Lisp_Object temp;
-
+
if (w)
{
temp = WINDOW_FACE_CACHEL_BACKGROUND_PIXMAP (w, findex);
-
+
if (IMAGE_INSTANCEP (temp)
&& IMAGE_INSTANCE_PIXMAP_TYPE_P (XIMAGE_INSTANCE (temp)))
{
else
{
temp = FACE_BACKGROUND_PIXMAP (Vdefault_face, locale);
-
+
if (IMAGE_INSTANCEP (temp)
&& IMAGE_INSTANCE_PIXMAP_TYPE_P (XIMAGE_INSTANCE (temp)))
{
background_pixmap = temp;
}
}
- }
+ }
if (!UNBOUNDP (background_pixmap) &&
XIMAGE_INSTANCE_PIXMAP_DEPTH (background_pixmap) == 0)
fcolor = (w ?
WINDOW_FACE_CACHEL_BACKGROUND (w, findex) :
FACE_BACKGROUND (Vdefault_face, locale));
-
+
}
-
+
if (UNBOUNDP (background_pixmap))
background_pixmap = Qnil;
-
- DEVMETH (d, clear_region,
+
+ DEVMETH (d, clear_region,
(locale, d, f, findex, x, y, width, height, fcolor, bcolor, background_pixmap));
}
around with by altering these. glyphsrc should be normalized.
****************************************************************************/
static void
-redisplay_clear_clipped_region (Lisp_Object window, face_index findex,
- struct display_box* dest, struct display_glyph_area* glyphsrc,
+redisplay_clear_clipped_region (Lisp_Object window, face_index findex,
+ struct display_box* dest, struct display_glyph_area* glyphsrc,
int fullheight_p, Lisp_Object ignored_subwindow)
{
/* assume dest->xpos >= 0 */
}
else
{
- int yoffset = (glyphsrc->yoffset > 0 ? glyphsrc->yoffset : 0);
-
+ int yoffset = (glyphsrc->yoffset > 0 ? glyphsrc->yoffset : 0);
+
/* We need to make sure that subwindows are unmapped from the
whole area. */
redisplay_unmap_subwindows_except_us (f, clear_x, dest->ypos,
{
redisplay_clear_region (window, findex, clear_x, dest->ypos,
glyphsrc->width, yoffset);
-
+
}
/* Then the bottom box */
if (yoffset + glyphsrc->height < dest->height)
{
redisplay_clear_region (window, findex, clear_x,
dest->ypos + yoffset + glyphsrc->height,
- glyphsrc->width,
+ glyphsrc->width,
dest->height - (yoffset + glyphsrc->height));
}
Calculate the visible box for displaying src in dest.
****************************************************************************/
int
-redisplay_normalize_glyph_area (struct display_box* dest,
+redisplay_normalize_glyph_area (struct display_box* dest,
struct display_glyph_area* glyphsrc)
{
if (dest->xpos + glyphsrc->xoffset > dest->xpos + dest->width
}
static void
-redisplay_normalize_display_box (struct display_box* dest,
+redisplay_normalize_display_box (struct display_box* dest,
struct display_glyph_area* glyphsrc)
{
/* Adjust the destination area. At the end of this the destination
|| db->ypos + db->height > bottom)
/* We are not displaying in a window at all */
return 0;
-
+
if (db->xpos + dga->xoffset >= left
&&
db->ypos + dga->yoffset >= top
int
redisplay_calculate_display_boxes (struct display_line *dl, int xpos,
int xoffset, int start_pixpos, int width,
- struct display_box* dest,
+ struct display_box* dest,
struct display_glyph_area* src)
{
dest->xpos = xpos;
else
{
int height = ypos2 - ypos1;
-
+
if (height)
{
Lisp_Object window;
int bflag = 0 ; /* (window_needs_vertical_divider (w) ? 0 : 1);*/
layout_bounds bounds;
-
+
bounds = calculate_display_line_boundaries (w, bflag);
XSETWINDOW (window, w);
if (window_is_leftmost (w))
redisplay_clear_region (window, DEFAULT_INDEX, FRAME_LEFT_BORDER_START (f),
ypos1, FRAME_BORDER_WIDTH (f), height);
-
+
if (bounds.left_in - bounds.left_out > 0)
redisplay_clear_region (window,
get_builtin_face_cache_index (w, Vleft_margin_face),
bounds.left_out, ypos1,
bounds.left_in - bounds.left_out, height);
-
+
if (bounds.right_in - bounds.left_in > 0)
- redisplay_clear_region (window,
+ redisplay_clear_region (window,
DEFAULT_INDEX,
bounds.left_in, ypos1,
bounds.right_in - bounds.left_in, height);
-
+
if (bounds.right_out - bounds.right_in > 0)
redisplay_clear_region (window,
get_builtin_face_cache_index (w, Vright_margin_face),
bounds.right_in, ypos1,
bounds.right_out - bounds.right_in, height);
-
+
if (window_is_rightmost (w))
redisplay_clear_region (window, DEFAULT_INDEX, FRAME_RIGHT_BORDER_START (f),
ypos1, FRAME_BORDER_WIDTH (f), height);
style = EDGE_BEVEL_OUT;
}
- MAYBE_DEVMETH (d, bevel_area,
+ MAYBE_DEVMETH (d, bevel_area,
(w, MODELINE_INDEX, x, y, width, height, shadow_thickness,
EDGE_ALL, style));
}
Bytind bi_start_col_enabled;
int start_col_xoffset; /* Number of pixels that still need to
be skipped. This is used for
- horizontal scrolling of glyphs, where we want
+ horizontal scrolling of glyphs, where we want
to be able to scroll over part of the glyph. */
int hscroll_glyph_width_adjust; /* how much the width of the hscroll
after a ^M is invisible. */
int selective = (INTP (b->selective_display)
? XINT (b->selective_display)
- : ((!NILP (b->selective_display) ? -1 : 0)));
+ : (!NILP (b->selective_display) ? -1 : 0));
/* The variable ctl-arrow allows the user to specify what characters
can actually be displayed and which octal should be used for.
int prop_width = 0;
if (data.start_col > 1)
- tab_start_pixpos -= (space_width (w) * (data.start_col - 1))
+ tab_start_pixpos -= (space_width (w) * (data.start_col - 1))
+ data.start_col_xoffset;
next_tab_start =
}
else
{
- dl->left_margin_findex =
+ dl->left_margin_findex =
get_builtin_face_cache_index (w, Vleft_margin_face);
- dl->right_margin_findex =
+ dl->right_margin_findex =
get_builtin_face_cache_index (w, Vright_margin_face);
}
data.start_col = 0;
/* I don't think we want this, string areas should not scroll with
- the window
+ the window
data.start_col = w->hscroll;
data.bi_start_col_enabled = (w->hscroll ? bi_start_pos : 0);
*/
else
dl->end_bufpos = buffer_or_string_bytind_to_bufpos (disp_string, data.bi_bufpos) - 1;
if (truncate_win)
- data.dl->num_chars =
+ data.dl->num_chars =
string_column_at_point (s, dl->end_bufpos, b ? XINT (b->tab_width) : 8);
else
/* This doesn't correctly take into account tabs and control
representation of the buffer contents starting from the given
position when displayed in the given window. The display line ends
when the contents of the line reach the right boundary of the given
- window.
-
+ window.
+
This is very similar to generate_display_line but with the same
limitations as create_string_text_block. I have taken the liberty
of fixing the bytind stuff though.*/
Bufpos ret_bufpos;
/* you must set bounds before calling this. */
-
+
/* Reset what this line is using. */
if (dl->display_blocks)
Dynarr_reset (dl->display_blocks);
/* See if we've been asked to start midway through a line, for
partial display line scrolling. */
- if (yclip)
+ if (yclip)
{
dlp->top_clip = yclip;
yclip = 0;
process.*/
if (!Dynarr_length (f->subwindow_cachels)
|| f->subwindows_changed
+ || f->faces_changed
|| f->frame_changed)
{
reset_subwindow_cachels (f);
else
{
struct line_start_cache lsc;
-
+
lsc.start = dl->bufpos;
lsc.end = dl->end_bufpos;
lsc.height = dl->ascent + dl->descent;
assert (cur_elt >= -1);
/* This used to be cur_elt>=0 under the assumption that if
point is in the top line and not at BUF_BEGV, then
- setting the window_start to a newline before the start of
+ setting the window_start to a newline before the start of
the first line will always cause scrolling.
However in my (jv) opinion this is wrong. That new line
on that assert. So we have no option but to continue the
search if we found point at the top of the line_start_cache
again. */
- cur_pos = Dynarr_atp (w->line_start_cache,0)->start;
+ cur_pos = Dynarr_atp (w->line_start_cache,0)->start;
}
prev_pos = cur_pos;
}
#define BYTEWIDTH 8 /* In bits. */
-#define STREQ(s1, s2) ((strcmp (s1, s2) == 0))
+#define STREQ(s1, s2) (strcmp (s1, s2) == 0)
#undef MAX
#undef MIN
/* XEmacs file I/O for DOS text files requires FILE_CODING */
#define FILE_CODING
-extern Lisp_Object Vdirectory_sep_char;
-#define DIRECTORY_SEP ((char)XCHARVAL(Vdirectory_sep_char))
+#define DIRECTORY_SEP ((char)XCHAR(Vdirectory_sep_char))
/* Define this to be the separator between devices and paths */
#define DEVICE_SEP ':'
LIST_LOOP (rest, inst_list)
{
Lisp_Object tag_set = XCAR (XCAR (rest));
- Lisp_Object instantiator = Fcopy_tree (XCDR (XCAR (rest)), Qt);
Lisp_Object sub_inst_list = Qnil;
+ Lisp_Object instantiator;
struct gcpro ngcpro1, ngcpro2;
+ if (HAS_SPECMETH_P (sp, copy_instantiator))
+ instantiator = SPECMETH (sp, copy_instantiator,
+ (XCDR (XCAR (rest))));
+ else
+ instantiator = Fcopy_tree (XCDR (XCAR (rest)), Qt);
+
NGCPRO2 (instantiator, sub_inst_list);
/* call the will-add method; it may GC */
sub_inst_list = HAS_SPECMETH_P (sp, going_to_add) ?
goto do_fallback;
}
-retry:
+ retry:
/* First see if we can generate one from the window specifiers. */
if (!NILP (window))
CHECK_INSTANCE_ENTRY (window, matchspec, LOCALE_WINDOW);
/* Last and least try the global specifiers. */
CHECK_INSTANCE_ENTRY (Qglobal, matchspec, LOCALE_GLOBAL);
-do_fallback:
+ do_fallback:
/* We're out of specifiers and we still haven't generated an
instance. At least try the fallback ... If this fails,
then we just return Qunbound. */
valid. */
void (*validate_method) (Lisp_Object instantiator);
+
+ /* Copy method: Given an instantiator, copy the bits that we need to
+ for this specifier type.
+
+ If this function is not present, then Fcopy_tree is used. */
+ Lisp_Object (*copy_instantiator_method) (Lisp_Object instantiator);
+
/* Validate-matchspec method: Given a matchspec, verify that it's
valid for this specifier type. If not, signal an error.
if (code != Sword
#ifdef MULE
|| WORD_BOUNDARY_P (ch0, ch1)
-#endif
+#endif
)
break;
#ifdef MULE
ch0 = ch1;
-#endif
+#endif
from++;
}
count--;
if (SYNTAX_PREFIX_UNSAFE (mirrortab, c))
continue;
- switch (((quoted) ? Sword : code))
+ switch (quoted ? Sword : code)
{
case Sword:
case Ssymbol:
DEFVAR_BOOL ("parse-sexp-ignore-comments", &parse_sexp_ignore_comments /*
Non-nil means `forward-sexp', etc., should treat comments as whitespace.
*/ );
+ parse_sexp_ignore_comments = 0;
- words_include_escapes = 0;
DEFVAR_BOOL ("words-include-escapes", &words_include_escapes /*
Non-nil means `forward-word', etc., should treat escape chars part of words.
*/ );
+ words_include_escapes = 0;
no_quit_in_re_search = 0;
}
#define FRAME_CURRENT_TOOLBAR_SIZE(frame, pos) \
((frame)->current_toolbar_size[pos])
#define DEVICE_SUPPORTS_TOOLBARS_P(d) \
- (HAS_DEVMETH_P ((d), output_frame_toolbars))
+ HAS_DEVMETH_P (d, output_frame_toolbars)
struct toolbar_button
{
newargs[0] = Fwidget_get (args[0], args[1]);
newargs[1] = args[0];
newargs[2] = Flist (nargs - 2, args + 2);
- GCPRO1 ((newargs[2]));
+ GCPRO1 (newargs[2]);
RETURN_UNGCPRO (Fapply (3, newargs));
}
#define XWINDOW_CONFIGURATION(x) XRECORD (x, window_configuration, struct window_config)
#define XSETWINDOW_CONFIGURATION(x, p) XSETRECORD (x, p, window_configuration)
#define WINDOW_CONFIGURATIONP(x) RECORDP (x, window_configuration)
-#define GC_WINDOW_CONFIGURATIONP(x) GC_RECORDP (x, window_configuration)
#define CHECK_WINDOW_CONFIGURATION(x) CHECK_RECORD (x, window_configuration)
static Lisp_Object
+1999-12-24 Martin Buchholz <martin@xemacs.org>
+
+ * XEmacs 21.2.25 is released.
+
+1999-12-21 Martin Buchholz <martin@xemacs.org>
+
+ * automated/byte-compiler-tests.el: Add Jan's tests for equal
+ effect of bytecode and interpreted code.
+
+ * automated/lisp-tests.el: Add tests for near-text functions.
+
+1999-12-19 Martin Buchholz <martin@xemacs.org>
+
+ * automated/mule-tests.el: Add tests for fillarray, aset.
+
+1999-12-17 Martin Buchholz <martin@xemacs.org>
+
+ * automated/lisp-tests.el: Add tests for mapcar1() crashes.
+
1999-12-14 Martin Buchholz <martin@xemacs.org>
* XEmacs 21.2.24 is released.
(defconst bt-nonbase64-chars (set-difference (mapcar #'identity bt-allchars)
bt-base64-chars))
-(when nil
- ;; This code crashes XEmacs! This requires further investigation.
- ;; I'm running Linux, and for me, XEmacs crashes in
- ;; Fmapconcat()->mapcar1(), after a GC that thrashes the stack.
- ;; Raymond Toy reports a similar crash under Solaris.
+(when t
+ ;; This code crashes some versions of XEmacs 21.2! This requires
+ ;; further investigation. I (hniksic) am running Linux, and for me,
+ ;; XEmacs used to crash in Fmapconcat()->mapcar1(), after a GC that
+ ;; thrashes the stack. Raymond Toy reported a similar crash under
+ ;; Solaris. I can no longer repeat the bug, so I cannot fix it now.
(loop for (raw encoded) in bt-test-strings do
(unless (equal raw "")
(let* ((middlepos (/ (1+ (length encoded)) 2))
error "`let' bindings can have only one value-form"
(eval '(let* ((x 1 2)) 3)))
+(defmacro before-and-after-compile-equal (&rest form)
+ `(Assert (equal (funcall (quote (lambda () ,@form)))
+ (funcall (byte-compile (quote (lambda () ,@form)))))))
+
+(defvar simplyamarker (point-min-marker))
+
+;; The byte optimizer must be careful with +/- with a single argument.
+
+(before-and-after-compile-equal (+))
+(before-and-after-compile-equal (+ 2 2))
+(before-and-after-compile-equal (+ 2 1))
+(before-and-after-compile-equal (+ 1 2))
+;; (+ 1) is OK. but (+1) signals an error.
+(before-and-after-compile-equal (+ 1))
+(before-and-after-compile-equal (+ 3))
+(before-and-after-compile-equal (+ simplyamarker 1))
+;; The optimization (+ m) --> m is invalid when m is a marker.
+;; Currently the following test fails - controversial.
+;; (before-and-after-compile-equal (+ simplyamarker))
+;; Same tests for minus.
+(before-and-after-compile-equal (- 2 2))
+(before-and-after-compile-equal (- 2 1))
+(before-and-after-compile-equal (- 1 2))
+(before-and-after-compile-equal (- 1))
+(before-and-after-compile-equal (- 3))
+(before-and-after-compile-equal (- simplyamarker 1))
+(before-and-after-compile-equal (- simplyamarker))
(Assert (equal (mapconcat #'identity '("1" "2" "3") "|") "1|2|3"))
(Assert (equal (mapconcat #'identity ["1" "2" "3"] "|") "1|2|3"))
+;; The following 2 functions used to crash XEmacs via mapcar1().
+;; We don't test the actual values of the mapcar, since they're undefined.
+(Assert
+ (let ((x (list (cons 1 1) (cons 2 2) (cons 3 3))))
+ (mapcar
+ (lambda (y)
+ "Devious evil mapping function"
+ (when (eq (car y) 2) ; go out onto a limb
+ (setcdr x nil) ; cut it off behind us
+ (garbage-collect)) ; are we riding a magic broomstick?
+ (car y)) ; sorry, hard landing
+ x)))
+
+(Assert
+ (let ((x (list (cons 1 1) (cons 2 2) (cons 3 3))))
+ (mapcar
+ (lambda (y)
+ "Devious evil mapping function"
+ (when (eq (car y) 1)
+ (setcdr (cdr x) 42)) ; drop a brick wall onto the freeway
+ (car y))
+ x)))
+
;;-----------------------------------------------------
;; Test vector functions
;;-----------------------------------------------------
(Assert (equal (split-string "foo,,bar,," ",") '("foo" "" "bar" "" "")))
(Assert (equal (split-string "foo,,bar" ",+") '("foo" "bar")))
(Assert (equal (split-string ",foo,,bar," ",+") '("" "foo" "bar" "")))
+
+;;-----------------------------------------------------
+;; Test near-text buffer functions.
+;;-----------------------------------------------------
+(with-temp-buffer
+ (erase-buffer)
+ (Assert (eq (char-before) nil))
+ (Assert (eq (char-before (point)) nil))
+ (Assert (eq (char-before (point-marker)) nil))
+ (Assert (eq (char-before (point) (current-buffer)) nil))
+ (Assert (eq (char-before (point-marker) (current-buffer)) nil))
+ (Assert (eq (char-after) nil))
+ (Assert (eq (char-after (point)) nil))
+ (Assert (eq (char-after (point-marker)) nil))
+ (Assert (eq (char-after (point) (current-buffer)) nil))
+ (Assert (eq (char-after (point-marker) (current-buffer)) nil))
+ (Assert (eq (preceding-char) 0))
+ (Assert (eq (preceding-char (current-buffer)) 0))
+ (Assert (eq (following-char) 0))
+ (Assert (eq (following-char (current-buffer)) 0))
+ (insert "foobar")
+ (Assert (eq (char-before) ?r))
+ (Assert (eq (char-after) nil))
+ (Assert (eq (preceding-char) ?r))
+ (Assert (eq (following-char) 0))
+ (goto-char (point-min))
+ (Assert (eq (char-before) nil))
+ (Assert (eq (char-after) ?f))
+ (Assert (eq (preceding-char) 0))
+ (Assert (eq (following-char) ?f))
+ )
;; Test some Mule functionality (most of these remain to be written) .
;; See test-harness.el for instructions on how to run these tests.
+;; This file will be (read)ed by a non-mule XEmacs, so don't use
+;; literal non-Latin1 characters. Use (make-char) instead.
+
;;-----------------------------------------------------------------
;; Test whether all legal chars may be safely inserted to a buffer.
;;-----------------------------------------------------------------
;; time-consuming tests like this one run twice, once interpreted and
;; once compiled, for no good reason.
(test-chars t)
+
+;;-----------------------------------------------------------------
+;; Test string modification functions that modify the length of a char.
+;;-----------------------------------------------------------------
+
+(when (featurep 'mule)
+ ;; Test fillarray
+ (macrolet
+ ((fillarray-test
+ (charset1 charset2)
+ (let ((char1 (make-char charset1 69))
+ (char2 (make-char charset2 69)))
+ `(let ((string (make-string 1000 ,char1)))
+ (fillarray string ,char2)
+ (Assert (eq (aref string 0) ,char2))
+ (Assert (eq (aref string (1- (length string))) ,char2))
+ (Assert (eq (length string) 1000))))))
+ (fillarray-test ascii latin-iso8859-1)
+ (fillarray-test ascii latin-iso8859-2)
+ (fillarray-test latin-iso8859-1 ascii)
+ (fillarray-test latin-iso8859-2 ascii))
+
+ ;; Test aset
+ (let ((string (string (make-char 'ascii 69) (make-char 'latin-iso8859-2 69))))
+ (aset string 0 (make-char 'latin-iso8859-2 42))
+ (Assert (eq (aref string 1) (make-char 'latin-iso8859-2 69))))
+
+ )
(set-glyph-face layout 'gui-element)
(set-extent-begin-glyph
(make-extent (point) (point)) layout)
-
+
+(setq test-toggle-widget nil)
+
+(defun test-toggle (widget)
+ (set-extent-begin-glyph
+ (make-extent (point) (point))
+ (make-glyph (vector 'button
+ :descriptor "ok"
+ :style 'toggle
+ :selected `(funcall test-toggle-value
+ ,widget)
+ :callback `(funcall test-toggle-action
+ ,widget)))))
+
+(defun test-toggle-action (widget &optional event)
+ (if widget
+ (message "Widget is t")
+ (message "Widget is nil")))
+
+(defun test-toggle-value (widget)
+ (setq widget (not widget))
+ (not widget))
emacs_is_beta=t
emacs_major_version=21
emacs_minor_version=2
-emacs_beta_version=24
-xemacs_codename="Hecate"
+emacs_beta_version=25
+xemacs_codename="Hephaestus"
infodock_major_version=4
infodock_minor_version=0
infodock_build_version=8