diff -u -r -N xemacs-21.4.15/ChangeLog xemacs-21.4.16/ChangeLog --- xemacs-21.4.15/ChangeLog 2004-02-02 22:01:42.000000000 -0500 +++ xemacs-21.4.16/ChangeLog 2004-12-05 20:07:27.000000000 -0500 @@ -1,3 +1,59 @@ +2004-12-05 Vin Shelton + + * XEmacs 21.4.16 is released + +2004-08-12 "Johann 'Myrkraverk' Oskarsson" + + * config.guess: Detect PlayStation 2. + +2004-08-10 Jerry James + + * etc/SERVICE: Update to latest version from www.gnu.org. + +2004-07-06 Steve Youngs + + * etc/NEWS: Document the major user visible changes to PUI. + +2003-07-21 Malcolm Purvis + + * etc/gtkrc: New file. This is the GTK equivalent of the + app-default file. + +2004-03-30 Norbert Koch + + * PACKAGES: Introduce new packages escreen, xlib, and xwem. + +2004-03-23 Malcolm Purvis + + * configure (GTK_CONFIG): Check GTK version validity only when the + right instance of gtk-config is found. + +2004-03-20 Adrian Aichner + + * etc/sample.init.el: Sync typo and copycat fix from 21.5. + * etc/sample.init.el ((console-on-window-system-p)): Sync + "\C-x\C-c" definition from 21.5. + +2004-03-20 Vin Shelton + + * configure.usage (--use-regex-malloc): Correct warning about + disabling regex-malloc. + +2004-03-04 Malcolm Purvis + + * configure.in (src/Makefile): No longer include a special linker + script for PowerPC Linux. Thanks to Stefan Bruda for reporting + this bug. + +2004-02-10 Vin Shelton + + * etc/OXYMORONS: Added Jumbo Shrimp for 21.4.17. + +2004-02-03 Vin Shelton + + * configure.in (XE_COMPUTE_RUNPATH): lucid_prefers_motif is a + variable, not a command. + 2004-02-02 Vin Shelton * XEmacs 21.4.15 is released diff -u -r -N xemacs-21.4.15/README.packages xemacs-21.4.16/README.packages --- xemacs-21.4.15/README.packages 2001-04-12 14:20:32.000000000 -0400 +++ xemacs-21.4.16/README.packages 2004-07-06 22:25:42.000000000 -0400 @@ -10,27 +10,41 @@ The XEmacs Packages Quick Start Guide ------------------------------------- -This text is intended to help you get started installing a new XEmacs -and its packages from start. For details see the 'Startup Paths' and -'Packages' sections of the XEmacs info manual. +This text is intended to help you get started installing a new XEmacs and +its packages. For more details see the 'Startup Paths' and 'Packages' +sections of the XEmacs info manual. * Real Real Quickstart FAQ -------------------------- Q. Do I need to have the packages to compile XEmacs? -A. No, XEmacs will build and install just fine without any packages - installed. However, only the most basic editing functions will be - available with no packages installed, so installing packages is an + +A. Theoretically, no -- XEmacs will build and install just fine without any + packages installed. However, only the most basic editing functions will + be available with no packages installed, so installing packages is an essential part of making your installed XEmacs _useful_. Q. I really liked the old way that packages were bundled and do not want to mess with packages at all. + A. You can grab all the packages at once like you used to with old XEmacs versions, skip to the 'Sumo Tarball' section below. +Q. How do I tell XEmacs where to find the packages? + +A. Normally, you put the packages under $prefix/lib/packages, where + $prefix is specified using the `--prefix' parameter to `configure'. + (See `Package hierarchies' below). However, if you have the packages + somewhere else (e.g. you're a developer and are compiling the packages + yourself, and want your own private copy of everything), use the + `--package-path' parameter, something like this: + + configure --package-path="~/.xemacs::/src/xemacs/site-packages:/src/xemacs/xemacs-packages:/src/xemacs/mule-packages" ... + Q. After installing, I want XEmacs to do `foo', but when I invoke it (or click the toolbar button or select the menu item), nothing (or an error) happens, and it used to work. + A. See the first FAQ; you may be missing a package that is essential to you. You can either track it down and install it, or install the `Sumo Tarball' (see the second FAQ). @@ -44,7 +58,7 @@ backwards compatibility as quirks are worked out over the coming releases. -* Some Package Theory +* Some package theory --------------------- In order to reduce the size and increase the maintainability of XEmacs, @@ -60,20 +74,35 @@ * Package hierarchies --------------------- -On Startup XEmacs looks for packages in so called package hierarchies. -These can be specified by the 'package-path' parameter to the -'configure' script. However by default there are three system wide -hierarchies. ("$prefix" defaults to "/usr/local") +On Startup XEmacs looks for packages in so-called package hierarchies. +Normally, there are three system wide hierarchies, like this: -$prefix/lib/xemacs/xemacs-packages +$prefix/lib/xemacs/xemacs-packages/ Normal packages go here. -$prefix/lib/xemacs/mule-packages +$prefix/lib/xemacs/mule-packages/ Mule packages go here and are only searched by MULE-enabled XEmacsen. $prefix/lib/xemacs/site-packages/ Local and 3rd party packages go here. +This is what you get when you untar the SUMO tarballs under +$prefix/lib/xemacs. + +$prefix is specified using the `--prefix' parameter to `configure', and +defaults to `usr/local'. + +If your packages are located in the above directories, XEmacs will +automatically find them at startup; however, if you have your packages +somewhere else (e.g. you're a developer and are compiling the packages +yourself, and want your own private copy of everything), you can tell +XEmacs specifically where to look for the packages by using the +`--package-path' parameter to the 'configure' script. Normally, it looks +like this: + +configure --package-path="~/.xemacs::/src/xemacs/site-packages:/src/xemacs/xemacs-packages:/src/xemacs/mule-packages" ... + +See `configure.usage' for more info about the format of this parameter. * Where to get the packages --------------------------- @@ -85,37 +114,69 @@ ----------------------------- There are a few different ways to install packages: - 1. Manually, all at once, using the 'Sumo Tarball'. + 1. Automatically, using the package tools from XEmacs. 2. Manually, using individual package tarballs. - 3. Automatically, using the package tools from XEmacs. + 3. Manually, all at once, using the 'Sumo Tarball'. -** Manually, all at once, using the 'Sumo Tarball' --------------------------------------------------- +** Automatically, using the package tools from XEmacs +----------------------------------------------------- -Those with little time, cheap connections and plenty of disk space can -install all the packages at once using the sumo tarballs. -Download the file: +XEmacs comes with some tools to make the periodic updating and +installing easier. It will notice if new packages or versions are +available and will fetch them from the FTP site. - xemacs-sumo.tar.gz +Unfortunately this requires that a few packages are already in place. +You will have to install them by hand as above or use a SUMO tarball. +This requirement will hopefully go away in the future. The packages +you need are: -For an XEmacs compiled with Mule you also need: + efs - To fetch the files from the FTP site or mirrors. + xemacs-base - Needed by efs. - xemacs-mule-sumo.tar.gz +and optionally: -N.B. They are called 'Sumo Tarballs' for good reason. They are -currently about 19MB and 4.5MB (gzipped) respectively. + mailcrypt - For PGP verification of the package-index file. -Install them by: +After installing these by hand, fire up XEmacs and follow these +steps. - cd $prefix/lib/xemacs ; gunzip -c | tar xvf - RET + (1) Choose a download site. + - via menu: Tools -> Packages -> Set Download Site + - via keyb: M-x customize-variable RET package-get-remote RET + (put in the details of remote host and directory) -Or, if you have GNU tar: + If the package tarballs _AND_ the package-index file are in a + local directory, you can: M-x pui-set-local-package-get-directory RET - cd $prefix/lib/xemacs ; tar zxvf /path/to/ RET + (2) Obtain a list of packages and display the list in a buffer named + "*Packages*". + - menu: Tools -> Packages -> List & Install + - keyb: M-x pui-list-packages RET -As the Sumo tarballs are not regenerated as often as the individual -packages, it is recommended that you use the automatic package tools -afterwards to pick up any recent updates. + XEmacs will now connect to the remote site and download the + latest package-index file. + + The resulting buffer, "*Packages*" has brief instructions at the + end of the buffer. + + (3) Choose the packages you wish to install. + - mouse: Click button 2 on the package name. + - keyb: RET on the package name + + (4) Make sure you have everything you need. + - menu: Packages -> Add Required + - keyb: r + + XEmacs will now search for packages that are required by the + ones that you have chosen to install and offer to select + those packages also. + + For novices and gurus alike, this step can save your bacon. + It's easy to forget to install a critical package. + + (5) Download and install the packages. + - menu: Packages -> Install/Remove Selected + - keyb: x ** Manually, using individual package tarballs ---------------------------------------------- @@ -151,77 +212,38 @@ tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET -** Automatically, using the package tools from XEmacs ------------------------------------------------------ - -XEmacs comes with some tools to make the periodic updating and -installing easier. It will notice if new packages or versions are -available and will fetch them from the FTP site. - -Unfortunately this requires that a few packages are already in place. -You will have to install them by hand as above or use a SUMO tarball. -This requirement will hopefully go away in the future. The packages -you need are: - - efs - To fetch the files from the FTP site or mirrors. - xemacs-base - Needed by efs. - -and optionally: - - mule-base - Needed if you want to use XEmacs with MULE. - -After installing these by hand, fire up XEmacs and follow these -steps. - -Note: The menus in XEmacs 21.2.x and up have changed slightly, so -where I mention "Options -> Manage Packages", substitute "Tools -> -Packages". +** Manually, all at once, using the 'Sumo Tarball' +-------------------------------------------------- - (1) Choose a download site. - - via menu: Options -> Manages Packages -> Add Download Site - - via keyb: M-x customize-variable RET package-get-remote RET - (put in the details of remote host and directory) +Those with little time, cheap connections and plenty of disk space can +install all the packages at once using the sumo tarballs. +Download the file: - If the package tarballs _AND_ the package-index file are in a - local directory, you can: M-x pui-add-install-directory RET + xemacs-sumo.tar.gz - (2) Obtain a list of packages and display the list in a buffer named - "*Packages*". - - menu: Options -> Manage Packages -> List & Install - - keyb: M-x pui-list-packages RET +For an XEmacs compiled with Mule you also need: - XEmacs will now connect to the remote site and download the - latest package-index file. If you see an error about the - package-index entries not being PGP signed, you can safely - ignore this because PGP has not been integrated into the XEmacs - package tools yet. + xemacs-mule-sumo.tar.gz - The resulting buffer, "*Packages*" has brief instructions at the - end of the buffer. +N.B. They are called 'Sumo Tarballs' for good reason. They are +currently about 19MB and 4.5MB (gzipped) respectively. - (3) Choose the packages you wish to install. - - mouse: Click button 2 on the package name. - - keyb: RET on the package name +Install them by: - (4) Make sure you have everything you need. - - menu: Packages -> Add Required - - keyb: r + cd $prefix/lib/xemacs ; gunzip -c | tar xvf - RET - XEmacs will now search for packages that are required by the - ones that you have chosen to install and offer to select - those packages also. +Or, if you have GNU tar: - For novices and gurus alike, this step can save your bacon. - It's easy to forget to install a critical package. + cd $prefix/lib/xemacs ; tar zxvf /path/to/ RET - (5) Download and install the packages. - - menu: Packages -> Install/Remove Selected - - keyb: x +As the Sumo tarballs are not regenerated as often as the individual +packages, it is recommended that you use the automatic package tools +afterwards to pick up any recent updates. * After Installation -------------------- -New packages can only be used by XEmacs after a restart. +Updated packages can only be used by XEmacs after a restart. * Which Packages to install? ---------------------------- @@ -232,7 +254,7 @@ xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs, edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes, -text-modes, time +text-modes, time, mailcrypt If you are using the XEmacs package tools, don't forget to do: @@ -261,9 +283,9 @@ -------------------------- In addition to the system wide packages, each user can have his own -packages installed in "~/.xemacs/xemacs-packages". If you want to -install packages there using the interactive tools, you need to set -'pui-package-install-dest-dir' to "~/.xemacs/xemacs-packages" +packages installed under "~/.xemacs/". If you want to install packages +there using the interactive tools, you need to set +'package-get-install-to-user-init-directory' to 't' * Site lisp/Site start ---------------------- diff -u -r -N xemacs-21.4.15/config.guess xemacs-21.4.16/config.guess --- xemacs-21.4.15/config.guess 2001-04-12 14:20:33.000000000 -0400 +++ xemacs-21.4.16/config.guess 2004-08-12 23:23:16.000000000 -0400 @@ -3,7 +3,7 @@ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. -timestamp='2001-01-17' +timestamp='2004-08-12' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -918,8 +918,14 @@ printf ("%s-unknown-linux-gnu\n", argv[1]); #endif #ifdef __MIPSEL__ +#ifdef __R5900 +/* Little Endian R5900 running Linux, + this *must* be Sony PlayStation 2 */ + printf ("%sel-PlayStation2-linux-gnu\n", argv[1]); +#else printf ("%sel-unknown-linux-gnu\n", argv[1]); #endif +#endif return 0; } EOF diff -u -r -N xemacs-21.4.15/configure xemacs-21.4.16/configure --- xemacs-21.4.15/configure 2004-01-23 23:34:33.000000000 -0500 +++ xemacs-21.4.16/configure 2004-03-25 16:07:12.000000000 -0500 @@ -2990,7 +2990,6 @@ fi -test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript" if test "$unexec" = "unexaix.o"; then if test "$dynamic" = "no"; then @@ -3004,12 +3003,12 @@ done echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6 -echo "configure:3008: checking for terminateAndUnload in -lC" >&5 +echo "configure:3007: checking for terminateAndUnload in -lC" >&5 ac_lib_var=`echo C'_'terminateAndUnload | sed 'y%./+-%__p_%'` xe_check_libs=" -lC " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3023: \"$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 @@ -3128,7 +3127,7 @@ if test "$add_runtime_path" = "yes"; then echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6 -echo "configure:3132: checking "for runtime libraries flag"" >&5 +echo "configure:3131: checking "for runtime libraries flag"" >&5 case "$opsys" in sol2 ) dash_r="-R" ;; decosf* | linux* | irix*) dash_r="-rpath " ;; @@ -3150,14 +3149,14 @@ done fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* dash_r="$try_dash_r" else @@ -3258,10 +3257,10 @@ fi after_morecore_hook_exists=yes echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6 -echo "configure:3262: checking for malloc_set_state" >&5 +echo "configure:3261: checking for malloc_set_state" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3287: \"$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 @@ -3304,16 +3303,16 @@ fi echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6 -echo "configure:3308: checking whether __after_morecore_hook exists" >&5 +echo "configure:3307: checking whether __after_morecore_hook exists" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3316: \"$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 @@ -3369,7 +3368,7 @@ # 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:3373: checking for $ac_word" >&5 +echo "configure:3372: checking for $ac_word" >&5 if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -3424,7 +3423,7 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:3428: checking for a BSD compatible install" >&5 +echo "configure:3427: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" @@ -3478,7 +3477,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3482: checking for $ac_word" >&5 +echo "configure:3481: checking for $ac_word" >&5 if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. @@ -3510,15 +3509,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3514: checking for $ac_hdr" >&5 +echo "configure:3513: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3521: \"$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* @@ -3548,10 +3547,10 @@ done echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:3552: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:3551: checking for sys/wait.h that is POSIX.1 compatible" >&5 cat > conftest.$ac_ext < #include @@ -3567,7 +3566,7 @@ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:3571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -3591,10 +3590,10 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3595: checking for ANSI C header files" >&5 +echo "configure:3594: checking for ANSI C header files" >&5 cat > conftest.$ac_ext < #include @@ -3602,7 +3601,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3606: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3605: \"$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* @@ -3619,7 +3618,7 @@ if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3637,7 +3636,7 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3655,7 +3654,7 @@ 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 < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3666,7 +3665,7 @@ exit (0); } EOF -if { (eval echo configure:3670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:3669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -3692,10 +3691,10 @@ fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3696: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:3695: checking whether time.h and sys/time.h may both be included" >&5 cat > conftest.$ac_ext < #include @@ -3704,7 +3703,7 @@ struct tm *tp; ; return 0; } EOF -if { (eval echo configure:3708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -3728,10 +3727,10 @@ fi echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:3732: checking for sys_siglist declaration in signal.h or unistd.h" >&5 +echo "configure:3731: checking for sys_siglist declaration in signal.h or unistd.h" >&5 cat > conftest.$ac_ext < #include @@ -3743,7 +3742,7 @@ char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:3747: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3746: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -3769,9 +3768,9 @@ echo $ac_n "checking for utime""... $ac_c" 1>&6 -echo "configure:3773: checking for utime" >&5 +echo "configure:3772: checking for utime" >&5 cat > conftest.$ac_ext < #include @@ -3779,7 +3778,7 @@ struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x); ; return 0; } EOF -if { (eval echo configure:3783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3782: \"$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 @@ -3798,10 +3797,10 @@ for ac_func in utimes do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3802: checking for $ac_func" >&5 +echo "configure:3801: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3827: \"$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 @@ -3856,10 +3855,10 @@ echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:3860: checking return type of signal handlers" >&5 +echo "configure:3859: checking return type of signal handlers" >&5 cat > conftest.$ac_ext < #include @@ -3876,7 +3875,7 @@ int i; ; return 0; } EOF -if { (eval echo configure:3880: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3879: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -3898,10 +3897,10 @@ echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3902: checking for size_t" >&5 +echo "configure:3901: checking for size_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3932,10 +3931,10 @@ fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3936: checking for pid_t" >&5 +echo "configure:3935: checking for pid_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3966,10 +3965,10 @@ fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3970: checking for uid_t in sys/types.h" >&5 +echo "configure:3969: checking for uid_t in sys/types.h" >&5 cat > conftest.$ac_ext < EOF @@ -4005,10 +4004,10 @@ fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:4009: checking for mode_t" >&5 +echo "configure:4008: checking for mode_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4039,10 +4038,10 @@ fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:4043: checking for off_t" >&5 +echo "configure:4042: checking for off_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4073,10 +4072,10 @@ fi echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 -echo "configure:4077: checking for ssize_t" >&5 +echo "configure:4076: checking for ssize_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4108,9 +4107,9 @@ echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:4112: checking for socklen_t" >&5 +echo "configure:4111: checking for socklen_t" >&5 cat > conftest.$ac_ext < #include @@ -4120,7 +4119,7 @@ ; return 0; } EOF -if { (eval echo configure:4124: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -4129,7 +4128,7 @@ rm -rf conftest* cat > conftest.$ac_ext < #include @@ -4139,7 +4138,7 @@ ; return 0; } EOF -if { (eval echo configure:4143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""size_t" 1>&6 @@ -4171,9 +4170,9 @@ rm -f conftest* echo $ac_n "checking for struct timeval""... $ac_c" 1>&6 -echo "configure:4175: checking for struct timeval" >&5 +echo "configure:4174: checking for struct timeval" >&5 cat > conftest.$ac_ext < @@ -4189,7 +4188,7 @@ static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } EOF -if { (eval echo configure:4193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 HAVE_TIMEVAL=yes @@ -4211,10 +4210,10 @@ rm -f conftest* echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:4215: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:4214: checking whether struct tm is in sys/time.h or time.h" >&5 cat > conftest.$ac_ext < #include @@ -4222,7 +4221,7 @@ struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:4226: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -4246,10 +4245,10 @@ fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:4250: checking for tm_zone in struct tm" >&5 +echo "configure:4249: checking for tm_zone in struct tm" >&5 cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -4257,7 +4256,7 @@ struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:4261: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4260: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -4280,10 +4279,10 @@ else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:4284: checking for tzname" >&5 +echo "configure:4283: checking for tzname" >&5 cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -4293,7 +4292,7 @@ atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:4297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -4319,10 +4318,10 @@ echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:4323: checking for working const" >&5 +echo "configure:4322: checking for working const" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -4396,7 +4395,7 @@ echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:4400: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:4399: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` cat > conftestmake <<\EOF @@ -4421,12 +4420,12 @@ echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4425: checking whether byte ordering is bigendian" >&5 +echo "configure:4424: 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 < #include @@ -4437,11 +4436,11 @@ #endif ; return 0; } EOF -if { (eval echo configure:4441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4440: \"$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 < #include @@ -4452,7 +4451,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:4456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4469,7 +4468,7 @@ rm -f conftest* if test $ac_cv_c_bigendian = unknown; then cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_bigendian=no else @@ -4509,10 +4508,10 @@ echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:4513: checking size of short" >&5 +echo "configure:4512: checking size of short" >&5 cat > conftest.$ac_ext < main() @@ -4523,7 +4522,7 @@ exit(0); } EOF -if { (eval echo configure:4527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -4551,10 +4550,10 @@ exit 1 fi echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:4555: checking size of int" >&5 +echo "configure:4554: checking size of int" >&5 cat > conftest.$ac_ext < main() @@ -4565,7 +4564,7 @@ exit(0); } EOF -if { (eval echo configure:4569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_int=`cat conftestval` else @@ -4587,10 +4586,10 @@ echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:4591: checking size of long" >&5 +echo "configure:4590: checking size of long" >&5 cat > conftest.$ac_ext < main() @@ -4601,7 +4600,7 @@ exit(0); } EOF -if { (eval echo configure:4605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long=`cat conftestval` else @@ -4623,10 +4622,10 @@ echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:4627: checking size of long long" >&5 +echo "configure:4626: checking size of long long" >&5 cat > conftest.$ac_ext < main() @@ -4637,7 +4636,7 @@ exit(0); } EOF -if { (eval echo configure:4641: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4640: \"$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 @@ -4659,10 +4658,10 @@ echo $ac_n "checking size of void *""... $ac_c" 1>&6 -echo "configure:4663: checking size of void *" >&5 +echo "configure:4662: checking size of void *" >&5 cat > conftest.$ac_ext < main() @@ -4673,7 +4672,7 @@ exit(0); } EOF -if { (eval echo configure:4677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4676: \"$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 @@ -4697,7 +4696,7 @@ case $opsys in cygwin* ) cat > conftest.$ac_ext < EOF @@ -4722,7 +4721,7 @@ esac echo $ac_n "checking for long file names""... $ac_c" 1>&6 -echo "configure:4726: checking for long file names" >&5 +echo "configure:4725: 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: @@ -4768,10 +4767,10 @@ echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:4772: checking for sin" >&5 +echo "configure:4771: checking for sin" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4797: \"$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 @@ -4812,12 +4811,12 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 -echo "configure:4816: checking for sin in -lm" >&5 +echo "configure:4815: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` xe_check_libs=" -lm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4831: \"$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 @@ -4872,14 +4871,14 @@ cat > conftest.$ac_ext < int main() { return atanh(1.0) + asinh(1.0) + acosh(1.0); ; return 0; } EOF -if { (eval echo configure:4883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4882: \"$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 @@ -4896,14 +4895,14 @@ rm -f conftest* echo "checking type of mail spool file locking" 1>&6 -echo "configure:4900: checking type of mail spool file locking" >&5 +echo "configure:4899: checking type of mail spool file locking" >&5 for ac_func in lockf flock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4904: checking for $ac_func" >&5 +echo "configure:4903: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4929: \"$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 @@ -5008,12 +5007,12 @@ case "$opsys" in decosf*) echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6 -echo "configure:5012: checking for cma_open in -lpthreads" >&5 +echo "configure:5011: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5027: \"$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 @@ -5061,7 +5060,7 @@ echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6 -echo "configure:5065: checking whether the -xildoff compiler flag is required" >&5 +echo "configure:5064: 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; @@ -5073,7 +5072,7 @@ if test "$opsys" = "sol2"; then if test "$os_release" -ge 506; then echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6 -echo "configure:5077: checking for \"-z ignore\" linker flag" >&5 +echo "configure:5076: 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 ;; @@ -5084,7 +5083,7 @@ echo "checking "for specified window system"" 1>&6 -echo "configure:5088: checking "for specified window system"" >&5 +echo "configure:5087: checking "for specified window system"" >&5 GNOME_CONFIG=no @@ -5092,7 +5091,7 @@ if test "$with_gnome" != "no"; then echo $ac_n "checking for GNOME configuration script""... $ac_c" 1>&6 -echo "configure:5096: checking for GNOME configuration script" >&5 +echo "configure:5095: checking for GNOME configuration script" >&5 for possible in gnome-config do possible_version=`${possible} --version 2> /dev/null` @@ -5123,40 +5122,40 @@ if test "$with_gtk" != "no";then echo $ac_n "checking for GTK configuration script""... $ac_c" 1>&6 -echo "configure:5127: checking for GTK configuration script" >&5 +echo "configure:5126: checking for GTK configuration script" >&5 for possible in gtk12-config gtk14-config gtk-config do possible_version=`${possible} --version 2> /dev/null` if test "x${possible_version}" != "x"; then GTK_CONFIG="${possible}" + case "${possible_version}" in + 1.0.*) echo "configure: warning: GTK 1.2 is required, please upgrade your version of GTK." 1>&2; with_gtk=no;; + 1.3.*) echo "configure: warning: GTK 1.3 is not supported right now" 1>&2; with_gtk=no;; + 1.2.*) + with_gtk=yes + break + ;; + *) echo "configure: warning: Found unsupported version of GTK: $possible_version" 1>&2;; + esac fi - case "${possible_version}" in - 1.0.*) echo "configure: warning: GTK 1.2 is required, please upgrade your version of GTK." 1>&2; with_gtk=no;; - 1.3.*) echo "configure: warning: GTK 1.3 is not supported right now" 1>&2; with_gtk=no;; - 1.2.*) - with_gtk=yes - break - ;; - *) echo "configure: warning: Found unsupported version of GTK: $possible_version" 1>&2;; - esac done echo "$ac_t""${GTK_CONFIG}" 1>&6 fi if test "${GTK_CONFIG}" != "no"; then echo $ac_n "checking gtk version""... $ac_c" 1>&6 -echo "configure:5149: checking gtk version" >&5 +echo "configure:5148: checking gtk version" >&5 GTK_VERSION=`${GTK_CONFIG} --version` echo "$ac_t""${GTK_VERSION}" 1>&6 echo $ac_n "checking gtk libs""... $ac_c" 1>&6 -echo "configure:5154: checking gtk libs" >&5 +echo "configure:5153: checking gtk libs" >&5 GTK_LIBS=`${GTK_CONFIG} --libs` libs_gtk="$libs_gtk ${GTK_LIBS}" && if test "$extra_verbose" = "yes"; then echo " Appending \"${GTK_LIBS}\" to \$libs_gtk"; fi echo "$ac_t""${GTK_LIBS}" 1>&6 echo $ac_n "checking gtk cflags""... $ac_c" 1>&6 -echo "configure:5160: checking gtk cflags" >&5 +echo "configure:5159: checking gtk cflags" >&5 GTK_CFLAGS=`${GTK_CONFIG} --cflags` if test "$GCC" = "yes"; then GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow" @@ -5166,19 +5165,19 @@ echo $ac_n "checking for main in -lgdk_imlib""... $ac_c" 1>&6 -echo "configure:5170: checking for main in -lgdk_imlib" >&5 +echo "configure:5169: checking for main in -lgdk_imlib" >&5 ac_lib_var=`echo gdk_imlib'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdk_imlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5181: \"$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 @@ -5200,12 +5199,12 @@ echo $ac_n "checking for Imlib_init in -lImlib""... $ac_c" 1>&6 -echo "configure:5204: checking for Imlib_init in -lImlib" >&5 +echo "configure:5203: checking for Imlib_init in -lImlib" >&5 ac_lib_var=`echo Imlib'_'Imlib_init | sed 'y%./+-%__p_%'` xe_check_libs=" -lImlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5219: \"$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 @@ -5239,10 +5238,10 @@ for ac_func in gdk_imlib_init do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5243: checking for $ac_func" >&5 +echo "configure:5242: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5268: \"$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 @@ -5344,15 +5343,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5348: checking for $ac_hdr" >&5 +echo "configure:5347: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5356: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5355: \"$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* @@ -5383,19 +5382,19 @@ echo $ac_n "checking for main in -lxml""... $ac_c" 1>&6 -echo "configure:5387: checking for main in -lxml" >&5 +echo "configure:5386: checking for main in -lxml" >&5 ac_lib_var=`echo xml'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lxml " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5398: \"$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 @@ -5417,19 +5416,19 @@ echo $ac_n "checking for main in -lglade""... $ac_c" 1>&6 -echo "configure:5421: checking for main in -lglade" >&5 +echo "configure:5420: checking for main in -lglade" >&5 ac_lib_var=`echo glade'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lglade " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5432: \"$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 @@ -5451,19 +5450,19 @@ echo $ac_n "checking for main in -lglade-gnome""... $ac_c" 1>&6 -echo "configure:5455: checking for main in -lglade-gnome" >&5 +echo "configure:5454: checking for main in -lglade-gnome" >&5 ac_lib_var=`echo glade-gnome'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lglade-gnome " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5466: \"$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 @@ -5484,7 +5483,7 @@ cat > conftest.$ac_ext < EOF @@ -5543,7 +5542,7 @@ # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:5547: checking for X" >&5 +echo "configure:5546: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -5603,12 +5602,12 @@ # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5612: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5611: \"$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* @@ -5677,14 +5676,14 @@ ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5687: \"$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. @@ -5793,17 +5792,17 @@ case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:5797: checking whether -R must be followed by a space" >&5 +echo "configure:5796: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -5819,14 +5818,14 @@ else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -5862,12 +5861,12 @@ else echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:5866: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:5865: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5881: \"$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 @@ -5902,12 +5901,12 @@ 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:5906: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:5905: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5921: \"$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 @@ -5947,10 +5946,10 @@ # 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:5951: checking for gethostbyname" >&5 +echo "configure:5950: checking for gethostbyname" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5976: \"$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 @@ -5994,12 +5993,12 @@ if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:5998: checking for gethostbyname in -lnsl" >&5 +echo "configure:5997: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` xe_check_libs=" -lnsl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6013: \"$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 @@ -6040,10 +6039,10 @@ # -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:6044: checking for connect" >&5 +echo "configure:6043: checking for connect" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6069: \"$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 @@ -6089,12 +6088,12 @@ 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:6093: checking "$xe_msg_checking"" >&5 +echo "configure:6092: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6108: \"$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 @@ -6129,10 +6128,10 @@ # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:6133: checking for remove" >&5 +echo "configure:6132: checking for remove" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6158: \"$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 @@ -6176,12 +6175,12 @@ if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:6180: checking for remove in -lposix" >&5 +echo "configure:6179: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` xe_check_libs=" -lposix " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6195: \"$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 @@ -6216,10 +6215,10 @@ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:6220: checking for shmat" >&5 +echo "configure:6219: checking for shmat" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6245: \"$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 @@ -6263,12 +6262,12 @@ if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:6267: checking for shmat in -lipc" >&5 +echo "configure:6266: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` xe_check_libs=" -lipc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6282: \"$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 @@ -6315,12 +6314,12 @@ 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:6319: checking "$xe_msg_checking"" >&5 +echo "configure:6318: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6334: \"$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 @@ -6377,15 +6376,15 @@ ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:6381: checking for Xm/Xm.h" >&5 +echo "configure:6380: checking for Xm/Xm.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6388: \"$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* @@ -6402,12 +6401,12 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6 -echo "configure:6406: checking for XmStringFree in -lXm" >&5 +echo "configure:6405: checking for XmStringFree in -lXm" >&5 ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'` xe_check_libs=" -lXm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6421: \"$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 @@ -6570,7 +6569,7 @@ echo "checking for X defines extracted by xmkmf" 1>&6 -echo "configure:6574: checking for X defines extracted by xmkmf" >&5 +echo "configure:6573: checking for X defines extracted by xmkmf" >&5 rm -fr conftestdir if mkdir conftestdir; then cd conftestdir @@ -6619,15 +6618,15 @@ ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6 -echo "configure:6623: checking for X11/Intrinsic.h" >&5 +echo "configure:6622: checking for X11/Intrinsic.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6631: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6630: \"$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* @@ -6651,12 +6650,12 @@ echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:6655: checking for XOpenDisplay in -lX11" >&5 +echo "configure:6654: checking for XOpenDisplay in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6670: \"$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 @@ -6692,12 +6691,12 @@ 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:6696: checking "$xe_msg_checking"" >&5 +echo "configure:6695: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6711: \"$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 @@ -6735,12 +6734,12 @@ echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 -echo "configure:6739: checking for XShapeSelectInput in -lXext" >&5 +echo "configure:6738: checking for XShapeSelectInput in -lXext" >&5 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'` xe_check_libs=" -lXext " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6754: \"$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 @@ -6774,12 +6773,12 @@ echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6 -echo "configure:6778: checking for XtOpenDisplay in -lXt" >&5 +echo "configure:6777: checking for XtOpenDisplay in -lXt" >&5 ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lXt " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6793: \"$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 @@ -6813,14 +6812,14 @@ echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6 -echo "configure:6817: checking the version of X11 being used" >&5 +echo "configure:6816: checking the version of X11 being used" >&5 cat > conftest.$ac_ext < int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; } EOF -if { (eval echo configure:6824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:6823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest foobar; x11_release=$? else @@ -6851,10 +6850,10 @@ for ac_func in XConvertCase do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6855: checking for $ac_func" >&5 +echo "configure:6854: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6880: \"$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 @@ -6909,15 +6908,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6913: checking for $ac_hdr" >&5 +echo "configure:6912: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6920: \"$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* @@ -6950,10 +6949,10 @@ for ac_func in XRegisterIMInstantiateCallback do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6954: checking for $ac_func" >&5 +echo "configure:6953: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6979: \"$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 @@ -7004,9 +7003,9 @@ done echo $ac_n "checking for standard XRegisterIMInstantiateCallback prototype""... $ac_c" 1>&6 -echo "configure:7008: checking for standard XRegisterIMInstantiateCallback prototype" >&5 +echo "configure:7007: checking for standard XRegisterIMInstantiateCallback prototype" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7021: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -7039,12 +7038,12 @@ test -z "$with_xmu" && { echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6 -echo "configure:7043: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 +echo "configure:7042: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'` xe_check_libs=" -lXmu " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7058: \"$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 @@ -7094,19 +7093,19 @@ echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6 -echo "configure:7098: checking for main in -lXbsd" >&5 +echo "configure:7097: checking for main in -lXbsd" >&5 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lXbsd " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7109: \"$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 @@ -7130,7 +7129,7 @@ if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then if test "$GCC" = "yes"; then echo $ac_n "checking for name of AIX gcc threads option""... $ac_c" 1>&6 -echo "configure:7134: checking for name of AIX gcc threads option" >&5 +echo "configure:7133: checking for name of AIX gcc threads option" >&5 case `$CC -v --help 2>&1` in *-mthreads*) aix_threads=-mthreads ;; *) aix_threads=-pthread ;; @@ -7144,10 +7143,10 @@ xe_save_CC="$CC" CC="${CC}_r" echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:7148: checking size of short" >&5 +echo "configure:7147: checking size of short" >&5 cat > conftest.$ac_ext < main() @@ -7158,7 +7157,7 @@ exit(0); } EOF -if { (eval echo configure:7162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:7161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -7187,22 +7186,22 @@ fi if test "$with_msw" != "no"; then echo "checking for MS-Windows" 1>&6 -echo "configure:7191: checking for MS-Windows" >&5 +echo "configure:7190: checking for MS-Windows" >&5 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6 -echo "configure:7194: checking for main in -lgdi32" >&5 +echo "configure:7193: checking for main in -lgdi32" >&5 ac_lib_var=`echo gdi32'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdi32 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7205: \"$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 @@ -7275,12 +7274,12 @@ fi fi cat > conftest.$ac_ext < int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; } EOF -if { (eval echo configure:7284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:7283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then need_event_unixoid=yes; { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_MSG_SELECT @@ -7344,15 +7343,15 @@ if test "$with_x11" = "yes"; then ac_safe=`echo "X11/extensions/shape.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/shape.h""... $ac_c" 1>&6 -echo "configure:7348: checking for X11/extensions/shape.h" >&5 +echo "configure:7347: checking for X11/extensions/shape.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7356: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7355: \"$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* @@ -7404,7 +7403,7 @@ esac echo "checking for WM_COMMAND option" 1>&6 -echo "configure:7408: checking for WM_COMMAND option" >&5; +echo "configure:7407: checking for WM_COMMAND option" >&5; if test "$with_wmcommand" != "no"; then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_WMCOMMAND @@ -7419,15 +7418,15 @@ 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:7423: checking for X11/Xauth.h" >&5 +echo "configure:7422: checking for X11/Xauth.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7431: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7430: \"$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* @@ -7450,12 +7449,12 @@ } test -z "$with_xauth" && { echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6 -echo "configure:7454: checking for XauGetAuthByAddr in -lXau" >&5 +echo "configure:7453: checking for XauGetAuthByAddr in -lXau" >&5 ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'` xe_check_libs=" -lXau " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7469: \"$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 @@ -7511,15 +7510,15 @@ 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:7515: checking for ${dir}tt_c.h" >&5 +echo "configure:7514: checking for ${dir}tt_c.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7523: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7522: \"$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* @@ -7555,12 +7554,12 @@ 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:7559: checking "$xe_msg_checking"" >&5 +echo "configure:7558: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7574: \"$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 @@ -7628,15 +7627,15 @@ 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:7632: checking for Dt/Dt.h" >&5 +echo "configure:7631: checking for Dt/Dt.h" >&5 cat > conftest.$ac_ext < 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:7639: \"$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* @@ -7659,12 +7658,12 @@ } test -z "$with_cde" && { echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6 -echo "configure:7663: checking for DtDndDragStart in -lDtSvc" >&5 +echo "configure:7662: checking for DtDndDragStart in -lDtSvc" >&5 ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'` xe_check_libs=" -lDtSvc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7678: \"$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 @@ -7748,7 +7747,7 @@ if test "$with_dragndrop" != "no" ; then echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6 -echo "configure:7752: checking if drag and drop API is needed" >&5 +echo "configure:7751: checking if drag and drop API is needed" >&5 if test -n "$dragndrop_proto" ; then with_dragndrop=yes echo "$ac_t""yes (${dragndrop_proto} )" 1>&6 @@ -7768,18 +7767,18 @@ fi echo "checking for LDAP" 1>&6 -echo "configure:7772: checking for LDAP" >&5 +echo "configure:7771: 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:7775: checking for ldap.h" >&5 +echo "configure:7774: checking for ldap.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7783: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7782: \"$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* @@ -7802,15 +7801,15 @@ } 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:7806: checking for lber.h" >&5 +echo "configure:7805: checking for lber.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7814: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7813: \"$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* @@ -7834,12 +7833,12 @@ if test "$with_ldap" != "no"; then echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6 -echo "configure:7838: checking for ldap_search in -lldap" >&5 +echo "configure:7837: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7853: \"$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 @@ -7875,12 +7874,12 @@ 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:7879: checking "$xe_msg_checking"" >&5 +echo "configure:7878: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap -llber" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7894: \"$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 @@ -7916,12 +7915,12 @@ 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:7920: checking "$xe_msg_checking"" >&5 +echo "configure:7919: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7935: \"$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 @@ -7957,12 +7956,12 @@ 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:7961: checking "$xe_msg_checking"" >&5 +echo "configure:7960: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7976: \"$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 @@ -8024,10 +8023,10 @@ 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:8028: checking for $ac_func" >&5 +echo "configure:8027: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8053: \"$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 @@ -8081,20 +8080,20 @@ if test "$with_postgresql" != "no"; then echo "checking for PostgreSQL" 1>&6 -echo "configure:8085: checking for PostgreSQL" >&5 +echo "configure:8084: checking for PostgreSQL" >&5 for header_dir in "" "pgsql/" "postgresql/"; do ac_safe=`echo "${header_dir}libpq-fe.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ${header_dir}libpq-fe.h""... $ac_c" 1>&6 -echo "configure:8090: checking for ${header_dir}libpq-fe.h" >&5 +echo "configure:8089: checking for ${header_dir}libpq-fe.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8098: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8097: \"$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* @@ -8118,12 +8117,12 @@ test -n "$libpq_fe_h_file" && { echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6 -echo "configure:8122: checking for PQconnectdb in -lpq" >&5 +echo "configure:8121: checking for PQconnectdb in -lpq" >&5 ac_lib_var=`echo pq'_'PQconnectdb | sed 'y%./+-%__p_%'` xe_check_libs=" -lpq " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8137: \"$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 @@ -8167,12 +8166,12 @@ echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6 -echo "configure:8171: checking for PQconnectStart in -lpq" >&5 +echo "configure:8170: checking for PQconnectStart in -lpq" >&5 ac_lib_var=`echo pq'_'PQconnectStart | sed 'y%./+-%__p_%'` xe_check_libs=" -lpq " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8186: \"$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 @@ -8231,7 +8230,7 @@ if test "$window_system" != "none"; then echo "checking for graphics libraries" 1>&6 -echo "configure:8235: checking for graphics libraries" >&5 +echo "configure:8234: checking for graphics libraries" >&5 libpath_xpm= incpath_xpm= @@ -8257,10 +8256,10 @@ CFLAGS=""$incpath_xpm" $CFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi LDFLAGS=""$libpath_xpm" $LDFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$libpath_xpm"\" to \$LDFLAGS"; fi echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6 -echo "configure:8261: checking for Xpm - no older than 3.4f" >&5 +echo "configure:8260: checking for Xpm - no older than 3.4f" >&5 xe_check_libs=-lXpm cat > conftest.$ac_ext < @@ -8269,7 +8268,7 @@ XpmIncludeVersion != XpmLibraryVersion() ? 1 : XpmIncludeVersion < 30406 ? 2 : 0 ;} EOF -if { (eval echo configure:8273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8272: \"$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 @@ -8313,17 +8312,17 @@ libs_x="-lXpm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXpm\" to \$libs_x"; fi CFLAGS=""$incpath_xpm" $CFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6 -echo "configure:8317: checking for \"FOR_MSW\" xpm" >&5 +echo "configure:8316: checking for \"FOR_MSW\" xpm" >&5 xe_check_libs=-lXpm cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* xpm_for_msw=no else @@ -8349,15 +8348,15 @@ 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:8353: checking for compface.h" >&5 +echo "configure:8352: checking for compface.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8361: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8360: \"$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* @@ -8380,12 +8379,12 @@ } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8384: checking for UnGenFace in -lcompface" >&5 +echo "configure:8383: checking for UnGenFace in -lcompface" >&5 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` xe_check_libs=" -lcompface " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8399: \"$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 @@ -8448,12 +8447,12 @@ if test "$with_png $with_tiff" != "no no"; then echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6 -echo "configure:8452: checking for inflate in -lc" >&5 +echo "configure:8451: checking for inflate in -lc" >&5 ac_lib_var=`echo c'_'inflate | sed 'y%./+-%__p_%'` xe_check_libs=" -lc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8467: \"$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 @@ -8483,12 +8482,12 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6 -echo "configure:8487: checking for inflate in -lz" >&5 +echo "configure:8486: checking for inflate in -lz" >&5 ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'` xe_check_libs=" -lz " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8502: \"$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 @@ -8518,12 +8517,12 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6 -echo "configure:8522: checking for inflate in -lgz" >&5 +echo "configure:8521: checking for inflate in -lgz" >&5 ac_lib_var=`echo gz'_'inflate | sed 'y%./+-%__p_%'` xe_check_libs=" -lgz " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8537: \"$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 @@ -8564,15 +8563,15 @@ 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:8568: checking for jpeglib.h" >&5 +echo "configure:8567: checking for jpeglib.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8576: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8575: \"$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* @@ -8595,12 +8594,12 @@ } test -z "$with_jpeg" && { echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:8599: checking for jpeg_destroy_decompress in -ljpeg" >&5 +echo "configure:8598: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8614: \"$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 @@ -8647,10 +8646,10 @@ png_problem="" test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:8651: checking for pow" >&5 +echo "configure:8650: checking for pow" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8676: \"$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 @@ -8694,15 +8693,15 @@ } 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:8698: checking for png.h" >&5 +echo "configure:8697: checking for png.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8705: \"$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* @@ -8725,12 +8724,12 @@ } test -z "$with_png" && { echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6 -echo "configure:8729: checking for png_read_image in -lpng" >&5 +echo "configure:8728: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8744: \"$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 @@ -8764,10 +8763,10 @@ } if test -z "$with_png"; then echo $ac_n "checking for workable png version information""... $ac_c" 1>&6 -echo "configure:8768: checking for workable png version information" >&5 +echo "configure:8767: checking for workable png version information" >&5 xe_check_libs="-lpng -lz" cat > conftest.$ac_ext < int main(int c, char **v) { @@ -8775,7 +8774,7 @@ if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1; return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;} EOF -if { (eval echo configure:8779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8778: \"$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 @@ -8818,15 +8817,15 @@ 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:8822: checking for tiffio.h" >&5 +echo "configure:8821: checking for tiffio.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8830: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8829: \"$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* @@ -8849,12 +8848,12 @@ } test -z "$with_tiff" && { echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6 -echo "configure:8853: checking for TIFFClientOpen in -ltiff" >&5 +echo "configure:8852: checking for TIFFClientOpen in -ltiff" >&5 ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'` xe_check_libs=" -ltiff " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8868: \"$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 @@ -8904,15 +8903,15 @@ if test "$with_gtk" = "yes"; then 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:8908: checking for compface.h" >&5 +echo "configure:8907: checking for compface.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8916: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8915: \"$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* @@ -8935,12 +8934,12 @@ } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8939: checking for UnGenFace in -lcompface" >&5 +echo "configure:8938: checking for UnGenFace in -lcompface" >&5 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` xe_check_libs=" -lcompface " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8954: \"$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 @@ -8990,12 +8989,12 @@ if test "$with_x11" = "yes"; then echo "checking for X11 graphics libraries" 1>&6 -echo "configure:8994: checking for X11 graphics libraries" >&5 +echo "configure:8993: checking for X11 graphics libraries" >&5 fi if test "$with_x11" = "yes"; then echo "checking for the Athena widgets" 1>&6 -echo "configure:8999: checking for the Athena widgets" >&5 +echo "configure:8998: checking for the Athena widgets" >&5 case "$with_athena" in "xaw" | "") athena_variant=Xaw athena_3d=no ;; @@ -9011,12 +9010,12 @@ if test "$athena_3d" = "no"; then echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:9015: checking for XawScrollbarSetThumb in -l$athena_variant" >&5 +echo "configure:9014: checking for XawScrollbarSetThumb in -l$athena_variant" >&5 ac_lib_var=`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'` xe_check_libs=" -l$athena_variant " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9030: \"$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 @@ -9043,12 +9042,12 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:9047: checking for $athena_3d_function in -l$athena_variant" >&5 +echo "configure:9046: checking for $athena_3d_function in -l$athena_variant" >&5 ac_lib_var=`echo $athena_variant'_'$athena_3d_function | sed 'y%./+-%__p_%'` xe_check_libs=" -l$athena_variant " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9062: \"$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 @@ -9090,12 +9089,12 @@ else echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:9094: checking for $athena_3d_function in -l$athena_variant" >&5 +echo "configure:9093: checking for $athena_3d_function in -l$athena_variant" >&5 ac_lib_var=`echo $athena_variant'_'$athena_3d_function | sed 'y%./+-%__p_%'` xe_check_libs=" -l$athena_variant " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9109: \"$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 @@ -9124,12 +9123,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for $athena_3d_function in -lXaw""... $ac_c" 1>&6 -echo "configure:9128: checking for $athena_3d_function in -lXaw" >&5 +echo "configure:9127: checking for $athena_3d_function in -lXaw" >&5 ac_lib_var=`echo Xaw'_'$athena_3d_function | sed 'y%./+-%__p_%'` xe_check_libs=" -lXaw " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9143: \"$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 @@ -9171,15 +9170,15 @@ 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:9175: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9174: checking for X11/Xaw/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9183: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9182: \"$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* @@ -9199,15 +9198,15 @@ 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:9203: checking for X11/Xaw/XawInit.h" >&5 +echo "configure:9202: checking for X11/Xaw/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9210: \"$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* @@ -9233,15 +9232,15 @@ 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:9237: checking for X11/$athena_variant/XawInit.h" >&5 +echo "configure:9236: checking for X11/$athena_variant/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9244: \"$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* @@ -9258,15 +9257,15 @@ 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:9262: checking for X11/$athena_variant/ThreeD.h" >&5 +echo "configure:9261: checking for X11/$athena_variant/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9270: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9269: \"$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* @@ -9294,15 +9293,15 @@ if test -z "$athena_h_path"; then ac_safe=`echo "$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $athena_variant/XawInit.h""... $ac_c" 1>&6 -echo "configure:9298: checking for $athena_variant/XawInit.h" >&5 +echo "configure:9297: checking for $athena_variant/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9306: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9305: \"$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* @@ -9319,15 +9318,15 @@ echo "$ac_t""yes" 1>&6 ac_safe=`echo "$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $athena_variant/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9323: checking for $athena_variant/ThreeD.h" >&5 +echo "configure:9322: checking for $athena_variant/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9331: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9330: \"$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* @@ -9356,15 +9355,15 @@ 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:9360: checking for X11/Xaw3d/XawInit.h" >&5 +echo "configure:9359: checking for X11/Xaw3d/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9367: \"$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* @@ -9381,15 +9380,15 @@ 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:9385: checking for X11/Xaw3d/ThreeD.h" >&5 +echo "configure:9384: checking for X11/Xaw3d/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9392: \"$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* @@ -9421,15 +9420,15 @@ if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then ac_safe=`echo "Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xaw3d/XawInit.h""... $ac_c" 1>&6 -echo "configure:9425: checking for Xaw3d/XawInit.h" >&5 +echo "configure:9424: checking for Xaw3d/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9433: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9432: \"$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* @@ -9446,15 +9445,15 @@ echo "$ac_t""yes" 1>&6 ac_safe=`echo "Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xaw3d/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9450: checking for Xaw3d/ThreeD.h" >&5 +echo "configure:9449: checking for Xaw3d/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9457: \"$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* @@ -9486,15 +9485,15 @@ 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:9490: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9489: checking for X11/Xaw/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9497: \"$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* @@ -9533,15 +9532,15 @@ if test "$with_x11" = "yes"; then ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:9537: checking for Xm/Xm.h" >&5 +echo "configure:9536: checking for Xm/Xm.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9545: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9544: \"$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* @@ -9558,12 +9557,12 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6 -echo "configure:9562: checking for XmStringFree in -lXm" >&5 +echo "configure:9561: checking for XmStringFree in -lXm" >&5 ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'` xe_check_libs=" -lXm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9577: \"$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 @@ -9603,9 +9602,9 @@ if test "$have_motif" = "yes"; then echo $ac_n "checking for Lesstif""... $ac_c" 1>&6 -echo "configure:9607: checking for Lesstif" >&5 +echo "configure:9606: checking for Lesstif" >&5 cat > conftest.$ac_ext < #ifdef LESSTIF_VERSION @@ -9629,8 +9628,8 @@ fi case "$opsys" in - *linux* ) lucid_prefers_motif = "no" ;; - * ) lucid_prefers_motif = "yes" ;; + *linux* ) lucid_prefers_motif="no" ;; + * ) lucid_prefers_motif="yes" ;; esac case "$with_menubars" in "" | "yes" | "athena" ) @@ -10051,7 +10050,7 @@ if test "$with_mule" = "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:10055: checking for Mule-related features" >&5 +echo "configure:10054: checking for Mule-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining MULE EOF @@ -10076,15 +10075,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10080: checking for $ac_hdr" >&5 +echo "configure:10079: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10088: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10087: \"$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* @@ -10115,12 +10114,12 @@ echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:10119: checking for strerror in -lintl" >&5 +echo "configure:10118: checking for strerror in -lintl" >&5 ac_lib_var=`echo intl'_'strerror | sed 'y%./+-%__p_%'` xe_check_libs=" -lintl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10134: \"$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 @@ -10164,18 +10163,18 @@ echo "checking for Mule input methods" 1>&6 -echo "configure:10168: checking for Mule input methods" >&5 +echo "configure:10167: checking for Mule input methods" >&5 case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:10171: checking for XIM" >&5 +echo "configure:10170: checking for XIM" >&5 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6 -echo "configure:10174: checking for XOpenIM in -lX11" >&5 +echo "configure:10173: checking for XOpenIM in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenIM | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10189: \"$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 @@ -10210,12 +10209,12 @@ if test "$need_motif $have_lesstif" = "yes no"; then echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6 -echo "configure:10214: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10213: checking for XmImMbLookupString in -lXm" >&5 ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'` xe_check_libs=" -lXm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10229: \"$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 @@ -10249,12 +10248,12 @@ elif test "$have_motif $have_lesstif $with_xim" = "yes no no"; then echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6 -echo "configure:10253: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10252: checking for XmImMbLookupString in -lXm" >&5 ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'` xe_check_libs=" -lXm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10268: \"$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 @@ -10330,15 +10329,15 @@ if test "$with_xfs" = "yes" ; then echo "checking for XFontSet" 1>&6 -echo "configure:10334: checking for XFontSet" >&5 +echo "configure:10333: checking for XFontSet" >&5 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6 -echo "configure:10337: checking for XmbDrawString in -lX11" >&5 +echo "configure:10336: checking for XmbDrawString in -lX11" >&5 ac_lib_var=`echo X11'_'XmbDrawString | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10352: \"$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 @@ -10389,15 +10388,15 @@ 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:10393: checking for wnn/jllib.h" >&5 +echo "configure:10392: checking for wnn/jllib.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10401: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10400: \"$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* @@ -10420,15 +10419,15 @@ } test -z "$with_wnn" && { ac_safe=`echo "wnn/commonhd.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for wnn/commonhd.h""... $ac_c" 1>&6 -echo "configure:10424: checking for wnn/commonhd.h" >&5 +echo "configure:10423: checking for wnn/commonhd.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10432: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10431: \"$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* @@ -10453,10 +10452,10 @@ for ac_func in crypt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10457: checking for $ac_func" >&5 +echo "configure:10456: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10482: \"$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 @@ -10508,12 +10507,12 @@ test "$ac_cv_func_crypt" != "yes" && { echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:10512: checking for crypt in -lcrypt" >&5 +echo "configure:10511: checking for crypt in -lcrypt" >&5 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'` xe_check_libs=" -lcrypt " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10527: \"$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 @@ -10559,12 +10558,12 @@ 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:10563: checking for jl_dic_list_e in -lwnn" >&5 +echo "configure:10562: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10578: \"$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 @@ -10593,12 +10592,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for jl_dic_list_e in -lwnn4""... $ac_c" 1>&6 -echo "configure:10597: checking for jl_dic_list_e in -lwnn4" >&5 +echo "configure:10596: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10612: \"$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 @@ -10627,12 +10626,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for jl_dic_list_e in -lwnn6""... $ac_c" 1>&6 -echo "configure:10631: checking for jl_dic_list_e in -lwnn6" >&5 +echo "configure:10630: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10646: \"$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 @@ -10661,12 +10660,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dic_list_e in -lwnn6_fromsrc""... $ac_c" 1>&6 -echo "configure:10665: checking for dic_list_e in -lwnn6_fromsrc" >&5 +echo "configure:10664: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10680: \"$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 @@ -10725,12 +10724,12 @@ if test "$with_wnn6" != "no"; then echo $ac_n "checking for jl_fi_dic_list in -l$libwnn""... $ac_c" 1>&6 -echo "configure:10729: checking for jl_fi_dic_list in -l$libwnn" >&5 +echo "configure:10728: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10744: \"$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 @@ -10776,15 +10775,15 @@ 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:10780: checking for canna/jrkanji.h" >&5 +echo "configure:10779: checking for canna/jrkanji.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10787: \"$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* @@ -10811,15 +10810,15 @@ 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:10815: checking for canna/jrkanji.h" >&5 +echo "configure:10814: checking for canna/jrkanji.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10822: \"$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* @@ -10847,15 +10846,15 @@ 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:10851: checking for canna/RK.h" >&5 +echo "configure:10850: checking for canna/RK.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10859: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10858: \"$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* @@ -10878,12 +10877,12 @@ } test -z "$with_canna" && { echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:10882: checking for RkBgnBun in -lRKC" >&5 +echo "configure:10881: checking for RkBgnBun in -lRKC" >&5 ac_lib_var=`echo RKC'_'RkBgnBun | sed 'y%./+-%__p_%'` xe_check_libs=" -lRKC " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10897: \"$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 @@ -10917,12 +10916,12 @@ } test -z "$with_canna" && { echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:10921: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:10920: checking for jrKanjiControl in -lcanna" >&5 ac_lib_var=`echo canna'_'jrKanjiControl | sed 'y%./+-%__p_%'` xe_check_libs=" -lcanna " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10936: \"$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 @@ -10982,12 +10981,12 @@ 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:10986: checking for layout_object_getvalue in -li18n" >&5 +echo "configure:10985: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11001: \"$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 @@ -11085,10 +11084,10 @@ for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strerror tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11089: checking for $ac_func" >&5 +echo "configure:11088: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11114: \"$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 @@ -11152,10 +11151,10 @@ for ac_func in getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11156: checking for $ac_func" >&5 +echo "configure:11155: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11181: \"$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 @@ -11207,10 +11206,10 @@ echo $ac_n "checking for openpty""... $ac_c" 1>&6 -echo "configure:11211: checking for openpty" >&5 +echo "configure:11210: checking for openpty" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_openpty=yes" else @@ -11252,12 +11251,12 @@ echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:11256: checking for openpty in -lutil" >&5 +echo "configure:11255: checking for openpty in -lutil" >&5 ac_lib_var=`echo util'_'openpty | sed 'y%./+-%__p_%'` xe_check_libs=" -lutil " cat > conftest.$ac_ext <&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 @@ -11303,15 +11302,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11307: checking for $ac_hdr" >&5 +echo "configure:11306: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11315: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11314: \"$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* @@ -11347,15 +11346,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11351: checking for $ac_hdr" >&5 +echo "configure:11350: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11358: \"$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* @@ -11388,10 +11387,10 @@ for ac_func in isastream do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11392: checking for $ac_func" >&5 +echo "configure:11391: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11417: \"$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 @@ -11445,15 +11444,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11449: checking for $ac_hdr" >&5 +echo "configure:11448: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11457: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11456: \"$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* @@ -11490,10 +11489,10 @@ for ac_func in getloadavg do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11494: checking for $ac_func" >&5 +echo "configure:11493: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11519: \"$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 @@ -11549,15 +11548,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11553: checking for $ac_hdr" >&5 +echo "configure:11552: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11561: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11560: \"$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* @@ -11593,12 +11592,12 @@ echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:11597: checking for kstat_open in -lkstat" >&5 +echo "configure:11596: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11612: \"$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 @@ -11644,15 +11643,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11648: checking for $ac_hdr" >&5 +echo "configure:11647: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11656: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11655: \"$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* @@ -11684,12 +11683,12 @@ echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:11688: checking for kvm_read in -lkvm" >&5 +echo "configure:11687: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11703: \"$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 @@ -11734,16 +11733,16 @@ fi echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:11738: checking whether netdb declares h_errno" >&5 +echo "configure:11737: checking whether netdb declares h_errno" >&5 cat > conftest.$ac_ext < int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:11747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11746: \"$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 @@ -11763,16 +11762,16 @@ rm -f conftest* echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:11767: checking for sigsetjmp" >&5 +echo "configure:11766: checking for sigsetjmp" >&5 cat > conftest.$ac_ext < int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:11776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11775: \"$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 @@ -11792,11 +11791,11 @@ rm -f conftest* echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:11796: checking whether localtime caches TZ" >&5 +echo "configure:11795: checking whether localtime caches TZ" >&5 if test "$ac_cv_func_tzset" = "yes"; then cat > conftest.$ac_ext < #if STDC_HEADERS @@ -11831,7 +11830,7 @@ exit (0); } EOF -if { (eval echo configure:11835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:11834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then emacs_cv_localtime_cache=no else @@ -11861,9 +11860,9 @@ if test "$HAVE_TIMEVAL" = "yes"; then echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6 -echo "configure:11865: checking whether gettimeofday accepts one or two arguments" >&5 +echo "configure:11864: checking whether gettimeofday accepts one or two arguments" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11887: \"$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 @@ -11906,19 +11905,19 @@ echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:11910: checking for inline" >&5 +echo "configure:11909: checking for inline" >&5 ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -11959,17 +11958,17 @@ # 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:11963: checking for working alloca.h" >&5 +echo "configure:11962: checking for working alloca.h" >&5 cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:11973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11972: \"$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 @@ -11993,10 +11992,10 @@ fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:11997: checking for alloca" >&5 +echo "configure:11996: checking for alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12027: \"$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 @@ -12063,10 +12062,10 @@ echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:12067: checking whether alloca needs Cray hooks" >&5 +echo "configure:12066: checking whether alloca needs Cray hooks" >&5 cat > conftest.$ac_ext <&6 -echo "configure:12094: checking for $ac_func" >&5 +echo "configure:12093: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12119: \"$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 @@ -12146,10 +12145,10 @@ fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:12150: checking stack direction for C alloca" >&5 +echo "configure:12149: checking stack direction for C alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_stack_direction=1 else @@ -12198,15 +12197,15 @@ ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:12202: checking for vfork.h" >&5 +echo "configure:12201: checking for vfork.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12209: \"$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* @@ -12234,10 +12233,10 @@ fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:12238: checking for working vfork" >&5 +echo "configure:12237: checking for working vfork" >&5 cat > conftest.$ac_ext < @@ -12332,7 +12331,7 @@ } } EOF -if { (eval echo configure:12336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_vfork_works=yes else @@ -12358,10 +12357,10 @@ echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:12362: checking for working strcoll" >&5 +echo "configure:12361: checking for working strcoll" >&5 cat > conftest.$ac_ext < main () @@ -12371,7 +12370,7 @@ strcoll ("123", "456") >= 0); } EOF -if { (eval echo configure:12375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_strcoll_works=yes else @@ -12399,10 +12398,10 @@ for ac_func in getpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:12403: checking for $ac_func" >&5 +echo "configure:12402: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12428: \"$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 @@ -12453,10 +12452,10 @@ done echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:12457: checking whether getpgrp takes no argument" >&5 +echo "configure:12456: checking whether getpgrp takes no argument" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_getpgrp_void=yes else @@ -12538,10 +12537,10 @@ echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:12542: checking for working mmap" >&5 +echo "configure:12541: checking for working mmap" >&5 case "$opsys" in ultrix* ) have_mmap=no ;; *) cat > conftest.$ac_ext < #include @@ -12574,7 +12573,7 @@ return 1; } EOF -if { (eval echo configure:12578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then have_mmap=yes else @@ -12603,9 +12602,9 @@ if test "$rel_alloc $have_mmap" = "default yes"; then if test "$doug_lea_malloc" = "yes"; then echo $ac_n "checking for M_MMAP_THRESHOLD""... $ac_c" 1>&6 -echo "configure:12607: checking for M_MMAP_THRESHOLD" >&5 +echo "configure:12606: checking for M_MMAP_THRESHOLD" >&5 cat > conftest.$ac_ext < int main() { @@ -12617,7 +12616,7 @@ ; return 0; } EOF -if { (eval echo configure:12621: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* rel_alloc=no; echo "$ac_t""yes" 1>&6; else @@ -12642,15 +12641,15 @@ ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:12646: checking for termios.h" >&5 +echo "configure:12645: checking for termios.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12653: \"$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* @@ -12693,15 +12692,15 @@ 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:12697: checking for termio.h" >&5 +echo "configure:12696: checking for termio.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12705: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12704: \"$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* @@ -12733,10 +12732,10 @@ echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:12737: checking for socket" >&5 +echo "configure:12736: checking for socket" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12762: \"$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 @@ -12774,15 +12773,15 @@ 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:12778: checking for netinet/in.h" >&5 +echo "configure:12777: checking for netinet/in.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12785: \"$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* @@ -12799,15 +12798,15 @@ 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:12803: checking for arpa/inet.h" >&5 +echo "configure:12802: checking for arpa/inet.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12810: \"$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* @@ -12832,9 +12831,9 @@ } echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:12836: checking "for sun_len member in struct sockaddr_un"" >&5 +echo "configure:12835: checking "for sun_len member in struct sockaddr_un"" >&5 cat > conftest.$ac_ext < @@ -12845,7 +12844,7 @@ static struct sockaddr_un x; x.sun_len = 1; ; return 0; } EOF -if { (eval echo configure:12849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12848: \"$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 @@ -12863,9 +12862,9 @@ fi rm -f conftest* echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6 -echo "configure:12867: checking "for ip_mreq struct in netinet/in.h"" >&5 +echo "configure:12866: checking "for ip_mreq struct in netinet/in.h"" >&5 cat > conftest.$ac_ext < @@ -12875,7 +12874,7 @@ static struct ip_mreq x; ; return 0; } EOF -if { (eval echo configure:12879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12878: \"$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 @@ -12906,10 +12905,10 @@ echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:12910: checking for msgget" >&5 +echo "configure:12909: checking for msgget" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12935: \"$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 @@ -12947,15 +12946,15 @@ 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:12951: checking for sys/ipc.h" >&5 +echo "configure:12950: checking for sys/ipc.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12959: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12958: \"$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* @@ -12972,15 +12971,15 @@ 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:12976: checking for sys/msg.h" >&5 +echo "configure:12975: checking for sys/msg.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12983: \"$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* @@ -13018,15 +13017,15 @@ ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:13022: checking for dirent.h" >&5 +echo "configure:13021: checking for dirent.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13030: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13029: \"$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* @@ -13053,15 +13052,15 @@ 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:13057: checking for sys/dir.h" >&5 +echo "configure:13056: checking for sys/dir.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13064: \"$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* @@ -13094,15 +13093,15 @@ ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:13098: checking for nlist.h" >&5 +echo "configure:13097: checking for nlist.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13106: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13105: \"$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* @@ -13132,22 +13131,22 @@ echo "checking "for sound support"" 1>&6 -echo "configure:13136: checking "for sound support"" >&5 +echo "configure:13135: 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:13143: checking for multimedia/audio_device.h" >&5 +echo "configure:13142: checking for multimedia/audio_device.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13151: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13150: \"$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* @@ -13203,12 +13202,12 @@ if test -z "$native_sound_lib"; then echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:13207: checking for ALopenport in -laudio" >&5 +echo "configure:13206: checking for ALopenport in -laudio" >&5 ac_lib_var=`echo audio'_'ALopenport | sed 'y%./+-%__p_%'` xe_check_libs=" -laudio " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13222: \"$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 @@ -13250,12 +13249,12 @@ if test -z "$native_sound_lib"; then echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:13254: checking for AOpenAudio in -lAlib" >&5 +echo "configure:13253: checking for AOpenAudio in -lAlib" >&5 ac_lib_var=`echo Alib'_'AOpenAudio | sed 'y%./+-%__p_%'` xe_check_libs=" -lAlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13269: \"$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 @@ -13311,15 +13310,15 @@ 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:13315: checking for ${dir}/soundcard.h" >&5 +echo "configure:13314: checking for ${dir}/soundcard.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13322: \"$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* @@ -13373,15 +13372,15 @@ 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:13377: checking for audio/audiolib.h" >&5 +echo "configure:13376: checking for audio/audiolib.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13385: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13384: \"$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* @@ -13399,12 +13398,12 @@ echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6 -echo "configure:13403: checking for AuOpenServer in -laudio" >&5 +echo "configure:13402: checking for AuOpenServer in -laudio" >&5 ac_lib_var=`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'` xe_check_libs=" -laudio " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13418: \"$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 @@ -13454,7 +13453,7 @@ fi libs_x="-laudio $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-laudio\" to \$libs_x"; fi cat > conftest.$ac_ext < EOF @@ -13485,7 +13484,7 @@ # 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:13489: checking for $ac_word" >&5 +echo "configure:13488: 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. @@ -13514,10 +13513,10 @@ 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:13518: checking for esd_play_stream" >&5 +echo "configure:13517: checking for esd_play_stream" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13543: \"$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 @@ -13591,7 +13590,7 @@ if test "$with_tty" = "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:13595: checking for TTY-related features" >&5 +echo "configure:13594: checking for TTY-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -13607,12 +13606,12 @@ if test -z "$with_ncurses"; then echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:13611: checking for tgetent in -lncurses" >&5 +echo "configure:13610: checking for tgetent in -lncurses" >&5 ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -lncurses " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13626: \"$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 @@ -13656,15 +13655,15 @@ ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:13660: checking for ncurses/curses.h" >&5 +echo "configure:13659: checking for ncurses/curses.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13668: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13667: \"$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* @@ -13686,15 +13685,15 @@ ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6 -echo "configure:13690: checking for ncurses/term.h" >&5 +echo "configure:13689: checking for ncurses/term.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13698: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13697: \"$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* @@ -13724,15 +13723,15 @@ 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:13728: checking for ncurses/curses.h" >&5 +echo "configure:13727: checking for ncurses/curses.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13735: \"$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* @@ -13767,12 +13766,12 @@ for lib in curses termlib termcap; do echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:13771: checking for tgetent in -l$lib" >&5 +echo "configure:13770: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13786: \"$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 @@ -13808,12 +13807,12 @@ else if test -n "$libs_termcap" -a "$opsys" = "openbsd"; then echo $ac_n "checking for tgoto in -ltermcap""... $ac_c" 1>&6 -echo "configure:13812: checking for tgoto in -ltermcap" >&5 +echo "configure:13811: checking for tgoto in -ltermcap" >&5 ac_lib_var=`echo termcap'_'tgoto | sed 'y%./+-%__p_%'` xe_check_libs=" -ltermcap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13827: \"$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 @@ -13869,12 +13868,12 @@ else echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:13873: checking for tgetent in -lcurses" >&5 +echo "configure:13872: checking for tgetent in -lcurses" >&5 ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -lcurses " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13888: \"$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 @@ -13903,12 +13902,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6 -echo "configure:13907: checking for tgetent in -ltermcap" >&5 +echo "configure:13906: checking for tgetent in -ltermcap" >&5 ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -ltermcap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13922: \"$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 @@ -13967,15 +13966,15 @@ 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:13971: checking for gpm.h" >&5 +echo "configure:13970: checking for gpm.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13979: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13978: \"$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* @@ -13998,12 +13997,12 @@ } test -z "$with_gpm" && { echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6 -echo "configure:14002: checking for Gpm_Open in -lgpm" >&5 +echo "configure:14001: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14017: \"$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 @@ -14064,20 +14063,20 @@ test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \ != "no no no" && echo "checking for database support" 1>&6 -echo "configure:14068: checking for database support" >&5 +echo "configure:14067: 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:14073: checking for ndbm.h" >&5 +echo "configure:14072: checking for ndbm.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:14081: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14080: \"$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* @@ -14107,12 +14106,12 @@ if test "$with_database_gdbm" != "no"; then echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:14111: checking for dbm_open in -lgdbm" >&5 +echo "configure:14110: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14126: \"$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 @@ -14151,10 +14150,10 @@ if test "$with_database_dbm" != "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:14155: checking for dbm_open" >&5 +echo "configure:14154: checking for dbm_open" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14180: \"$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 @@ -14196,12 +14195,12 @@ echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:14200: checking for dbm_open in -ldbm" >&5 +echo "configure:14199: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14215: \"$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 @@ -14253,12 +14252,12 @@ if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 -echo "configure:14257: checking for Berkeley db.h" >&5 +echo "configure:14256: checking for Berkeley db.h" >&5 for header in "db/db.h" "db.h"; do case "$opsys" in *freebsd*) cat > conftest.$ac_ext < @@ -14274,7 +14273,7 @@ ; return 0; } EOF -if { (eval echo configure:14278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14277: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_file="$header"; break else @@ -14285,7 +14284,7 @@ ;; *) cat > conftest.$ac_ext < @@ -14307,7 +14306,7 @@ ; return 0; } EOF -if { (eval echo configure:14311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_file="$header"; break else @@ -14325,9 +14324,9 @@ if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6 -echo "configure:14329: checking for Berkeley DB version" >&5 +echo "configure:14328: checking for Berkeley DB version" >&5 cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 1 @@ -14339,7 +14338,7 @@ egrep "yes" >/dev/null 2>&1; then rm -rf conftest* cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 2 @@ -14366,10 +14365,10 @@ rm -f conftest* echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 -echo "configure:14370: checking for $dbfunc" >&5 +echo "configure:14369: checking for $dbfunc" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14395: \"$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 @@ -14411,12 +14410,12 @@ echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 -echo "configure:14415: checking for $dbfunc in -ldb" >&5 +echo "configure:14414: checking for $dbfunc in -ldb" >&5 ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'` xe_check_libs=" -ldb " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14430: \"$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 @@ -14491,12 +14490,12 @@ if test "$with_socks" = "yes"; then echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:14495: checking for SOCKSinit in -lsocks" >&5 +echo "configure:14494: checking for SOCKSinit in -lsocks" >&5 ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'` xe_check_libs=" -lsocks " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14510: \"$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 @@ -14562,7 +14561,7 @@ if test "$with_modules" != "no"; then echo "checking for module support" 1>&6 -echo "configure:14566: checking for module support" >&5 +echo "configure:14565: checking for module support" >&5 if test "$with_msw" = "yes"; then have_dl=yes; @@ -14578,15 +14577,15 @@ ;; *) ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:14582: checking for dlfcn.h" >&5 +echo "configure:14581: checking for dlfcn.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:14590: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14589: \"$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* @@ -14603,16 +14602,16 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6 -echo "configure:14607: checking for dlopen in -lc" >&5 +echo "configure:14606: checking for dlopen in -lc" >&5 cat > conftest.$ac_ext < int main() { dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:14616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=yes else @@ -14621,18 +14620,18 @@ rm -rf conftest* echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:14625: checking for dlopen in -ldl" >&5 +echo "configure:14624: checking for dlopen in -ldl" >&5 ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext < int main() { dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:14636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=yes else @@ -14661,12 +14660,12 @@ else echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:14665: checking for shl_load in -ldld" >&5 +echo "configure:14664: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14680: \"$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 @@ -14704,12 +14703,12 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:14708: checking for dld_init in -ldld" >&5 +echo "configure:14707: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14723: \"$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 @@ -14767,7 +14766,7 @@ xealias=$internal_configuration echo "checking how to build dynamic libraries for ${xehost}" 1>&6 -echo "configure:14771: checking how to build dynamic libraries for ${xehost}" >&5 +echo "configure:14770: checking how to build dynamic libraries for ${xehost}" >&5 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. case "$xehost" in *-*-linux-gnu*) ;; @@ -14795,9 +14794,9 @@ XEGCC=yes else echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:14799: checking checking whether we are using GNU C" >&5 +echo "configure:14798: checking checking whether we are using GNU C" >&5 cat > conftest.$ac_ext <&6 -echo "configure:14823: checking how to produce PIC code" >&5 +echo "configure:14822: checking how to produce PIC code" >&5 wl= can_build_shared=yes @@ -14920,18 +14919,18 @@ # 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:14924: checking if PIC flag ${dll_cflags} really works" >&5 +echo "configure:14923: checking if PIC flag ${dll_cflags} really works" >&5 save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $dll_cflags -DPIC" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14934: \"$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 @@ -14962,7 +14961,7 @@ xldf= xcldf= echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6 -echo "configure:14966: checking if C compiler can produce shared libraries" >&5 +echo "configure:14965: checking if C compiler can produce shared libraries" >&5 if test "$XEGCC" = yes -o "$__ICC" = yes; then xcldf="-shared" xldf="-shared" @@ -15013,14 +15012,14 @@ xe_libs= ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5' cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cc_produces_so=yes else @@ -15045,7 +15044,7 @@ 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:15049: checking for ld used by GCC" >&5 +echo "configure:15048: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -15071,7 +15070,7 @@ esac else echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:15075: checking for GNU ld" >&5 +echo "configure:15074: checking for GNU ld" >&5 fi if test -z "$LTLD"; then @@ -15109,7 +15108,7 @@ # 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:15113: checking if the linker is GNU ld" >&5 +echo "configure:15112: 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 &5; then xe_gnu_ld=yes @@ -15137,7 +15136,7 @@ # 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:15141: checking whether the linker supports shared libraries" >&5 +echo "configure:15140: checking whether the linker supports shared libraries" >&5 dll_ld=$CC dll_ldflags=$LDFLAGS ld_shlibs=yes @@ -15348,10 +15347,10 @@ for ac_func in dlerror _dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15352: checking for $ac_func" >&5 +echo "configure:15351: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15377: \"$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 @@ -15413,11 +15412,11 @@ fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:15420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else diff -u -r -N xemacs-21.4.15/configure.in xemacs-21.4.16/configure.in --- xemacs-21.4.15/configure.in 2004-01-23 23:37:54.000000000 -0500 +++ xemacs-21.4.16/configure.in 2004-03-25 16:07:57.000000000 -0500 @@ -2096,7 +2096,9 @@ dnl Feed s&m crud to src/Makefile dnl Linux/powerpc needs the following magic for some reason -test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript" +dnl [Not needed with YellowDog 2.3 and causes link problems with YellowDog 3.0, +dnl the two most popular PowerPC distributions.] +dnl test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript" if test "$unexec" = "unexaix.o"; then dnl AIX needs various hacks to make static linking work. @@ -2632,16 +2634,16 @@ possible_version=`${possible} --version 2> /dev/null` if test "x${possible_version}" != "x"; then GTK_CONFIG="${possible}" + case "${possible_version}" in + 1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;; + 1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;; + 1.2.*) + with_gtk=yes + break + ;; + *) AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);; + esac fi - case "${possible_version}" in - 1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;; - 1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;; - 1.2.*) - with_gtk=yes - break - ;; - *) AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);; - esac done AC_MSG_RESULT([${GTK_CONFIG}]) fi @@ -3587,8 +3589,8 @@ dnl Avoid using Motif :-( case "$opsys" in - *linux* ) lucid_prefers_motif = "no" ;; - * ) lucid_prefers_motif = "yes" ;; + *linux* ) lucid_prefers_motif="no" ;; + * ) lucid_prefers_motif="yes" ;; esac case "$with_menubars" in "" | "yes" | "athena" ) diff -u -r -N xemacs-21.4.15/configure.usage xemacs-21.4.16/configure.usage --- xemacs-21.4.15/configure.usage 2003-11-19 21:19:35.000000000 -0500 +++ xemacs-21.4.16/configure.usage 2004-03-25 16:07:58.000000000 -0500 @@ -238,7 +238,10 @@ --with-system-malloc (Bool) Use the system malloc, instead of GNU malloc. --with-debug-malloc (Bool) Use the debugging malloc package. --use-regex-malloc=no (Bool) Use malloc (not alloca) for regex fail stack. - Setting this to 'yes' allows unpreventable crashes. + Setting this to 'no' allows crashes - it may be + impossible to detect stack exhaustion, and your + XEmacs will crash. + Debugging options: diff -u -r -N xemacs-21.4.15/etc/NEWS xemacs-21.4.16/etc/NEWS --- xemacs-21.4.15/etc/NEWS 2001-05-09 05:53:44.000000000 -0400 +++ xemacs-21.4.16/etc/NEWS 2004-07-06 22:25:46.000000000 -0400 @@ -34,6 +34,22 @@ ** Summary of user-visible changes: + -- PUI related changes (Package User Interface) + - A minor rearrangement of the "Tools -> Packages" menu. + - Only a single package download site can be selected. + - Managing packages via the `customize' interface is no longer + supported. + - Non-Mule XEmacsen can not install Mule packages. + - The "mule-base" package is not needed to "bootstrap" PUI for + Mule enabled XEmacsen. + - The default for PGP verifying the package-index file is "off" in + 21.4. + - The default package-index filename has changed to + `package-index.LATEST.gpg'. + - The location of the local index file is customisable. See + `package-get-package-index-file-location'. + - `pui-add-install-directory' has been obsoleted and replaced by + `pui-set-local-package-get-directory'. -- The delete key now deletes forward by default. -- Shifted motion keys now select text by default. -- You can now build XEmacs with support for GTK+ widget set. diff -u -r -N xemacs-21.4.15/etc/OXYMORONS xemacs-21.4.16/etc/OXYMORONS --- xemacs-21.4.15/etc/OXYMORONS 2004-02-02 23:49:15.000000000 -0500 +++ xemacs-21.4.16/etc/OXYMORONS 2004-02-16 09:25:16.000000000 -0500 @@ -37,14 +37,15 @@ 21.4.14: Reasonable Discussion 21.4.15: Security Through Obscurity 21.4.16: Corporate Culture -21.4.17: Social Property -21.4.18: Stable Release Maintainer -21.4.19: Standard C -21.4.20: Successful IPO -21.4.21: Sufficiently Smart Compiler -21.4.22: The Gift Economy -21.4.23: Too Much Mozart -21.4.24: UTF-8 BOM +21.4.17: Jumbo Shrimp +21.4.18: Social Property +21.4.19: Stable Release Maintainer +21.4.20: Standard C +21.4.21: Successful IPO +21.4.22: Sufficiently Smart Compiler +21.4.23: The Gift Economy +21.4.24: Too Much Mozart +21.4.25: UTF-8 BOM N.B. Only incredibly redeeming suggestions can be accepted now. diff -u -r -N xemacs-21.4.15/etc/PACKAGES xemacs-21.4.16/etc/PACKAGES --- xemacs-21.4.15/etc/PACKAGES 2003-11-28 20:14:01.000000000 -0500 +++ xemacs-21.4.16/etc/PACKAGES 2004-04-19 22:56:26.000000000 -0400 @@ -100,6 +100,9 @@ *** erc ERC is an Emacs InternetRelayChat client. +*** escreen +Multiple editing sessions withing a single frame (like screen). + *** eshell Command shell implemented entirely in Emacs Lisp. @@ -338,6 +341,9 @@ supporting Lisp development. It is a single-file package so it may be tailored. +*** xlib +Emacs interface to X server. + *** xslide XSL editing support. @@ -345,6 +351,9 @@ A minor mode for (X)Emacs which allows running an XSLT processor on a buffer. +*** xwem +X Emacs Window Manager. + *** zenirc ZENIRC IRC Client. diff -u -r -N xemacs-21.4.15/etc/SERVICE xemacs-21.4.16/etc/SERVICE --- xemacs-21.4.15/etc/SERVICE 2001-04-12 14:20:48.000000000 -0400 +++ xemacs-21.4.16/etc/SERVICE 2004-08-12 23:23:19.000000000 -0400 @@ -1,4 +1,4 @@ - -*- text -*- +-*- text -*- GNU Service Directory --------------------- @@ -19,10 +19,10 @@ that you agree informally to the following terms: 1. You will not restrict (except by copyleft) the use or distribution -of any software, documentation, or other information you supply anyone -in the course of modifying, extending, or supporting GNU software. -This includes any information specifically designed to ameliorate the -use of GNU software. +of any software, documentation, or other technical information you +supply anyone in the course of modifying, extending, or supporting GNU +software. This includes any information specifically designed to +ameliorate the use of GNU software. 2. You will not take advantage of contact made through the Service Directory to advertise an unrelated business (e.g., sales of @@ -35,699 +35,1148 @@ Please put nothing else inside "<>". Thanks! For a current copy of this directory, or to have yourself listed, ask: - gnu@prep.ai.mit.edu + service@gnu.org ** Please keep the entries in this file alphabetical ** -  -BeOpen -4880 Stevens Creek Blvd., Suite 205 -San Jose, CA 95129-1034 -+1 408 243 3300 -http://www.beopen.com - -BeOpen provides corporate-quality support, development and user -documentation for GNU Emacs, XEmacs and InfoDock. (InfoDock is a turnkey -information management and software development toolset built atop emacs, -written by one of our associates.) Emacs distributions for a variety of -platforms are also available, as is support for other emacs variants, such as -those often found on PCs. - -Our unique focus on emacs-related work allows us to attract expert talent in -this area to keep you on the leading edge of productivity, especially if you -do software development work. We do the porting, patching, coding, -integrating, debugging, documenting and testing so that your people spend -much more productive time on their mainline tasks. - -Standard support packages include help on all aspects of the packages -supported, including all tools shipped as a standard part of the original -package distribution. In general, we want to give you an unbelievably strong -level of support, so where we can, we will also answer questions concerning -any add-on Lisp code that is used at your site. Setup and customization -help, bug fixes, and announcements of new releases are, of course, included. - -Support rates start at $1,000 USD, for single user support for one year. -Discounts are available for group contracts. We also offer Golden Support -contracts for those who need the absolute best in mission-critical support; -contact us for details. Hourly development rates and fixed bid work are -available. - -Updated 20-March-1997. - -Joseph Arceneaux -PO Box 460633 http://www.samsara.com/~jla -San Francisco, CA 94146-0633 -+1 415 648 9988 -+1 415 285 9088 - -Recently led the project making Wells Fargo Bank the first to provide -secure customer account access over the Internet. - -Former FSF staffmember. Performed X11 implementation of Emacs version -19, designed and implemented WYSIWYG Emacs. Installed and -administered FSF network. Maintainer of GNU indent. Over 15 years -experience with Unix and other systems, from writing ROM monitors to -UI design and system administration. - -I provide installation, porting, debugging and customization or -development of GNU and other Unix software. I also design and -implement free software projects and consult on software engineering -and systems design. Handholding and teaching services are also -available as well as things like LAN and compute--infrastructure design. - -Time and material rates around $150 USD per hour, depending upon the -particular job. I am also very interested in fixed-bid jobs. For -selected non-profit organizations with worthy goals, I work for free. +Aaronsen Group, Ltd. +600 Grant St. +Suite 5345 +Pittsburgh, PA 15219 US ++1 412 391 6000 voice ++1 412 391 6006 fax +http://www.aaronsen.com/gnu + +The Aaronsen Group provides several levels of service in the free software +arena, from simple configuration and installation to large extensions and +new development. We specialize in unique applications, but have the +experience to handle all manner of prospects, from database-backed +web-sites to high-end multiprocessor clusters. + +Our service area covers the US, with key offices in Pittsburgh, PA; San +Jose, CA; and New York, NY. + +We are available for both hourly work (at $450 per hour, some qualified +discounts are available) and fixed-price projects. Work is done on the +client site, at our offices, or remote via Internet or telephone +connection. + +Updated: 2002-04-18 + +ACT Europe +8 rue de Milan +75009 Paris ++33 1 49 70 67 16 ++33 1 49 70 05 52 fax +www.act-europe.com + +ACT Europe, developer and maintainer of the Ada 95 GNAT Pro +Development Environment, specializes in project support and consulting +for users of GNAT Pro. + +GNAT Pro, based on GNU/GCC technology, is the most widely used Ada 95 +development environment, and the ideal solution in environments where +efficient and reliable code is critical. GNAT Pro is available on the +widest number of platforms, from Unix workstations and PCs to bare +boards and embedded systems. + +ACT Europe offers full Ada 95 solutions and is continuously enhancing +and developing programming tools, debuggers and integrated development +environments. + +We believe the Ada market and your project will best benefit from an +open, non-proprietary technology, we have made all our products Open +Source software by adopting the licensing policy of the Free Software +Foundation. This means that all components of the GNAT technology, +including the run-time, come with sources. + +Highest-quality, responsive support is a key ingredient in complex and +reliable Ada software products. GNAT Pro, the leading Ada 95 +development system, is the only Ada solution that comes with +outstanding support. Please visit www.act-europe.com for further +details of our products and services or contact us at + + +UPDATED: 2004-02-13 + +Ada Core Technologies +104 Fifth Avenue, 15th Fl. +New York, NY 10011 ++1 212 620 7300 ++1 212 807 0162 fax +www.gnat.com + +Ada Core Technologies, developer and maintainer of the Ada 95 GNAT Pro +Development Environment, specializes in project support and consulting +for users of GNAT Pro. + +GNAT Pro, based on GNU/GCC technology, is the most widely used Ada 95 +development environment, and the ideal solution in environments where +efficient and reliable code is critical. GNAT Pro is available on the +widest number of platforms, from Unix workstations and PCs to bare +boards and embedded systems. + +Ada Core Technologies offers full Ada 95 solutions and is continuously +enhancing and developing programming tools, debuggers and integrated +development environments. + +We believe the Ada market and your project will best benefit from an +open, non-proprietary technology, we have made all our products Open +Source software by adopting the licensing policy of the Free Software +Foundation. This means that all components of the GNAT technology, +including the run-time, come with sources. + +Highest-quality, responsive support is a key ingredient in complex and +reliable Ada software products. GNAT Pro, the leading Ada 95 +development system, is the only Ada solution that comes with +outstanding support. Please visit www.gnat.com for further details of +our products and services or contact us at + +UPDATED: 2004-02-13 + +Alcôve +------ + +Alcôve, Centre Paris Pleyel, 153 bld Anatole France +93200 Saint-Denis France + +Email: + +Web: http://www.alcove.com +Tél.: +33 1 49 22 68 00 +Fax: +33 1 49 22 68 01 + +Founded in 1996, Alcôve's main purpose is to promote and support the +use of GNU/Linux and OSS on the European market. +Expertise in OSS innovation is the foundation of all Alcôve's +activities. +We provide key accounts and leading businesses in the field of IT with : + + Consultancy + Engineering + Training + Support + Technical watching brief + OSS Certification - Validation - Guarantee + Drivers for the linux kernel + Company directory and unified messaging + Linux Firewall Security Package + +Keys: support services, consulting, open source software, GNU/Linux, +Apache, Perl, GNU, Samba, Zope, Imp, OpenLDAP + +Average daily rate, depending on the job : 1000 euros. + +Updated: 2002-06-12 + +Allegro Consultants, Inc. +1072 De Anza Blvd., Suite B101 +San Jose, CA 95129-3532 +USA ++1 408 252-2330 voice ++1 408 252-2334 fax +http://www.gccsupport.com + +Allegro Consultants, Inc, in association with DIS International, is +now offering annual support contracts covering the GNU Compiler +Collection and related tools, including the GCC C and C++ compilers +for MPE/iX. + +The free GCC C and C++ compilers have been available on MPE/iX for +several years now, and are used for mission-critical applications by +many organizations including Hewlett-Packard. Until now, assistance +was available only from Mark Klein of DIS on a limited, voluntary +basis. Mark is the person who originally ported GCC to the HP e3000, +and he continues to maintain the software and port new versions. + +Support contracts start at $1,995.00/year for an organization +(unlimited number of HP e3000 computer systems) with two designated +callers. Additional options are available for large organizations who +need to designate more than two authorized callers, or who want the +additional security of 24x7 coverage. + +Updated: 2002-04-18 + +Amazonia Computing + + +http://www.efn.com/~rick + +5050 Donald St +Eugene, OR 97405 +541-485-7264 + + +I provide development and technical support for free software +and open source systems including embedded programming, GNU/Linux, the +GNU development suite... + +I have over 10 years experience building and maintaining systems ranging +from medical patient monitoring systems to Linux device drivers for +custom PCI plug in cards. + +Rates range from $85.00/hr to $90/hr USD. Will work for a lower rate +if in involves working in either Brazil, Vietnam, Indonesia, or Cuba. +I am also willing to work on fixed price contracts. -Updated: 17Oct95 +Updated: 2002-04-22  -Gerd Aschemann -Osannstr. 49 +Dipl.-Inform. Gerd Aschemann +Martinstr. 81f D-64285 Darmstadt -Tel.: +49 6151 16 2259 -http://www.informatik.th-darmstadt.de/~ascheman/ +Tel.: +49 173 3264070 +http://www.aschemann.net/ -- System Administrator (UNIX) at CS Department, TU Darmstadt, Germany -- 15 years expirience with CS, Systemadministration on different platforms -- 8 years with UNIX/Networking/FreeWare/GNU/X11 -- 6 years organizer of Operating Systems and Distributed Systems courses +- Consultant + + Unix Network and System Administration + + Distributed Systems and Middleware Infrastructures +- former System Administrator (UNIX and NT) at CS Department, TU Darmstadt, Germany +- 22 years working in the CS field, System administration on different platforms +- 15 years with UNIX/Networking/FreeWare/GNU/X11 +- 12 years courses on Operating Systems and Distributed Systems - Lectures on System and Network Administration -- Platforms: Solaris, SunOS, Ultrix, OSF1, HP-UX, Linux, FreeBSD, AIX -- Experience with parallel environments (Connection Machine, Meiko, Parsytec) -- Consultant for other UNIX users at TU Darmstadt +- Platforms: Solaris, GNU/Linux, SunOS, Ultrix, HP-UX, Digital Unix, AIX, SCO, FreeBSDs +- Distributed Platforms and Information Systems (CORBA, WWW, Java, SOAP) -Rates are at 100,-- DM (~60 US$) per hour minimum, depending on the job. +Rates are at 100,-- EUR (~90 US$) per hour minimum, depending on the job. I am willing to travel for sufficiently large jobs. -Updated: 17Oct95 +Updated: 2002-04-23  -Giuseppe Attardi -Dipartimento di Informatica -Corso Italia 40 -I-56125 Pisa, Italy -+39 50 887-244 +Baker Research, Ltd. +P. O. Box 4057, Leesburg, VA 20177 +Phone: (703) 999-6719 (Voice) +Web: http://www.baker-research.com +email: +Rate: $75.00/hr to $150.00/hr, or fixed-price projects. + +Services: + --Full-lifecycle software development + --Database design and migration + --Programming (C/C++, tcl/tk, bash, perl) + --Custom backup and archival systems + --GNU/Linux system installation, configuration, and management + --Customization of systems for user needs + --Software product evaluation and recommendation + --Cluster systems support + -Installation, configuration, and management + -MPI and Myrinet support + --Data acquisition, management, visualization, and archival + +Updated: 2004-05-13 + +Don Barry, Ph.D. +Ithaca, NY + +Astrophysicist with extensive and varied hacker background. Substantial +expertise in mathematical modeling, instrument interface, low-level and +high-level hardware control, statistical analysis, automated/mathematical +typesetting. Also fluent in opto/electro/mechanical design. I try to find +solutions using free software when possible and specialize in GNU/Linux +platforms. Degrees also in chemistry and mathematics. + +Speak: C, APL, Fortran, J, Perl, Emacs Lisp, IDL, variety of machine +languages from CDC CYBER (!) to x86 families, TeX/LaTeX, sendmail, and +quite a few others. Experience on platforms from PDP to present. + +Rates: $75--$150 per hour + travel (if required) depending on the needs of +the project, the level of support and availability required, and its +interest to me. -GNU: help on obtaininig GNU, for italian sites. +Services: consulting, design, porting, lecturing, support, project definition, +system implementation. -Updated: 5Apr94 +Updated: 2002-04-18  James Craig Burley 97 Arrowhead Circle -Ashland, MA 01721-1987 -508 881-6087, -4745 -(Please call only between 0900-1700 Eastern time, and only if you -are prepared to hire me -- ask me to help you for free only -via email, to which I might or might not respond.) -Email: --preferred-- - - +Ashland, MA 01721 +Email: +Web: http://world.std.com/~burley/ + +Expertise (mainly Development and Maintenance): + Compilers for Imperative Languages (author of GNU Fortran, aka g77) + Operating System Kernels + Tools/Utilities + Microcode (mainly VLIW) and Assembler + Software-Development-System Architecture (including APIs, IDEs) + Debugging + Documentation Authoring and Project Management -Expertise: - Compiler Internals (author of GNU Fortran, for example) - Operating Systems Internals - Tools/Utilities Development and Maintenance - Microcode Development and Maintenance (primarily VLIW machines) - System Design (computers, operating systems, toolsets, &c) - Debugging (often asked to help debug Other People's Code) - Documentation (authored many books and ran a few doc projects) - Extensive experience with a variety of operating systems, hardware, - languages, and so on - -Rate: $70/hour -- willing to consider flat-fee arrangements - -Updated: 14Aug95 - -Michael I. Bushnell -545 Technology Square, NE43-426 -Cambridge, MA 02139 -(617) 253-8568 - -All GNU software: Installation, customization, answering simple or - complex questions, bug fixing, extension. - -Experience: I have done Unix and GNU programming for several years, - I am the primary author of the Hurd (which provides most - kernel related facilities for the GNU OS). +Experience: + Programming Languages such as C, Fortran + Operating Systems such as Unix, GNU/Linux, Solaris, HP-UX + Assembler/Microcode Languages -- RISC (such as SPARC), CISC, VLIW + Scripting Languages + API Design, Documentation, and Use + +Rate: $200/hour + +Updated: 2002-04-18 + + C2V Michel Delval + 82 bd Haussmann Jean-Alain Le Borgne + 75008 Paris + France + Tel (33 1) 40.08.07.07 + Fax (33 1) 43.87.35.99 + http://www.c2v.com/freesoft.htm + e-mail: + + Services: we offer source or source+binary distribution, + installation, training, maintenance, technical support, + consulting, specific development and followup on the GNU software + development environment: Emacs, gcc/g++, binutils, gas, gdb. + + Porting on new platforms, and professionally developing software + with the GNU tools in the Unix/X11 environment since they were + first available. + + Experience: GNU C Compilation toolchain for the SGS-Thomson D950 + and ST20 DSP chips. + + GNU C compilation toolchain (cross-compiler, compiler, linker, + assembler, debugger) for SparcV7 ERC32 based space systems + (Sextant Avionique / Alcatel Espace). + + Feasability study, analysis and prototyping of a complete + compilation toolchain based on the GNU programming tools for the + CSEM RISC microprocessor family. + + Rates: from 800 Euros/day to 120 000 Euros/year, 40% discount for + educational institutions, add taxes and expenses. Ask for list. + +Updated: 2002-04-25 + +Cendio Systems AB +Teknikringen 3 +SE-583 30 Linkoping +SWEDEN ++46 13 21 46 00 voice ++46 13 21 47 00 fax +http://www.cendio.com/ -I am easily available in the Cambridge/Boston area; work via email. -I am willing to travel for sufficiently large jobs. +Cendio Systems develops, implements and integrates solutions based on +Open Source Software. We also develop and market the Fuego +Firewall(TM), an award winning and easy-to-use firewall, based on +GNU/Linux. + +We offer professional services, including support, maintenance, +integration and development in the following areas: + +* Embedded Linux +* Client/Server Solutions GNU/Linux/BSD +* Professional Training GNU/Linux, certifications from SAIR Linux/GNU +* Open Source Strategy +* Development/Adaptation of free software + +Cendio Systems have deep roots in Linkoping University, and was +founded 1992 as Signum Support. Our headquarters resides in Mjardevi +Science Park in Linkoping and we have an office in Stockholm. We are +currently about fifty employees at both locations. + +Cendio Systems won the Lotus 'Tux Award' at LotusSphere 2000 for "the +partner who best exemplifies a unique dedication to Lotus and Linux +technologies and has successfully executed their vision in the +marketplace." + +Cendio Systems have the following certifications and memberships: + +Association of Computing Machinery, Professional Membership +COMPAQ System Specialist (Intel and Alpha Systems) +Embedded Linux Consortium, Founding Member +IBM Value Added Reseller (Netfinity) +IBM Solution Provider (RS/6000) +SAIR GNU/Linux, Accredited Center for education +SGI Systems Integrator + +Rates: Please request our price list. + +Updated: 2001-05-09 + +CodeSourcery, LLC +9978 Granite Point Ct +Granite Bay, CA 95746 +(916) 791-8304 +http://www.codesourcery.com + +CodeSourcery specializes in customization of, enhancements to, and +support for all GNU software. We have particular experience in the +field of programming tools, and have been responsible for many +features in the GNU C and C++ compilers including the implementation +of member templates and type-based alias analysis. Mark Mitchell, one +of our co-founders, is a co-maintainer of the GNU Compiler Collection. + +We also have experience with GNU tools ranging from emacs to binutils +to gdb to autoconf, and are willing to work on any and all free +software projects. -Rates: $100/hr, negotiable, less for non-profit organizaions. +Please see our web page at www.codesourcery.com for more information +about our products, services, and prices. -Updated: 5Apr94 +Updated: 2002-04-19  -C2V Renaud Dumeur -82 bd Haussmann Michel Delval -75009 Paris Jean-Alain Le Borgne -France -Tel (1) 40.08.07.07 -Fax (1) 43.87.35.99 +Stuart Cracraft +25682 Cresta Loma +Laguna Niguel, CA, 92607, USA +Phone: 949-347-8106 +Rate: negotiable -We offer source or source+binary distribution, installation, training, -maintenance, technical support, consulting, specific development and -followup on the GNU software development environment: Emacs, gcc/g++, -binutils, gas, gdb. - -Experience: adapted gcc, gas and binutils to work as cross-development -tools for the Thomson st18950 DSP chip: GCC parser and typing system -have been augmented to allow the manipulation of variables located in -separated memory spaces. Porting on new platforms, and professionally -developing software with the GNU tools in the Unix/X11 environment -since they were first available. - -Rates: from 2000 FF/day to 150 000 FF/year, 40% discount for -educational institutions, add taxes and expenses. Ask for list. - -Entered: 5May94 - -Contributed Software -Graefestr. 76 -10967 Berlin, Germany -phone: (+49 30) 694 69 07 -FAX: (+49 30) 694 68 09 -modems: (+49 30) 694 60 55 (5xZyXEL ) -modems: (+49 30) 693 40 51 (8xUSR DS) -email: -internet: uropax.contrib.de [192.109.39.2], login as 'guest'. - -We distribute, install, port, teach and support free software -in general, i.e. X11, GNU, khoros etc. Rates are ECU 80,-- plus -tax per hour. We offer maintenance and support contracts for full -customer satisfaction. -Highlights are transparent development environments for multi-platform -sites and configuration management. Traveling is no problem. +Consultation topics: +Entire GNU suite - porting, compilation, installation, +user-training, administrator-training -Free Archive login for downloading on above modem numbers. +Method: via any combination of telephone, dialup, Internet, in-person, email. -Updated: 5Apr94 - -Stuart Cracraft -25682 Cresta Loma -Laguna Niguel, Ca. -92677 -GNUline: 714-347-8106 -Rate: $75/hour -Consultation topics: - Entire GNU suite - porting, compilation, installation, - user-training, administrator-training -Method: telephone line support, call-in via modem to your site, -or direct visit. - -Experience: supporting GNU since the mid-1980's, coordinator -of GNU Chess (original author), GNU Shogi, GNU Go. Ported GNU Emacs -to Solaris (System V Release 4). Expertise in C, Emacs Lisp, and Perl. -Customized programming also available. - -Entered: 5Apr94 - -Cygnus Support -1937 Landings Drive ...uunet!cygint!info -Mountain View, CA 94043 USA -+1 415 903 1400 voice -+1 415 903 0122 fax - -Cygnus Support -48 Grove Street -Somerville, MA 02144 -+1 617 629 3000 voice -+1 617 629 3010 fax - -Cygnus Support continues to provide supported, maintained versions of -the GNU toolset including GCC, G++, the GNU debugger with graphical -user interface, GNU linker, GNU macro-assembler and Emacs 19. In -keeping with the rapidly advancing needs of software developers, -Cygnus maintains a 90 day release cycle of the GNU toolset. Each -release is regression tested and includes substantial improvements and -additions to the existing matrix of over 65 supported platform -configurations. - -Updated: 2Feb95 - -Edgar Der-Danieliantz -P.O. Box 10 -Yerevan 375009 AM -ARMENIA - -Support for GCC (C & Objective C), X Window System, -World Wide Web, x86-based embedded systems, logic programming, etc. - -Via Internet (mail, talk, irc, etc.) - -Experience: - OS's: 4.3 & 4.4 BSD, SVR3.2 & 4.2, FreeBSD, Linux, - NetBSD, SCO, Solaris, SunOS, Ultrix, NEXTSTEP, UnixWare. - Languages: C, C++, Objective C, Pascal, Tcl/Tk, Perl, - Bourne Shell, PostScript, HTML, Prolog. - Platforms: Intel, SPARC, Mac, VAX, NeXT. - -Rates: Depending on type of work, appx $20/hour. Contact for more information. - Negotiable for individuals and non-profit organizations. - FREE for individuals who can't pay. Your 'Thanks!' just enough! :-) - Payment by international wire transfer. - -Entered: 6Mar96 - -Free Software Association of Germany -Michaela Merz -Heimatring 19 -6000 Frankfurt/Main 70 -phone: (+49 69) 6312083) -ert : (+49-172-6987246) -email: (info@elara.fsag.de) - -Supporting all kinds of freeware (i.e. GNU), freeware development, consulting, -training, installation. Special LINUX support group. - -RATES: - -Companies and for profit -organizations : 100 US$ / hour -Private and not-for-profit -organizations : 40 US$ / hour -ert (24h Emergency -response team) : 300 US$ / hour - -Entered: 14Apr94 - -Noah Friedman -Building 600, Suite 214 2002-A Guadalupe St. #214 -One Kendall Square Austin, TX 78705 -Cambridge, MA 02139 (Local, faster to reach me) -(Permanent) - - -Author of several Emacs Lisp packages and parts of Emacs 19, as well as -numerous utilities written in shell script and perl. Co-maintained GNU -Texinfo and Autoconf for a couple of years. System administrator for a -network of heterogenous machines. FSF employee Feb 1991--Sep 1994. - -I can perform installation, porting, and enhancement of all GNU software -and any other free software; system administration for unix-type systems -and ethernet networks; and I am willing to teach shell programming and -Emacs Lisp. - -Fees negotiable, averaging $60-$75/hour. I can work in the Austin, TX area -or anywhere accessible on the Internet. For larger jobs I may be willing -to travel. +Experience: supporting GNU since project inception, original port of +GNU Emacs to Sun Solaris, original author of GNU Emacs online tutorial. +Expertise in C, Emacs Lisp, Perl, Expect, Oracle, Informix, SunOS, Solaris, +NIS, NFS, system-monitoring via paging. Unix System and Database +administration or development. -Updated: 16Aug95 +Updated: 2002-04-20  -Ronald F. Guilmette -Infinite Monkeys & Co. -1751 East Roseville Pkwy. #1828 -Roseville, CA 95661 -Tel: +1 916 786 7945 -FAX: +1 916 786 5311 +Bruce Dawson - +CodeMeta, Inc. +London, NH USA +800-354-2209 -Services: Development & porting of GNU software development tools. +Specializing in GNU tools such as CVS, gnats, bash, gawk, fileutils... -GNU Contributions: - Invented, designed, and implemented the protoize and - unprotoize tools supplied with GCC2. +Services: - Designed and developed all code to support the generation - of Dwarf symbolic debugging information for System V Release - 4 in GCC2. + o 800 phone support. - Performed original port of GNU compilers to SVr4 system. + o Modification and development. - Finished port of GNU compilers to Intel i860 RISC - processor. + o Training. -Experience: 13+ years UNIX systems experience, all working on compilers - and related tools. +Rate: Fixed rate deliverables or $110/hour for hourly work. - 7+ years working professionally on GCC, G++, and GDB under - contract to various firms including the Microelectronics - and Computer Technology Corporation (MCC), Data General (DG), - Network Computing Devices (NCD), and Intel Corp. +http://www.codemeta.com -Other qualifications: - Developer of the RoadTest (tm) C and C++ commercial - compiler test suites. +Updated: 2002-04-23 + +DSS Distributed Systems Software, Inc. +3253 Georgia St. +Richmond, British Columbia V7E 2R4 http://www.dss.bc.ca +CANADA (604) 270-9559 + +GNU-related services: + We specialize in support for GCC (mainly C and C++), including porting, + retargeting, and customizing. + Also, GNU and other free software that falls within our areas of expertise. - Former vice-chairman of UNIX International Programming - Languages Special Interest Group (UI/PLSIG). +Expertise: + DSS provides software design, implementation, and consulting services for: + o Client/Server architectures + Including web-based systems, Apache web server customization, CGI, + server-side processing, JavaScript, automatic web page generation + o E-Security, including PKI and SSL + o Directory systems, including X.500 and LDAP + o High-performance and special-purpose distributed systems and databases + o Computer networking and communication protocols + Internet protocols such as TCP/IP and UDP, development of custom protocols + o Creating and customizing "small", embedded, and special-purpose programming + languages - Bachelor's and a Master's degrees, both in Computer Science. +Rates: + Consulting rates are $65-$200 USD per hour, plus + applicable taxes. Fixed-cost projects are also possible. -Rates: Variable depending upon contract duration. Call for quote. - -Updated: 23Sep95 - -Hundred Acre Consulting -1155 W Fourth St Ste 225 -PO Box 6209 -Reno NV 89513-6209 -(702)-348-7299 -Hundred Acre is a consulting group providing support and development -services to organizations of all sizes. We support GNU C++ and C in -particular, but also provide support for all other GNU software and -certain non-GNU public domain software as well. We work on a "service -contract" basis for support -- for a yearly fee, we provide multiple -levels of email and toll free telephone support, and free updates and -bug fixes. The highersupport levels have on-site support. Development -is charged on either an hourly or fixed bid basis. - -Consulting rates: $70 to $90 per hour, or fixed bid. -Support contracts: Several levels, from $495 to $90000 per year. - -Updated: 27Dec94 - -Interactive Information Limited - -Interactive Information Limited is an Edinburgh-based company that -specialises in WWW services and support for using the Internet for -marketing. - -Our staff have many years experience in using, and developing lisp packages -within, Emacs, and in using other GNU/Unix tools, particularly under public -domain UNIXes. - -We can provide services throughout the UK, at any level from general -consultancy through fetching, installing and customising software to -bespoke programming. Fees would be in the range #300 - #600 per day, -depending primarily on the size of the job. - -You can contact us - by email: - by phone: 0370 30 40 52 (UK) - (+44) 370 30 40 52 (International) - by post: 3, Lauriston Gardens, - Edinburgh EH3 9HH - Scotland - -Entered: 13Nov95 - -Scott D. Kalter +Box 325 http://fig.org/gord/ +Lumsden, SK S0G 3C0 Voice: (306) 731-3011 +CANADA -Rates: $50/hr - May answer brief and interesting questions for free. - Prefer e-mail communication to telephone. +I will gladly help novice and intermediate computer users to install, +understand, and use free software, whether or not I have prior +experience with that software. I know my limitations well, and will +freely give other contacts if I cannot solve your problem myself. -Qualifications: BS Math/CS 1985: Carnegie Mellon University - MS CS 1988: UCLA +I have over 5 years of experience with several of the major free OSes: +GNU/Linux (Debian, Red Hat), NetBSD, FreeBSD, and GNU/Hurd. Some of +my specialties are networking, Emacs, Automake, Autoconf, C, Perl, and +shell script programming. - Very familiar with all levels of elisp programming. Taught - Emacs use and customization in universities and industry. Extensive - troubleshooting and user support experience. Co-developed an - object-oriented extension to Elisp that can be used for - projects. Extensive Elisp level modification for rapid - prototyping of designs used in groupware research. This - includes the development of an infrastructure to support - multiple, communicating Emacs processes. +My rates are negotiable depending on the task: usually $40-$60 +(Canadian) per hour. Flat rates preferred. -Updated: 6Apr94 +Updated: 2002-04-18  -KAMAN SCIENCES CORPORATION -258 GENESEE STREET -UTICA NY 13502 -(315) 734-3600 +John W. Eaton +, -CONTACTS: Alan Piszcz (peesh) - : Dennis Fitzgerald +Experience: Original author and current maintainer of GNU Octave + (http://www.octave.org). -Kaman Sciences has performed a GNU port for a custom RISC processor. -We have experience in the definition and description of the machine -register transfer language to the GNU tool-set. This includes rewriting -and modification of the necessary description and source files of gcc, gas, -and gld and other binutils. Kaman also has services for installation and -setup of GNU tools, (GAWK, GCC, EMACS, etc.) on Sun workstations. + Derivatives of the Unix man utility that I wrote in 1990 + are currently distributed with several GNU/Linux systems. -Work is on a "service contract" basis and development is charged either -hourly or as a fixed price contract. + Improved GNU Make's support for VPATH and object + libraries on VMS systems. -Consulting rates: $70 to $200 per hour. + Various other enhancements and bug fixes for other free + software tools. -Entered: 13Jan95 - -Scott J. Kramer -P.O. Box 620207 -Woodside, CA 94062 -+1 415-941-0755 + I have more than 19 years experience programming various + languages and systems, more than 14 years as a user and + system mangler of Unix systems, including Ultrix, SunOS, + AIX, HP/UX, BSD, IRIX, Digital Unix, and GNU/Linux. + Long-time user of GNU tools on all these platforms. -GNU Software: Tutoring, installations/upgrades, Emacs Lisp customizations, - general troubleshooting/support. Prefer that work I do - becomes part integrated into official Free Software Foundation - distributions. +Programming: Octave, Matlab, C++, C, Fortran, Emacs Lisp, TeX/LaTeX, + AWK, M4, Autoconf, Make, Lex & YACC, Unix shell + programming, etc. -Systems Administration: Sun (SunOS & Solaris) and SGI (IRIX) - UNIX hardware/software platforms. +Services: Anything related to programming and extending Octave. + Porting, installation, and customization of GNU/Linux and + GNU tools. Unix system administration. -Rate: Task- and time-dependent; non-monetary offers accepted. +Rates: $100/hour + travel and expenses (if required). Will + consider travel for short periods and/or sufficiently + interesting jobs, but prefer to work via the net or email. + Lower rates for non-profits. -Updated: 12Apr94 +Updated: 2002-04-19  -Fen Labalme +6114 La Salle Ave. #739 +Oakland, CA 94611-2802 + +Author of several Emacs Lisp packages and parts of Emacs, as well as +numerous network and unix system utilities. Co-maintained GNU Texinfo and +Autoconf for a couple of years. Experienced unix systems engineer. +FSF employee Feb 1991--Sep 1994. -Rates: $80 hour (negotiable); quick email or phone questions free. - Lower rates -- free of barter -- for schools and non-profits. +I can design and implement relational database services; perform +installation, porting, and enhancement of all GNU software and any other +free software, especially for linux- and unix-derived systems; design +high-capacity hardware-redundant servers for production environments; +provide consulting on the use of version control management. -Consulting, installation, customization and training for GNU Emacs, -and selected other GNU & network software (but not G++). I have been -hacking Emacs since '76 when it was TECO and ^R macros (don't ask). +Fees negotiable, averaging $100-$150/hour. I can work in the California +bay area or anywhere accessible on the Internet. For larger jobs I may be +willing to travel. -Updated: 6Apr94 +Updated: 2002-04-19  -Greg Lehey -LEMIS -Schellnhausen 2 -36325 Feldatal -Germany - -Phone: +49-6637-919123 -Fax: +49-6637-919122 -Mail +Ronald F. Guilmette +RG Consulting +1751 East Roseville Pkwy. #1828 +Roseville, CA 95661 +Tel: +1 916 786 7945 +FAX: +1 916 786 5311 +http://www.monkeys.com/ -Services: Supply, porting, installation, consultation on all GNU -products. +Services: Development & porting of GNU software development tools. -Experience: 20 years OS and compiler experience, portations of most -GNU products. Author of ported software CD-ROM for Unix 4.2. +GNU Contributions: + Invented, designed, and implemented the protoize and + unprotoize tools supplied with GCC2. -Rates: Choice of DM 150 per hour or hotline rates 3 DM per minute + 10 -DM per phone call. Quick questions may be free. Limited free support -available for purchasers of LEMIS CD-ROMs. + Designed and developed all code to support the generation + of Dwarf symbolic debugging information for System V Release + 4 in GCC2. -Updated: 21Feb95 - -Marty Leisner -332 Shaftsbury Road -Rochester, New York 14610 -Home:(716) 654-7931 + Performed original port of GNU compilers to SVr4 system. -Experience: 12 years C/Unix, 7 years DOS. - Extensive experience with GNU binary tools, cross-compilers, - embedded/hosted systems, realtime. -Degree : BS CS, Cornell University -Rates: $75/hr + Finished port of GNU compilers to Intel i860 RISC + processor. +Experience: 15+ years UNIX systems experience; 15+ years working on + compilers and related tools. + 10+ years working professionally on GCC, G++, and GDB under + contract to various firms including the Microelectronics + and Computer Technology Corporation (MCC), Data General (DG), + Network Computing Devices (NCD), and Intel Corp. -marty - +Other qualifications: + Developer of commercial C and C++ compiler test suites. -Updated: 15Apr94 - -Richard Levitte (in TeX: Richard Levitte -Södra Långgatan 39, II S\"odra L{\aa}nggatan 39, II -S-171 49 Solna S-171 49 Solna -Sweden Sweden) -Tel.nr.: +46 (8) 18 30 99 (there is an answering machine) -e-mail: (preferred) - + Former vice-chairman of UNIX International Programming + Languages Special Interest Group (UI/PLSIG). -What I do: - Primarly I work on GNU software for VMS, both VAX and AXP. I - also work on GNU stuff for Unix on occasion. I'm familiar with - SunOS (version 4.x.x), BSD (version 4.2 and up), - Ultrix (version 4.2 and up). - I've been porting GNU Emacs to VMS since spring 1991. This - includes versions 18.57 to 18.59 and version 19.22. - I maintain GNU vmslib. + Bachelor's and a Master's degrees, both in Computer Science. -Programs supported: - GNU vmslib: extending, installation, upgrading aid, - simple and complex questions, you name it. - GNU Emacs: porting, extending, installation, upgrading aid, - customization, simple or complex questions, - training, you name it. - GNU autoconf: porting, extending, installation, upgrading aid. - GNU zip, diffutils, m4, patch, texinfo: - porting, installation, upgrading aid. - GNU C/C++: installation, upgrading aid. I might start to - hack at it some day. +Rates: Variable depending upon contract duration. Call for quote. -The list of programs I currently support represents both my interests and -current priorities. Your interest and funding can influence my priorities. +Updated: 2002-05-04 + +IDEALX +15-17 avenue de ségur +75007 Paris +France -Experience: - Fluent in C, C++, Emacs Lisp, Pascal as well as assembler - on VAX, Motorola 680x0, Intel 8086 and 80x86. Modified key - elements in Emacs (e.g., memory and process management) to work - transparently on VMS. I have very good knowledge in the VMS - operating system, as well as MS-DOS and IBM PC compatibles. - I have worked for four and a half years as a VMS system manager. - I've also provided consulting services on IBM PC compatibles, - as well as held classes for IBM PC users. - A reference list is available on request. +Tel - +33144420000 Fax - +33144420001 +http://www.IDEALX.com, http://www.IDEALX.org -Your Rate: - $50-$80/hour (400-700 SEK in sweden), plus expenses. My rates - are negotiable, depending on how interesting the project is to me. +IDEALX is involved in the development of Open Source solutions,and +ensures their deployment and maintenance. +IDEALX also contributes to the community, by producing its own +Open Source components such as : IDX-PKI (a 100% Open Source +Public Key Infrastructure) see :http://idx-pki.idealx.com -Entered: 18Aug94 - -Roland McGrath -545 Tech Sq, Rm 426 -Cambridge, MA 02139 -Work: (617) 253-8568 +Development +Technical support +Technology watch +Consulting +Engineering +Training + +Rates - Variable -Co-author of GNU Make (with Richard Stallman); maintainer of GNU Make. -Author and maintainer of the GNU C Library and co-author of the GNU Hurd. -Author of several GNU Emacs Lisp packages and parts of GNU Emacs 19. -FSF employee summer 1989, fall 1990 to the present. +Updated: 2002-07-22 + +Ehud Karni +Israel -Installation, maintenance, porting, enhancement of all GNU software. I can -install GNU software and maintain its installation on call via the Internet. +Support of Emacs & Emacs lisp, GNU/Linux, Cygwin. -Fees negotiable; $75-$100/hour, higher for very short term projects. I can -work anywhere in the Boston or SF Bay Area, or anywhere on the Internet. I -am working full-time for the FSF on the GNU Hurd, so I am likely to take on -only jobs that either can be done entirely via the Internet and are -short-term, or that are very interesting. +Fee: $75/hour. -Updated: 21Jan95 +Updated: 2002-04-20  -Erik Naggum -P.O. Box 1570 Vika http://www.naggum.no -0118 OSLO phone: +47 2295 0313 -NORWAY NIC handle: EN9 +Bradley M. Kuhn + +http://www.ebb.org/bkuhn -Have extensive experience with Unix and C (since 1983), Internet protocols -(1987), International Standards for character sets (1988), SGML (1990), -ANSI Common Lisp (1994); Emacs user and programmer from 1984 to 1987 -(TOPS-20) and 1991 to present (Unix). Have worked on GNU Emacs development -since early 1994, both in Emacs Lisp and C. Have been tracking development -code for Emacs since mid-1995, and know new versions intimately. +I am available for part-time system administration, software development +and training. I have extensive experience with system administration of +GNU/Linux systems and Free Software development. I have also taught +courses in C++ and Perl. As an employee of the FSF, I have a unique +perspective on the free software community. -Services offered: installation, support, customization, and development of -new packages, plus courses and seminars from basic usage through Emacs Lisp -programming to writing extensions in C. General aid with all GNU software. +Please visit my homepage for more information on my background and skills. +My resume is also available there. -Rates depend on duration of work: From $6/minute for <= 1 hour, to $500/day -for >= 1 month. Service agreements are encouraged. Cover Scandinavia for -on-site work. Remote debugging and help by mail available for smaller -fees, without limits to distance. +I am available for both 1099 and W2 on-site contracting in the Boston, MA, +USA metropolitan area, as well as remote consulting via dialup or Internet +connection anywhere in the USA. I am not interested in relocation. +However, temporary (two week maximum) jobs with paid expenses at other +locations will be considered. -Please call only about actual work, I prefer mail for all other questions. +My rate varies greatly (between $25-$60/hour) depending on the +circumstances. Rates for non-profit organizations will be on the lower end +of the spectrum if I support your cause. -I accept VISA and Mastercard, preferred for remote jobs and small amounts. +Updated: 2002-04-20  -Wolfgang S. Rupprecht -47 Esparito Ave. -Fremont, CA 94539-3827 -(510) 659-9757 +Greg Lehey +LEMIS +PO Box 460 +Echunga SA 5153 +Australia + +Phone: +61-8-8388-8286 +Fax: +61-8-8388-8725 +Mobile: +61-418-838-708 +Mail -Anything, (lisp, C, customization, porting, installing) I have -written thousands of lines of GNU Emacs C and Lisp code. Original -author of the floating point additions in Emacs 19. +Services: Supply, porting, installation, consultation on all GNU +products. -Rates: $95/hr. +Experience: 30 years OS and compiler experience, ports of most GNU +products. Author of ported software CD-ROM for UNIX System V.4.2, +"Porting UNIX Software" (O'Reilly), "Installing and Running FreeBSD" +and "The Complete FreeBSD" (both Walnut Creek). + +Rates: Choice of AUD 300 per hour or hotline rates AUD 6 per minute. +Outside Australia, $US 180 per hour or $US 3.50 per minute. Quick, +well prepared questions by mail may be free. + +Updated: 2002-04-21 + +Alan Lehotsky +Quality Software Management +634 West St +Carlisle, MA 01741 -Updated: 14Apr94 - -Signum Support AB -Box 2044 _ ...!seunet!signum!info -S-580 02 Linkoping, Sweden -+46 13 21 46 00 voice -+46 13 21 47 00 fax +Phone: (978)287-0435 +Fax: (978)287-0436 -Signum Support AB is a company dedicated to supporting, developing -and distributing free software for, including but not limited to, -UNIX systems. The people behind Signum Support AB have many years -of general UNIX experience, both as system administrators and as -programmers, and also extensive experience in maintaining the GNU -programs, both administrating it and finding and fixing bugs. +Services: + - Support for GNU compilers, including rehost/retarget + - GNU Binutils rehost/retarget. + - cgen/sim + - Perl internals hacking + - General system software work (SW tools, O/S, device drivers) + - runtime library (especially floating point) + - project management + - software process improvement + +Experience: 20+ years of design and implementation of optimizing + compilers. "Mr. Bliss" at Digital in the 70's and early + 80's. Experience with Motorola 68k, PowerPC, SPARC, Intel + x86 and IA64 (Merced), MIPS, NS32K, ADI SHARC DSP, VAX, PDP-11, + PDP-10. Wrote or maintained compilers for Ada, BLISS, C, C++, + FORTRAN, Pascal, Modula/2, O/S experience includes Unix (OSF/1, + SunOS, Solaris, AIX, HP/UX), VAX/VMS, Windows/NT, MacOS. + + 8 years experience with GCC internals, including major changes to + support 8 bit bytes on word-address Analog Devices SHARC DSP and + general support of PowerPC code generation. Retargetted gcc/binutils + cross-tools to ASIC used in optical switch. Retargeted gcc to 8 bit "internet toaster" + micro-computer. + +References available. + +Rates: $110/hr. + fixed price possible for well-defined deliverables. + +Updated: 2002-04-18 + +Reuven M. Lerner +Lerner Communications Consulting Ltd. +PO Box 518 +Modi'in 71700 +Israel + +Phone: 08-973-2225 (within Israel) + +972-8-973-2225 (outside of Israel) + +Fax: 08-973-0477 (within Israel) + +972-8-973-0477 (outside of Israel) + +WWW: http://www.lerner.co.il + +We specialize in writing custom Web and Internet applications. In +particular: + +- We create database-backed Web sites using Perl, Tcl, Python, Java, + Apache, mod_perl, OpenACS, Zope, MySQL, and PostgreSQL. + +- We offer support and service for system administrators who need help + with their GNU/Linux systems. + +- We offer training in a variety of programming languages (Perl, Tcl, + Python, and Java) and in GNU/Linux administration. + +Consulting rates: $110/hour, or $85/hour for non-profits. (Our rates +drop when we're hired on retainer or for projects that last longer +than one week.) + +Updated: 2002-04-18 + +Richard Levitte +Levitte Programming +Spannvägen 38, I +S-168 35 Bromma +Sweden +Tel.nr.: +46 (8) 26 52 47 (there is an answering machine) +Cellular: +46 (708) 26 53 44 (there is an answering machine) +e-mail: -Services offered: +What I do: + I work with various free software packages, mostly GNU ones, + for Unix and VMS (the latter both on VAX and Alpha). I've + been porting GNU Emacs to VMS between spring 1991 and + somewhere in 1998. I've ported a bunch of other GNU programs + as well. I maintain GNU vmslib. + For further info, see http://www.lp.se/~levitte/prof/resume.html +Programs supported: + To a varying degree (ranging from extension and porting to + installation and simple questions) at the time of updating + this entry: + - GNU vmslib, emacs, autoconf, zip, diffutils, m4, patch, + texinfo, C/C++; on both VMS and Unix. + - Other GNU programs to a small degree; on Unix. + For further info, look at http://www.lp.se/products/gnu.html + +Experience: + Fluent in TeX/LaTeX and many programming languages. + Modified key elements in Emacs (e.g., memory and process + management) to work transparently on VMS. I have very good + knowledge in the VMS operating system. I'm also knowledged in + the a few Unix flavors. + Well knowledged in cryptography as well as the development of + the PKIX standards (both based on X.500 and RFC 2459) and + involved protocols (SSL, OCSP, CMS, ...) + For further info, see http://www.lp.se/~levitte/prof/resume.html + +Your Rate: + $75-$100/hour (750-1000 SEK in sweden), plus expenses. My + rates are negotiable, depending on how interesting the project + is to me. + +Updated: 2002-04-18 + +Moss - Card Consulting Inc +16360 Broadway Avenue +Building A, Suite 103-104 +Cleveland OH 44137 USA + +www.mosscard.com ++1 216 587 4343 ++1 216 587 4342 Fax + +This dynamic Cleveland company offers the following services: +- installation and configuration for SGI machines +- Cross-platform development using wxWindows under GNU\Linux +- Programming (C/C++,tcsh) +- Compiler development using CORBA and gcc +- Real-time Cross-Platform Development +- Consulting +- Engineering +- Staff Augmentation + +We are Cleveland's first GNU\Linux developers, and one of our company's +members has just launched NASA's first cross development tool. + +Our rates vary from ($50 - $400) USD depending on the nature of the project. + +Updated 2004-2-23 + + NetGuide Scandinavia AB + Tankeg=E5ngen 4 + S-417 56 G=F6teborg, Sweden + +46 31 50 79 00 voice + +46 31 50 79 39 fax + http://www.netg.se + +NetGuide Scandinavia AB is a company that does consultant jobs and holds +courses in the fields of Unix software, TCP/IP networking and Internet +applications. The people behind NetGuide Scandinavia AB have many years of +general Unix experience, both as system administrators and as +programmers, and also extensive experience in maintaining the GNU +programs; in administration as well as finding and fixing bugs. + +Services offered: + - Installation and customizing GNU and other free software. We will make free software as easy to install and use as shrink wrapped programs. + - Service and support subscriptions. - Warranty protection. - Customization and porting. - Subscriptions to new versions which we will send monthly or with any other interval. - - Finding, Recommending and Investigation of free software in any - area of the customers choise. + - Finding, recommending and investigating free software in any + area of the customers choice. - Regular consulting. + - Support on Internet service software, especially the free + - Support on GNU/Linux. + - Freeware based courses in Unix usage, C, C++, or any GNU tools + + Rates: For courses, contact us for a quote, + For consulting, $60-120/hour, depending on contract length. + +Updated: 2000-12-13 + +Network Theory Ltd +15 Royal Park +Bristol +United Kingdom +Tel: +44 117 3179309 +Fax: +44 117 9048108 +http://www.network-theory.co.uk/gsl/ + +We provide software maintenance contracts for commercial users of the +GNU Scientific Library. + +We can also provide general numerical consulting for all types of +scientific and quantitative applications. -Rates: For software items, request our price list. - For consulting, 400-800 SEK/hour. +Rate: $1495/year (950 ukp) for base maintenance contract. -Updated: 14Apr94 +Updated: 2004-04-26  -Small Business Systems, Inc. -Box 17220, Route 104 -Esmond, RI 02917 -401.273.4669 - -Rate: Varies depending on complexity of task. - Hourly and fixed-rate contracts are available. -Programs Supported: All - -Updated: 14Apr94 - -Julian H. Stacey. -Vector Systems Ltd, Holz Strasse 27d, D 80469 Munich (Muenchen), GERMANY. -Tel. +49 89 268616 (089 268616 in Germany) 09:00-21:00 Timezone=GMT+01:00 - -Sources: All FSF/GNU, FreeBSD-current, X-Windows, XFree86, NetBSD, Mach, etc. - (Plus various other things, such as, but not limited to: - blas blt cflow CAD cnews crypt dvi2lj eispack elm encryption expect - ezd f2c flexfax gic gopher info-zip ingres inn jpeg kermit ksh - less lha linpack md5 mh mprof mtools mush nntp octave pbmplus - popper sather sc schemetoc slurp sml spreadsheet sup tcl tcl-dp - tcsh tcx term tex tiff tk top trn unarj ups urt wine xlock xv - xview xxgdb zmodem zip zircon zoo zsh.) -Media: QIC 1/4" Cartridge 525M, 150M, & 60M, TEAC CAS-60 60M Cassette, - CD-ROM, Floppies 1.4M & 1.2 & 720K & 360K. DAT arrangeable. - Postal Service C.O.D.(=`Nachnahme') or pre payment available. -Commercial Consultancy: - Custom Designs, Provision & support of FreeBSD or Unix, C, FSF tools, - X Windows, own tools, systems engineering, hardware interfacing, - multi lingual European, Cyrillic & Chinese tools & systems, - Unix, MSDOS, real time etc, communications & scientific & industrial. -DEUTSCH + FRANCAIS: - Man kann mir in Deutsch schreiben, (oder mich anrufen). - Je comprend Francais, mais je n'ecris pas des responses en Francais. - (Contact me in English, German, or French). -FREE for Symmetric Computer Systems Model 375 owners: - Free Binaries & sources on SCS/375's TEAC 50/60M Cassette, for: - GCC-1.40, UUCP-1.4, Ghostscript 2.3, Tar-1.08, Gzip-1.2.2 etc. - (Native SCS compiler can't compile GCC on this NSC32016 based BSD4.2) -On Request: Resume, Company Profile, Index of public & proprietary tools, -Rate: ~120 DM/hour. ~100DM/Cartridge. (1.5DM = $1 USA = 0.6 UK Pounds @4/'94) -Short enquiries free. (Kurze Anfragen Ohne Gebuhr). - -Updated: 14Jun94 - -Richard M. Stallman -UUCP: {mit-eddie,ucbvax,uunet,harvard,uw-beaver}!ai.mit.edu!rms -545 Tech Sq, Rm 430 +Thien-Thi Nguyen +Solana Free Software +ttn@glug.org +San Diego, CA, USA + +Service: General Consulting and Hacking on all things GNU + Resume: http://www.glug.org/people/ttn/resume.html + Rates: no job too small, everything negotiable + +Updated: 2002-04-20 + +David Nicol +Post office box 45163 +Kansas City, Missouri 64171 + +http://www.tipjar.com/dnconsult + +Unix, GNU/Linux, Perl installation, C, C++, Lisp, Perl programming. + +CGI programming. + +Installation, porting. + +Specification development, design, implementation, documentation. + +Rate: $60/hour, or fixed contract. On-site support available in +greater Kansas City area. + +Updated: 2002-04-23 + +Jonas Oberg (TeX: Jonas \"Oberg +Rimfrostgatan 95 Rimfrostgatan 95 +S-418 40 Goteborg S-418 40 G\"oteborg +Sweden Sweden) + +Phone: +46-733-423962 +E-mail: + +I offer support for most GNU software including the GNU +Hurd and also do system administration on GNU systems. +I can do free software development and have a good +understanding of automake, autoconf, flex, bison, guile, +texinfo and much more. Rates around USD$100. + +Updated: 2002-04-22 + +Francesco Potortì +Via S.Stefano, 8 +56123 Pisa, Italy +Tel. (050)560671 + +Emacs: installation and maintenance, training and tutorials, + customisation, extensions, troubleshooting. Author of some of + the packages in the emacs distribution, has made the porting + of emacs to the Motorola Delta architecture. + +Other: installation and maintenance of GNU software. Experience with + hylafax, RCS, gperf, etags, smail, indent, diff, gawk, gcc, + screen. Is the current maintainer of etags. + +Rates: 100 E/hour. + Prefer e-mail communication to telephone. + +Qualifications: Electronic Engineering degree, Pisa. Full time + researcher in CNUCE-CNR. + Familiar with elisp programming, porting of C programs, + low-level TCP/IP programming for embedded systems. + +Updated: 2002-06-28 + +Rodolphe Quiedeville +1 Quai Martin +56400 Auray +France +Tel (33 1) 613796341 +http://rodolphe.quiedeville.org/ + +Experience: Original author and current maintainer of the Lolix project + can be found at http://www.lolix.com + + I have more than 5 years experience on free software + system administration. + +Programming: PHP, Perl, Unix shell + +Services: Anything related to free software network and system administration. + +Updated: 2002-07-01 + +Red Hat, Inc. + +1325 Chesapeake Terrace +Sunnyvale, CA 94089 USA +Toll free: 866-2REDHAT ext. 3005 ++1 408 542 9600 voice ++1 408 542 9699 fax + +GNUPro Tools +Red Hat provides supported and maintained versions of gcc, g++, gdb +with GUI, GNU linker and GNU macro assembler. In addition, Red Hat +provides these GNU software development tools for well over many +popular host-target configurations. Support includes bug fixes and +semi-annual releases of the toolset. Each release is regression +tested and includes substantial improvements and additions to the +current release. Support is available through Incident support +packages, or Unlimited support for specific user groups. GNUPro is +available with standard, custom, and vintage toolchains for both +native and embedded application development. New target processors +are being added regularly. Rates for support for standard products +start at $12,500. + +Embedded Linux +Red Hat offers Red Hat Embedded Linux to companies looking for an open +source and royalty-free runtime solution. Red Hat Embedded Linux +currently supports certain ARM, StrongARM, and MIPS families of +processors. Embedded Linux supports multiple graphics APIs, is +compliant with POSIX APIs and thread support, can be configured as low +as 512k memory footprint including TCP/IP and NFS built into the +kernel, and supports journaling and transparent compression in +filesystems. Support for new processors is available via Red Hat +Professional Services. + +Updated: 2001-05-16 + +Relogic AB +Pipersgatan 26 +Box 868 +SE-112 28 Stockholm +SWEDEN + +web http://www.relogic.se +e-mail info@relogic.se +phone +46 708 800 000 +fax +46 708 800 580 + +Relogic provides experienced unix developers that know and love GNU +products. We can take on anything from single contractor support to +full scale projects. We know all programming languages and all Unix +dialects. + +Updated: 2002-04-19 + +RON's Datacom Co., Ltd. +79, DongWu Ave., +Wuhan, Hubei Province +430040 China P.R. +Tel +1370-113-0868(mobile) +86-27-83222108(office), Fax +86-27-83222108 +http://www.rons.net.cn +info@mail.rons.net.cn + +Ron's Datacom publishes the truly free ( the "free" in freedom) +monthly periodical --- FREE SOFTWARE Magazine(FSM), offering a series +of free software training courses entitled "Hackerdom", including: + +- Working with GNU Emacs; +- Programming in Emacs Lisp; +- Using and Porting GNU CC; +- Flex and Bison; +- Debugging with GDB; +- Device Driver Development with GNU AS and C; +- Shell Programming with BASH; +- GNU Building Tools: Make, Automake, Autoconf, M4; +- Typesetting and Layout Designing in TeX and PostScript; +- Parsing XML Documents. +- Source Code Version Management with CVS; +- GNU Awk and Sed; + +RON's Datacom Typesetting Workshop offers professional typesetting service +for both academic and commericial publishers, and solutions for building +the modern electronic publishing system with industrial strength. + +Hong Feng gives speeches to the public about the philosophy of free +software, and importance of freedom, suggestions for curriculum +reforms of computing science department in the universities and colleges. + +Please visit our website (www.rons.net.cn) for more details. + +Updated: 2002-05-12 + +Phillip Rulon +122 Blossom Rd. +Westport, MA 02790 +USA +508.672.3007 + + +15 years experience with GNU systems and tools. Available for any free +software project. Most useful for network design and construction or +dynamic web development. Very good Debian, Perl, and Apache. + +Boston, travel OK. +$100/hr, flat rate possible. + +Updated: 2002-06-28 + +Sankhya Technologies Private Limited, +III FLoor, #30-15-58 "Silver Willow", +Dabagardens, Visakhapatnam - 530 020 +INDIA +Tel: +91 891 5542665 +Fax: +91 891 5542666 +http://www.sankhya.com/info/services/gnu/gnu.html + +SANKHYA Development is a package of software engineering services +structured around select technologies in the areas of Compilers, +Assemblers and Linkers, Debuggers. Our rich experience with such +technologies enables us to deliver competitive software development +services to you, customized to your specific requirements. + +Sankhya offers competitive and cost-effective GNU maintenance and +support services for gcc, binutils, libtools and gdb. GNU Development +and Maintenance focuses on providing C, C++ compiler development, +assembler and linker development, debugger development, and compiler +optimizations. For semiconductor and chip design companies we offer +annual maintenance packages, and for software developers we offer +annual support packages. Following services are provided for gcc, +binutils, libtools and gdb, + + * Retargeting gcc, binutils, libtools and gdb for new processor + architectures, including RISC, CISC, VLIW or DSP architectures. + * Implementing processor specific optimizations. + * Annual Developer Support for developers. + * Maintenance packages for CPU/SoC vendors. We offer variety of + development/maintenance packages. + +UPDATED: 2004-02-13 + +Sparkle Computer Co Ltd + +email: +web: www.sparkle-cc.co.uk + +Specialists in software development and networks in London and +South-East England, primarily using open source tools. + + - Network security implementation using iptables, snort + - Network security testing using nmap and nessus + - Web services infrastruture with apache, tomcat, perl, jboss + - Software development in C, C++, java, perl + - Databases including MySQL and PostgreSQL. + - Mail services with sendmaill, MailScanner, spamassassin and virus + scanners + - Windows file and print services with Samba + +Development, configuration and consultancy services at 600 +(pounds)/day. Fixed price negotiable. Managed administration and +monitoring negotiable. + +Updated: 2002-07-01 + +Andre Spiegel +Dipl.-Inform. +Berlin, Germany + +Maintainer of the GNU Emacs version control package (VC). + +I can provide consulting and practical help for the installation and +administration of GNU/Linux systems, in particular Debian. Also +knowledgeable on many other Unix derivates, and network technology. +Installation, porting and customization of GNU software is possible; I +have programming experience in C, C++, Java, and Emacs Lisp, among +others. Expertise in version control using RCS or CVS. I also give +seminars on the above subjects. + +Rates: 75 EUR/hr (US$ 70) + +Updated: 2002-04-22 + +Name: Julian Stacey +Location: Muenchen, Deutschland (Munich, Germany). +Qualifications: University Degree, BSc Hons Computers & Cybernetics, 1980. +Resume: http://bim.bsn.com/~jhs/stacey/ (includes phone number). +Rate: 80 - 100 Euros / Hour. +Specialisation: Unix (Pref. BSD or Linux), C, X-Windows, FSF tools, firewalls, + systems engineering, hardware interfacing, real time/embedded, + custom design & porting. No { Emacs, Cobol, Microsoft }. +Net Consulting: Link speed: DSL @ 768 K bit/s. +Free Sources: BSD, X-Windows, XFree86, FSF; Personal sources on web. +Free GCC-1.40: For Symmetric Computer Systems Model 375 (native cc is broken). +Languages: I am English. Ich verstehe Deutsch. Je comprend Francais, + (lentment!). Use Hoch Deutsch, not Bayerisch, Spell slowly + & clearly, Use single digits, no inverted digit pairs etc. +Contact: State aprox. amount of days/months you want to purchase + professional consultancy .. OR .. Note I am NOT a free help + desk ! Please post your questions to a newsgroup, for those + with more time, knowledge, & inclination than I. + +Updated: 2002-04-19 + +Richard M. Stallman +545 Tech Sq, Rm 425 Cambridge, MA 02139 Emacs: anything whatever @@ -737,199 +1186,222 @@ Rates: $6/min or $250/hr. -Updated: 14Apr94 +Updated: 2002-04-19  -JoS-Ware Comp Tech Johan Svensson -Box 739 -220 07 LUND -SWEDEN -Tel +46-46-104505 (Dept. of Economics, University of LUND) -Fax +46-46-188445 (JoS-Ware Comp Tech) +Static Free Software +4119 Alpine Road +Portola Valley, Ca 94028 +(650) 851-2927 +http://www.staticfreesoft.com + +Static Free Software developed and supports the "Electric VLSI Design +System". Steven Rubin, the founder of the company and author of +Electric, is available for enhancements, support, and training. + +Please see our web page at www.staticfreesoft.com for more information +about our products, services, and prices. + +Updated: 2002-04-19 + +Tommy Stiansen +Skeielia 112 +5238 Raadal +Norway + ++ 47 92 40 42 00 ++ 47 55 22 12 17 +ts@pcias.no + +Special fields: +Unix, GNU/Linux, Perl installation, C, C++, Lisp, Perl programming. +CGI programming. +Installation, porting. +Specification development, design, implementation, documentation. +Firewalls, security analysis. Porting Windows platforms to GNU/Linux. +Teaching, preaching GNU/Linux / unix and Telecom. +15 years experience with GNU systems and tools. +Most useful for network design and construction or +dynamic web development. Expert in Apache, php, Mysql, Telecom related, +C, Lisp, Perl. + +Updated: 2002-04-18 + +Swing Digital Ltd. +15-17 Middle Street +Brighton +BN1 1AL +United Kingdom +Tel +44 (0) 1273 20 11 66 +Fax +44 (0) 1273 20 11 68 +http://www.swingdigital.com + +Swing Digital actively supports the development of the GNU.FREE +Internet Voting system. Through this support we have gained the +unique expertise to support, install and run GUN.FREE-based Internet +votes. We are also available in a consultancy basis to offer advice +for organisations wishing to run GNU.FREE themselves. -What: We offer consulting services regarding installation, - customization, troubleshooting, porting and integration - of all free software, including GNU software. - -Spec.: Network integration, integration of public domain software - into commercial systems, WorldWideWeb, C, X-Windows, Linux, - networked information systems - -How: Remote login over internet, email, modem, phone, personal - visits (in southern Sweden mainly) - -Rates: 550SEK (+ tax) per hour within Sweden - 370SEK (+ tax) per hour within Sweden for educational org. - US $90 per hour outside Sweden - US $70 per hour outside Sweden for educational org. - Note: fees may vary and special arrangements may be considered +Our consultancy fees start at 900 Euro (550 UK pounds) per day. We +are also able to securely host Internet Votes, prices on application. -Entered: 7Apr94 +Updated: 2002-04-19  -Kayvan Sylvan -Sylvan Associates +Kayvan A. Sylvan +Sylvan Associates, Inc. 879 Lewiston Drive -San Jose, CA 95136 -Phone: 408-978-1407 +San Jose, CA 95136-1517 +Phone: (408) 978-1407 +Fax: (408) 978-0472 + +I will help you port, install and customize GNU Emacs, GCC, G++, GNUmake, +bison, and other GNU tools on almost any architecture and operating +system. Questions answered. GNU C/C++, Java and lisp hacking available. -I will help you port, install and customize GNU Emacs, GCC, G++, -bison, and other GNU tools on almost any architechture and operating -system. Questions answered. GNU C and lisp hacking available. I will -also do ongoing support and periodic upgrades if you get on my GNU +I will also do ongoing support and periodic upgrades if you get on my GNU software subscription list. -Rates: $60-$100/hour, depending on type of work. Substantial discounts -for long-term contracts and also for educational or non-profit -institutions. - -Experience: Many different Unix systems (2.9BSD to 4.4BSD, SVR3 and -SVR4, Linux, Xenix). Systems programming and system administration on all -brands of Unix. Kernel hacking experience. Lots of porting experience. -I can port anything to anything (within reason). +Rates: $100-$125/hour, depending on type and quantity of work. +Substantial discounts for long-term contracts and also for educational or +non-profit institutions. + +Experience: Many different Unix systems (2.9BSD to 4.4BSD, Xenix, SVR3 and +SVR4, Solaris, Linux, FreeBSD). Systems programming and system +administration on all brands of Unix. -Updated: 14Apr94 +Kernel hacking experience. Lots of porting experience. + +Updated: 2002-04-18  -Leonard H. Tower Jr. -36 Porter Street -Somerville, MA 02143, USA -+1 (617) 623-7739 +Alfredo Tomasini +, -Will work on most GNU software. -Installation, handholding, trouble shooting, extensions, teaching. +GNU/Linux Intel desktop/laptop installation, setup, and networking. +Installation of GNU tools on SunOS and GNU/Linux. +Sed and Gawk script development. -Rates: 100.00/hour + travel expenses. Negotiable for non-profits. +Languages: English and Italian. -Experience: Have hacked on over a dozen architectures in many languages. Have -system mothered several varieties of Unixes. Assisted rms with the front end -of gcc and it's back-end support. Resume available on request. +Fee: $50/hour. -Entered: 14Apr94 +Updated: 2002-04-19  -UrbanSoft AO -68 Malooktinskii Prospect -St. Petersburg, Russia 195272 - -Custom GhostScript and TeX programming by e-mail. -Database documents, directories, standard forms. - -UrbanSoft uses a portion of its revenues to contribute -diskette distributions of GNU software to Russian -universities (most of which lack FTP access). - -Rates: 30,000 rubles (currently USD 16.80) per hour. - Fixed rate contracts also possible. - Payable by bank transfer. - -Updated: 20Apr94 - -noris network -Matthias Urlichs -Schleiermacherstrasse 12 -90491 Nuernberg -Germany -Phone: +49 911 9959621 -Fax: +49 911 5980150 - -http://info.noris.de/ (German) +Tksoft Inc. +Papinkatu 19 +06100, Porvoo +Finland ++358 40 570 9900 -Expertise: - OS internals, esp. Linux and BSD, esp. device drivers - Network protocol / program design and coding - Utilities coding and maintainance - Program debugging, testing - User interface design and testing - Several programming and tool languages +http://www.tksoft.com/ -Services: - Installation, debugging, enhancement, distribution, - for all kinds of free software. - System administration for most Unix-like systems. - Email, Fax, phone, and in-person consulting (and/or "question answering"). - Remote support and system monitoring (over the Internet), - Update service (new tools tested and installed automagically) - Internet access +Software development services for GNU programs. +We can modify and fix GNU software. +We will also develop new software under the GNU license. -Rates: - DM 110 (~$70) per hour - Support contracts start at DM 170/month + DM 30/supported system. - Willing to travel for sufficiently large jobs. - Rates don't include taxes. - -Entered: 16Aug94 - -Joe Wells -Postal Address: - care of: Boston University Computer Science Department - 111 Cummington Street, Room 138 - Boston, Massachusetts 02215 -Work Telephone: (617) 353-3381 (sorry, but no answering machine or voice mail) -Home Telephone: (617) 739-7456 (until August 1995) -Finger "jbw@cs.bu.edu" for up-to-date contact information. +10 years of experience in linux and other GNU software. -Experience: - I have B.A. and M.A. degrees in Computer Science and have completed - all but the dissertation for a Ph.D. in C.S. My research for my - Ph.D. is in the areas of logic, type systems, and programming - language theory. My primary programming languages are Emacs Lisp, - Perl, and Bourne shell, but of course I can program in any language. - I have written numerous Emacs Lisp packages. I started the USENET - "List of Frequently Asked Questions about GNU Emacs with Answers" and - maintained it for more than two years. Most of my work has been - related to the telephone system (modems, voice mail, etc.), but I am - not limited to that. Send e-mail for my complete resume or curriculum - vita. +We speak Finnish, Japanese and English. -Programs supported: - GNU Emacs and Taylor UUCP: - Installation, training, customization, bug fixing, troubleshooting, - extension, development, porting, or answering any kind of question. - Any other GNU program: - The same things, but I don't necessarily have huge amounts of - experience with the particular program. - -Working conditions: - I am usually available for part-time work (less than 20 hours per week - including any travel time). I can sometimes make time for full-time - work for a month or two; please inquire. I can either work in or near - Boston or via the Internet or via telephone; travel outside the Boston - metropolitan area can be negotiated. My schedule is very flexible. - Any programs I write will normally have the copying conditions of the - GNU General Public License; this is negotiable. - -Rates: $65/hour as an independent contractor. - travel and telephone expenses. - higher rates if extensive travel is required. - -Updated: 27Sep94. - -Herb Wood -phone: 1-415-789-7173 -email: - -I'm a better "planner" than I am a hacker. A really good hacker will be able -to keep many pieces of information in their short-term memory and to memorize -new pieces of information at a fast rate. This is not my strong point. -Rather, I excel in domains that require knowledge of the slightly more -theoretical parts of computer science --for example, logic, formal methods of -program development, and functional programming. I can write, and I have -"tutoring" (teaching one-on-one) experience, an, unlike some programmers, -I enjoy doing these things. - -I have spend a lot of time looking at the Emacs Lisp sources and customizing -Emacs and VM. I think I can customize Emacs and its packages quickly and -effectively. - -Entered: 30Jul95 - -Yggdrasil Computing, Inc./ Freesoft, Inc. -4880 Stevens Creek Blvd. Ste. 205 -San Jose, CA 95129 -(408) 261-6630 -(800) 261 6630 +Updated: 2004-05-13 + +Leonard H. Tower Jr. +36 Porter Street +Somerville, MA 02143-2313 +USA ++1-617-623-7739 + +Will work on most GNU, GPLed, and Open Source software. +Installation, handholding, trouble shooting, extensions, teaching, etc. + +Rates: $ 250.00/hour + travel + expenses. Fixed fee quotes available. + Negotiable for non-profits. -Updated: 14Apr94 +Experience: Have hacked on over a dozen architectures in many languages. Have +system mothered too many varieties of Unixes. Assisted rms with the front end +of GCC and its back-end support. Installed and worked with many GNU +programs including GNU Emacs. Resume available on request. + +Updated: 2002-04-18 + +Xetpoint Oy +P.O. Box 43, FIN-33961 Pirkkala, Finland + +Email: +Web: http://www.xetpoint.fi/ + +Services: +- GNU/Linux system installation, configuration and maintenance +- GNU/Linux system administration +- GNU/Linux consultation and support +- GNU/Linux and free software customization +- Network administration +- Free software development and integration +- Training +- Security analysis + +Rates: 80 EUR/hour or fixed contract. + +Updated: 2004-02-13 + +Wasabi Systems + +500 E. Main St., Suite 1520 +Norfolk, VA 23510 ++1 757 248-9601 voice ++1 509 461-7283 fax +http://www.wasabisystems.com/ + +Wasabi Systems provides service and support for the popular GNU +development tools, as service packages and as stand-alone software +distributions. We provide cross-compilers and cross-debuggers to be +used for developing all types of embedded systems. We specialize in +optimizing the GNU tools for particular targets, and in providing +support for standardized tools to be used on multiple types of hosts +for multiple types of targets. We provide first- and/or second- tier +support for you and/or your end-users. + +Support is available in a variety of packages, with a base rate of +$200/hour. + +Updated: 2004-03-02 + +Jody Winston +xprt Computer Consulting, Inc. +731 Voyager +Houston, TX, 77062 +(281) 480-UNIX, + +We have supported, installed, and used the entire GNU software suite +for over 10 years on many different Unix platforms. We have written +character device drivers and proc file systems for custom hardware +running on GNU/Linux. We have developed extensions for tcl and Python. +In addition, we have developed a custom X11 server and X input +extensions. Our consulting rate is $150.00 US dollars per hour, +negotiable, plus a per diem for out of town work. + +Updated: 2002-04-19 + +The Written Word +Web: http://thewrittenword.com +Email: info@thewrittenword.com +Tel: (800) 372-7476 + +The Written Word provides CDs of pre-compiled Open Source applications +on popular UNIX variants. Clients can purchase a one-time CD set +($149/set), or a subscription, which provides four quarterly releases. +Two types of subscription are available: "media only" ($550/year), or +"media and updates" ($1459/year). The "media and updates" +subscription entitles the subscriber, via a web site, to patches, +security fixes, new releases to existing packages, new packages, +online documentation, and changelog information, between releases, and +a central bug tracking system for all packages. + +Updated: 2000-11-27  For a current copy of this directory, or to have yourself listed, ask: - gnu@prep.ai.mit.edu + service@gnu.org + +A current version should be available on our web site at: + http://www.gnu.org/prep/service.html ** Please keep the entries in this file alphabetical ** diff -u -r -N xemacs-21.4.15/etc/gtkrc xemacs-21.4.16/etc/gtkrc --- xemacs-21.4.15/etc/gtkrc 1969-12-31 19:00:00.000000000 -0500 +++ xemacs-21.4.16/etc/gtkrc 2004-05-10 22:40:39.000000000 -0400 @@ -0,0 +1,9 @@ +# Force the window background to be the same as the default face background: +# white. + +style "default_background" +{ + bg[NORMAL] = { 1.0, 1.0, 1.0 } +} + +class "GtkXEmacs" style "default_background" diff -u -r -N xemacs-21.4.15/etc/sample.init.el xemacs-21.4.16/etc/sample.init.el --- xemacs-21.4.15/etc/sample.init.el 2002-05-04 08:07:16.000000000 -0400 +++ xemacs-21.4.16/etc/sample.init.el 2004-03-25 16:08:04.000000000 -0500 @@ -273,7 +273,7 @@ ;; and in fact all we've done is copied the definition. Note again ;; how we check to avoid clobbering an existing definition. (It's good ;; style to do this, in case some improvement was made to the -;; already-existing function -- otherwise we might subsitute an older +;; already-existing function -- otherwise we might substitute an older ;; definition and possibly break some code elsewhere.) ;; ;; NOTE ALSO: It is in general *NOT* a good idea to do what we're @@ -735,7 +735,10 @@ ;; File menu. (when (console-on-window-system-p) - (global-set-key "\C-x\C-c" nil)) + (global-set-key "\C-x\C-c" + #'(lambda () (interactive) + (beep) + (message "Use the \"File/Exit XEmacs\" menu item to exit XEmacs")))) ;; Make C-k always delete the whole line, which is what most people want, ;; anyway. @@ -1390,7 +1393,7 @@ ;;; ******************** -;;; Filladapt is a syntax-highlighting package. When it is enabled it +;;; Filladapt is an adaptive text-filling package. When it is enabled it ;;; makes filling (e.g. using M-q) much much smarter about paragraphs ;;; that are indented and/or are set off with semicolons, dashes, etc. diff -u -r -N xemacs-21.4.15/lib-src/ChangeLog xemacs-21.4.16/lib-src/ChangeLog --- xemacs-21.4.15/lib-src/ChangeLog 2004-02-02 22:01:42.000000000 -0500 +++ xemacs-21.4.16/lib-src/ChangeLog 2004-12-05 20:07:27.000000000 -0500 @@ -1,3 +1,11 @@ +2004-12-05 Vin Shelton + + * XEmacs 21.4.16 is released + +2004-06-23 Sean Legassick + + * etags.c: Allow whitespace before python function definitions. + 2004-02-02 Vin Shelton * XEmacs 21.4.15 is released diff -u -r -N xemacs-21.4.15/lib-src/etags.c xemacs-21.4.16/lib-src/etags.c --- xemacs-21.4.15/lib-src/etags.c 2002-08-20 07:34:17.000000000 -0400 +++ xemacs-21.4.16/lib-src/etags.c 2004-06-24 00:02:29.000000000 -0400 @@ -4017,8 +4017,9 @@ /* * Python support - * Look for /^def[ \t\n]+[^ \t\n(:]+/ or /^class[ \t\n]+[^ \t\n(:]+/ + * Look for /^[ \t\n]*def[ \t\n]+[^ \t\n(:]+/ or /^class[ \t\n]+[^ \t\n(:]+/ * Eric S. Raymond (1997) + * Sean Legassick (2004) */ static void Python_functions (inf) @@ -4028,6 +4029,7 @@ LOOP_ON_INPUT_LINES (inf, lb, cp) { + cp = skip_spaces (cp); if (*cp++ == 'd' && *cp++ == 'e' && *cp++ == 'f' && iswhite (*cp++)) diff -u -r -N xemacs-21.4.15/lisp/ChangeLog xemacs-21.4.16/lisp/ChangeLog --- xemacs-21.4.15/lisp/ChangeLog 2004-02-02 22:01:42.000000000 -0500 +++ xemacs-21.4.16/lisp/ChangeLog 2004-12-05 20:07:27.000000000 -0500 @@ -1,3 +1,231 @@ +2004-12-05 Vin Shelton + + * XEmacs 21.4.16 is released + +2004-12-04 Vin Shelton + + * auto-autoloads.el: Regenerated. + + * custom-load.el: Regenerated. + +2004-09-15 Stephen J. Turnbull + + Fix bug: apropos errors if a defalias refers to an undefined + function. <87pt4pmdcs.fsf@tleepslib.sk.tsukuba.ac.jp> + + * apropos.el (apropos): + (apropos-command): + * help.el (frob-help-extents): + * help-macro.el (make-help-screen): + * hyper-apropos.el (hyper-apropos-grok-functions): + (hyper-apropos-get-doc): + Catch void-function error thrown by `documentation'. + +2004-09-02 Steve Youngs + + * packages.el (package-require): Fix incorrect arg to format. + This fixes a `format specifier' error. + +2004-08-13 Jerry James + + * bytecomp.el (forward-word): Tell the byte compiler the correct + number of arguments to forward-word. + +2004-08-12 Sven Grundmann + + * etags.el: Fixed loading of include files for tag completion. Now + you can make a tag file for a library, include it into your + project and it will be reloaded only if it changed. Infinte + include loops are detected and the correct tag files are loaded. + * etags.el (buffer-tag-table-list): Load and verify tag files in + the external function buffer-tag-table-list-load. + * etags.el (buffer-tag-table-list-load): New. Load and verify the + tag files. Also load the included tag files. The priority of the + included files is right below their parent file. If multiple + matches occur then the symbols from the parent file are found + first. + * etags.el (tag-table-include-files): Corrected comment + string. Switched to pattern constant tags-include-pattern to have + it at a central location. + * etags.el (tags-include-pattern): Added doc string. + * etags.el (add-to-tag-completion-table): Removed obsolete + comments as the include files are allready returned by + buffer-tag-table-list and loaded. + * etags.el (find-tag-internal): The include files are allready + included in tag-tables as buffer-tag-table-list returns them now. + +2004-07-02 Malcolm Purvis + + * widgets-gtk.el (gtk-widget-instantiate-notebook-internal): + Loading items into the notebook is now done by C code. + * widgets-gtk.el (gtk-widget-instantiate-internal): + Style no longer changed. + +2004-06-28 Nix + + * cmdloop.el (truncate-command-history-for-gc): Delay + execution of all things that look up variable bindings, + via `enqueue-eval-event'. + +2004-06-24 Vin Shelton + + * package-get.el (package-get-require-signed-base-updates): + now defaults to nil. + +2004-06-09 Stephen J. Turnbull + + * subr.el (split-string): Clean up docstring. + +2002-01-24 John Paul Wallington + + * faces.el (zmacs-region): fix typo in docstring. + +2004-06-07 Jerry James + + * derived.el: Synch with Emacs 21.3. + * subr.el (with-local-quit): New, from Emacs 21.3. + * subr.el (delayed-mode-hooks): New variable, from Emacs 21.3. + * subr.el (run-mode-hooks): New function, from Emacs 21.3. + * subr.el (delay-mode-hooks): New macro, from Emacs 21.3. + +2004-06-16 Jerry James + + * cl.el (cl-set-substring): Increment start by the length of the + string, not the string itself. + +2004-05-19 Malcolm Purvis + + * etags.el (tag-table-include-files): Expand included TAGS file + paths to avoid problems with relative paths. Thanks to Peter + Chubb . + * etags.el (tags-include-pattern): New. + * etags.el (add-to-tag-completion-table): Parse and ignore + trailing include lines. + +2004-06-21 Adrian Aichner + + * package-ui.el (pui-help-echo): Fix false cvs conflict by + avoiding line solely composed of equal signs. + +2004-06-10 Adrian Aichner + + * cus-edit.el (alloc): Typo fix. + * cus-edit.el (custom-browse-visibility): Ditto. + * cus-edit.el (custom-variable-value-create): Ditto. + * cus-edit.el (custom-variable-pre-reset-standard): Ditto. + * cus-edit.el (custom-save-variables): Bind print-length and + print-level to nil to avoid value abbreviation. + * cus-edit.el (custom-save-face-internal): Ditto. + * cus-edit.el (custom-save-faces): Save in sorted order. + * cus-edit.el (custom-save-resets): Bind print-length and + print-level to nil to avoid value abbreviation. + * cus-edit.el (custom-save-loaded-themes): Ditto. + +2004-06-09 Stephen J. Turnbull + + * subr.el (split-string-default-separators): New. + (split-string): Synch to 21.5/GNU Emacs version. *New semantics*, + see comment in source. + +2004-01-29 Stephen J. Turnbull + + * mule/japanese.el (paragraph-start, paragraph-separate): + Remove anchor to BOL. + +2004-04-30 Stephen J. Turnbull + + * cl.el (gensym, gentemp): Improve docstrings. + +2004-05-10 Vin Shelton + + * etags.el: Sync with 21.5 version. + +2004-04-21 Sven Grundmann + + * etags.el: + * etags.el (tags-exuberant-ctags-optimization-p): Enable optimization + only for use with exuberant ctags. This will also enable building of + completion tables with exuberant ctags. This will not work with + xemacs ctags. + * etags.el (get-tag-table-buffer): New function for creating of + completion table is used if tags-exuberant-ctags-optimization-p ist t + * etags.el (tags-explicit-name-pattern): Hold the name pattern for + finding the tag names. New. + * etags.el (add-to-tag-completion-table-exuberant-ctags): Defun for + building tag completion table with exuberant ctags. New. + * etags.el (find-tag-internal): Improve exact tag matching for tags + with name fields. Before the patch return types of functions or + function parameters (with exuberant ctags) were found as matches. + +2004-04-21 Sven Grundmann + + * list-mode.el (display-completion-list): Fixed completion list was + taking the width of the frame and not of the window for displaying + the selection methods. + +2004-04-18 Stephen J. Turnbull + + * menubar-items.el (default-menubar): Options are saved to custom.el. + + +2004-02-23 Stephen J. Turnbull + + * isearch-mode.el (isearch-abort): Preserve successful search target. + +2004-03-27 Adrian Aichner + + * gnuserv.el: Sync with 21.5 version, inspired by bugreport and + (make-variable-buffer-local 'gnuserv-minor-mode) patch by Robert + Bihlmeyer. + * gnuserv.el (gnuserv-mode-line-string): New. + * gnuserv.el (gnuserv-minor-mode): Make it buffer-local, not + gnuserv-mode. + * gnuserv.el (make-x-device-with-gtk-fallback): New. + * gnuserv.el (gnuserv-edit-files): Use + make-x-device-with-gtk-fallback. + +2004-03-23 Malcolm Purvis + + * gtk-widgets.el: New import: gtk-accel-group-new. + * dialog-gtk.el: + * dialog-gtk.el (gtk-popup-convert-underscores): New. + * dialog-gtk.el (popup-builtin-question-dialog): + Added support for dialog button mnemonics. + +2004-03-22 Chris Green + + * process.el (shell-command): Output buffer was ignored when a + background process was run via shell-command. + +2004-03-19 Hrvoje Niksic + + * cus-edit.el (custom-save-variables): Retrieve a list of + variables to save first, sort it, and make sure the variables are + saved in sorted order. + +2004-02-23 Steve Youngs + + * package-get.el (package-get-update-base-from-buffer): Force + binary coding system for verifying GnuPG signature in the + package-index file. + +2003-07-06 Adrian Aichner + + * package-get.el (package-get-package-index-file-location): Handle + missing "EMACSPACKAGEPATH" environment variable. + +2003-07-05 Adrian Aichner + + * package-admin.el (package-admin-find-top-directory): Simplify + directory comparisions and fix substring errors on short path + components. + * package-get.el (package-get-package-index-file-location): + Default to first component of "EMACSPACKAGEPATH", if set. + +2004-02-16 Steve Youngs + + * package-get.el (process-error): New error datum. + 2004-02-02 Vin Shelton * XEmacs 21.4.15 is released diff -u -r -N xemacs-21.4.15/lisp/apropos.el xemacs-21.4.16/lisp/apropos.el --- xemacs-21.4.15/lisp/apropos.el 2001-04-12 14:21:10.000000000 -0400 +++ xemacs-21.4.16/lisp/apropos.el 2004-09-22 23:02:30.000000000 -0400 @@ -175,7 +175,10 @@ ;; XEmacs change: if obsolete, ;; only mention that. (or (function-obsoleteness-doc symbol) - (documentation symbol t))) + (condition-case nil + (documentation symbol t) + (void-function "(aliased to undefined function)") + (error "(unexpected error from `documention')")))) (substring doc 0 (string-match "\n" doc)) "(not documented)")) (and do-all @@ -225,7 +228,10 @@ ;; XEmacs change: if obsolete, ;; only mention that. (or (function-obsoleteness-doc symbol) - (documentation symbol t))) + (condition-case nil + (documentation symbol t) + (void-function "(aliased to undefined function)") + (error "(unexpected error from `documention')")))) (substring doc 0 (string-match "\n" doc)) "(not documented)")) (if (boundp symbol) diff -u -r -N xemacs-21.4.15/lisp/auto-autoloads.el xemacs-21.4.16/lisp/auto-autoloads.el --- xemacs-21.4.15/lisp/auto-autoloads.el 2004-02-02 22:13:31.000000000 -0500 +++ xemacs-21.4.16/lisp/auto-autoloads.el 2004-12-05 20:06:05.000000000 -0500 @@ -864,8 +864,7 @@ the tag. This version of this function supports multiple active tags tables, -and completion. See also the commands `\\[push-tag-mark]' and -`\\[pop-tag-mark]'. +and completion. Variables of note: @@ -1248,6 +1247,8 @@ ;;;### (autoloads (gnuserv-start gnuserv-running-p) "gnuserv" "lisp/gnuserv.el") +(defcustom gnuserv-mode-line-string " Server" "*String to display in the modeline when Gnuserv is active.\nSet this to nil if you don't want a modeline indicator." :type '(choice string (const :tag "none" nil)) :group 'gnuserv) + (defcustom gnuserv-frame nil "*The frame to be used to display all edited files.\nIf nil, then a new frame is created for each file edited.\nIf t, then the currently selected frame will be used.\nIf a function, then this will be called with a symbol `x' or `tty' as the\nonly argument, and its return value will be interpreted as above." :tag "Gnuserv Frame" :type '(radio (const :tag "Create new frame each time" nil) (const :tag "Use selected frame" t) (function-item :tag "Use main Emacs frame" gnuserv-main-frame-function) (function-item :tag "Use visible frame, otherwise create new" gnuserv-visible-frame-function) (function-item :tag "Create special Gnuserv frame and use it" gnuserv-special-frame-function) (function :tag "Other")) :group 'gnuserv :group 'frames) (autoload 'gnuserv-running-p "gnuserv" "\ @@ -1501,7 +1502,7 @@ be lexically ordered. It is debatable if it makes sense to have more than one version of a package available.") -(defcustom package-get-package-index-file-location (or (getenv "EMACSPACKAGEPATH") user-init-directory) "*The directory where the package-index file can be found." :type 'directory :group 'package-get) +(defcustom package-get-package-index-file-location (car (split-path (or (getenv "EMACSPACKAGEPATH") user-init-directory))) "*The directory where the package-index file can be found." :type 'directory :group 'package-get) (defcustom package-get-install-to-user-init-directory nil "*If non-nil install packages under `user-init-directory'." :type 'boolean :group 'package-get) diff -u -r -N xemacs-21.4.15/lisp/bytecomp.el xemacs-21.4.16/lisp/bytecomp.el --- xemacs-21.4.15/lisp/bytecomp.el 2003-12-13 16:38:00.000000000 -0500 +++ xemacs-21.4.16/lisp/bytecomp.el 2004-08-16 20:54:35.000000000 -0400 @@ -2894,7 +2894,7 @@ (byte-defop-compiler char-after 0-1+1) (byte-defop-compiler set-buffer 1) ;;(byte-defop-compiler set-mark 1) ;; obsolete -(byte-defop-compiler forward-word 1+1) +(byte-defop-compiler forward-word 0-1+1) (byte-defop-compiler char-syntax 1+1) (byte-defop-compiler nreverse 1) (byte-defop-compiler car-safe 1) diff -u -r -N xemacs-21.4.15/lisp/cl.el xemacs-21.4.16/lisp/cl.el --- xemacs-21.4.15/lisp/cl.el 2001-04-12 14:21:13.000000000 -0400 +++ xemacs-21.4.16/lisp/cl.el 2004-06-21 21:49:47.000000000 -0400 @@ -217,7 +217,7 @@ (defun cl-set-substring (str start end val) (if end (if (< end 0) (incf end (length str))) (setq end (length str))) - (if (< start 0) (incf start str)) + (if (< start 0) (incf start (length str))) (concat (and (> start 0) (substring str 0 start)) val (and (< end (length str)) (substring str end)))) @@ -319,7 +319,10 @@ (defun gensym (&optional arg) "Generate a new uninterned symbol. -The name is made by appending a number to PREFIX, default \"G\"." +The name is made by appending a number to a prefix. If ARG is a string, it +is the prefix, otherwise the prefix defaults to \"G\". If ARG is an integer, +the internal counter is reset to that number before creating the name. +There is no way to specify both using this function." (let ((prefix (if (stringp arg) arg "G")) (num (if (integerp arg) arg (prog1 *gensym-counter* @@ -328,7 +331,8 @@ (defun gentemp (&optional arg) "Generate a new interned symbol with a unique name. -The name is made by appending a number to PREFIX, default \"G\"." +The name is made by appending a number to ARG, default \"G\". +If ARG is not a string, it is ignored." (let ((prefix (if (stringp arg) arg "G")) name) (while (intern-soft (setq name (format "%s%d" prefix *gensym-counter*))) diff -u -r -N xemacs-21.4.15/lisp/cmdloop.el xemacs-21.4.16/lisp/cmdloop.el --- xemacs-21.4.15/lisp/cmdloop.el 2002-08-20 07:34:35.000000000 -0400 +++ xemacs-21.4.16/lisp/cmdloop.el 2004-07-06 22:25:48.000000000 -0400 @@ -187,11 +187,26 @@ (defun truncate-command-history-for-gc () - (let ((tail (nthcdr 30 command-history))) - (if tail (setcdr tail nil))) - (let ((tail (nthcdr 30 values))) - (if tail (setcdr tail nil))) - ) + ;; We should try to avoid accessing any bindings to speak of in this + ;; function; as this hook is called asynchronously, the search for + ;; those bindings might search local bindings from essentially + ;; arbitrary functions. We force the body of the function to run at + ;; command-loop level, where the danger of local bindings is much + ;; reduced; the code can still do its job because the command history + ;; and values list will not grow before then anyway. + ;; + ;; Nothing is done in batch mode, both because it is a waste of time + ;; (there is no command loop!) and because this any GCs during dumping + ;; will invoke this code, and if it were to enqueue an eval event, + ;; the portable dumper would try to dump it and fail. + (if (not (noninteractive)) + (enqueue-eval-event + #'(lambda (arg) + (let ((tail (nthcdr 30 command-history))) + (if tail (setcdr tail nil))) + (let ((tail (nthcdr 30 values))) + (if tail (setcdr tail nil)))) + nil))) (add-hook 'pre-gc-hook 'truncate-command-history-for-gc) diff -u -r -N xemacs-21.4.15/lisp/cus-edit.el xemacs-21.4.16/lisp/cus-edit.el --- xemacs-21.4.15/lisp/cus-edit.el 2002-04-30 12:05:35.000000000 -0400 +++ xemacs-21.4.16/lisp/cus-edit.el 2004-06-11 22:56:06.000000000 -0400 @@ -232,7 +232,7 @@ :group 'customize) (defgroup alloc nil - "Storage allocation and gc for GNU Emacs Lisp interpreter." + "Storage allocation and gc for XEmacs Lisp interpreter." :tag "Storage Allocation" :group 'internal) @@ -1225,7 +1225,7 @@ (goto-char (point-min))) (define-widget 'custom-browse-visibility 'item - "Control visibility of of items in the customize tree browser." + "Control visibility of items in the customize tree browser." :format "%[[%t]%]" :action 'custom-browse-visibility-action) @@ -2032,7 +2032,7 @@ ;; Don't push it !!! Custom assumes that the first child is the ;; value one. (setq children (append children (list comment-widget))))) - ;; Update the rest of the properties properties. + ;; Update the rest of the properties. (widget-put widget :custom-form form) (widget-put widget :children children) ;; Now update the state. @@ -2293,7 +2293,7 @@ (put symbol 'saved-value nil) (custom-push-theme 'theme-value symbol 'user 'reset 'standard) ;; As a special optimizations we do not (explictly) - ;; save resets to standard when no theme set the value. + ;; save resets to standard when no theme sets the value. (if (null (cdr (get symbol 'theme-value))) (put symbol 'theme-value nil)) (put symbol 'saved-variable-comment nil) @@ -3386,43 +3386,57 @@ (custom-save-delete 'custom-set-variables) (custom-save-loaded-themes) (custom-save-resets 'theme-value 'custom-reset-variables nil) + (let ((standard-output (current-buffer))) (unless (bolp) - (princ "\n")) + (princ "\n")) (princ "(custom-set-variables") - (mapatoms (lambda (symbol) - (let ((spec (car-safe (get symbol 'theme-value))) - (requests (get symbol 'custom-requests)) - (now (not (or (get symbol 'standard-value) - (and (not (boundp symbol)) - (not (eq (get symbol 'force-value) - 'rogue)))))) - (comment (get symbol 'saved-variable-comment))) - (when (or (and spec - (eq (car spec) 'user) - (eq (second spec) 'set)) - comment - ;; support non-themed vars - (and (null spec) (get symbol 'saved-value))) - (princ "\n '(") - (prin1 symbol) - (princ " ") - ;; This comment stuff is in the way #### - ;; Is (eq (third spec) (car saved-value)) ???? - ;; (prin1 (third spec)) - (prin1 (car (get symbol 'saved-value))) - (when (or now requests comment) - (princ (if now " t" " nil"))) - (when (or comment requests) - (princ " ") - (prin1 requests)) - (when comment - (princ " ") - (prin1 comment)) - (princ ")"))))) - (princ ")") - (unless (looking-at "\n") - (princ "\n"))))) + + ;; Get the list of variables to save... + (let (varlist) + (mapatoms (lambda (symbol) + (let ((spec (car-safe (get symbol 'theme-value))) + (comment (get symbol 'saved-variable-comment))) + (when (or (and spec + (eq (first spec) 'user) + (eq (second spec) 'set)) + comment + ;; support non-themed vars + (and (null spec) (get symbol 'saved-value))) + (push symbol varlist))))) + + ;; ...and sort it by name, so our output can be easily diffed, etc. + (setq varlist (sort varlist #'string-lessp)) + + ;; Generate the output for each var. + (dolist (symbol varlist) + (let ((requests (get symbol 'custom-requests)) + (now (not (or (get symbol 'standard-value) + (and (not (boundp symbol)) + (not (eq (get symbol 'force-value) + 'rogue)))))) + (comment (get symbol 'saved-variable-comment)) + ;; Print everything, no placeholders `...' + (print-level nil) + (print-length nil)) + (princ "\n '(") + (prin1 symbol) + (princ " ") + (prin1 (car (get symbol 'saved-value))) + (when (or now requests comment) + (princ (if now " t" " nil"))) + (when (or comment requests) + (princ " ") + (prin1 requests)) + (when comment + (princ " ") + (prin1 comment)) + (princ ")")))) + + ;; Finish the output. + (princ ")") + (unless (looking-at "\n") + (princ "\n"))))) (defvar custom-save-face-ignoring nil) @@ -3431,7 +3445,10 @@ (comment (get symbol 'saved-face-comment)) (now (not (or (get symbol 'face-defface-spec) (and (not (find-face symbol)) - (not (eq (get symbol 'force-face) 'rogue))))))) + (not (eq (get symbol 'force-face) 'rogue)))))) + ;; Print everything, no placeholders `...' + (print-level nil) + (print-length nil)) (when (or (and (not (memq symbol custom-save-face-ignoring)) ;; Don't print default face here. (or (and theme-spec @@ -3458,14 +3475,33 @@ (custom-save-delete 'custom-reset-faces) (custom-save-delete 'custom-set-faces) (custom-save-resets 'theme-face 'custom-reset-faces '(default)) - (let ((standard-output (current-buffer))) + (let ((standard-output (current-buffer)) + (sorted-list ())) + ;; Create a sorted list of faces + (mapatoms + (lambda (symbol) + (let ((theme-spec (car-safe (get symbol 'theme-face))) + (comment (get symbol 'saved-face-comment))) + (when + (or (and (not (memq symbol custom-save-face-ignoring)) + ;; Don't print default face here. + (or (and theme-spec + (eq (car theme-spec) 'user) + (eq (second theme-spec) 'set)) + ;; cope with non-themed faces + (and (null theme-spec) + (get symbol 'saved-face)))) + comment) + (push symbol sorted-list))))) + (setq sorted-list (sort sorted-list 'string<)) (unless (bolp) (princ "\n")) (princ "(custom-set-faces") ;; The default face must be first, since it affects the others. (custom-save-face-internal 'default) (let ((custom-save-face-ignoring '(default))) - (mapatoms #'custom-save-face-internal)) + (mapc 'custom-save-face-internal + sorted-list)) (princ ")") (unless (looking-at "\n") (princ "\n"))))) @@ -3476,7 +3512,9 @@ ;; (custom-save-delete setter) Done by caller (let ((standard-output (current-buffer)) (mapper `(lambda (object) - (let ((spec (car-safe (get object (quote ,property))))) + (let ((spec (car-safe (get object (quote ,property)))) + (print-level nil) + (print-length nil)) (when (and (not (memq object ignored-special)) (eq (car spec) 'user) (eq (second spec) 'reset)) @@ -3496,13 +3534,14 @@ (setq ignored-special special) (mapatoms mapper) (when started-writing - (princ ")\n")))) - ) + (princ ")\n"))))) (defun custom-save-loaded-themes () (let ((themes (reverse (get 'user 'theme-loads-themes))) - (standard-output (current-buffer))) + (standard-output (current-buffer)) + (print-level nil) + (print-length nil)) (when themes (unless (bolp) (princ "\n")) (princ "(custom-load-themes") diff -u -r -N xemacs-21.4.15/lisp/custom-load.el xemacs-21.4.16/lisp/custom-load.el --- xemacs-21.4.15/lisp/custom-load.el 2004-02-02 22:13:33.000000000 -0500 +++ xemacs-21.4.16/lisp/custom-load.el 2004-12-05 20:06:10.000000000 -0500 @@ -73,7 +73,7 @@ (custom-add-loads 'fill '("simple" "fill")) (custom-add-loads 'custom-magic-faces '("cus-edit")) (custom-add-loads 'display '("modeline" "auto-show" "scrollbar" "toolbar")) -(custom-add-loads 'faces '("faces" "cus-edit" "font-lock" "font" "hyper-apropos" "info" "wid-edit")) +(custom-add-loads 'faces '("faces" "font" "cus-edit" "font-lock" "hyper-apropos" "info" "wid-edit")) (custom-add-loads 'emacs '("faces" "help" "files" "cus-edit" "package-get")) (custom-add-loads 'processes '("process" "gnuserv")) (custom-add-loads 'hyper-apropos '("hyper-apropos")) diff -u -r -N xemacs-21.4.15/lisp/derived.el xemacs-21.4.16/lisp/derived.el --- xemacs-21.4.15/lisp/derived.el 2001-04-12 14:21:16.000000000 -0400 +++ xemacs-21.4.16/lisp/derived.el 2004-06-21 21:49:47.000000000 -0400 @@ -1,6 +1,7 @@ -;;; derived.el --- allow inheritance of major modes. +;;; derived.el --- allow inheritance of major modes +;;; (formerly mode-clone.el) -;; Copyright (C) 1993, 1994, 1997 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1994, 1999, 2003 Free Software Foundation, Inc. ;; Author: David Megginson (dmeggins@aix1.uottawa.ca) ;; Maintainer: XEmacs Development Team @@ -23,13 +24,13 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Synched up with: FSF 19.34. +;;; Synched up with: FSF 21.3. ;;; Commentary: ;; This file is dumped with XEmacs. -;; GNU Emacs is already, in a sense, object oriented -- each object +;; XEmacs is already, in a sense, object oriented -- each object ;; (buffer) belongs to a class (major mode), and that class defines ;; the relationship between messages (input events) and methods ;; (commands) by means of a keymap. @@ -74,12 +75,6 @@ ;; - assign the value 'hypertext-mode' to the 'major-mode' variable ;; - run the body of commands provided in the macro -- in this case, ;; set the local variable `case-fold-search' to nil. -;; - **run the command (hypertext-mode-setup), which is empty by -;; default, but may be redefined by the user to contain special -;; commands (ie. setting local variables like 'outline-regexp') -;; **NOTE: do not use this option -- it will soon be obsolete. -;; - run anything assigned to 'hypertext-mode-hooks' (obsolete, but -;; supported for the sake of compatibility). ;; ;; The advantages of this system are threefold. First, text mode is ;; untouched -- if you had added the new keystroke to `text-mode-map,' @@ -90,19 +85,34 @@ ;; ;; (define-derived-mode html-mode hypertext-mode "HTML") ;; [various key definitions] -;; -;; will add a new major mode for HTML with very little fuss. ;; -;; Note also the function `derived-mode-class,' which returns the non-derived -;; major mode which a derived mode is based on (ie. NOT necessarily the -;; immediate parent). +;; will add a new major mode for HTML with very little fuss. ;; -;; (derived-mode-class 'text-mode) ==> text-mode -;; (derived-mode-class 'hypertext-mode) ==> text-mode -;; (derived-mode-class 'html-mode) ==> text-mode +;; Note also the function `derived-mode-p' which can tell if the current +;; mode derives from another. In a hypertext-mode, buffer, for example, +;; (derived-mode-p 'text-mode) would return non-nil. This should always +;; be used in place of (eq major-mode 'text-mode). ;;; Code: +;;; PRIVATE: defsubst must be defined before they are first used + +(defsubst derived-mode-hook-name (mode) + "Construct the mode hook name based on mode name MODE." + (intern (concat (symbol-name mode) "-hook"))) + +(defsubst derived-mode-map-name (mode) + "Construct a map name based on a MODE name." + (intern (concat (symbol-name mode) "-map"))) + +(defsubst derived-mode-syntax-table-name (mode) + "Construct a syntax-table name based on a MODE name." + (intern (concat (symbol-name mode) "-syntax-table"))) + +(defsubst derived-mode-abbrev-table-name (mode) + "Construct an abbrev-table name based on a MODE name." + (intern (concat (symbol-name mode) "-abbrev-table"))) + ;; PUBLIC: define a new major mode which inherits from an existing one. ;; XEmacs -- no autoload @@ -112,12 +122,24 @@ The arguments to this command are as follow: CHILD: the name of the command for the derived mode. -PARENT: the name of the command for the parent mode (ie. text-mode). -NAME: a string which will appear in the status line (ie. \"Hypertext\") +PARENT: the name of the command for the parent mode (e.g. `text-mode') + or nil if there is no parent. +NAME: a string which will appear in the status line (e.g. \"Hypertext\") DOCSTRING: an optional documentation string--if you do not supply one, the function will attempt to invent something useful. BODY: forms to execute just before running the - hooks for the new mode. + hooks for the new mode. Do not use `interactive' here. + +BODY can start with a bunch of keyword arguments. The following keyword + arguments are currently understood: +:group GROUP + Declare the customization group that corresponds to this mode. +:syntax-table TABLE + Use TABLE instead of the default. + A nil value means to simply use the same syntax-table as the parent. +:abbrev-table TABLE + Use TABLE instead of the default. + A nil value means to simply use the same abbrev-table as the parent. Here is how you could define LaTeX-Thesis mode as a variant of LaTeX mode: @@ -127,7 +149,7 @@ without changing regular LaTeX mode. In this example, BODY is empty, and DOCSTRING is generated by default. -On a more complicated level, the following command uses sgml-mode as +On a more complicated level, the following command uses `sgml-mode' as the parent, and then sets the variable `case-fold-search' to nil: (define-derived-mode article-mode sgml-mode \"Article\" @@ -135,88 +157,173 @@ (setq case-fold-search nil)) Note that if the documentation string had been left out, it would have -been generated automatically, with a reference to the keymap." +been generated automatically, with a reference to the keymap. - ; Some trickiness, since what - ; appears to be the docstring - ; may really be the first - ; element of the body. - (if (and docstring (not (stringp docstring))) - (progn (setq body (cons docstring body)) - (setq docstring nil))) - (setq docstring (or docstring (derived-mode-make-docstring parent child))) +The new mode runs the hook constructed by the function +`derived-mode-hook-name'." + (declare (debug (&define name symbolp sexp [&optional stringp] + [&rest keywordp sexp] def-body))) + + (when (and docstring (not (stringp docstring))) + ;; Some trickiness, since what appears to be the docstring may really be + ;; the first element of the body. + (push docstring body) + (setq docstring nil)) + + (when (eq parent 'fundamental-mode) (setq parent nil)) + + (let ((map (derived-mode-map-name child)) + (syntax (derived-mode-syntax-table-name child)) + (abbrev (derived-mode-abbrev-table-name child)) + (declare-abbrev t) + (declare-syntax t) + (hook (derived-mode-hook-name child)) + (group nil)) + + ;; Process the keyword args. + (while (keywordp (car body)) + (case (pop body) + (:group (setq group (pop body))) + (:abbrev-table (setq abbrev (pop body)) (setq declare-abbrev nil)) + (:syntax-table (setq syntax (pop body)) (setq declare-syntax nil)) + (t (pop body)))) + + (setq docstring (derived-mode-make-docstring + parent child docstring syntax abbrev)) + + `(progn + (defvar ,hook nil ,(format "Hook run when entering %s mode." name)) + (defvar ,map (make-sparse-keymap)) + ,(if declare-syntax + `(defvar ,syntax (make-syntax-table))) + ,(if declare-abbrev + `(defvar ,abbrev + (progn (define-abbrev-table ',abbrev nil) ,abbrev))) + (put ',child 'derived-mode-parent ',parent) + ,(if group `(put ',child 'custom-mode-group ,group)) - `(progn - (derived-mode-init-mode-variables (quote ,child)) (defun ,child () ,docstring (interactive) ; Run the parent. - (,parent) - ; Identify special modes. - (if (get (quote ,parent) 'special) - (put (quote ,child) 'special t)) - ;; XEmacs addition - (let ((mode-class (get (quote ,parent) 'mode-class))) - (if mode-class - (put (quote ,child) 'mode-class mode-class))) + (delay-mode-hooks + + (,(or parent 'kill-all-local-variables)) ; Identify the child mode. - (setq major-mode (quote ,child)) - (setq mode-name ,name) + (setq major-mode (quote ,child)) + (setq mode-name ,name) + ; Identify special modes. + ,(when parent + `(progn + (if (get (quote ,parent) 'mode-class) + (put (quote ,child) 'mode-class + (get (quote ,parent) 'mode-class))) ; Set up maps and tables. - (derived-mode-set-keymap (quote ,child)) - (derived-mode-set-syntax-table (quote ,child)) - (derived-mode-set-abbrev-table (quote ,child)) + (unless (keymap-parent ,map) + (set-keymap-parents ,map (list (current-local-map)))) + ,(when declare-syntax + ;; XEmacs change: we do not have char-table-parent + `(derived-mode-merge-syntax-tables + (syntax-table) ,syntax)))) + + (use-local-map ,map) + ,(when syntax `(set-syntax-table ,syntax)) + ,(when abbrev `(setq local-abbrev-table ,abbrev)) ; Splice in the body (if any). - ,@body -;;; ; Run the setup function, if -;;; ; any -- this will soon be -;;; ; obsolete. -;;; (derived-mode-run-setup-function (quote ,child)) - ; Run the hooks, if any. - (derived-mode-run-hooks (quote ,child))))) - + ,@body + ) + ;; Run the hooks, if any. + ;; Make the generated code work in older Emacs versions + ;; that do not yet have run-mode-hooks. + (if (fboundp 'run-mode-hooks) + (run-mode-hooks ',hook) + (run-hooks ',hook)))))) ;; PUBLIC: find the ultimate class of a derived mode. (defun derived-mode-class (mode) - "Find the class of a major mode. + "Find the class of a major MODE. A mode's class is the first ancestor which is NOT a derived mode. -Use the `derived-mode-parent' property of the symbol to trace backwards." +Use the `derived-mode-parent' property of the symbol to trace backwards. +Since major-modes might all derive from `fundamental-mode', this function +is not very useful." (while (get mode 'derived-mode-parent) (setq mode (get mode 'derived-mode-parent))) mode) +(make-obsolete 'derived-mode-class 'derived-mode-p) + +;; PUBLIC: find if the current mode derives from another. +;; from GNU Emacs 21 subr.el + +(defun derived-mode-p (&rest modes) + "Non-nil if the current major mode is derived from one of MODES. +Uses the `derived-mode-parent' property of the symbol to trace backwards." + (let ((parent major-mode)) + (while (and (not (memq parent modes)) + (setq parent (get parent 'derived-mode-parent)))) + parent)) -;; Inline functions to construct various names from a mode name. +;;; PRIVATE -(defsubst derived-mode-setup-function-name (mode) - "Construct a setup-function name based on a mode name." - (intern (concat (symbol-name mode) "-setup"))) +(defun derived-mode-make-docstring (parent child &optional + docstring syntax abbrev) + "Construct a docstring for a new mode if none is provided." -(defsubst derived-mode-hooks-name (mode) - "Construct a hooks name based on a mode name." - ;; XEmacs change from -hooks - (intern (concat (symbol-name mode) "-hook"))) + (let ((map (derived-mode-map-name child)) + (hook (derived-mode-hook-name child))) -(defsubst derived-mode-map-name (mode) - "Construct a map name based on a mode name." - (intern (concat (symbol-name mode) "-map"))) + (unless (stringp docstring) + ;; Use a default docstring. + (setq docstring + (if (null parent) + (format "Major-mode. +Uses keymap `%s', abbrev table `%s' and syntax-table `%s'." map abbrev syntax) + (format "Major mode derived from `%s' by `define-derived-mode'. +It inherits all of the parent's attributes, but has its own keymap, +abbrev table and syntax table: -(defsubst derived-mode-syntax-table-name (mode) - "Construct a syntax-table name based on a mode name." - (intern (concat (symbol-name mode) "-syntax-table"))) + `%s', `%s' and `%s' -(defsubst derived-mode-abbrev-table-name (mode) - "Construct an abbrev-table name based on a mode name." - (intern (concat (symbol-name mode) "-abbrev-table"))) +which more-or-less shadow %s's corresponding tables." + parent map abbrev syntax parent)))) + + (unless (string-match (regexp-quote (symbol-name hook)) docstring) + ;; Make sure the docstring mentions the mode's hook. + (setq docstring + (concat docstring + (if (null parent) + "\n\nThis mode " + (concat + "\n\nIn addition to any hooks its parent mode " + (if (string-match (regexp-quote (format "`%s'" parent)) + docstring) nil + (format "`%s' " parent)) + "might have run,\nthis mode ")) + (format "runs the hook `%s'" hook) + ", as the final step\nduring initialization."))) + + (unless (string-match "\\\\[{[]" docstring) + ;; And don't forget to put the mode's keymap. + (setq docstring (concat docstring "\n\n\\{" (symbol-name map) "}"))) + + docstring)) + + +;;; OBSOLETE +;; The functions below are only provided for backward compatibility with +;; code byte-compiled with versions of derived.el prior to Emacs-21. + +(defsubst derived-mode-setup-function-name (mode) + "Construct a setup-function name based on a MODE name." + (intern (concat (symbol-name mode) "-setup"))) ;; Utility functions for defining a derived mode. ;; XEmacs -- don't autoload (defun derived-mode-init-mode-variables (mode) - "Initialize variables for a new mode. + "Initialise variables for a new MODE. Right now, if they don't already exist, set up a blank keymap, an empty syntax table, and an empty abbrev table -- these will be merged the first time the mode is used." @@ -244,30 +351,15 @@ (if (boundp (derived-mode-abbrev-table-name mode)) t (eval `(defvar ,(derived-mode-abbrev-table-name mode) - (progn (define-abbrev-table (derived-mode-abbrev-table-name mode) nil) - (make-abbrev-table)) + (progn + (define-abbrev-table (derived-mode-abbrev-table-name mode) nil) + (make-abbrev-table)) ,(format "Abbrev table for %s." mode))))) - -(defun derived-mode-make-docstring (parent child) - "Construct a docstring for a new mode if none is provided." - - (format "This major mode is a variant of `%s', created by `define-derived-mode'. -It inherits all of the parent's attributes, but has its own keymap, -abbrev table and syntax table: - - `%s-map' and `%s-syntax-table' - -which more-or-less shadow - - `%s-map' and `%s-syntax-table' - -\\{%s-map}" parent child child parent parent child)) - ;; Utility functions for running a derived mode. (defun derived-mode-set-keymap (mode) - "Set the keymap of the new mode, maybe merging with the parent." + "Set the keymap of the new MODE, maybe merging with the parent." (let* ((map-name (derived-mode-map-name mode)) (new-map (eval map-name)) (old-map (current-local-map))) @@ -277,8 +369,8 @@ (put map-name 'derived-mode-unmerged nil) (use-local-map new-map))) -(defun derived-mode-set-syntax-table (mode) - "Set the syntax table of the new mode, maybe merging with the parent." +(defun derived-mode-set-syntax-table (mode) + "Set the syntax table of the new MODE, maybe merging with the parent." (let* ((table-name (derived-mode-syntax-table-name mode)) (old-table (syntax-table)) (new-table (eval table-name))) @@ -288,7 +380,7 @@ (set-syntax-table new-table))) (defun derived-mode-set-abbrev-table (mode) - "Set the abbrev table if it exists. + "Set the abbrev table for MODE if it exists. Always merge its parent into it, since the merge is non-destructive." (let* ((table-name (derived-mode-abbrev-table-name mode)) (old-table local-abbrev-table) @@ -304,45 +396,45 @@ ;;; (funcall fname)))) (defun derived-mode-run-hooks (mode) - "Run the hooks if they exist." - - (let ((hooks-name (derived-mode-hooks-name mode))) + "Run the mode hook for MODE." + (let ((hooks-name (derived-mode-hook-name mode))) (if (boundp hooks-name) (run-hooks hooks-name)))) ;; Functions to merge maps and tables. (defun derived-mode-merge-keymaps (old new) - "Merge an old keymap into a new one. -The old keymap is set to be the parent of the new one, so that there will + "Merge an OLD keymap into a NEW one. +The old keymap is set to be the last cdr of the new one, so that there will be automatic inheritance." - ;; XEmacs change. FSF 19.30 & 19.34 has a whole bunch of weird crap here + ;; XEmacs change. FSF 19.30 to 21.3 has a whole bunch of weird crap here ;; for merging prefix keys and such. Hopefully none of this is ;; necessary in XEmacs. (set-keymap-parents new (list old))) (defun derived-mode-merge-syntax-tables (old new) - "Merge an old syntax table into a new one. + "Merge an OLD syntax table into a NEW one. Where the new table already has an entry, nothing is copied from the old one." - ;; 20.x - (if (fboundp 'map-char-table) - ;; we use map-char-table not map-syntax-table so we can explicitly - ;; check for inheritance. - (map-char-table - #'(lambda (key value) - (if (eq ?@ (char-syntax-from-code value)) - (map-char-table #'(lambda (key1 value1) - (put-char-table key1 value1 new)) - old - key))) - new) - ;; pre-20.0 - (let ((idx 0) - (end (min (length new) (length old)))) - (while (< idx end) - (if (not (aref new idx)) - (aset new idx (aref old idx))) - (setq idx (1+ idx)))))) + ;; XEmacs change: on the other hand, Emacs 21.3 just has + ;; (set-char-table-parent new old) here. + ;; We use map-char-table, not map-syntax-table, so we can explicitly + ;; check for inheritance. + (map-char-table + #'(lambda (key value) + (let ((newval (get-range-char-table key new 'multi))) + (cond ((eq newval 'multi) ; OK, dive into the class hierarchy + (map-char-table + #'(lambda (key1 value1) + (when (eq ?@ (char-syntax-from-code + (get-range-char-table key new ?@))) + (put-char-table key1 value new)) + nil) + new + key)) + ((eq ?@ (char-syntax-from-code newval)) ;; class at once + (put-char-table key value new)))) + nil) + old)) ;; Merge an old abbrev table into a new one. ;; This function requires internal knowledge of how abbrev tables work, @@ -350,14 +442,14 @@ ;; as the value of the symbol, and the hook as the function definition. (defun derived-mode-merge-abbrev-tables (old new) (if old - (mapatoms - (function - (lambda (symbol) - (or (intern-soft (symbol-name symbol) new) - (define-abbrev new (symbol-name symbol) - (symbol-value symbol) (symbol-function symbol))))) + (mapatoms + #'(lambda (symbol) + (or (intern-soft (symbol-name symbol) new) + (define-abbrev new (symbol-name symbol) + (symbol-value symbol) (symbol-function symbol)))) old))) - + (provide 'derived) +;;; arch-tag: 630be248-47d1-4f02-afa0-8207de0ebea0 ;;; derived.el ends here diff -u -r -N xemacs-21.4.15/lisp/dialog-gtk.el xemacs-21.4.16/lisp/dialog-gtk.el --- xemacs-21.4.15/lisp/dialog-gtk.el 2001-12-17 00:49:09.000000000 -0500 +++ xemacs-21.4.16/lisp/dialog-gtk.el 2004-03-25 16:08:09.000000000 -0500 @@ -32,6 +32,31 @@ (require 'gtk-password-dialog) (require 'gtk-file-dialog) +(defun gtk-popup-convert-underscores (str) + ;; Convert the XEmacs button accelerator representation to Gtk mnemonic + ;; form. If no accelerator has been provided, put one at the start of the + ;; string (this mirrors the behaviour under X). This algorithm is also found + ;; in menubar-gtk.c:convert_underscores(). + (let ((new-str (string)) + (i 0) + (found-accel nil)) + (while (< i (length str)) + (let ((c (aref str i))) + (cond ((eq c ?%) + (setq i (1+ i)) + (if (and (not (eq (aref str i) ?_)) (not (eq (aref str i) ?%))) + (setq i (1- i))) + (setq found-accel 1) + ) + ((eq c ?_) + (setq new-str (concat new-str "_"))) + )) + (setq new-str (concat new-str (string (aref str i)))) + (setq i (1+ i)) + ) + (if found-accel new-str (concat "_" new-str)) + )) + (defun popup-builtin-open-dialog (keys) ;; Allowed keywords are: ;; @@ -183,6 +208,10 @@ (callback nil) (flushrightp nil) (length nil) + (label nil) + (gui-button nil) + (accel-group (gtk-accel-group-new)) + (accel-key nil) (errp t)) (if (not buttons-descr) (error 'syntax-error @@ -230,7 +259,22 @@ (setq activep (plist-get plist :active) callback (plist-get plist :callback))))) - (push (gtk-button-new-with-label (aref button 0)) buttons) + ;; Create the label and determine what the mnemonic key is. + (setq label (gtk-label-new "")) + (setq accel-key (gtk-label-parse-uline label + (gtk-popup-convert-underscores (aref button 0)))) + ;; Place the label in the button. + (gtk-misc-set-alignment label 0.5 0.5) + (setq gui-button (gtk-button-new)) + (gtk-container-add gui-button label) + ;; Add ALT-mnemonic to the dialog's accelerator group. + (gtk-widget-add-accelerator gui-button "clicked" accel-group + accel-key + 8 ; GDK_MOD1_MASK + 4 ; GTK_ACCEL_LOCKED + ) + + (push gui-button buttons) (gtk-widget-set-sensitive (car buttons) (eval activep)) ;; Apply the callback @@ -259,6 +303,9 @@ (gtk-window-set-transient-for dialog (frame-property nil 'shell-widget)) (put dialog 'type 'dialog) (put dialog 'modal t) + ;; Make the dialog listen for global mnemonic keys. + (gtk-window-add-accel-group dialog accel-group) + (gtk-widget-show-all dialog) (gtk-main) (gtk-widget-destroy dialog) diff -u -r -N xemacs-21.4.15/lisp/etags.el xemacs-21.4.16/lisp/etags.el --- xemacs-21.4.15/lisp/etags.el 2001-10-23 04:35:21.000000000 -0400 +++ xemacs-21.4.16/lisp/etags.el 2004-08-12 23:23:22.000000000 -0400 @@ -1,6 +1,6 @@ ;;; etags.el --- etags facility for Emacs -;; Copyright 1985, 1986, 1988, 1990, 1997 Free Software Foundation, Inc. +;; Copyright 1985, 1986, 1988, 1990, 1997, 2003 Free Software Foundation, Inc. ;; Author: Their Name is Legion (see list below) ;; Maintainer: XEmacs Development Team @@ -172,6 +172,24 @@ :type 'boolean :group 'etags) +(defcustom tags-check-parent-directories-for-tag-files t + "*If non-nil, look for TAGS files in all parent directories." + :type 'boolean + :group 'etags) + +(defcustom tags-exuberant-ctags-optimization-p nil + "*If this variable is nil (the default), then exact tag search is able +to find tag names in the name part of the tagtable (enclosed by ^?..^A) +and in the sourceline part of the tagtable ( enclosed by ^..^?). +This is needed by xemacs etags as not every tag has a name field. +It is slower for large tables and less precise than the other option. + +If it is non-nil, then exact tag will only search tag names in the name +part (enclosed by ^?..^A). This is faster and more precise than the other +option. This is only usable with exuberant etags, as it has a name field +entry for every tag." +:type 'boolean +:group 'etags) ;; Buffer tag tables. @@ -185,10 +203,21 @@ ;; Current directory (when (file-readable-p (concat default-directory "TAGS")) (push (concat default-directory "TAGS") result)) - ;; Parent directory - (let ((parent-tag-file (expand-file-name "../TAGS" default-directory))) - (when (file-readable-p parent-tag-file) - (push parent-tag-file result))) + ;; Parent directories + (when tags-check-parent-directories-for-tag-files + (let ((cur default-directory)) + ;; Fuck! Shouldn't there be a more obvious portable way + ;; to determine if we're the root? Shouldn't we have a + ;; proper path manipulation API? Do you know how many + ;; god-damn bugs are lurking out there because of Unix/ + ;; Windows differences? And how much code is littered + ;; with stuff such as 10 lines down from here? + (while (not (and (equal (file-name-as-directory cur) cur) + (equal (directory-file-name cur) cur))) + (setq cur (expand-file-name ".." cur)) + (let ((parent-tag-file (expand-file-name "TAGS" cur))) + (when (file-readable-p parent-tag-file) + (push parent-tag-file result)))))) ;; tag-table-alist (let* ((key (or buffer-file-name (concat default-directory (buffer-name)))) @@ -213,26 +242,45 @@ (if (stringp expression) (push expression result) (error "Expression in tag-table-alist evaluated to non-string"))))) - (setq result - (mapcar - (lambda (name) - (when (file-directory-p name) - (setq name (concat (file-name-as-directory name) "TAGS"))) - (and (file-readable-p name) - ;; get-tag-table-buffer has side-effects - (symbol-value-in-buffer 'buffer-file-name - (get-tag-table-buffer name)))) - result)) + (setq result (buffer-tag-table-list-load result)) (setq result (delq nil result)) ;; If no TAGS file has been found, ask the user explicitly. ;; #### tags-file-name is *evil*. (or result tags-file-name (call-interactively 'visit-tags-table)) (when tags-file-name - (setq result (nconc result (list tags-file-name)))) + (setq result (nconc result (buffer-tag-table-list-load (list tags-file-name))))) (or result (error "Buffer has no associated tag tables")) (delete-duplicates (nreverse result) :test 'equal))) +(defun buffer-tag-table-list-load (list &optional used-buffers) + "Load all tag buffers in LIST. Include directives inside the tag +Buffers result in a recursive call off this function. The USED-BUFFERS +parameter is just for internal use and prevents infinite inclusion +loops. The return value is a list of loaded buffers with the order +from LIST preserved. The tag files loaded with the include directive +are inserted into the returned list before their parents." + (let (result) + (and list + (mapc + #'(lambda (name) + (when (file-directory-p name) + (setq name (concat (file-name-as-directory name) "TAGS"))) + (and + (file-readable-p name) + (save-excursion + (set-buffer (get-tag-table-buffer name)) + (when (not (member buffer-file-name used-buffers)) + (add-to-list 'used-buffers buffer-file-name) + (let ((include-files (tag-table-include-files))) + (when include-files + (setq result (nconc result + (buffer-tag-table-list-load + include-files used-buffers))))) + (add-to-list 'result buffer-file-name t))))) + list)) + result)) + ;;;###autoload (defun visit-tags-table (file) "Tell tags commands to use tags table file FILE when all else fails. @@ -331,7 +379,9 @@ ;; The user wants to build the table: (condition-case nil (progn - (add-to-tag-completion-table) + (if tags-exuberant-ctags-optimization-p + (add-to-tag-completion-table-exuberant-ctags) + (add-to-tag-completion-table)) (setq tag-table-completion-status t)) ;; Allow user to C-g out correctly (quit @@ -374,12 +424,13 @@ ;; New include syntax ;; filename,include ;; tacked on to the end of a tag file means use filename as a - ;; tag file before giving up. + ;; tag file before giving up. The filenames are expanded to avoid + ;; problems with relative paths being used in the wrong directory. (let ((files nil)) (save-excursion (goto-char (point-min)) - (while (re-search-forward "\f\n\\(.*\\),include$" nil t) - (push (match-string 1) files))) + (while (re-search-forward tags-include-pattern nil t) + (push (expand-file-name (match-string 1)) files))) files)) (defun tag-table-files (tag-table) @@ -466,25 +517,59 @@ (or (memq tag-table-symbol tag-symbol-tables) (set tag-symbol (cons tag-table-symbol tag-symbol-tables))))) -;; Can't use "\\s " in these patterns because that will include newline +;; Can't use "\\s-" in these patterns because that will include newline +;; \2 matches an explicit name. +(defconst tags-explicit-name-pattern "\177\\(\\([^\n\001]+\\)\001\\)?") +;; \1 matches Lisp-name, \2 matches C-name, \5 (from +;; tags-explicit-name-pattern) matches explicit name. (defconst tags-DEFUN-pattern - "DEFUN[ \t]*(\"\\([^\"]+\\)\",[ \t]*\\(\\(\\sw\\|\\s_\\)+\\),\C-?") + (concat "DEFUN[ \t]*(\"\\([^\"]+\\)\",[ \t]*\\(\\(\\sw\\|\\s_\\)+\\)," + tags-explicit-name-pattern)) +;; \1 matches an array name. Explicit names unused? (defconst tags-array-pattern ".*[ \t]+\\([^ \[]+\\)\\[") +;; \2 matches a Lispish name, \5 (from tags-explicit-name-pattern) matches +;; explicit name. (defconst tags-def-pattern - "\\(.*[ \t]+\\)?\\**\\(\\(\\sw\\|\\s_\\)+\\)[ ();,\t]*\C-?" -;; "\\(.*[ \t]+\\)?\\(\\(\\sw\\|\\s_\\)+\\)[ ()]*\C-?" -;; "\\(\\sw\\|\\s_\\)+[ ()]*\C-?" + (concat "\\(.*[ \t]+\\)?\\**\\(\\(\\sw\\|\\s_\\)+\\)[ ();,\t]*" +;; "\\(.*[ \t]+\\)?\\(\\(\\sw\\|\\s_\\)+\\)[ ()]*" +;; "\\(\\sw\\|\\s_\\)+[ ()]*" + tags-explicit-name-pattern) ) +;; \1 matches Schemish name, \4 (from tags-explicit-name-pattern) matches +;; explicit name +(defconst tags-schemish-pattern + (concat "\\s-*(\\s-*def\\sw*\\s-*(?\\s-*\\(\\(\\sw\\|\\s_\\|:\\)+\\))?\\s-*" + tags-explicit-name-pattern)) (defconst tags-file-pattern "^\f\n\\(.+\\),[0-9]+\n") +(defconst tags-include-pattern "^\f\n\\(.+\\),include\n" + "Holds the pattern for finding the include directive in tagfiles.") + + +(defun add-to-tag-completion-table-exuberant-ctags () + "Sucks the current buffer (a TAGS table) into the completion-table. +This is a version which is optimized for exuberant etags and will not +work with xemacs etags." + (message "Adding %s to tags completion table..." buffer-file-name) + (goto-char (point-min)) + (let ((tag-table-symbol (intern buffer-file-name tag-completion-table)) + ;; tag-table-symbol is used by intern-tag-symbol + name tag-symbol + tag-symbol-tables + (case-fold-search nil)) + (while (re-search-forward tags-explicit-name-pattern nil t) + ;; no need to check the mode here + (setq name (match-string 2)) + (intern-tag-symbol name))) + (message "Adding %s to tags completion table...done" buffer-file-name)) + -;; #### Should make it work with the `include' directive! (defun add-to-tag-completion-table () "Sucks the current buffer (a TAGS table) into the completion-table." (message "Adding %s to tags completion table..." buffer-file-name) (goto-char (point-min)) (let ((tag-table-symbol (intern buffer-file-name tag-completion-table)) ;; tag-table-symbol is used by intern-tag-symbol - filename file-type name name2 tag-symbol + filename file-type name name2 name3 tag-symbol tag-symbol-tables (case-fold-search nil)) ;; Loop over the files mentioned in the TAGS file for each file, @@ -513,7 +598,7 @@ lisp-mode-syntax-table) (t (standard-syntax-table)))) ;; Clear loop variables. - (setq name nil name2 nil) + (setq name nil name2 nil name3 nil) (lmessage 'progress "%s..." filename) ;; Loop over the individual tag lines. (while (not (or (eobp) (eq (char-after) ?\f))) @@ -523,8 +608,9 @@ (or (looking-at tags-DEFUN-pattern) (error "DEFUN doesn't fit pattern")) (setq name (match-string 1) - name2 (match-string 2))) - ;;((looking-at "\\s ") + name2 (match-string 2) + name3 (match-string 5))) + ;;((looking-at "\\s-") ;; skip probably bogus entry: ;;) ((and (eq file-type 'c-mode) @@ -536,16 +622,24 @@ (t (setq name (match-string 1))))) ((and (eq file-type 'scheme-mode) - (looking-at "\\s-*(\\s-*def\\sw*\\s-*(?\\s-*\\(\\(\\sw\\|\\s_\\|:\\)+\\))?\\s-*\C-?")) + (looking-at tags-schemish-pattern)) ;; Something Schemish (is this really necessary??) - (setq name (match-string 1))) + (setq name (match-string 1) + name2 (match-string 4))) ((looking-at tags-def-pattern) ;; ??? - (setq name (match-string 2)))) + (setq name (match-string 2) + name2 (match-string 5)))) ;; add the tags we found to the completion table (and name (intern-tag-symbol name)) (and name2 (intern-tag-symbol name2)) + (and name3 (intern-tag-symbol name3)) (forward-line 1))) + ;; Skip over the include entries at the bottom of the file. + (while (looking-at tags-include-pattern) + (goto-char (match-end 0)) + (setq filename (file-name-sans-versions (match-string 1))) + (forward-line 1)) (or (eobp) (error "Bad TAGS file"))) (message "Adding %s to tags completion table...done" buffer-file-name)) @@ -565,12 +659,10 @@ ;; Return a default tag to search for, based on the text at point. (defun find-tag-default () (or (and (not (memq find-tag-default-hook '(nil find-tag-default))) - (condition-case data - (funcall find-tag-default-hook) - (error - (warn "Error in find-tag-default-hook signalled error: %s" - (error-message-string data)) - nil))) + (with-trapping-errors + :function 'find-tag-default-hook + :error-form nil + (funcall find-tag-default-hook))) (symbol-near-point))) ;; This function depends on the following symbols being bound properly: @@ -622,6 +714,7 @@ (autoload 'get-symbol-syntax-table "symbol-syntax") (defun find-tag-internal (tagname) + (let ((next (null tagname)) (tmpnext (null tagname)) ;; If tagname is a list: (TAGNAME), this indicates @@ -631,7 +724,7 @@ (exact-syntax-table (get-symbol-syntax-table (syntax-table))) tag-table-currently-matching-exact tag-target exact-tagname - tag-tables tag-table-point file linebeg startpos buf + tag-tables tag-table-point file linebeg line startpos buf offset found pat syn-tab) (when (consp tagname) (setq tagname (car tagname))) @@ -642,7 +735,11 @@ (t (setq tag-table-currently-matching-exact t))) ;; \_ in the tagname is used to indicate a symbol boundary. - (setq exact-tagname (format "\C-?\\_%s\\_\C-a\\|\\_%s\\_" tagname tagname)) + (if tags-exuberant-ctags-optimization-p + (setq exact-tagname (format "\C-?%s\C-a" tagname)) + (setq exact-tagname (format "\C-?%s\C-a\\|\ +\\_%s.?\C-?[0-9]*,[0-9]*$" tagname tagname)) + ) (while (string-match "\\\\_" exact-tagname) (aset exact-tagname (1- (match-end 0)) ?b)) (save-excursion @@ -687,8 +784,7 @@ (goto-char (match-beginning 0)) (not (looking-at exact-tagname))))) (throw 'found t)))) - (setq tag-tables - (nconc (tag-table-include-files) (cdr tag-tables))))) + (setq tag-tables (cdr tag-tables)))) (if (and (not exact) (eq tag-table-currently-matching-exact t)) (setq tag-table-currently-matching-exact nil) (setq tag-table-currently-matching-exact 'neither))) @@ -697,45 +793,117 @@ (if exact "matching" "containing") tagname)) (beginning-of-line) - (search-forward "\C-?") - (setq file (expand-file-name (file-of-tag) - ;; In XEmacs, this needs to be - ;; relative to: - (or (file-name-directory (car tag-tables)) - "./"))) - (setq linebeg (buffer-substring (1- (point)) (point-at-bol))) - (search-forward ",") - (setq startpos (read (current-buffer))) + + ;; from here down, synched with FSF 20.7 + ;; etags-snarf-tag and etags-goto-tag-location. --ben + + (if (save-excursion + (forward-line -1) + (looking-at "\f\n")) + (progn + ;; The match was for a source file name, not any tag + ;; within a file. Give text of t, meaning to go exactly + ;; to the location we specify, the beginning of the file. + (setq linebeg t + line nil + startpos 1) + (setq file + (expand-file-name (file-of-tag) + ;; In XEmacs, this needs to be + ;; relative to: + (or (file-name-directory (car tag-tables)) + "./")))) + (search-forward "\C-?") + (setq file + (expand-file-name (file-of-tag) + ;; In XEmacs, this needs to be + ;; relative to: + (or (file-name-directory (car tag-tables)) + "./"))) + (setq linebeg (buffer-substring (1- (point)) (point-at-bol))) + ;; Skip explicit tag name if present. + (search-forward "\001" (save-excursion (forward-line 1) (point)) t) + (if (looking-at "[0-9]") + (setq line (string-to-int (buffer-substring + (point) + (progn (skip-chars-forward "0-9") + (point)))))) + (search-forward ",") + (if (looking-at "[0-9]") + (setq startpos (string-to-int (buffer-substring + (point) + (progn (skip-chars-forward "0-9") + (point))))))) + ;; Leave point on the next line of the tags file. + (forward-line 1) (setq last-tag-data (nconc (list tagname (point) tag-table-currently-matching-exact) tag-tables)) (setq buf (find-file-noselect file)) + + ;; LINEBEG is the initial part of a line containing the tag and + ;; STARTPOS is the character position of LINEBEG within the file + ;; (starting from 1); LINE is the line number. If LINEBEG is t, + ;; it means the tag refers to exactly LINE or STARTPOS + ;; (whichever is present, LINE having preference, no searching). + ;; Either LINE or STARTPOS may be nil; STARTPOS is used if + ;; present. If the tag isn't exactly at the given position then + ;; look around that position using a search window which expands + ;; until it hits the start of file. + (with-current-buffer buf (save-excursion (save-restriction (widen) - ;; Here we search for PAT in the range [STARTPOS - OFFSET, - ;; STARTPOS + OFFSET], with increasing values of OFFSET. - ;; - ;; We used to set the initial offset to 1000, but the - ;; actual sources show that finer-grained control is - ;; needed (e.g. two `hash_string's in src/symbols.c.) So, - ;; I changed 100 to 100, and (* 3 offset) to (* 5 offset). - (setq offset 100) - (setq pat (concat "^" (regexp-quote linebeg))) - (or startpos (setq startpos (point-min))) - (while (and (not found) - (progn - (goto-char (- startpos offset)) - (not (bobp)))) - (setq found (re-search-forward pat (+ startpos offset) t)) - (setq offset (* 5 offset))) - ;; Finally, try finding it anywhere in the buffer. - (or found - (re-search-forward pat nil t) - (error "%s not found in %s" pat file)) - (beginning-of-line) - (setq startpos (point))))) + (if (eq linebeg t) + ;; Direct file tag. + (cond (line (goto-line line)) + (startpos (goto-char startpos)) + (t (error "etags.el BUG: bogus direct file tag"))) + ;; Here we search for PAT in the range [STARTPOS - OFFSET, + ;; STARTPOS + OFFSET], with increasing values of OFFSET. + ;; + ;; We used to set the initial offset to 1000, but the + ;; actual sources show that finer-grained control is + ;; needed (e.g. two `hash_string's in src/symbols.c.) So, + ;; I changed 1000 to 100, and (* 3 offset) to (* 5 offset). + (setq offset 100) + (setq pat (concat (if (eq selective-display t) + "\\(^\\|\^m\\)" "^") + (regexp-quote linebeg))) + + ;; The character position in the tags table is 0-origin. + ;; Convert it to a 1-origin Emacs character position. + (if startpos (setq startpos (1+ startpos))) + ;; If no char pos was given, try the given line number. + (or startpos + (if line + (setq startpos (progn (goto-line line) + (point))))) + (or startpos + (setq startpos (point-min))) + ;; First see if the tag is right at the specified location. + (goto-char startpos) + (setq found (looking-at pat)) + (while (and (not found) + (progn + (goto-char (- startpos offset)) + (not (bobp)))) + (setq found + (re-search-forward pat (+ startpos offset) t) + offset (* 5 offset))) ; expand search window + ;; Finally, try finding it anywhere in the buffer. + (or found + (re-search-forward pat nil t) + (error "Rerun etags: `%s' not found in %s" + pat file)))) + ;; Position point at the right place + ;; if the search string matched an extra Ctrl-m at the beginning. + (and (eq selective-display t) + (looking-at "\^m") + (forward-char 1)) + (beginning-of-line) + (setq startpos (point)))) (cons buf startpos)))) ;;;###autoload @@ -761,8 +929,7 @@ the tag. This version of this function supports multiple active tags tables, -and completion. See also the commands `\\[push-tag-mark]' and -`\\[pop-tag-mark]'. +and completion. Variables of note: @@ -1171,7 +1338,7 @@ (defcustom tag-mark-stack-max 16 "*The maximum number of elements kept on the mark-stack used by tags-search. See also the commands `\\[push-tag-mark]' and -`\\[pop-tag-mark]'." +and `\\[pop-tag-mark]'." :type 'integer :group 'etags) diff -u -r -N xemacs-21.4.15/lisp/faces.el xemacs-21.4.16/lisp/faces.el --- xemacs-21.4.15/lisp/faces.el 2002-08-20 07:34:37.000000000 -0400 +++ xemacs-21.4.16/lisp/faces.el 2004-06-22 21:54:36.000000000 -0400 @@ -1778,7 +1778,7 @@ (make-face 'underline "Underlined text.") (or (face-differs-from-default-p 'underline) (set-face-underline-p 'underline t 'global '(default))) -(make-face 'zmacs-region "Used on highlightes region between point and mark.") +(make-face 'zmacs-region "Used on highlighted region between point and mark.") (make-face 'isearch "Used on region matched by isearch.") (make-face 'isearch-secondary "Face to use for highlighting all matches.") (make-face 'list-mode-item-selected diff -u -r -N xemacs-21.4.15/lisp/gnuserv.el xemacs-21.4.16/lisp/gnuserv.el --- xemacs-21.4.15/lisp/gnuserv.el 2001-04-12 14:21:21.000000000 -0400 +++ xemacs-21.4.16/lisp/gnuserv.el 2004-04-19 22:56:28.000000000 -0400 @@ -89,6 +89,14 @@ :group 'processes :group 'terminals) +;;;###autoload +(defcustom gnuserv-mode-line-string " Server" + "*String to display in the modeline when Gnuserv is active. +Set this to nil if you don't want a modeline indicator." +:type '(choice string + (const :tag "none" nil)) +:group 'gnuserv) + ;; Provide the old variables as aliases, to avoid breaking .emacs ;; files. However, they are obsolete and should be converted to the @@ -261,9 +269,10 @@ ;; We want the client-infested buffers to have some modeline ;; identification, so we'll make a "minor mode". (defvar gnuserv-minor-mode nil) -(make-variable-buffer-local 'gnuserv-mode) -(pushnew '(gnuserv-minor-mode " Server") minor-mode-alist - :test 'equal) +(make-variable-buffer-local 'gnuserv-minor-mode) +;;(pushnew '(gnuserv-minor-mode "Server") minor-mode-alist +;; :test 'equal) +(add-minor-mode 'gnuserv-minor-mode 'gnuserv-mode-line-string) ;; Sample gnuserv-frame functions @@ -399,6 +408,13 @@ (eval form)) + +(defun make-x-device-with-gtk-fallback (device) + (or (condition-case () + (make-x-device device) + (error nil)) + (make-gtk-device))) + ;; "Execute" a client connection, called by gnuclient. This is the ;; backbone of gnuserv.el. (defun gnuserv-edit-files (type list &rest flags) @@ -431,7 +447,7 @@ (case (car type) (tty (apply 'make-tty-device (cdr type))) (gtk (make-gtk-device)) - (x (make-x-device (cadr type))) + (x (make-x-device-with-gtk-fallback (cadr type))) (mswindows (make-mswindows-device)) (t (error "Invalid device type")))) (t diff -u -r -N xemacs-21.4.15/lisp/gtk-widgets.el xemacs-21.4.16/lisp/gtk-widgets.el --- xemacs-21.4.15/lisp/gtk-widgets.el 2001-04-12 14:21:25.000000000 -0400 +++ xemacs-21.4.16/lisp/gtk-widgets.el 2004-03-25 16:08:09.000000000 -0500 @@ -31,6 +31,8 @@ (eval-and-compile (require 'gtk-ffi)) +(gtk-import-function GtkAccelGroup gtk_accel_group_new) + (gtk-import-function GtkType gtk_accel_label_get_type) (gtk-import-function GtkWidget gtk_accel_label_new GtkString) (gtk-import-function guint gtk_accel_label_get_accel_width GtkAccelLabel) diff -u -r -N xemacs-21.4.15/lisp/help-macro.el xemacs-21.4.16/lisp/help-macro.el --- xemacs-21.4.15/lisp/help-macro.el 1998-01-25 04:54:45.000000000 -0500 +++ xemacs-21.4.16/lisp/help-macro.el 2004-09-22 23:02:31.000000000 -0400 @@ -108,7 +108,11 @@ (substitute-command-keys ,help-line))) (when three-step-help (message "%s" line-prompt)) - (let* ((help-screen (documentation (quote ,fname))) + (let* ((help-screen + (condition-case nil + (documentation (quote ,fname)) + (void-function "(alias for undefined function)") + (error "(unexpected error from `documention')"))) ;; We bind overriding-local-map for very small ;; sections, *excluding* where we switch buffers and ;; where we execute the chosen help command. diff -u -r -N xemacs-21.4.15/lisp/help.el xemacs-21.4.16/lisp/help.el --- xemacs-21.4.15/lisp/help.el 2003-11-05 20:26:34.000000000 -0500 +++ xemacs-21.4.16/lisp/help.el 2004-09-22 23:02:31.000000000 -0400 @@ -1075,7 +1075,8 @@ (let ((doc (condition-case nil (or (documentation function) (gettext "not documented")) - (void-function "")))) + (void-function "(alias for undefined function)") + (error "(unexpected error from `documention')")))) (if (and strip-arglist (string-match "[\n\t ]*\narguments: ?(\\(.*\\))\n?\\'" doc)) (setq doc (substring doc 0 (match-beginning 0)))) @@ -1185,7 +1186,10 @@ (documentation-property sym 'variable-documentation t))) (fun (and sym (fboundp sym) - (documentation sym t)))) + (condition-case nil + (documentation sym t) + (void-function "(alias for undefined function)") + (error "(unexpected error from `documention')"))))) (when (or var fun) (let ((ex (make-extent b e))) (require 'hyper-apropos) diff -u -r -N xemacs-21.4.15/lisp/hyper-apropos.el xemacs-21.4.16/lisp/hyper-apropos.el --- xemacs-21.4.15/lisp/hyper-apropos.el 2001-04-12 14:21:27.000000000 -0400 +++ xemacs-21.4.16/lisp/hyper-apropos.el 2004-09-22 23:02:32.000000000 -0400 @@ -310,10 +310,12 @@ (if (natnump l) l 0))) (and hyper-apropos-show-brief-docs (setq doc - ;; A symbol's function slot can point to an unbound symbol. - ;; In that case, `documentation' will fail. - (ignore-errors - (documentation fn))) + ;; A symbol's function slot can point to an unbound symbol. + ;; In that case, `documentation' will fail. + (condition-case nil + (documentation fn) + (void-function "(alias for undefined function)") + (error "(unexpected error from `documentation')"))) (if (string-match "^([^\n\t )]+[\t ]*\\([^\n)]+\\)?)\\(:[\t ]*\\|\n?\\'\\)" doc) @@ -726,7 +728,12 @@ local (current-local-map) global (current-global-map) obsolete (get symbol 'byte-obsolete-info) - doc (or (documentation symbol) "function not documented")) + doc (or (condition-case nil + (documentation symbol) + (void-function + "(alias for undefined function)") + (error "(unexpected error from `documention')")) + "function not documented")) (save-excursion (set-buffer hyper-apropos-help-buf) (goto-char (point-max)) diff -u -r -N xemacs-21.4.15/lisp/isearch-mode.el xemacs-21.4.16/lisp/isearch-mode.el --- xemacs-21.4.15/lisp/isearch-mode.el 2003-01-14 22:55:56.000000000 -0500 +++ xemacs-21.4.16/lisp/isearch-mode.el 2004-04-19 22:56:29.000000000 -0400 @@ -873,7 +873,7 @@ ;; and really do quit. (progn (goto-char isearch-opoint) (setq isearch-success nil) - (isearch-done t) ; exit isearch + (isearch-done) ; exit and push target string (signal 'quit '(isearch))) ; and pass on quit signal ;; If search is failing, or has an incomplete regexp, ;; rub out until it is once more successful. diff -u -r -N xemacs-21.4.15/lisp/list-mode.el xemacs-21.4.16/lisp/list-mode.el --- xemacs-21.4.15/lisp/list-mode.el 2002-08-20 07:34:50.000000000 -0400 +++ xemacs-21.4.16/lisp/list-mode.el 2004-04-25 17:02:22.000000000 -0400 @@ -330,19 +330,13 @@ (let ((win-width (or cl-window-width (if bufferp - ;; This needs fixing for the case of windows - ;; that aren't the same width's the frame. - ;; Sadly, the window it will appear in is not known - ;; until after the text has been made. - ;; We have to use last-nonminibuf-frame here ;; and not selected-frame because if a ;; minibuffer-only frame is being used it will ;; be the selected-frame at the point this is ;; run. We keep the selected-frame call around ;; just in case. - (frame-width (or (last-nonminibuf-frame) - (selected-frame))) + (window-width (get-lru-window (last-nonminibuf-frame))) 80)))) (let ((count 0) (max-width 0) diff -u -r -N xemacs-21.4.15/lisp/menubar-items.el xemacs-21.4.16/lisp/menubar-items.el --- xemacs-21.4.15/lisp/menubar-items.el 2004-01-26 21:58:12.000000000 -0500 +++ xemacs-21.4.16/lisp/menubar-items.el 2004-04-19 22:56:29.000000000 -0400 @@ -1570,7 +1570,7 @@ (progn (find-file (or user-init-file "~/.xemacs/init.el")) (or (eq major-mode 'emacs-lisp-mode) (emacs-lisp-mode)))] - ["%_Save Options to Init File" customize-save-customized] + ["%_Save Options to Custom File" customize-save-customized] ) ("%_Buffers" diff -u -r -N xemacs-21.4.15/lisp/mule/japanese.el xemacs-21.4.16/lisp/mule/japanese.el --- xemacs-21.4.15/lisp/mule/japanese.el 2001-04-12 14:21:45.000000000 -0400 +++ xemacs-21.4.16/lisp/mule/japanese.el 2004-06-11 22:56:09.000000000 -0400 @@ -97,8 +97,10 @@ "$B!#(B" "\\)" "[ \t\n]*")) -(setq paragraph-start "^[ $B!!(B\t\n\f]") -(setq paragraph-separate "^[ $B!!(B\t\f]*$") + +;; allow paragraphs to start with a zenkaku space +(setq paragraph-start "[ $B!!(B\t\n\f]") +(setq paragraph-separate "[ $B!!(B\t\f]*$") ;; EGG specific setup (define-egg-environment 'japanese diff -u -r -N xemacs-21.4.15/lisp/package-admin.el xemacs-21.4.16/lisp/package-admin.el --- xemacs-21.4.15/lisp/package-admin.el 2004-01-26 21:58:13.000000000 -0500 +++ xemacs-21.4.16/lisp/package-admin.el 2004-02-19 21:25:53.000000000 -0500 @@ -173,14 +173,16 @@ (let ((path-list (paths-decode-directory-path env-value 'drop-empties))) (cond ((eq type 'std) (while path-list - (if (equal (substring (car path-list) -16) - (concat "xemacs-packages" (char-to-string directory-sep-char))) + (if (equal (file-name-nondirectory + (directory-file-name (car path-list))) + "xemacs-packages") (setq top-dir (car path-list))) (setq path-list (cdr path-list)))) ((eq type 'mule) (while path-list - (if (equal (substring (car path-list) -14) - (concat "mule-packages" (char-to-string directory-sep-char))) + (if (equal (file-name-nondirectory + (directory-file-name (car path-list))) + "mule-packages") (setq top-dir (car path-list))) (setq path-list (cdr path-list))))))) ;; Wasn't in the environment, try `user-init-directory' if @@ -200,14 +202,16 @@ (packages-compute-package-locations user-init-directory))))) (cond ((eq type 'std) (while path-list - (if (equal (substring (car path-list) -16) - (concat "xemacs-packages" (char-to-string directory-sep-char))) + (if (equal (file-name-nondirectory + (directory-file-name (car path-list))) + "xemacs-packages") (setq top-dir (car path-list))) (setq path-list (cdr path-list)))) ((eq type 'mule) (while path-list - (if (equal (substring (car path-list) -14) - (concat "mule-packages" (char-to-string directory-sep-char))) + (if (equal (file-name-nondirectory + (directory-file-name (car path-list))) + "mule-packages") (setq top-dir (car path-list))) (setq path-list (cdr path-list))))))) ;; Now return either the directory or nil. diff -u -r -N xemacs-21.4.15/lisp/package-get.el xemacs-21.4.16/lisp/package-get.el --- xemacs-21.4.15/lisp/package-get.el 2004-01-26 21:58:13.000000000 -0500 +++ xemacs-21.4.16/lisp/package-get.el 2004-06-27 21:19:56.000000000 -0400 @@ -171,8 +171,7 @@ ;;;###autoload (defcustom package-get-package-index-file-location - (or (getenv "EMACSPACKAGEPATH") - user-init-directory) + (car (split-path (or (getenv "EMACSPACKAGEPATH") user-init-directory))) "*The directory where the package-index file can be found." :type 'directory :group 'package-get) @@ -414,16 +413,12 @@ result nil))) -(defcustom package-get-require-signed-base-updates (package-get-pgp-available-p) +(defcustom package-get-require-signed-base-updates nil "*If non-nil, try to verify the package index database via PGP. If nil, no PGP verification is done. If the package index database entries are not PGP signed and this variable is non-nil, require user -confirmation to continue with the package-get procedure. - -The default for this variable is the return value of -`package-get-pgp-available-p', non-nil if both the \"Mailcrypt\" -package and a suitable PGP executable are available, nil otherwise." +confirmation to continue with the package-get procedure." :type 'boolean :group 'package-get) @@ -576,6 +571,10 @@ (package-get-maybe-save-index db-file))) (kill-buffer buf)))) +;; This is here because the `process-error' datum doesn't exist in +;; 21.4. --SY. +(define-error 'process-error "Process error") + ;;;###autoload (defun package-get-update-base-from-buffer (&optional buf) "Update the package-get database with entries from BUFFER. @@ -583,7 +582,9 @@ used interactively, for example from a mail or news buffer." (interactive) (setq buf (or buf (current-buffer))) - (let (content-beg content-end) + (let ((coding-system-for-read 'binary) + (coding-system-for-write 'binary) + content-beg content-end) (save-excursion (set-buffer buf) (goto-char (point-min)) diff -u -r -N xemacs-21.4.15/lisp/package-ui.el xemacs-21.4.16/lisp/package-ui.el --- xemacs-21.4.15/lisp/package-ui.el 2004-01-26 21:58:13.000000000 -0500 +++ xemacs-21.4.16/lisp/package-ui.el 2004-06-21 21:49:47.000000000 -0400 @@ -480,8 +480,7 @@ (if (featurep 'balloon-help) (progn (setq balloon (format " -Package Information: [For package: \"%s\"] -================ +Package Information: [For package: \"%s\"]\n================ Installed Upstream Ver: %s Available Upstream Ver: %s Maintainer : %s Released : %s diff -u -r -N xemacs-21.4.15/lisp/packages.el xemacs-21.4.16/lisp/packages.el --- xemacs-21.4.15/lisp/packages.el 2004-01-26 21:58:13.000000000 -0500 +++ xemacs-21.4.16/lisp/packages.el 2004-09-22 23:02:32.000000000 -0400 @@ -140,7 +140,7 @@ ((< (package-get-key name :version) version) (error 'search-failed (format "Need version %g of package %s, got version %g" - version name (cdr pkg)))) + version name (package-get-key name :version)))) (t t)))) (defun package-delete-name (name) diff -u -r -N xemacs-21.4.15/lisp/process.el xemacs-21.4.16/lisp/process.el --- xemacs-21.4.15/lisp/process.el 2002-08-20 07:35:02.000000000 -0400 +++ xemacs-21.4.16/lisp/process.el 2004-03-25 16:08:10.000000000 -0500 @@ -277,7 +277,7 @@ (if (string-match "[ \t]*&[ \t]*$" command) ;; Command ending with ampersand means asynchronous. (progn - (background (substring command 0 (match-beginning 0)))) + (background (substring command 0 (match-beginning 0)) output-buffer)) (shell-command-on-region (point) (point) command output-buffer))))) ;; We have a sentinel to prevent insertion of a termination message diff -u -r -N xemacs-21.4.15/lisp/subr.el xemacs-21.4.16/lisp/subr.el --- xemacs-21.4.15/lisp/subr.el 2002-08-20 07:35:08.000000000 -0400 +++ xemacs-21.4.16/lisp/subr.el 2004-06-22 21:54:37.000000000 -0400 @@ -25,7 +25,7 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Synched up with: FSF 19.34. +;;; Synched up with: FSF 19.34. Some things synched up with later versions. ;;; Commentary: @@ -403,22 +403,70 @@ str newstr)) str))) -(defun split-string (string &optional pattern) - "Return a list of substrings of STRING which are separated by PATTERN. -If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"." - (or pattern - (setq pattern "[ \f\t\n\r\v]+")) - (let (parts (start 0) (len (length string))) - (if (string-match pattern string) - (setq parts (cons (substring string 0 (match-beginning 0)) parts) - start (match-end 0))) - (while (and (< start len) - (string-match pattern string (if (> start (match-beginning 0)) - start - (1+ start)))) - (setq parts (cons (substring string start (match-beginning 0)) parts) - start (match-end 0))) - (nreverse (cons (substring string start) parts)))) +(defconst split-string-default-separators "[ \f\t\n\r\v]+" + "The default value of separators for `split-string'. + +A regexp matching strings of whitespace. May be locale-dependent +\(as yet unimplemented). Should not match non-breaking spaces. + +Warning: binding this to a different value and using it as default is +likely to have undesired semantics.") + +;; specification for `split-string' agreed with rms 2003-04-23 +;; xemacs design <87vfx5vor0.fsf@tleepslib.sk.tsukuba.ac.jp> + +;; The specification says that if both SEPARATORS and OMIT-NULLS are +;; defaulted, OMIT-NULLS should be treated as t. Simplifying the logical +;; expression leads to the equivalent implementation that if SEPARATORS +;; is defaulted, OMIT-NULLS is treated as t. + +(defun split-string (string &optional separators omit-nulls) + "Splits STRING into substrings bounded by matches for SEPARATORS. + +The beginning and end of STRING, and each match for SEPARATORS, are +splitting points. The substrings matching SEPARATORS are removed, and +the substrings between the splitting points are collected as a list, +which is returned. + +If SEPARATORS is non-nil, it should be a regular expression matching text +which separates, but is not part of, the substrings. If nil it defaults to +`split-string-default-separators', normally \"[ \\f\\t\\n\\r\\v]+\", and +OMIT-NULLS is forced to t. + +If OMIT-NULLS is t, zero-length substrings are omitted from the list \(so +that for the default value of SEPARATORS leading and trailing whitespace +are effectively trimmed). If nil, all zero-length substrings are retained, +which correctly parses CSV format, for example. + +Note that the effect of `(split-string STRING)' is the same as +`(split-string STRING split-string-default-separators t)'). In the rare +case that you wish to retain zero-length substrings when splitting on +whitespace, use `(split-string STRING split-string-default-separators nil)'. + +Modifies the match data when successful; use `save-match-data' if necessary." + + (let ((keep-nulls (not (if separators omit-nulls t))) + (rexp (or separators split-string-default-separators)) + (start 0) + notfirst + (list nil)) + (while (and (string-match rexp string + (if (and notfirst + (= start (match-beginning 0)) + (< start (length string))) + (1+ start) start)) + (< start (length string))) + (setq notfirst t) + (if (or keep-nulls (< start (match-beginning 0))) + (setq list + (cons (substring string start (match-beginning 0)) + list))) + (setq start (match-end 0))) + (if (or keep-nulls (< start (length string))) + (setq list + (cons (substring string start) + list))) + (nreverse list))) ;; #### #### #### AAaargh! Must be in C, because it is used insanely ;; early in the bootstrap process. @@ -487,6 +535,43 @@ (and (buffer-name ,temp-buffer) (kill-buffer ,temp-buffer)))))) +;; BEGIN FSF 21.3 SYNCH +(defmacro with-local-quit (&rest body) + "Execute BODY with `inhibit-quit' temporarily bound to nil." + `(condition-case nil + (let ((inhibit-quit nil)) + ,@body) + (quit (setq quit-flag t)))) + +(defvar delay-mode-hooks nil + "If non-nil, `run-mode-hooks' should delay running the hooks.") +(defvar delayed-mode-hooks nil + "List of delayed mode hooks waiting to be run.") +(make-variable-buffer-local 'delayed-mode-hooks) +(put 'delay-mode-hooks 'permanent-local t) + +(defun run-mode-hooks (&rest hooks) + "Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS. +Execution is delayed if `delay-mode-hooks' is non-nil. +Major mode functions should use this." + (if delay-mode-hooks + ;; Delaying case. + (dolist (hook hooks) + (push hook delayed-mode-hooks)) + ;; Normal case, just run the hook as before plus any delayed hooks. + (setq hooks (nconc (nreverse delayed-mode-hooks) hooks)) + (setq delayed-mode-hooks nil) + (apply 'run-hooks hooks))) + +(defmacro delay-mode-hooks (&rest body) + "Execute BODY, but delay any `run-mode-hooks'. +Only affects hooks run in the current buffer." + `(progn + (make-local-variable 'delay-mode-hooks) + (let ((delay-mode-hooks t)) + ,@body))) +;; END FSF 21.3 SYNCH + ;; Moved from mule-coding.el. (defmacro with-string-as-buffer-contents (str &rest body) "With the contents of the current buffer being STR, run BODY. diff -u -r -N xemacs-21.4.15/lisp/widgets-gtk.el xemacs-21.4.16/lisp/widgets-gtk.el --- xemacs-21.4.15/lisp/widgets-gtk.el 2001-04-12 14:21:39.000000000 -0400 +++ xemacs-21.4.16/lisp/widgets-gtk.el 2004-12-04 22:26:08.000000000 -0500 @@ -30,18 +30,34 @@ (defvar foo) -(defun gtk-widget-instantiate-button-internal (plist callback) +(defun gtk-widget-get-callback (widget plist instance) + (let ((cb (plist-get plist :callback)) + (ex (plist-get plist :callback-ex)) + (real-cb nil)) + (cond + (ex + (gtk-signal-connect widget 'button-release-event + (lambda (widget event data) + (put widget 'last-event event))) + `(lambda (widget &rest ignored) + (funcall ,ex ,instance (get widget 'last-event)))) + (cb + `(lambda (widget &rest ignored) + (if (functionp ,real-cb) + (funcall ,real-cb) + (eval ,real-cb)))) + (t + nil)))) + +(defun gtk-widget-instantiate-button-internal (plist instance) (let* ((type (or (plist-get plist :style) 'button)) (label (or (plist-get plist :descriptor) (symbol-name type))) (widget nil)) (case type (button (setq widget (gtk-button-new-with-label label)) - (gtk-signal-connect widget 'clicked (lambda (wid real-cb) - (if (functionp real-cb) - (funcall real-cb) - (eval real-cb))) - callback)) + (gtk-signal-connect widget 'clicked + (gtk-widget-get-callback widget plist instance))) (radio (let ((aux nil) (selected-p (plist-get plist :selected))) @@ -51,33 +67,25 @@ "bogus sibling")) (gtk-toggle-button-set-active widget (eval selected-p)) (gtk-signal-connect widget 'toggled - (lambda (wid data) - ;; data is (real-cb . sibling) - ) - (cons callback aux)))) + (gtk-widget-get-callback widget plist instance) aux))) (otherwise ;; Check boxes (setq widget (gtk-check-button-new-with-label label)) (gtk-toggle-button-set-active widget (eval (plist-get plist :selected))) (gtk-signal-connect widget 'toggled - (lambda (wid real-cb) - (if (functionp real-cb) - (funcall real-cb) - (eval real-cb))) - callback))) - + (gtk-widget-get-callback widget plist instance)))) (gtk-widget-show-all widget) widget)) (defun gtk-widget-instantiate-notebook-internal (plist callback) (let ((widget (gtk-notebook-new)) (items (plist-get plist :items))) - (while items - (gtk-notebook-append-page widget - (gtk-vbox-new nil 3) - (gtk-label-new (aref (car items) 0))) - (setq items (cdr items))) +; (while items +; (gtk-notebook-append-page widget +; (gtk-vbox-new nil 3) +; (gtk-label-new (aref (car items) 0))) +; (setq items (cdr items))) widget)) (defun gtk-widget-instantiate-progress-internal (plist callback) @@ -117,12 +125,12 @@ (let* ((type (aref instantiator 0)) (plist (cdr (map 'list 'identity instantiator))) (widget (funcall (or (get type 'instantiator) 'ignore) - plist (or (plist-get plist :callback) 'ignore)))) - (add-timeout 0.1 (lambda (obj) - (gtk-widget-set-style obj - (gtk-widget-get-style - (frame-property nil 'text-widget)))) - widget) + plist instance))) +; (add-timeout 0.1 (lambda (obj) +; (gtk-widget-set-style obj +; (gtk-widget-get-style +; (frame-property nil 'text-widget)))) +; widget) (setq x widget) widget)) diff -u -r -N xemacs-21.4.15/lwlib/ChangeLog xemacs-21.4.16/lwlib/ChangeLog --- xemacs-21.4.15/lwlib/ChangeLog 2004-02-02 22:01:42.000000000 -0500 +++ xemacs-21.4.16/lwlib/ChangeLog 2004-12-05 20:07:27.000000000 -0500 @@ -1,3 +1,13 @@ +2004-12-05 Vin Shelton + + * XEmacs 21.4.16 is released + +2004-04-23 Jerry James + + * xlwradio.c (RadioExpose): Do not blindly copy one GC over + another. It messes up the ref counts and is wrong for radio + buttons in any case. + 2004-02-02 Vin Shelton * XEmacs 21.4.15 is released diff -u -r -N xemacs-21.4.15/lwlib/xlwradio.c xemacs-21.4.16/lwlib/xlwradio.c --- xemacs-21.4.15/lwlib/xlwradio.c 2001-04-12 14:21:55.000000000 -0400 +++ xemacs-21.4.16/lwlib/xlwradio.c 2004-04-23 20:23:07.000000000 -0400 @@ -305,13 +305,6 @@ * but it bears thinking on. */ - /* Command widget may sometimes override the label GC in order - * to draw inverse video. We don't use inverse video, so we need - * to restore the label's normal GC. - */ - rw->label.normal_GC = rw->command.normal_GC ; - - /* Let label widget draw the label. If there was an lbm_x * field, we could let Label draw the bitmap too. But there * isn't, so we need to temporarily remove the bitmap and diff -u -r -N xemacs-21.4.15/man/ChangeLog xemacs-21.4.16/man/ChangeLog --- xemacs-21.4.15/man/ChangeLog 2004-02-02 22:01:42.000000000 -0500 +++ xemacs-21.4.16/man/ChangeLog 2004-12-05 20:07:27.000000000 -0500 @@ -1,3 +1,58 @@ +2004-12-05 Vin Shelton + + * XEmacs 21.4.16 is released + +2003-07-18 Alexey Mahotkin + + * lispref/windows.texi (Basic Windows): Fix typo. + +2004-09-08 Stephen J. Turnbull + + * lispref/searching.texi (Syntax of Regexps): Add example of use + of shy groups in variable subexpression, correct rumor that there + may be substantial performance gain. + +2004-08-13 Stephen J. Turnbull + + * lispref/positions.texi (Text Lines): makeinfo doesn't like Note:. + +2004-03-31 Stephen J. Turnbull + + * xemacs/help.texi (Misc Help): Info-goto-emacs-key-command-node + to function index. Document Info-goto-emacs-command-node. + +2004-06-29 Stephen J. Turnbull + + * internals/internals.texi (Modules for Other Aspects of the Lisp + Interpreter and Object System): Add description of Sextword syntax + class (now obsolete). + +2004-06-20 Stephen J. Turnbull + + * internals/internals.texi (Techniques for XEmacs Developers): Be + specific when discussing optimization. + (Techniques for XEmacs Developers): Fragments that are meaningless + by themselves or contain placeholders should be @samp, not @code. + (Modules for Regression Testing): Add tag-tests.el to list. + +2004-07-05 Stephen J. Turnbull + + * xemacs-faq.texi (Q3.10.2): Mention that `pending-delete' is in + the "pc" package. + +2004-06-07 Jerry James + + * lispref/modes.texi (Major Modes): Document -mode functions, and + the use of a nil argument to defined-derived mode. + * lispref/modes.texi (Major Mode Conventions): Describe the use of + delay-mode-hooks and define-derived-mode. + * lispref/modes.texi (Derived Modes): Warn against the use of + interactive specs in derived mode definitions. + * lispref/modes.texi (Hooks): Document run-mode-hooks, + delay-mode-hooks, run-hook-with-args, + run-hook-with-args-until-failure, and + run-hook-with-args-until-success. + 2004-02-02 Vin Shelton * XEmacs 21.4.15 is released diff -u -r -N xemacs-21.4.15/man/internals/internals.texi xemacs-21.4.16/man/internals/internals.texi --- xemacs-21.4.15/man/internals/internals.texi 2003-10-23 23:49:51.000000000 -0400 +++ xemacs-21.4.16/man/internals/internals.texi 2004-08-16 20:54:39.000000000 -0400 @@ -3109,7 +3109,7 @@ @item Speed up syntax highlighting. It was suggested that ``maybe moving some of the syntax highlighting capabilities into C would make a -difference.'' Wrong idea, I think. When processing one large file a +difference.'' Wrong idea, I think. When processing one 400kB file a particular low-level routine was being called 40 @emph{million} times simply for @emph{one} call to @code{newline-and-indent}. Syntax highlighting needs to be rewritten to use a reliable, fast parser, then @@ -3248,21 +3248,24 @@ @file{.c} files should @code{#include "lisp.h"} second. @item -Generated header files should be included using the @code{#include <...>} syntax, -not the @code{#include "..."} syntax. The generated headers are: +Generated header files should be included using the @samp{#include <...>} +syntax, not the @samp{#include "..."} syntax. The generated headers are: @file{config.h sheap-adjust.h paths.h Emacs.ad.h} -The basic rule is that you should assume builds using @code{--srcdir} -and the @code{#include <...>} syntax needs to be used when the +The basic rule is that you should assume builds using @samp{--srcdir} +and the @samp{#include <...>} syntax needs to be used when the to-be-included generated file is in a potentially different directory -@emph{at compile time}. The non-obvious C rule is that @code{#include "..."} -means to search for the included file in the same directory as the -including file, @emph{not} in the current directory. +@emph{at compile time}. The non-obvious C rule is that +@samp{#include "..."} means to search for the included file in the same +directory as the including file, @emph{not} in the current directory. +Normally this is not a problem but when building with @samp{--srcdir}, +@file{make} will search the @samp{VPATH} for you, while the C compiler +knows nothing about it. @item -Header files should @emph{not} include @code{} and -@code{"lisp.h"}. It is the responsibility of the @file{.c} files that +Header files should @emph{not} include @samp{} and +@samp{"lisp.h"}. It is the responsibility of the @file{.c} files that use it to do so. @end itemize @@ -4569,6 +4572,37 @@ sequence'' @emph{flag}. The ``comment-end'' class allows the scanner to determine that no second character is needed to terminate the comment. +There used to be a syntax class @samp{Sextword}. A character of +@samp{Sextword} class is a word-constituent but a word boundary may +exist between two such characters. Ken'ichi HANDA +explains the purpose of the Sextword syntax category: + +@quotation +Japanese words are not separated by spaces, which makes finding word +boundaries very difficult. Theoretically it's impossible without +using natural language processing techniques. But, by defining +pseudo-words as below (much simplified for letting you understand it +easily) for Japanese, we can have a convenient forward-word function +for Japanese. + +@display +A Japanese word is a sequence of characters that consists of +zero or more Kanji characters followed by zero or more +Hiragana characters. +@end display + +Then, the problem is that now we can't say that a sequence of +word-constituents makes up a word. For instance, both Hiragana "A" +and Kanji "KAN" are word-constituents but the sequence of these two +letters can't be a single word. + +So, we introduced Sextword for Japanese letters. +@end quotation + +There seems to have been some controversy about this category, as it has +been removed, readded, and removed again. Currently neither GNU Emacs +(21.3.99) nor XEmacs (21.5.17) seems to use it. + @example casefiddle.c @@ -5090,8 +5124,8 @@ C I/O functions like @samp{open()} are wrapped so that conversion occurs automatically. -@file{mule.c} provides a few miscellaneous things that should probably -be elsewhere. +@file{mule.c} contains a few miscellaneous things. It currently seems +to be unused and probably should be removed. @@ -5136,6 +5170,7 @@ regexp-tests.el symbol-tests.el syntax-tests.el +tag-tests.el @end example @file{test-harness.el} defines the macros @code{Assert}, @@ -9550,6 +9585,15 @@ image on-screen but the image need not exist at this stage, and multiple screen images can be instantiated from a single glyph. +@c #### find a place for this discussion +@c The decision to make image specifiers a separate type is debatable. +@c In fact, the design decision to create a separate image specifier +@c type, rather than make glyphs themselves be specifiers, is +@c debatable---the other properties of glyphs are rarely used and could +@c conceivably have been incorporated into the glyph's instantiator. +@c The rarely used glyph types (buffer, pointer, icon) could also have +@c been incorporated into the instantiator. + Glyphs are lazily instantiated by calling one of the glyph functions. This usually occurs within redisplay when @code{Fglyph_height} is called. Instantiation causes an image-instance diff -u -r -N xemacs-21.4.15/man/lispref/modes.texi xemacs-21.4.16/man/lispref/modes.texi --- xemacs-21.4.15/man/lispref/modes.texi 2001-04-12 14:22:17.000000000 -0400 +++ xemacs-21.4.16/man/lispref/modes.texi 2004-06-21 21:49:52.000000000 -0400 @@ -31,7 +31,12 @@ @cindex Fundamental mode Major modes specialize XEmacs for editing particular kinds of text. -Each buffer has only one major mode at a time. +Each buffer has only one major mode at a time. For each major mode +there is a function to switch to that mode in the current buffer; its +name should end in @samp{-mode}. These functions work by setting +buffer-local variable bindings and other data associated with the +buffer, such as a local keymap. The effect lasts until you switch +to another major mode in the same buffer. The least specialized major mode is called @dfn{Fundamental mode}. This mode has no mode-specific definitions or variable settings, so each @@ -55,6 +60,11 @@ Text mode except that it provides three additional commands. Its definition is distinct from that of Text mode, but was derived from it. + Even if the new mode is not an obvious derivative of any other mode, +it is convenient to use @code{define-derived-mode} with a @code{nil} +parent argument, since it automatically enforces the most important +coding conventions for you. + Rmail Edit mode is an example of a case where one piece of text is put temporarily into a different major mode so it can be edited in a different way (with ordinary XEmacs commands rather than Rmail). In such @@ -189,6 +199,16 @@ or it may run them earlier. @item +The major mode command may start by calling some other major mode +command (called the @dfn{parent mode}) and then alter some of its +settings. A mode that does this is called a @dfn{derived mode}. The +recommended way to define one is to use @code{define-derived-mode}, +but this is not required. Such a mode should use +@code{delay-mode-hooks} around its entire body, including the call to +the parent mode command and the final call to @code{run-mode-hooks}. +(Using @code{define-derived-mode} does this automatically.) + +@item If something special should be done if the user switches a buffer from this mode to any other major mode, the mode can set a local value for @code{change-major-mode-hook}. @@ -743,6 +763,9 @@ (define-key hypertext-mode-map [down-mouse-3] 'do-hyper-link) @end example + +Do not write an @code{interactive} spec in the definition; +@code{define-derived-mode} does that automatically. @end defmac @node Minor Modes @@ -1398,6 +1421,41 @@ @end example @end defun +@defun run-mode-hooks &rest hookvars +Like @code{run-hooks}, but is affected by the @code{delay-mode-hooks} +macro. +@end defun + +@defmac delay-mode-hooks body... +This macro executes the @var{body} forms but defers all calls to +@code{run-mode-hooks} within them until the end of @var{body}. +This macro enables a derived mode to arrange not to run +its parent modes' mode hooks until the end. +@end defmac + +@defun run-hook-with-args hook &rest args +This function is the way to run an abnormal hook and always call all +of the hook functions. It calls each of the hook functions one by +one, passing each of them the arguments @var{args}. +@end defun + +@defun run-hook-with-args-until-failure hook &rest args +This function is the way to run an abnormal hook until one of the hook +functions fails. It calls each of the hook functions, passing each of +them the arguments @var{args}, until some hook function returns +@code{nil}. It then stops and returns @code{nil}. If none of the +hook functions return @code{nil}, it returns a non-@code{nil} value. +@end defun + +@defun run-hook-with-args-until-success hook &rest args +This function is the way to run an abnormal hook until a hook function +succeeds. It calls each of the hook functions, passing each of them +the arguments @var{args}, until some hook function returns +non-@code{nil}. Then it stops, and returns whatever was returned by +the last hook function that was called. If all hook functions return +@code{nil}, it returns @code{nil} as well. +@end defun + @defun add-hook hook function &optional append local This function is the handy way to add function @var{function} to hook variable @var{hook}. The argument @var{function} may be any valid Lisp diff -u -r -N xemacs-21.4.15/man/lispref/positions.texi xemacs-21.4.16/man/lispref/positions.texi --- xemacs-21.4.15/man/lispref/positions.texi 2001-04-12 14:22:19.000000000 -0400 +++ xemacs-21.4.16/man/lispref/positions.texi 2004-08-16 20:54:40.000000000 -0400 @@ -364,7 +364,7 @@ With optional @var{ignore-invisible-lines-flag} non-@code{nil}, lines collapsed with selective-display are excluded from the line count. -@strong{Note:} The expression to return the current line number is not +@strong{N.B.} The expression to return the current line number is not obvious: @example diff -u -r -N xemacs-21.4.15/man/lispref/searching.texi xemacs-21.4.16/man/lispref/searching.texi --- xemacs-21.4.15/man/lispref/searching.texi 2001-04-12 14:22:20.000000000 -0400 +++ xemacs-21.4.16/man/lispref/searching.texi 2004-09-22 23:03:00.000000000 -0400 @@ -446,7 +446,7 @@ matches the same text that matched the @var{digit}th occurrence of a @samp{\( @dots{} \)} construct. -In other words, after the end of a @samp{\( @dots{} \)} construct. the +In other words, after the end of a @samp{\( @dots{} \)} construct, the matcher remembers the beginning and end of the text matched by that construct. Then, later on in the regular expression, you can use @samp{\} followed by @var{digit} to match that same text, whatever it @@ -473,19 +473,28 @@ This is useful when you need a lot of grouping @samp{\( @dots{} \)} constructs, but only want to remember one or two -- or if you have more than nine groupings and need to use backreferences to refer to -the groupings at the end. +the groupings at the end. It also allows construction of regular +expressions from variable subexpressions that contain varying numbers of +non-capturing subexpressions, without disturbing the group counts for +the main expression. For example -Using @samp{\(?: @dots{} \)} rather than @samp{\( @dots{} \)} when you -don't need the captured substrings ought to speed up your programs some, -since it shortens the code path followed by the regular expression -engine, as well as the amount of memory allocation and string copying it -must do. The actual performance gain to be observed has not been -measured or quantified as of this writing. -@c This is used to good advantage by the font-locking code, and by -@c `regexp-opt.el'. +@example +(let ((sre (if foo "\\(?:bar\\|baz\\)" "quux"))) + (re-search-forward (format "a\\(b+ %s c+\\) d" sre) nil t) + (match-string 1)) +@end example + +It is very tedious to write this kind of code without shy groups, even +if you know what all the alternative subexpressions will look like. -The shy grouping operator has been borrowed from Perl, and has not been -available prior to XEmacs 20.3, nor is it available in FSF Emacs. +Using @samp{\(?: @dots{} \)} rather than @samp{\( @dots{} \)} should +give little performance gain, as the start of each group must be +recorded for the purpose of back-tracking in any case, and no string +copying is done until @code{match-string} is called. + +The shy grouping operator has been borrowed from Perl, and was not +available prior to XEmacs 20.3, and has only been available in GNU Emacs +since version 21. @item \w @cindex @samp{\w} in regexp diff -u -r -N xemacs-21.4.15/man/lispref/text.texi xemacs-21.4.16/man/lispref/text.texi --- xemacs-21.4.15/man/lispref/text.texi 2002-08-20 07:35:51.000000000 -0400 +++ xemacs-21.4.16/man/lispref/text.texi 2004-09-22 23:03:01.000000000 -0400 @@ -2127,6 +2127,7 @@ * Special Properties:: Particular properties with special meanings. * Saving Properties:: Saving text properties in files, and reading them back. +* Fields:: Emacs-compatible text fields. @end menu @node Examining Properties @@ -2459,6 +2460,126 @@ @xref{Format Conversion}, for a related feature. +@node Fields +@subsection Fields +@cindex text fields +@cindex fields + +Emacs supplies a notion of a @emph{text field}, which is a region of +text where every character has the same value of the @code{field} +property. It is used to identify regions of a buffer used for +communicating with an external process, for example. XEmacs supplies a +compatible interface. In XEmacs, the @code{field} property can be set +as either an extent property or a text property, mirroring the Emacs +capability of using either overlays or text properties. + +The field manipulating functions take a buffer position as the +field-identifying argument, defaulting to point. This really means the +field containing that buffer position. Consecutive buffer positions +with no @code{field} property are considered an ``empty'' field. There +is some ambiguity when a specified buffer position falls at the very +beginning or the very end of a field: does it belong to the preceding or +the following field? The answer depends on the openness or closedness +of the corresponding extents (@pxref{Extent Endpoints}). A buffer +position corresponds to the field whose property would be inherited by a +character inserted at that position. If the buffer position is between +an end-open and a start-open extent, then it corresponds to an empty +field at that position, since an inserted character will belong to +neither extent. + +@defvar inhibit-field-text-motion +This variable controls whether the text motion commands notice fields or +not. When it is nil (the default), commands such as beginning-of-line +will try to move only within fields. +@end defvar + +@defun make-field value from to &optional buffer +There is no Emacs counterpart to this function. The default open and +closedness of extents in XEmacs is opposite to the default for Emacs +overlays. Hence, fields based on extents in XEmacs behave differently +from the equivalent fields based on overlays in Emacs. This function +creates a field with value @var{value} over the region @var{from} to +@var{to} in @var{buffer}, which defaults to the current buffer, with the +default Emacs open and closedness. +@end defun + +@defun find-field &optional pos merge-at-boundary beg-limit end-limit +There is no (Lisp-visible) Emacs counterpart to this function. It is +the workhorse for the other functions. It returns a dotted pair +@code{(start . stop)} holding the endpoints of the field matching a +specification. If @var{pos} is non-@code{nil}, it specifies a buffer +position whose enclosing field should be found; otherwise, the value of +point is used. + +If @var{merge-at-boundary} is non-@code{nil}, then two changes are made +to the search algorithm. First, if @var{pos} is at the very first +position of a field, then the beginning of the previous field is +returned instead of the beginning of @var{pos}'s field. Second, if the +value of the @code{field} property at @var{pos} is the symbol +@code{boundary}, then the beginning of the field before the boundary +field and the end of the field after the boundary field are returned. + +If @var{beg-limit} is a buffer position, and the start position that +would be returned is less than @var{beg-limit}, then @var{beg-limit} is +returned instead. Likewise, if @var{end-limit} is a buffer position, +and the stop position that would be returned is greater than +@var{end-limit}, then @var{end-limit} is returned instead. +@end defun + +@defun delete-field &optional pos +Delete the text of the field at @var{pos}. +@end defun + +@defun field-string &optional pos +Return the contents of the field at @var{pos} as a string. +@end defun + +@defun field-string-no-properties &optional pos +Return the contents of the field at @var{pos} as a string, without text +properties. +@end defun + +@defun field-beginning &optional pos escape-from-edge limit +Return the beginning of the field at @var{pos}. If +@var{escape-from-edge} is non-nil and @var{pos} is at the beginning of a +field, then the beginning of the field that ends at @var{pos} is +returned instead. If @var{limit} is a buffer position and the returned +value would be less than @var{limit}, then @var{limit} is returned +instead. +@end defun + +@defun field-end &optional pos escape-from-edge limit +Return the end of the field at @var{pos}. If @var{escape-from-edge} is +non-nil and @var{pos} is at the end of a field, then the end of the +field that begins at @var{pos} is returned instead. If @var{limit} is a +buffer position and the returned value would be greater than +@var{limit}, then @var{limit} is returned instead. +@end defun + +@defun constrain-to-field new-pos old-pos &optional escape-from-edge only-in-line inhibit-capture-property +Return the position closest to @var{new-pos} that is in the same field +as @var{old-pos}. If @var{new-pos} is @code{nil}, then the value of +point is used instead @emph{and} point is set to the value that is +returned. + +If @var{escape-from-edge} is non-@code{nil} and @var{old-pos} is at the +boundary of two fields, then the two adjacent fields are considered one +field. Furthermore, if @var{new-pos} is in a field whose @code{field} +property is the symbol @code{boundary}, then the preceding field, the +boundary field, and the following field are considered one field. + +If @var{only-in-line} is non-@code{nil} and the returned position would +be on a different line than @var{new-pos}, return @var{new-pos} instead. + +If @var{inhibit-capture-property} is non-@code{nil} and the character at +@var{old-pos} has a property of the same name as the value of +@var{inhibit-capture-property}, then all field boundaries are ignored; +i.e., @var{new-pos} is returned. + +If @var{inhibit-field-text-motion} is non-@code{nil}, then all field +boundaries are ignored and this function always returns @var{new-pos}. +@end defun + @node Substitution @section Substituting for a Character Code diff -u -r -N xemacs-21.4.15/man/lispref/windows.texi xemacs-21.4.16/man/lispref/windows.texi --- xemacs-21.4.15/man/lispref/windows.texi 2001-07-25 03:46:15.000000000 -0400 +++ xemacs-21.4.16/man/lispref/windows.texi 2004-12-04 22:26:15.000000000 -0500 @@ -48,7 +48,7 @@ In each frame, at any time, one and only one window is designated as @dfn{selected within the frame}. The frame's cursor appears in that -window. At ant time, one frame is the selected frame; and the window +window. At any time, one frame is the selected frame; and the window selected within that frame is @dfn{the selected window}. The selected window's buffer is usually the current buffer (except when @code{set-buffer} has been used). @xref{Current Buffer}. diff -u -r -N xemacs-21.4.15/man/xemacs/help.texi xemacs-21.4.16/man/xemacs/help.texi --- xemacs-21.4.15/man/xemacs/help.texi 2001-04-12 14:22:28.000000000 -0400 +++ xemacs-21.4.16/man/xemacs/help.texi 2004-08-16 20:54:41.000000000 -0400 @@ -385,13 +385,16 @@ @kindex C-h C-k @findex Info-elisp-ref @findex Info-goto-emacs-command-node +@findex Info-goto-emacs-key-command-node There are two special help commands for accessing XEmacs documentation through Info. @kbd{C-h C-f @var{function} @key{RET}} enters Info and goes straight to the documentation of the XEmacs function @var{function}. @kbd{C-h C-k @var{key}} enters Info and goes straight to the documentation of the key @var{key}. These two keys run the commands @code{Info-elisp-ref} and -@code{Info-goto-emacs-key-command-node}. +@code{Info-goto-emacs-key-command-node}. (GNU Emacs binds @kbd{C-h C-f} +to @code{Info-goto-emacs-command-node}, but this is less helpful to +programmers.) @kindex C-h l @findex view-lossage diff -u -r -N xemacs-21.4.15/man/xemacs-faq.texi xemacs-21.4.16/man/xemacs-faq.texi --- xemacs-21.4.15/man/xemacs-faq.texi 2004-01-26 21:58:16.000000000 -0500 +++ xemacs-21.4.16/man/xemacs-faq.texi 2004-07-06 22:25:51.000000000 -0400 @@ -3955,7 +3955,9 @@ and you press a key to replace the selected region by the key you typed. Usually backspace kills the selected region. -To get this behavior, add the following lines to your @file{init.el}/@file{.emacs}: +To get this behavior, ensure that you have the @file{pc} package +installed, and add the following lines to your +@file{init.el}/@file{.emacs}: @lisp (cond diff -u -r -N xemacs-21.4.15/netinstall/ChangeLog xemacs-21.4.16/netinstall/ChangeLog --- xemacs-21.4.15/netinstall/ChangeLog 2004-02-02 22:01:42.000000000 -0500 +++ xemacs-21.4.16/netinstall/ChangeLog 2004-12-05 20:07:27.000000000 -0500 @@ -1,3 +1,7 @@ +2004-12-05 Vin Shelton + + * XEmacs 21.4.16 is released + 2004-02-02 Vin Shelton * XEmacs 21.4.15 is released diff -u -r -N xemacs-21.4.15/nt/ChangeLog xemacs-21.4.16/nt/ChangeLog --- xemacs-21.4.15/nt/ChangeLog 2004-02-02 22:01:42.000000000 -0500 +++ xemacs-21.4.16/nt/ChangeLog 2004-12-05 20:07:27.000000000 -0500 @@ -1,3 +1,7 @@ +2004-12-05 Vin Shelton + + * XEmacs 21.4.16 is released + 2004-02-02 Vin Shelton * XEmacs 21.4.15 is released diff -u -r -N xemacs-21.4.15/src/ChangeLog xemacs-21.4.16/src/ChangeLog --- xemacs-21.4.15/src/ChangeLog 2004-02-02 22:01:42.000000000 -0500 +++ xemacs-21.4.16/src/ChangeLog 2004-12-05 20:07:28.000000000 -0500 @@ -1,3 +1,214 @@ +2004-12-05 Vin Shelton + + * XEmacs 21.4.16 is released + +2004-12-04 Vin Shelton + + * depend: Regenerated. + +2004-10-07 Stephen J. Turnbull + + * regex.c (re_match_2_internal): Map internal to external + registers. Fixes bug identified by Steve Youngs 2004-09-30 + . + +2004-09-02 Yoshiki Hayashi + + * buffer.c (Frecord_buffer): Make sure the argument is buffer + to fix a crash. Also, check the buffer is live and it + really exists in buffer_list. If the buffer is not in the list, + prepend it. + +2004-09-08 Stephen J. Turnbull + + Fix shy groups by implementing recording of all groups for + repetition and backtracking. Backport from 21.5. + + * regex.h (struct re_pattern_buffer): Add members re_ngroups, + external_to_internal_register, external_to_internal_register_size, + and update comments for re_nsub. + + * regex.c (re_opcode_t): Update comments. + (print_compiled_pattern): Ouput external_to_internal_register, + external_to_internal_register_size, and re_ngroups for debugging. + (INIT_REG_TRANSLATE_SIZE): New manifest constant. + (regex_compile): Update header comment. + Ensure that all groups are recorded so that repeat matches and + backtracking work correctly. Comment related warning for groups > + 255. + (re_search_2): Construct map of API indexes (which count only + nonshy groups) to internal register numbers, and keep it updated. + +2004-07-27 Malcolm Purvis + + * frame-gtk.c (gtk_make_frame_visible): + * frame-gtk.c (gtk_make_frame_invisible): Use map/unmap instead of + show/hide. This is what X uses and is prevents previously hidden + widgets from suddenly reappearing. + * gtk-xemacs.c (gtk_xemacs_paint): + * gtk-xemacs.c (gtk_xemacs_draw): + * gtk-xemacs.c (gtk_xemacs_expose): Only operate if the widget is + drawable. + * scrollbar-gtk.c (gtk_update_scrollbar_instance_status): Force + size and location changes so that they can be seen before the next + idle event. Without this rapid changes to scrollbar properties + are not seen. + +2004-07-02 Malcolm Purvis + + * console-gtk.h: + * console-gtk.h (struct gtk_frame): + * console-gtk.h (FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE): + Add hash tables track tab_control callback data. + Added #defines for GTK object data names. + Declaration of gtk_widget_to_frame(). + * event-gtk.c (enqueue_gtk_dispatch_event) No longer static: + * frame-gtk.c (gtk_widget_to_frame): New. + * frame-gtk.c (gtk_create_widgets): + * frame-gtk.c (allocate_gtk_frame_struct): + * frame-gtk.c (gtk_mark_frame): + Manage frame callbakc hash tables. + * glyphs-gtk.c (gtk_map_subwindow): Fix size and moving bugs. + * glyphs-gtk.c (gtk_redisplay_widget): Use correct size for widgets. + * glyphs-gtk.c (gtk_widget_instantiate_1): Force reconsideration + of widget size. + * glyphs-gtk.c (gtk_widget_query_geometry): New + * glyphs-gtk.c (gtk_register_gui_item): New + * glyphs-gtk.c (gtk_add_tab_item): New + * glyphs-gtk.c (gtk_tab_control_callback): New + * glyphs-gtk.c (gtk_tab_control_instantiate): New + * glyphs-gtk.c (gtk_tab_control_redisplay): Set notebook page. + Use correct list when loading item. + * glyphs-gtk.c (image_instantiator_format_create_glyphs_gtk): + Register new methods. + * gtk-xemacs.c (gtk_xemacs_size_allocate): Use XEmacs size, not + default size, for widgets. + * gui-x.c: Improved comment. + * menubar-gtk.c (__generic_button_callback): Use + gtk_widget_to_frame instead of __get_channel. + * scrollbar-gtk.c: + * ui-gtk.c: Use symbolic names for GTK object data. + +2004-06-23 Ilya N. Golubev + + * s/usg5-4.h (NSIG): Define only inside emacs binary. + +2002-03-04 Stephen J. Turnbull + + * fileio.c (Fwrite_region_internal): Document use of start == Qnil. + +2004-06-16 Malcolm Purvis + + * malloc.c (morecore): siz is a long because in some architectures + (eg ia-64) an int cannot hold the address range. Additional patch + from the SuSe distribution. + +2004-06-13 Malcolm Purvis + + * emacs.c: + * malloc.c: lim_data is a long because in some architectures + (eg ia-64) an int cannot hold the address range. + * mem-limits.h: lim-data is a long. Linux uses getrlimit() + instead of ulimit() because ulimit() always returns -1. + +2004-06-09 Stephen J. Turnbull + + * search.c: Reenable an ansync semaphore. Remove bogus comments. + +2004-06-11 David Kastrup + + * search.c (match_limit): Don't flag an error if match-data + exceeding the allocated search_regs.num_regs gets requested, just + return Qnil. + +2003-07-21 Malcolm Purvis + + * glyphs-gtk.c (gtk_xpm_instantiate): Rewrite the XPM data to + replace symbolic color entries with the real colors specified in + xpm-color-symbols, before passing the XPM to gtk. + * glyphs-gtk.h: Use the generic pixmap_image_instance.mask for masks, + instead of a GTK specific field, so that it is used in by generic + code. + +2004-05-05 Chuck Hines + + * dgif_lib.c (DGifSlurp): Changed do-while to while to stop + coredump from deref of NULL ptr (ExtData) + +2004-04-19 Jerry James + + * data.c (sign_extend_lisp_int): Use INT_VALBITS instead of + VALBITS to compute the location of the sign bit. + * event-stream.c (Fcurrent_event_timestamp): Replace incorrect use + of VALBITS with EMACS_INT_MAX. + * events.c (Fevent_timestamp): Ditto. + * events.c (TIMESTAMP_HALFSPACE): Change VALBITS to INT_VALBITS to + compute the halfway point to timestamp wraparound. + * floatfns.c (float_to_int): Compare against EMACS_INT_MAX and + EMACS_INT_MIN instead of using VALBITS. + * floatfns.c (Flogb): Use EMACS_INT_MIN instead of building an + incorrect number with VALBITS. + * fns.c (Frandom): Correct number of integer bits in docstring. + Use INT_VALBITS instead of VALBITS to compute the denominator. + * sysdep.c (get_random): Use INT_VALBITS instead of VALBITS to + build random numbers. + +2004-03-23 Malcolm Purvis + * event-gtk.c: + * event-gtk.c (gtk_event_to_emacs_event): + * menubar-gtk.c: + * menubar-gtk.c (gtk_xemacs_menubar_class_init): + * menubar-gtk.c (gtk_xemacs_menubar_size_request): + * menubar-gtk.c (gtk_xemacs_accel_label_get_type): + * menubar-gtk.c (gtk_xemacs_set_accel_keys): + * menubar-gtk.c (__activate_menu): + * menubar-gtk.c (convert_underscores): + * menubar-gtk.c (remove_underscores): + * menubar-gtk.c (menu_convert): + * menubar-gtk.c (menu_descriptor_to_widget_1): + * menubar-gtk.c (menu_descriptor_to_widget): + * menubar-gtk.c (menu_can_reuse_widget): + * menubar-gtk.c (menu_create_menubar): + * menubar-gtk.c (gtk_popup_menu): + * menubar-gtk.c (Fgtk_build_xemacs_menu): + Added support for Gtk menu bar and menu item mnemonics. + +2004-03-23 Malcolm Purvis + + * sysdll.c: (dll_function): Added support for finding symbols in + Darwin shared libraries as well in Darwin bundles. + * sysdll.c (image_for_address): New + * sysdll.c (my_find_image): New + * sysdll.c (search_linked_libs): New + +2004-03-23 Malcolm Purvis + + * ui-gtk.c (__internal_callback_marshal): Marshalling data to + return to GTK requires a different API to marshalling data to use + as GTK parameters. + * ui-gtk.c (lisp_to_gtk_ret_type): New. + +2004-03-08 Lutz Euler + + * lstream.c (Lstream_pseudo_close): Fix test for LSTREAM_FL_IS_OPEN. + +2004-02-19 Stephen J. Turnbull + + * glyphs.c (process_image_string_instantiator): + (Fset_console_type_image_conversion_list): + Stop GCC from warning about shadowing of `exp'. + + * redisplay-x.c (x_output_string): Fix unsigned lossage. + +2004-02-19 Stephen J. Turnbull + + * regex.c (re_match_2_internal): Shut up GCC about syn1, syn2. + +2004-02-03 Vin Shelton + + * glyphs.c (image_instance_layout): Remove pointless assertion. + * regex.c (regex_grow_registers): Return type is void. + 2004-02-02 Vin Shelton * XEmacs 21.4.15 is released diff -u -r -N xemacs-21.4.15/src/buffer.c xemacs-21.4.16/src/buffer.c --- xemacs-21.4.15/src/buffer.c 2003-11-07 21:35:14.000000000 -0500 +++ xemacs-21.4.16/src/buffer.c 2004-09-22 23:03:41.000000000 -0400 @@ -1334,38 +1334,60 @@ { REGISTER Lisp_Object lynk, prev; struct frame *f = selected_frame (); + int buffer_found = 0; + CHECK_BUFFER (buffer); + if (!BUFFER_LIVE_P (XBUFFER (buffer))) + return Qnil; prev = Qnil; for (lynk = Vbuffer_alist; CONSP (lynk); lynk = XCDR (lynk)) { if (EQ (XCDR (XCAR (lynk)), buffer)) - break; + { + buffer_found = 1; + break; + } prev = lynk; } - /* Effectively do Vbuffer_alist = delq_no_quit (lynk, Vbuffer_alist) */ - if (NILP (prev)) - Vbuffer_alist = XCDR (Vbuffer_alist); + if (buffer_found) + { + /* Effectively do Vbuffer_alist = delq_no_quit (lynk, Vbuffer_alist) */ + if (NILP (prev)) + Vbuffer_alist = XCDR (Vbuffer_alist); + else + XCDR (prev) = XCDR (XCDR (prev)); + XCDR (lynk) = Vbuffer_alist; + Vbuffer_alist = lynk; + } else - XCDR (prev) = XCDR (XCDR (prev)); - XCDR (lynk) = Vbuffer_alist; - Vbuffer_alist = lynk; + Vbuffer_alist = Fcons (Fcons (Fbuffer_name(buffer), buffer), Vbuffer_alist); /* That was the global one. Now do the same thing for the per-frame buffer-alist. */ + buffer_found = 0; prev = Qnil; for (lynk = f->buffer_alist; CONSP (lynk); lynk = XCDR (lynk)) { if (EQ (XCDR (XCAR (lynk)), buffer)) - break; + { + buffer_found = 1; + break; + } prev = lynk; } - /* Effectively do f->buffer_alist = delq_no_quit (lynk, f->buffer_alist) */ - if (NILP (prev)) - f->buffer_alist = XCDR (f->buffer_alist); + if (buffer_found) + { + /* Effectively do f->buffer_alist = delq_no_quit (lynk, f->buffer_alist) */ + if (NILP (prev)) + f->buffer_alist = XCDR (f->buffer_alist); + else + XCDR (prev) = XCDR (XCDR (prev)); + XCDR (lynk) = f->buffer_alist; + f->buffer_alist = lynk; + } else - XCDR (prev) = XCDR (XCDR (prev)); - XCDR (lynk) = f->buffer_alist; - f->buffer_alist = lynk; + f->buffer_alist = Fcons (Fcons (Fbuffer_name(buffer), buffer), + f->buffer_alist); return Qnil; } diff -u -r -N xemacs-21.4.15/src/console-gtk.h xemacs-21.4.16/src/console-gtk.h --- xemacs-21.4.15/src/console-gtk.h 2001-04-12 14:23:29.000000000 -0400 +++ xemacs-21.4.16/src/console-gtk.h 2004-07-06 22:25:56.000000000 -0400 @@ -170,6 +170,12 @@ /* Are we iconfied right now? */ unsigned int iconified_p :1; + /* Data for widget callbacks. It is impossible to pass all the necessary + data through the GTK signal API so instead it is registered here and the + hash key is passed instead. */ + Lisp_Object widget_instance_hash_table; + Lisp_Object widget_callback_hash_table; + Lisp_Object widget_callback_ex_hash_table; }; #define FRAME_GTK_DATA(f) FRAME_TYPE_DATA (f, gtk) @@ -191,6 +197,17 @@ #define FRAME_GTK_TOTALLY_VISIBLE_P(f) (FRAME_GTK_DATA (f)->totally_visible_p) #define FRAME_GTK_VISIBLE_P(f) (FRAME_GTK_DATA (f)->visible_p) #define FRAME_GTK_TOP_LEVEL_FRAME_P(f) (FRAME_GTK_DATA (f)->top_level_frame_p) +#define FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE(f) (FRAME_GTK_DATA (f)->widget_instance_hash_table) +#define FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE(f) (FRAME_GTK_DATA (f)->widget_callback_hash_table) +#define FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE(f) (FRAME_GTK_DATA (f)->widget_callback_ex_hash_table) + +/* Special data used to quickly identify the frame that contains a widget. */ +#define GTK_DATA_FRAME_IDENTIFIER "xemacs::frame" + +/* The hashcode in the frame hash table of a tab_control tab's callback data. */ +#define GTK_DATA_TAB_HASHCODE_IDENTIFIER "xemacs::tab_hashcode" + +#define GTK_DATA_GUI_IDENTIFIER "xemacs::gui_id" /* Variables associated with the X display frame this emacs is using. */ @@ -205,6 +222,7 @@ extern int gtk_selection_timeout; +struct frame *gtk_widget_to_frame (GtkWidget *); struct frame *gtk_any_window_to_frame (struct device *d, GdkWindow *); struct frame *gtk_window_to_frame (struct device *d, GdkWindow *); struct frame *gtk_any_widget_or_parent_to_frame (struct device *d, GtkWidget *widget); diff -u -r -N xemacs-21.4.15/src/data.c xemacs-21.4.16/src/data.c --- xemacs-21.4.15/src/data.c 2003-10-23 23:49:57.000000000 -0400 +++ xemacs-21.4.16/src/data.c 2004-04-19 22:56:33.000000000 -0400 @@ -170,10 +170,10 @@ EMACS_INT sign_extend_lisp_int (EMACS_INT num) { - if (num & (1L << (VALBITS - 1))) - return num | ((-1L) << VALBITS); + if (num & (1L << (INT_VALBITS - 1))) + return num | ((-1L) << INT_VALBITS); else - return num & ((1L << VALBITS) - 1); + return num & (EMACS_INT) ((1UL << INT_VALBITS) - 1); } diff -u -r -N xemacs-21.4.15/src/depend xemacs-21.4.16/src/depend --- xemacs-21.4.15/src/depend 2003-03-04 22:28:39.000000000 -0500 +++ xemacs-21.4.16/src/depend 2004-12-04 22:26:23.000000000 -0500 @@ -49,10 +49,10 @@ console-gtk.o: $(LISP_H) conslots.h console-gtk.h console.h process.h redisplay.h device-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h dialog-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h -event-gtk.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console-tty.h console.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h lstream.h mule-charset.h objects-gtk.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h -frame-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h +event-gtk.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console-tty.h console.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h lstream.h menubar.h mule-charset.h objects-gtk.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h +frame-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h dragdrop.h elhash.h events.h extents.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h gccache-gtk.o: $(LISP_H) gccache-gtk.h hash.h -glyphs-gtk.o: $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-gtk.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h sysfile.h toolbar.h ui-gtk.h window.h winslots.h +glyphs-gtk.o: $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h elhash.h events.h faces.h file-coding.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-gtk.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h sysfile.h systime.h toolbar.h ui-gtk.h window.h winslots.h gui-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h menubar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h objects-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h insdel.h mule-charset.h objects-gtk.h objects.h specifier.h diff -u -r -N xemacs-21.4.15/src/dgif_lib.c xemacs-21.4.16/src/dgif_lib.c --- xemacs-21.4.15/src/dgif_lib.c 2001-04-12 14:23:33.000000000 -0400 +++ xemacs-21.4.16/src/dgif_lib.c 2004-05-06 18:21:43.000000000 -0400 @@ -740,11 +740,11 @@ case EXTENSION_RECORD_TYPE: DGifGetExtension(GifFile,&sp->Function,&ExtData); - do { + while (ExtData != NULL) { if (AddExtensionBlock(sp, ExtData[0], ExtData+1) == GIF_ERROR) GifInternError(GifFile, D_GIF_ERR_NOT_ENOUGH_MEM); DGifGetExtensionNext(GifFile, &ExtData); - } while (ExtData != NULL); + } break; case TERMINATE_RECORD_TYPE: diff -u -r -N xemacs-21.4.15/src/emacs.c xemacs-21.4.16/src/emacs.c --- xemacs-21.4.15/src/emacs.c 2003-01-15 07:18:00.000000000 -0500 +++ xemacs-21.4.16/src/emacs.c 2004-06-13 16:19:39.000000000 -0400 @@ -344,7 +344,7 @@ #endif /* Number of bytes of writable memory we can expect to be able to get */ -unsigned int lim_data; +unsigned long lim_data; /* WARNING! diff -u -r -N xemacs-21.4.15/src/event-gtk.c xemacs-21.4.16/src/event-gtk.c --- xemacs-21.4.15/src/event-gtk.c 2001-07-25 03:45:25.000000000 -0400 +++ xemacs-21.4.16/src/event-gtk.c 2004-07-06 22:25:56.000000000 -0400 @@ -58,6 +58,10 @@ #include "dragdrop.h" #endif +#ifdef HAVE_MENUBARS +# include "menubar.h" +#endif + #if defined (HAVE_OFFIX_DND) #include "offix.h" #endif @@ -88,7 +92,7 @@ Lisp_Object Qkey_mapping; Lisp_Object Qsans_modifiers; -static void enqueue_gtk_dispatch_event (Lisp_Object event); +void enqueue_gtk_dispatch_event (Lisp_Object event); #define IS_MODIFIER_KEY(keysym) \ ((((keysym) >= GDK_Shift_L) && ((keysym) <= GDK_Hyper_R)) \ @@ -1090,7 +1094,7 @@ static Lisp_Object dispatch_event_queue, dispatch_event_queue_tail; -static void +void enqueue_gtk_dispatch_event (Lisp_Object event) { enqueue_event (event, &dispatch_event_queue, &dispatch_event_queue_tail); @@ -1291,6 +1295,22 @@ GdkEventKey *key_event = &gdk_event->key; Lisp_Object keysym; +#ifdef HAVE_MENUBARS + /* If the user wants see if the event is a menu bar accelerator. + The process of checking absorbs the event and starts menu + processing so send a null event into XEmacs to make sure it + does nothing. + */ + if (!NILP (Vmenu_accelerator_enabled) + && gtk_accel_groups_activate(GTK_OBJECT (FRAME_GTK_SHELL_WIDGET(frame)), + key_event->keyval, + *state)) + { + zero_event(emacs_event); + return 1; + } +#endif + /* This used to compute the frame from the given X window and store it here, but we really don't care about the frame. */ emacs_event->channel = DEVICE_CONSOLE (d); diff -u -r -N xemacs-21.4.15/src/event-stream.c xemacs-21.4.16/src/event-stream.c --- xemacs-21.4.15/src/event-stream.c 2003-01-03 04:59:45.000000000 -0500 +++ xemacs-21.4.16/src/event-stream.c 2004-04-19 22:56:33.000000000 -0400 @@ -4481,7 +4481,7 @@ /* This junk is so that timestamps don't get to be negative, but contain as many bits as this particular emacs will allow. */ - return make_int (((1L << (VALBITS - 1)) - 1) & tiempo); + return make_int (EMACS_INT_MAX & tiempo); } diff -u -r -N xemacs-21.4.15/src/events.c xemacs-21.4.16/src/events.c --- xemacs-21.4.15/src/events.c 2001-04-12 14:23:42.000000000 -0400 +++ xemacs-21.4.16/src/events.c 2004-04-19 22:56:34.000000000 -0400 @@ -1483,11 +1483,10 @@ /* This junk is so that timestamps don't get to be negative, but contain as many bits as this particular emacs will allow. */ - return make_int (((1L << (VALBITS - 1)) - 1) & - XEVENT (event)->timestamp); + return make_int (EMACS_INT_MAX & XEVENT (event)->timestamp); } -#define TIMESTAMP_HALFSPACE (1L << (VALBITS - 2)) +#define TIMESTAMP_HALFSPACE (1L << (INT_VALBITS - 2)) DEFUN ("event-timestamp<", Fevent_timestamp_lessp, 2, 2, 0, /* Return true if timestamp TIME1 is earlier than timestamp TIME2. diff -u -r -N xemacs-21.4.15/src/fileio.c xemacs-21.4.16/src/fileio.c --- xemacs-21.4.15/src/fileio.c 2002-08-22 06:58:30.000000000 -0400 +++ xemacs-21.4.16/src/fileio.c 2004-06-22 21:54:46.000000000 -0400 @@ -3199,6 +3199,11 @@ present, both functions are identical and ignore the CODESYS argument.) If support for Mule exists in this Emacs, the file is encoded according to the value of CODESYS. If this is nil, no code conversion occurs. + +As a special kludge to support auto-saving, when START is nil START and +END are set to the beginning and end, respectively, of the buffer, +regardless of any restrictions. Don't use this feature. It is documented +here because write-region handler writers need to be aware of it. */ (start, end, filename, append, visit, lockname, codesys)) { diff -u -r -N xemacs-21.4.15/src/floatfns.c xemacs-21.4.16/src/floatfns.c --- xemacs-21.4.15/src/floatfns.c 2001-04-12 14:23:45.000000000 -0400 +++ xemacs-21.4.16/src/floatfns.c 2004-04-19 22:56:34.000000000 -0400 @@ -128,15 +128,16 @@ static Lisp_Object float_to_int (double x, const char *name, Lisp_Object num, Lisp_Object num2) { - if (x >= ((EMACS_INT) 1 << (VALBITS-1)) - || x <= - ((EMACS_INT) 1 << (VALBITS-1)) - (EMACS_INT) 1) - { - if (!UNBOUNDP (num2)) - range_error2 (name, num, num2); - else - range_error (name, num); - } - return (make_int ((EMACS_INT) x)); + REGISTER EMACS_INT result = (EMACS_INT) x; + + if (result > EMACS_INT_MAX || result < EMACS_INT_MIN) + { + if (!UNBOUNDP (num2)) + range_error2 (name, num, num2); + else + range_error (name, num); + } + return make_int (result); } @@ -708,7 +709,7 @@ double f = extract_float (number); if (f == 0.0) - return make_int (- (EMACS_INT)(((EMACS_UINT) 1) << (VALBITS - 1))); /* most-negative-fixnum */ + return make_int (EMACS_INT_MIN); #ifdef HAVE_LOGB { Lisp_Object val; diff -u -r -N xemacs-21.4.15/src/fns.c xemacs-21.4.16/src/fns.c --- xemacs-21.4.15/src/fns.c 2002-08-20 07:37:15.000000000 -0400 +++ xemacs-21.4.16/src/fns.c 2004-04-19 22:56:34.000000000 -0400 @@ -143,7 +143,7 @@ DEFUN ("random", Frandom, 0, 1, 0, /* Return a pseudo-random number. All integers representable in Lisp are equally likely. - On most systems, this is 28 bits' worth. + On most systems, this is 31 bits' worth. With positive integer argument N, return random number in interval [0,N). With argument t, set the random number seed from the current time and pid. */ @@ -163,7 +163,7 @@ it's possible to get a quotient larger than limit; discarding these values eliminates the bias that would otherwise appear when using a large limit. */ - denominator = ((unsigned long)1 << VALBITS) / XINT (limit); + denominator = ((unsigned long)1 << INT_VALBITS) / XINT (limit); do val = get_random () / denominator; while (val >= XINT (limit)); diff -u -r -N xemacs-21.4.15/src/frame-gtk.c xemacs-21.4.16/src/frame-gtk.c --- xemacs-21.4.15/src/frame-gtk.c 2001-10-23 04:35:33.000000000 -0400 +++ xemacs-21.4.16/src/frame-gtk.c 2004-08-12 23:23:25.000000000 -0400 @@ -27,6 +27,7 @@ #include #include "lisp.h" +#include "elhash.h" #include "console-gtk.h" #include "ui-gtk.h" #include "glyphs-gtk.h" @@ -54,7 +55,6 @@ #define INTERNAL_BORDER_WIDTH 0 #define TRANSIENT_DATA_IDENTIFIER "xemacs::transient_for" -#define FRAME_DATA_IDENTIFIER "xemacs::frame" #define UNMAPPED_DATA_IDENTIFIER "xemacs::initially_unmapped" #define STUPID_X_SPECIFIC_GTK_STUFF @@ -98,6 +98,23 @@ /* helper functions */ /************************************************************************/ +/* Return the Emacs frame-object which contains the given widget. */ +struct frame * +gtk_widget_to_frame (GtkWidget *w) +{ + struct frame *f = NULL; + + for (; w; w = w->parent) + { + if ((f = (struct frame *) gtk_object_get_data (GTK_OBJECT (w), + GTK_DATA_FRAME_IDENTIFIER))) + return (f); + } + + return (selected_frame()); +} + + /* Return the Emacs frame-object corresponding to an X window */ struct frame * gtk_window_to_frame (struct device *d, GdkWindow *wdesc) @@ -811,7 +828,7 @@ gtk_container_set_border_width (GTK_CONTAINER (shell), 0); - gtk_object_set_data (GTK_OBJECT (shell), FRAME_DATA_IDENTIFIER, f); + gtk_object_set_data (GTK_OBJECT (shell), GTK_DATA_FRAME_IDENTIFIER, f); FRAME_GTK_SHELL_WIDGET (f) = shell; @@ -937,6 +954,18 @@ /* yeah, except the lisp ones */ FRAME_GTK_ICON_PIXMAP (f) = Qnil; FRAME_GTK_ICON_PIXMAP_MASK (f) = Qnil; + + /* + Hashtables of callback data for glyphs on the frame. Make them EQ because + we only use ints as keys. Otherwise we run into stickiness in redisplay + because internal_equal() can QUIT. See enter_redisplay_critical_section(). + */ + FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE (f) = + make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ); + FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE (f) = + make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ); + FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE (f) = + make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ); } @@ -1022,6 +1051,9 @@ mark_object (FRAME_GTK_LISP_WIDGETS (f)[0]); mark_object (FRAME_GTK_LISP_WIDGETS (f)[1]); mark_object (FRAME_GTK_LISP_WIDGETS (f)[2]); + mark_object (FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE (f)); + mark_object (FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE (f)); + mark_object (FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE (f)); } static void @@ -1219,7 +1251,7 @@ static void gtk_make_frame_visible (struct frame *f) { - gtk_widget_show_all (FRAME_GTK_SHELL_WIDGET (f)); + gtk_widget_map (FRAME_GTK_SHELL_WIDGET (f)); gtk_raise_frame_1 (f, 0); } @@ -1227,7 +1259,7 @@ static void gtk_make_frame_invisible (struct frame *f) { - gtk_widget_hide (FRAME_GTK_SHELL_WIDGET (f)); + gtk_widget_unmap(FRAME_GTK_SHELL_WIDGET (f)); } static int diff -u -r -N xemacs-21.4.15/src/glyphs-gtk.c xemacs-21.4.16/src/glyphs-gtk.c --- xemacs-21.4.15/src/glyphs-gtk.c 2001-07-25 03:45:30.000000000 -0400 +++ xemacs-21.4.16/src/glyphs-gtk.c 2004-07-06 22:25:57.000000000 -0400 @@ -63,6 +63,8 @@ #include "insdel.h" #include "opaque.h" #include "faces.h" +#include "elhash.h" +#include "events.h" #include "imgproc.h" @@ -70,10 +72,19 @@ #include +#if defined (HAVE_XPM) +#include +#endif + #ifdef FILE_CODING #include "file-coding.h" #endif +extern void enqueue_gtk_dispatch_event (Lisp_Object event); + +/* Widget callback hash table callback slot. */ +#define WIDGET_GLYPH_SLOT 0 + #if INTBITS == 32 # define FOUR_BYTE_TYPE unsigned int #elif LONGBITS == 32 @@ -1084,105 +1095,21 @@ /********************************************************************** * XPM * **********************************************************************/ -static void -write_lisp_string_to_temp_file (Lisp_Object string, char *filename_out) -{ - Lisp_Object instream, outstream; - Lstream *istr, *ostr; - char tempbuf[1024]; /* some random amount */ - int fubar = 0; - FILE *tmpfil; - static Extbyte_dynarr *conversion_out_dynarr; - Bytecount bstart, bend; - struct gcpro gcpro1, gcpro2; -#ifdef FILE_CODING - Lisp_Object conv_out_stream; - Lstream *costr; - struct gcpro gcpro3; -#endif - /* This function can GC */ - if (!conversion_out_dynarr) - conversion_out_dynarr = Dynarr_new (Extbyte); - else - Dynarr_reset (conversion_out_dynarr); - - /* Create the temporary file ... */ - sprintf (filename_out, "/tmp/emacs%d.XXXXXX", (int) getpid ()); - mktemp (filename_out); - tmpfil = fopen (filename_out, "w"); - if (!tmpfil) - { - if (tmpfil) - { - int old_errno = errno; - fclose (tmpfil); - unlink (filename_out); - errno = old_errno; - } - report_file_error ("Creating temp file", - list1 (build_string (filename_out))); - } - - CHECK_STRING (string); - get_string_range_byte (string, Qnil, Qnil, &bstart, &bend, - GB_HISTORICAL_STRING_BEHAVIOR); - instream = make_lisp_string_input_stream (string, bstart, bend); - istr = XLSTREAM (instream); - /* setup the out stream */ - outstream = make_dynarr_output_stream((unsigned_char_dynarr *)conversion_out_dynarr); - ostr = XLSTREAM (outstream); -#ifdef FILE_CODING - /* setup the conversion stream */ - conv_out_stream = make_encoding_output_stream (ostr, Fget_coding_system(Qbinary)); - costr = XLSTREAM (conv_out_stream); - GCPRO3 (instream, outstream, conv_out_stream); -#else - GCPRO2 (instream, outstream); -#endif - - /* Get the data while doing the conversion */ +/* strcasecmp() is not sufficiently portable or standard, + and it's easier just to write our own. */ +static int +ascii_strcasecmp (const char *s1, const char *s2) +{ while (1) { - int size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf)); - if (!size_in_bytes) - break; - /* It does seem the flushes are necessary... */ -#ifdef FILE_CODING - Lstream_write (costr, tempbuf, size_in_bytes); - Lstream_flush (costr); -#else - Lstream_write (ostr, tempbuf, size_in_bytes); -#endif - Lstream_flush (ostr); - if (fwrite ((unsigned char *)Dynarr_atp(conversion_out_dynarr, 0), - Dynarr_length(conversion_out_dynarr), 1, tmpfil) != 1) - { - fubar = 1; - break; - } - /* reset the dynarr */ - Lstream_rewind(ostr); + char c1 = *s1++; + char c2 = *s2++; + if (c1 >= 'A' && c1 <= 'Z') c1 += 'a' - 'A'; + if (c2 >= 'A' && c2 <= 'Z') c2 += 'a' - 'A'; + if (c1 != c2) return c1 - c2; + if (c1 == '\0') return 0; } - - if (fclose (tmpfil) != 0) - fubar = 1; - Lstream_close (istr); -#ifdef FILE_CODING - Lstream_close (costr); -#endif - Lstream_close (ostr); - - UNGCPRO; - Lstream_delete (istr); - Lstream_delete (ostr); -#ifdef FILE_CODING - Lstream_delete (costr); -#endif - - if (fubar) - report_file_error ("Writing temp file", - list1 (build_string (filename_out))); } struct color_symbol @@ -1271,12 +1198,12 @@ GdkWindow *window = 0; int nsymbols = 0, i = 0; struct color_symbol *color_symbols = NULL; - GdkColor *transparent_color = NULL; Lisp_Object color_symbol_alist = find_keyword_in_vector (instantiator, Q_color_symbols); enum image_instance_type type; int force_mono; unsigned int w, h; + const unsigned char * volatile dstring; if (!DEVICE_GTK_P (XDEVICE (device))) signal_simple_error ("Not a Gtk device", device); @@ -1302,20 +1229,58 @@ assert (!NILP (data)); - /* Need to get the transparent color here */ - color_symbols = extract_xpm_color_names (device, domain, color_symbol_alist, &nsymbols); - for (i = 0; i < nsymbols; i++) - { - if (!strcasecmp ("BgColor", color_symbols[i].name) || - !strcasecmp ("None", color_symbols[i].name)) - { - transparent_color = &color_symbols[i].color; - } - } + /* Extract all the entries from xpm-color-symbols */ + color_symbols = extract_xpm_color_names (device, domain, color_symbol_alist, + &nsymbols); + + assert (!NILP (data)); - write_lisp_string_to_temp_file (data, temp_file_name); - pixmap = gdk_pixmap_create_from_xpm (window, &mask, transparent_color, temp_file_name); - unlink (temp_file_name); + + LISP_STRING_TO_EXTERNAL(data, dstring, Qbinary); + + /* + * GTK only uses the 'c' color entry of an XPM and doesn't use the symbolic + * color names at all. This is unfortunate because the way to change the + * colors from lisp is by adding the symbolic names, and the new colors, to + * the variable xpm-color-symbols. + * + * To get around this decode the XPM, add a 'c' entry of the desired color + * for each matching symbolic color, recode the XPM and pass it to GTK. The + * decode and recode stages aren't too bad because this also performs the + * external to internal format translation, which avoids contortions like + * writing the XPM back to disk in order to get it processed. + */ + + { + XpmImage image; + XpmInfo info; + char** data; + + XpmCreateXpmImageFromBuffer ((char*) dstring, &image, &info); + + for (i = 0; i < nsymbols; i++) + { + unsigned j; + + for (j = 0; j < image.ncolors; j++) + { + if (image.colorTable[j].symbolic != NULL && + !ascii_strcasecmp(color_symbols[i].name, image.colorTable[j].symbolic)) + { + image.colorTable[j].c_color = xmalloc(16); + + sprintf(image.colorTable[j].c_color, "#%.4x%.4x%.4x", + color_symbols[i].color.red, color_symbols[i].color.green, + color_symbols[i].color.blue); + } + } + } + + XpmCreateDataFromXpmImage (&data, &image, &info); + + pixmap = gdk_pixmap_create_from_xpm_d (window, &mask, NULL, + data); + } if (color_symbols) xfree (color_symbols); @@ -1327,7 +1292,7 @@ gdk_window_get_geometry (pixmap, NULL, NULL, &w, &h, &depth); IMAGE_INSTANCE_GTK_PIXMAP (ii) = pixmap; - IMAGE_INSTANCE_GTK_MASK (ii) = mask; + IMAGE_INSTANCE_PIXMAP_MASK (ii) = (void*) mask; IMAGE_INSTANCE_GTK_COLORMAP (ii) = cmap; IMAGE_INSTANCE_GTK_PIXELS (ii) = 0; IMAGE_INSTANCE_GTK_NPIXELS (ii) = 0; @@ -2063,6 +2028,7 @@ struct frame *f = XFRAME (IMAGE_INSTANCE_FRAME (p)); GtkWidget *wid = IMAGE_INSTANCE_GTK_CLIPWIDGET (p); GtkAllocation a; + int moving; if (!wid) return; @@ -2071,38 +2037,58 @@ a.width = dga->width; a.height = dga->height; + /* Is the widget cganging position? */ + moving = (a.x != wid->allocation.x) || + (a.y != wid->allocation.y); + if ((a.width != wid->allocation.width) || - (a.height != wid->allocation.height)) + (a.height != wid->allocation.height) || + moving) { gtk_widget_size_allocate (IMAGE_INSTANCE_GTK_CLIPWIDGET (p), &a); } - /* #### FIXME DAMMIT */ - if ((wid->allocation.x != -dga->xoffset) || - (wid->allocation.y != -dga->yoffset)) + if (moving) { guint32 old_flags = GTK_WIDGET_FLAGS (FRAME_GTK_TEXT_WIDGET (f)); - /* Fucking GtkFixed widget queues a resize when you add a widget. + /* GtkFixed widget queues a resize when you add a widget. ** But only if it is visible. ** losers. */ GTK_WIDGET_FLAGS(FRAME_GTK_TEXT_WIDGET (f)) &= ~GTK_VISIBLE; + if (IMAGE_INSTANCE_GTK_ALREADY_PUT(p)) { gtk_fixed_move (GTK_FIXED (FRAME_GTK_TEXT_WIDGET (f)), wid, - -dga->xoffset, -dga->yoffset); + a.x, a.y); } else { IMAGE_INSTANCE_GTK_ALREADY_PUT(p) = TRUE; gtk_fixed_put (GTK_FIXED (FRAME_GTK_TEXT_WIDGET (f)), wid, - -dga->xoffset, -dga->yoffset); + a.x, a.y); } + GTK_WIDGET_FLAGS(FRAME_GTK_TEXT_WIDGET (f)) = old_flags; } + else + { + if (IMAGE_INSTANCE_GTK_ALREADY_PUT(p)) + { + /* Do nothing... */ + } + else + { + /* Must make sure we have put the image at least once! */ + IMAGE_INSTANCE_GTK_ALREADY_PUT(p) = TRUE; + gtk_fixed_put (GTK_FIXED (FRAME_GTK_TEXT_WIDGET (f)), + wid, + a.x, a.y); + } + } if (!IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP (p)) { @@ -2193,11 +2179,19 @@ || IMAGE_INSTANCE_TEXT_CHANGED (p)) { + GtkRequisition r; + GtkAllocation a = IMAGE_INSTANCE_GTK_CLIPWIDGET (p)->allocation; + assert (IMAGE_INSTANCE_GTK_WIDGET_ID (p) && IMAGE_INSTANCE_GTK_CLIPWIDGET (p)) ; - /* #### Resize the widget! */ - /* gtk_widget_size_allocate () */ + a.width = r.width = IMAGE_INSTANCE_WIDTH (p); + a.height = r.height = IMAGE_INSTANCE_HEIGHT (p); + + /* Force the widget's preferred and actual size to what we say it shall + be. */ + gtk_widget_size_request (IMAGE_INSTANCE_GTK_CLIPWIDGET (p), &r); + gtk_widget_size_allocate (IMAGE_INSTANCE_GTK_CLIPWIDGET (p), &a); } /* Adjust offsets within the frame. */ @@ -2356,6 +2350,10 @@ */ IMAGE_INSTANCE_GTK_CLIPWIDGET (ii) = w; + /* The current theme may produce a widget of a different size that what we + expect so force reconsideration of the widget's size. */ + IMAGE_INSTANCE_LAYOUT_CHANGED (ii) = 1; + return (Qt); } @@ -2404,8 +2402,44 @@ FAKE_GTK_WIDGET_INSTANTIATOR(progress_gauge); FAKE_GTK_WIDGET_INSTANTIATOR(edit_field); FAKE_GTK_WIDGET_INSTANTIATOR(combo_box); -FAKE_GTK_WIDGET_INSTANTIATOR(tab_control); FAKE_GTK_WIDGET_INSTANTIATOR(label); +/* Note: tab_control has a custom instantiator (see below) */ + +/* + Ask the widget to return it's preferred size. This device method must + defined for all widgets that also have format specific version of + query_geometry defined in glyphs-widget.c. This is because those format + specific versions return sizes that are appropriate for the X widgets. For + GTK, the size of a widget can change at runtime due to the user changing + their theme. + + This method can be called before the widget is instantiated. This is + because instantiate_image_instantiator() is tying to be helpful to other + toolkits and supply sane geometry values to them. This is not appropriate + for GTK and can be ignored. + + This method can be used by all widgets. +*/ +static void +gtk_widget_query_geometry (Lisp_Object image_instance, + int* width, int* height, + enum image_instance_geometry disp, Lisp_Object domain) +{ + Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance); + + if (p->data != NULL) + { + GtkWidget *w = IMAGE_INSTANCE_GTK_CLIPWIDGET (p); + GtkRequisition r; + + gtk_widget_size_request(w, &r); + *height= r.height; + *width = r.width; + } +} + + +/* Button functions. */ /* Update a button's clicked state. */ static void @@ -2448,6 +2482,9 @@ return Qunbound; } + +/* Progress gauge functions. */ + /* set the properties of a progress gauge */ static void gtk_progress_gauge_redisplay (Lisp_Object image_instance) @@ -2467,6 +2504,198 @@ } } + +/* Tab Control functions. */ + +/* + Register a widget's callbacks with the frame's hashtable. The hashtable is + weak so deregistration is handled automatically. Tab controls have per-tab + callback list functions and the GTK callback architecture is not + sufficiently flexible to deal with this. Instead, the functions are + registered here and the id is passed through the callback loop. + */ +static int +gtk_register_gui_item (Lisp_Object image_instance, Lisp_Object gui, + Lisp_Object domain) +{ + struct frame *f = XFRAME(DOMAIN_FRAME(domain)); + int id = gui_item_id_hash(FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE(f), + gui, WIDGET_GLYPH_SLOT); + + Fputhash(make_int(id), image_instance, + FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE (f)); + Fputhash(make_int(id), XGUI_ITEM (gui)->callback, + FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE (f)); + Fputhash(make_int(id), XGUI_ITEM (gui)->callback_ex, + FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE (f)); + return id; +} + +/* + Append the given item as a tab to the notebook. Callbacks, etc are all + setup. + */ +static void +gtk_add_tab_item(Lisp_Object image_instance, + GtkNotebook* nb, Lisp_Object item, + Lisp_Object domain, int i) +{ + Lisp_Object name; + int hash_id = 0; + char *c_name = NULL; + GtkWidget* box; + + if (GUI_ITEMP (item)) + { + Lisp_Gui_Item *pgui = XGUI_ITEM (item); + + if (!STRINGP (pgui->name)) + pgui->name = Feval (pgui->name); + + CHECK_STRING (pgui->name); + + hash_id = gtk_register_gui_item (image_instance, item, domain); + name = pgui->name; + } + else + { + CHECK_STRING (item); + name = item; + } + + TO_EXTERNAL_FORMAT (LISP_STRING, name, + C_STRING_ALLOCA, c_name, + Qctext); + + /* Dummy widget that the notbook wants to display when a tab is selected. */ + box = gtk_vbox_new (FALSE, 3); + + /* + Store the per-tab callback data id in the tab. The callback functions + themselves could have been stored in the widget but this avoids having to + worry about the garbage collector running between here and the callback + function. + */ + gtk_object_set_data(GTK_OBJECT(box), GTK_DATA_TAB_HASHCODE_IDENTIFIER, + (gpointer) hash_id); + + gtk_notebook_append_page (nb, box, gtk_label_new (c_name)); +} + +/* Signal handler for the switch-page signal. */ +static void gtk_tab_control_callback(GtkNotebook *notebook, + GtkNotebookPage *page, + gint page_num, + gpointer user_data) +{ + /* + This callback is called for every selection, not just user selection. + We're only interested in user selection, which occurs outside of + redisplay. + */ + + if (!in_display) + { + Lisp_Object image_instance, callback, callback_ex; + Lisp_Object frame, event; + int update_subwindows_p = 0; + struct frame *f = gtk_widget_to_frame(GTK_WIDGET(notebook)); + int id; + + if (!f) + return; + frame = wrap_frame (f); + + id = (int) gtk_object_get_data(GTK_OBJECT(page->child), + GTK_DATA_TAB_HASHCODE_IDENTIFIER); + image_instance = Fgethash(make_int(id), + FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE(f), Qnil); + callback = Fgethash(make_int(id), + FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE(f), Qnil); + callback_ex = Fgethash(make_int(id), + FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE(f), Qnil); + update_subwindows_p = 1; + + /* It is possible for a widget action to cause it to get out of + sync with its instantiator. Thus it is necessary to signal + this possibility. */ + if (IMAGE_INSTANCEP (image_instance)) + XIMAGE_INSTANCE_WIDGET_ACTION_OCCURRED (image_instance) = 1; + + if (!NILP (callback_ex) && !UNBOUNDP (callback_ex)) + { + event = Fmake_event (Qnil, Qnil); + + XEVENT (event)->event_type = misc_user_event; + XEVENT (event)->channel = frame; + XEVENT (event)->event.eval.function = Qeval; + XEVENT (event)->event.eval.object = + list4 (Qfuncall, callback_ex, image_instance, event); + } + else if (NILP (callback) || UNBOUNDP (callback)) + event = Qnil; + else + { + Lisp_Object fn, arg; + + event = Fmake_event (Qnil, Qnil); + + get_gui_callback (callback, &fn, &arg); + XEVENT (event)->event_type = misc_user_event; + XEVENT (event)->channel = frame; + XEVENT (event)->event.eval.function = fn; + XEVENT (event)->event.eval.object = arg; + } + + if (!NILP (event)) + enqueue_gtk_dispatch_event (event); + + /* The result of this evaluation could cause other instances to change so + enqueue an update callback to check this. */ + if (update_subwindows_p && !NILP (event)) + enqueue_magic_eval_event (update_widget_instances, frame); + } +} + +/* Create a tab_control widget. The special handling of the individual tabs + means that the normal instantiation code cannot be used. */ +static void +gtk_tab_control_instantiate (Lisp_Object image_instance, + Lisp_Object instantiator, + Lisp_Object pointer_fg, + Lisp_Object pointer_bg, + int dest_mask, Lisp_Object domain) +{ + Lisp_Object rest; + Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); + int i = 0; + int selected = 0; + GtkNotebook *nb; + + /* The normal instantiation is still needed. */ + gtk_widget_instantiate (image_instance, instantiator, pointer_fg, + pointer_bg, dest_mask, domain); + + nb = GTK_NOTEBOOK (IMAGE_INSTANCE_GTK_CLIPWIDGET (ii)); + + /* Add items to the tab, find the current selection */ + LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii))) + { + gtk_add_tab_item (image_instance, nb, XCAR (rest), domain, i); + + if (gui_item_selected_p (XCAR (rest))) + selected = i; + + i++; + } + + gtk_notebook_set_page(nb, selected); + + /* Call per-tab lisp callback when a tab is pressed. */ + gtk_signal_connect (GTK_OBJECT (nb), "switch-page", + GTK_SIGNAL_FUNC (gtk_tab_control_callback), NULL); +} + /* Set the properties of a tab control */ static void gtk_tab_control_redisplay (Lisp_Object image_instance) @@ -2483,6 +2712,7 @@ one. */ if (tab_control_order_only_changed (image_instance)) { + int i = 0; Lisp_Object rest, selected = gui_item_list_find_selected (NILP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii)) ? @@ -2496,9 +2726,6 @@ Lisp_Object old_selected =gui_item_list_find_selected (XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii))); - /* Need to focus on the widget... */ - stderr_out ("Hey, change the tab-focus you boob...\n"); - /* Pick up the new selected item. */ XGUI_ITEM (old_selected)->selected = XGUI_ITEM (XCAR (rest))->selected; @@ -2507,8 +2734,14 @@ /* We're not actually changing the items anymore. */ IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii) = 0; IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) = Qnil; + + gtk_notebook_set_page(GTK_NOTEBOOK (IMAGE_INSTANCE_GTK_CLIPWIDGET (ii)), + i); + break; } + + i++; } } else @@ -2517,33 +2750,23 @@ GtkNotebook *nb = GTK_NOTEBOOK (IMAGE_INSTANCE_GTK_CLIPWIDGET (ii)); guint num_pages = g_list_length (nb->children); Lisp_Object rest; + int i; + /* Why is there no API to remove everything from a notebook? */ if (num_pages >= 0) { - int i; for (i = num_pages; i >= 0; --i) { gtk_notebook_remove_page (nb, i); } } - LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii))) - { - Lisp_Gui_Item *pgui = XGUI_ITEM (XCAR (rest)); - char *c_name = NULL; + i = 0; - if (!STRINGP (pgui->name)) - pgui->name = Feval (pgui->name); - - CHECK_STRING (pgui->name); - - TO_EXTERNAL_FORMAT (LISP_STRING, pgui->name, - C_STRING_ALLOCA, c_name, - Qctext); - - gtk_notebook_append_page (nb, - gtk_vbox_new (FALSE, 3), - gtk_label_new (c_name)); + LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii))) + { + gtk_add_tab_item(image_instance, nb, XCAR(rest), + IMAGE_INSTANCE_FRAME(ii), i); } /* Show all the new widgets we just added... */ @@ -2640,14 +2863,17 @@ IIFORMAT_HAS_DEVMETHOD (gtk, button, property); IIFORMAT_HAS_DEVMETHOD (gtk, button, instantiate); IIFORMAT_HAS_DEVMETHOD (gtk, button, redisplay); + IIFORMAT_HAS_SHARED_DEVMETHOD (gtk, button, query_geometry, widget); /* general widget methods. */ INITIALIZE_DEVICE_IIFORMAT (gtk, widget); IIFORMAT_HAS_DEVMETHOD (gtk, widget, property); + IIFORMAT_HAS_DEVMETHOD (gtk, widget, query_geometry); /* progress gauge */ INITIALIZE_DEVICE_IIFORMAT (gtk, progress_gauge); IIFORMAT_HAS_DEVMETHOD (gtk, progress_gauge, redisplay); IIFORMAT_HAS_DEVMETHOD (gtk, progress_gauge, instantiate); + IIFORMAT_HAS_SHARED_DEVMETHOD (gtk, progress_gauge, query_geometry, widget); /* text field */ INITIALIZE_DEVICE_IIFORMAT (gtk, edit_field); IIFORMAT_HAS_DEVMETHOD (gtk, edit_field, instantiate); @@ -2658,6 +2884,7 @@ INITIALIZE_DEVICE_IIFORMAT (gtk, tab_control); IIFORMAT_HAS_DEVMETHOD (gtk, tab_control, instantiate); IIFORMAT_HAS_DEVMETHOD (gtk, tab_control, redisplay); + IIFORMAT_HAS_SHARED_DEVMETHOD (gtk, tab_control, query_geometry, widget); /* label */ INITIALIZE_DEVICE_IIFORMAT (gtk, label); IIFORMAT_HAS_DEVMETHOD (gtk, label, instantiate); diff -u -r -N xemacs-21.4.15/src/glyphs-gtk.h xemacs-21.4.16/src/glyphs-gtk.h --- xemacs-21.4.15/src/glyphs-gtk.h 2001-04-12 14:23:50.000000000 -0400 +++ xemacs-21.4.16/src/glyphs-gtk.h 2004-05-10 22:40:46.000000000 -0400 @@ -40,7 +40,6 @@ struct gtk_image_instance_data { GdkPixmap **pixmaps; - GdkPixmap *mask; GdkCursor *cursor; /* If depth>0, then that means that other colors were allocated when @@ -87,7 +86,7 @@ (GTK_IMAGE_INSTANCE_DATA (i)->pixmaps[slice]) #define IMAGE_INSTANCE_GTK_PIXMAP_SLICES(i) \ (GTK_IMAGE_INSTANCE_DATA (i)->pixmaps) -#define IMAGE_INSTANCE_GTK_MASK(i) (GTK_IMAGE_INSTANCE_DATA (i)->mask) +#define IMAGE_INSTANCE_GTK_MASK(i) (GdkPixmap*)(IMAGE_INSTANCE_PIXMAP_MASK (i)) #define IMAGE_INSTANCE_GTK_CURSOR(i) (GTK_IMAGE_INSTANCE_DATA (i)->cursor) #define IMAGE_INSTANCE_GTK_COLORMAP(i) (GTK_IMAGE_INSTANCE_DATA (i)->colormap) #define IMAGE_INSTANCE_GTK_PIXELS(i) (GTK_IMAGE_INSTANCE_DATA (i)->pixels) diff -u -r -N xemacs-21.4.15/src/glyphs.c xemacs-21.4.16/src/glyphs.c --- xemacs-21.4.15/src/glyphs.c 2003-01-03 04:59:46.000000000 -0500 +++ xemacs-21.4.16/src/glyphs.c 2004-03-14 22:34:58.000000000 -0500 @@ -318,13 +318,13 @@ signal_simple_error ("Invalid mapping form", mapping); else { - Lisp_Object exp = XCAR (mapping); + Lisp_Object mapexp = XCAR (mapping); Lisp_Object typevec = XCAR (XCDR (mapping)); Lisp_Object pos = Qnil; Lisp_Object newvec; struct gcpro gcpro1; - CHECK_STRING (exp); + CHECK_STRING (mapexp); CHECK_VECTOR (typevec); if (!NILP (XCDR (XCDR (mapping)))) { @@ -338,7 +338,7 @@ newvec = Fcopy_sequence (typevec); if (INTP (pos)) - XVECTOR_DATA (newvec)[XINT (pos)] = exp; + XVECTOR_DATA (newvec)[XINT (pos)] = mapexp; GCPRO1 (newvec); image_validate (newvec); UNGCPRO; @@ -374,7 +374,7 @@ LIST_LOOP (tail, *get_image_conversion_list (console_type)) { Lisp_Object mapping = XCAR (tail); - Lisp_Object exp = XCAR (mapping); + Lisp_Object mapexp = XCAR (mapping); Lisp_Object typevec = XCAR (XCDR (mapping)); /* if the result is of a type that can't be instantiated @@ -385,7 +385,7 @@ (INSTANTIATOR_TYPE (typevec), ERROR_ME), possible_dest_types, ()))) continue; - if (fast_string_match (exp, 0, data, 0, -1, 0, ERROR_ME, 0) >= 0) + if (fast_string_match (mapexp, 0, data, 0, -1, 0, ERROR_ME, 0) >= 0) { if (!NILP (XCDR (XCDR (mapping)))) { @@ -1989,9 +1989,6 @@ if (yoffset != IMAGE_UNCHANGED_GEOMETRY) XIMAGE_INSTANCE_YOFFSET (image_instance) = yoffset; - assert (XIMAGE_INSTANCE_YOFFSET (image_instance) >= 0 - && XIMAGE_INSTANCE_XOFFSET (image_instance) >= 0); - /* If geometry is unspecified then get some reasonable values for it. */ if (width == IMAGE_UNSPECIFIED_GEOMETRY || diff -u -r -N xemacs-21.4.15/src/gtk-xemacs.c xemacs-21.4.16/src/gtk-xemacs.c --- xemacs-21.4.15/src/gtk-xemacs.c 2001-04-12 14:23:53.000000000 -0400 +++ xemacs-21.4.16/src/gtk-xemacs.c 2004-08-12 23:23:26.000000000 -0400 @@ -248,14 +248,58 @@ } } +/* Assign a size and position to the child widgets. This differs from the + super class method in that for all widgets except the scrollbars the size + and position are not caclulated here. This is because these widgets have + this function performed for them by the redisplay code (see + gtk_map_subwindow()). If the superclass method is called then the widgets + can change size and position as the two pieces of code move the widgets at + random. +*/ static void gtk_xemacs_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { GtkXEmacs *x = GTK_XEMACS (widget); + GtkFixed *fixed = GTK_FIXED (widget); struct frame *f = GTK_XEMACS_FRAME (x); int columns, rows; + GList *children; + guint16 border_width; + + widget->allocation = *allocation; + if (GTK_WIDGET_REALIZED (widget)) + gdk_window_move_resize (widget->window, + allocation->x, + allocation->y, + allocation->width, + allocation->height); - parent_class->size_allocate(widget, allocation); + border_width = GTK_CONTAINER (fixed)->border_width; + + children = fixed->children; + while (children) + { + GtkFixedChild* child = children->data; + children = children->next; + + /* + Scrollbars are the only widget that is managed by GTK. See + comments in gtk_create_scrollbar_instance(). + */ + if (GTK_WIDGET_VISIBLE (child->widget) && + gtk_type_is_a(GTK_OBJECT_TYPE(child->widget), GTK_TYPE_SCROLLBAR)) + { + GtkAllocation child_allocation; + GtkRequisition child_requisition; + + gtk_widget_get_child_requisition (child->widget, &child_requisition); + child_allocation.x = child->x + border_width; + child_allocation.y = child->y + border_width; + child_allocation.width = child_requisition.width; + child_allocation.height = child_requisition.height; + gtk_widget_size_allocate (child->widget, &child_allocation); + } + } if (f) { @@ -275,7 +319,9 @@ { GtkXEmacs *x = GTK_XEMACS (widget); struct frame *f = GTK_XEMACS_FRAME (x); - gtk_redraw_exposed_area (f, area->x, area->y, area->width, area->height); + + if (GTK_WIDGET_DRAWABLE (widget)) + gtk_redraw_exposed_area (f, area->x, area->y, area->width, area->height); } static void @@ -291,30 +337,33 @@ gtk_fixed_paint() directly, which clears the background window, which causes A LOT of flashing. */ - gtk_xemacs_paint (widget, area); + if (GTK_WIDGET_DRAWABLE (widget)) + { + gtk_xemacs_paint (widget, area); - children = fixed->children; + children = fixed->children; - while (children) - { - child = children->data; - children = children->next; - /* #### This is what causes the scrollbar flickering! - Evidently the scrollbars pretty much take care of drawing - themselves in most cases. Then we come along and tell them - to redraw again! - - But if we just leave it out, then they do not get drawn - correctly the first time! - - Scrollbar flickering has been greatly helped by the - optimizations in scrollbar-gtk.c / - gtk_update_scrollbar_instance_status (), so this is not that - big a deal anymore. - */ - if (gtk_widget_intersect (child->widget, area, &child_area)) + while (children) { - gtk_widget_draw (child->widget, &child_area); + child = children->data; + children = children->next; + /* #### This is what causes the scrollbar flickering! + Evidently the scrollbars pretty much take care of drawing + themselves in most cases. Then we come along and tell them + to redraw again! + + But if we just leave it out, then they do not get drawn + correctly the first time! + + Scrollbar flickering has been greatly helped by the + optimizations in scrollbar-gtk.c / + gtk_update_scrollbar_instance_status (), so this is not that + big a deal anymore. + */ + if (gtk_widget_intersect (child->widget, area, &child_area)) + { + gtk_widget_draw (child->widget, &child_area); + } } } } @@ -326,14 +375,19 @@ struct frame *f = GTK_XEMACS_FRAME (x); GdkRectangle *a = &event->area; - /* This takes care of drawing the scrollbars, etc */ - parent_class->expose_event (widget, event); + if (GTK_WIDGET_DRAWABLE (widget)) + { + /* This takes care of drawing the scrollbars, etc */ + parent_class->expose_event (widget, event); + + /* Now draw the actual frame data */ + if (!check_for_ignored_expose (f, a->x, a->y, a->width, a->height) && + !find_matching_subwindow (f, a->x, a->y, a->width, a->height)) + gtk_redraw_exposed_area (f, a->x, a->y, a->width, a->height); + return (TRUE); + } - /* Now draw the actual frame data */ - if (!check_for_ignored_expose (f, a->x, a->y, a->width, a->height) && - !find_matching_subwindow (f, a->x, a->y, a->width, a->height)) - gtk_redraw_exposed_area (f, a->x, a->y, a->width, a->height); - return (TRUE); + return FALSE; } Lisp_Object diff -u -r -N xemacs-21.4.15/src/gui-x.c xemacs-21.4.16/src/gui-x.c --- xemacs-21.4.15/src/gui-x.c 2001-04-12 14:23:54.000000000 -0400 +++ xemacs-21.4.16/src/gui-x.c 2004-07-06 22:25:57.000000000 -0400 @@ -207,7 +207,10 @@ } /* The following is actually called from somewhere within XtDispatchEvent(), - called from XtAppProcessEvent() in event-Xt.c */ + called from XtAppProcessEvent() in event-Xt.c + + Callback function for widgets and menus. + */ void popup_selection_callback (Widget widget, LWLIB_ID ignored_id, diff -u -r -N xemacs-21.4.15/src/lstream.c xemacs-21.4.16/src/lstream.c --- xemacs-21.4.15/src/lstream.c 2001-04-12 14:24:00.000000000 -0400 +++ xemacs-21.4.16/src/lstream.c 2004-03-14 22:34:59.000000000 -0500 @@ -658,7 +658,7 @@ static int Lstream_pseudo_close (Lstream *lstr) { - if (!lstr->flags & LSTREAM_FL_IS_OPEN) + if (! (lstr->flags & LSTREAM_FL_IS_OPEN)) Lstream_internal_error ("lstream is not open", lstr); /* don't check errors here -- best not to risk file descriptor loss */ diff -u -r -N xemacs-21.4.15/src/malloc.c xemacs-21.4.16/src/malloc.c --- xemacs-21.4.15/src/malloc.c 2001-04-12 14:24:00.000000000 -0400 +++ xemacs-21.4.16/src/malloc.c 2004-06-21 21:49:55.000000000 -0400 @@ -285,7 +285,7 @@ static char busy[30]; /* Number of bytes of writable memory we can expect to be able to get */ -extern unsigned int lim_data; +extern unsigned long lim_data; /* Level number of warnings already issued. 0 -- no warnings issued. @@ -339,7 +339,7 @@ { char *cp; int nblks; - unsigned int siz; + unsigned long siz; int oldmask; #ifdef BSD diff -u -r -N xemacs-21.4.15/src/mem-limits.h xemacs-21.4.16/src/mem-limits.h --- xemacs-21.4.15/src/mem-limits.h 2001-04-12 14:24:01.000000000 -0400 +++ xemacs-21.4.16/src/mem-limits.h 2004-06-13 16:19:40.000000000 -0400 @@ -58,20 +58,14 @@ #endif #if defined(__bsdi__) || defined(__NetBSD__) || defined(__linux__) || defined(__OpenBSD__) -#if defined(__linux__) && defined (powerpc) /*Added by Fukui*/ -#else /*Added by Fukui*/ #define BSD4_2 -#endif /*Added by Fukui*/ #endif #ifndef BSD4_2 #ifndef USG #ifndef WIN32_NATIVE #ifndef CYGWIN -#if defined(__linux__) && defined(powerpc) /*Added Kaoru Fukui*/ -#else /*Added Kaoru Fukui*/ #include -#endif /*Added by Fukui*/ #endif /* not CYGWIN */ #endif /* not WIN32_NATIVE */ #endif /* not USG */ @@ -115,7 +109,7 @@ static POINTER data_space_start; /* Number of bytes of writable memory we can expect to be able to get */ -extern unsigned int lim_data; +extern unsigned long lim_data; #if defined (HEAP_IN_DATA) && !defined(PDUMP) extern unsigned long static_heap_size; @@ -125,11 +119,11 @@ { if (!initialized) { - lim_data = (unsigned int) -1; /* static_heap_size; */ + lim_data = (unsigned long) -1; /* static_heap_size; */ } else { - lim_data = (unsigned int) -1; + lim_data = (unsigned long) -1; } } #else @@ -137,25 +131,25 @@ static void get_lim_data (void) { - lim_data = (unsigned int) -1; + lim_data = (unsigned long) -1; } #else /* not NO_LIM_DATA */ -#ifdef USG +#if defined(USG) && !defined(LINUX) static void get_lim_data (void) { - lim_data = (unsigned int) -1; + lim_data = (unsigned long) -1; /* Use the ulimit call, if we seem to have it. */ -#if !defined (ULIMIT_BREAK_VALUE) || defined (LINUX) +#if !defined (ULIMIT_BREAK_VALUE) lim_data = ulimit (3, 0); #endif /* If that didn't work, just use the macro's value. */ #ifdef ULIMIT_BREAK_VALUE - if (lim_data == (unsigned int) -1) + if (lim_data == (unsigned long) -1) lim_data = ULIMIT_BREAK_VALUE; #endif @@ -173,7 +167,7 @@ } #else -#if !defined (BSD4_2) && !defined (__osf__) +#if !defined (BSD4_2) && !defined (__osf__) && !defined(LINUX) static void get_lim_data (void) diff -u -r -N xemacs-21.4.15/src/menubar-gtk.c xemacs-21.4.16/src/menubar-gtk.c --- xemacs-21.4.15/src/menubar-gtk.c 2002-04-30 12:06:43.000000000 -0400 +++ xemacs-21.4.16/src/menubar-gtk.c 2004-07-06 22:25:57.000000000 -0400 @@ -1,4 +1,4 @@ -/* Implements an elisp-programmable menubar -- X interface. +/* Implements an elisp-programmable menubar -- Gtk interface. Copyright (C) 1993, 1994 Free Software Foundation, Inc. Copyright (C) 1995 Tinker Systems and INS Engineering Corp. @@ -46,7 +46,7 @@ #define SUBMENU_TYPE 1 #define POPUP_TYPE 2 -static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr); +static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr, GtkAccelGroup* accel_group); #define FRAME_MENUBAR_DATA(frame) ((frame)->menubar_data) #define XFRAME_MENUBAR_DATA_LASTBUFF(frame) (XCAR ((frame)->menubar_data)) @@ -110,14 +110,14 @@ return xemacs_menubar_type; } -static GtkWidgetClass *parent_class; +static GtkWidgetClass *menubar_parent_class; static void gtk_xemacs_menubar_class_init (GtkXEmacsMenubarClass *klass) { GtkWidgetClass *widget_class; widget_class = (GtkWidgetClass*) klass; - parent_class = (GtkWidgetClass *) gtk_type_class (gtk_menu_bar_get_type ()); + menubar_parent_class = (GtkWidgetClass *) gtk_type_class (gtk_menu_bar_get_type ()); widget_class->size_request = gtk_xemacs_menubar_size_request; } @@ -131,7 +131,7 @@ GtkXEmacsMenubar *x = GTK_XEMACS_MENUBAR (widget); GtkRequisition frame_size; - parent_class->size_request (widget, requisition); + menubar_parent_class->size_request (widget, requisition); /* #### BILL! ** We should really only do this if the menu has not been detached! @@ -154,6 +154,117 @@ return (GTK_WIDGET (menubar)); } +/* + * Label with XEmacs accelerator character support. + * + * The default interfaces to GtkAccelLabel does not understand XEmacs + * keystroke printing conventions, nor is it convenient in the places where is + * it needed. This subclass provides an alternative interface more suited to + * XEmacs needs but does not add new functionality. + */ +#define GTK_TYPE_XEMACS_ACCEL_LABEL (gtk_xemacs_accel_label_get_type ()) +#define GTK_XEMACS_ACCEL_LABEL(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_ACCEL_LABEL, GtkXEmacsAccelLabel)) +#define GTK_XEMACS_ACCEL_LABEL_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_ACCEL_LABEL, GtkXEmacsAccelLabelClass)) +#define GTK_IS_XEMACS_ACCEL_LABEL(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_XEMACS_ACCEL_LABEL)) +#define GTK_IS_XEMACS_ACCEL_LABEL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_XEMACS_ACCEL_LABEL)) + +typedef struct _GtkXEmacsAccelLabel GtkXEmacsAccelLabel; +typedef struct _GtkXEmacsAccelLabelClass GtkXEmacsAccelLabelClass; + +/* Instance structure. No additional fields required. */ +struct _GtkXEmacsAccelLabel +{ + GtkAccelLabel label; +}; + +/* Class structure. No additional fields required. */ +struct _GtkXEmacsAccelLabelClass +{ + GtkAccelLabelClass parent_class; +}; + +static GtkType gtk_xemacs_accel_label_get_type(void); +static GtkWidget* gtk_xemacs_accel_label_new(const gchar *string); +static void gtk_xemacs_set_accel_keys(GtkXEmacsAccelLabel* l, + Lisp_Object keys); +static void gtk_xemacs_accel_label_class_init(GtkXEmacsAccelLabelClass *klass); +static void gtk_xemacs_accel_label_init(GtkXEmacsAccelLabel *xemacs); + +static GtkType +gtk_xemacs_accel_label_get_type(void) +{ + static GtkType xemacs_accel_label_type = 0; + + if (!xemacs_accel_label_type) + { + static const GtkTypeInfo xemacs_accel_label_info = + { + "GtkXEmacsAccelLabel", + sizeof (GtkXEmacsAccelLabel), + sizeof (GtkXEmacsAccelLabelClass), + (GtkClassInitFunc) gtk_xemacs_accel_label_class_init, + (GtkObjectInitFunc) gtk_xemacs_accel_label_init, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + xemacs_accel_label_type = gtk_type_unique (gtk_accel_label_get_type(), &xemacs_accel_label_info); + } + + return xemacs_accel_label_type; +} + +static void +gtk_xemacs_accel_label_class_init(GtkXEmacsAccelLabelClass *klass) +{ + /* Nothing to do. */ +} + +static void +gtk_xemacs_accel_label_init(GtkXEmacsAccelLabel *xemacs) +{ + /* Nothing to do. */ +} + +static GtkWidget* +gtk_xemacs_accel_label_new (const gchar *string) +{ + GtkXEmacsAccelLabel *xemacs_accel_label; + + xemacs_accel_label = gtk_type_new (GTK_TYPE_XEMACS_ACCEL_LABEL); + + if (string && *string) + gtk_label_set_text (GTK_LABEL (xemacs_accel_label), string); + + return GTK_WIDGET (xemacs_accel_label); +} + +/* Make the string the accelerator string for the label. */ +static void +gtk_xemacs_set_accel_keys(GtkXEmacsAccelLabel* l, Lisp_Object keys) +{ + g_return_if_fail (l != NULL); + g_return_if_fail (GTK_IS_XEMACS_ACCEL_LABEL (l)); + + /* Disable the standard way of finding the accelerator string for the + label. */ + gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL(l), NULL); + + /* Set the string straight from the object. */ + if (STRINGP (keys) && XSTRING_LENGTH (keys)) + { + C_STRING_TO_EXTERNAL_MALLOC(XSTRING_DATA (keys), + l->label.accel_string, + Qctext); + } + else + { + /* l->label.accel_string = NULL;*/ + } +} + + /* We now return you to your regularly scheduled menus... */ int dockable_menubar; @@ -314,7 +425,8 @@ } else { - next = menu_descriptor_to_widget_1 (child); + next = menu_descriptor_to_widget_1 (child, + gtk_menu_ensure_uline_accel_group (GTK_MENU (item->submenu))); } if (!next) @@ -349,6 +461,63 @@ } } +/* Convert the XEmacs menu accelerator representation to Gtk mnemonic form. If + no accelerator has been provided, put one at the start of the string (this + mirrors the behaviour under X). This algorithm is also found in + dialog-gtk.el:gtk-popup-convert-underscores. +*/ +static char * +convert_underscores(const char *name) +{ + char *rval; + int i,j; + int found_accel = FALSE; + int underscores = 0; + + for (i = 0; name[i]; ++i) + if (name[i] == '%' && name[i+1] == '_') + { + found_accel = TRUE; + } + else if (name[i] == '_') + { + underscores++; + } + + /* Allocate space for the original string, plus zero byte plus extra space + for all quoted underscores plus possible additional leading accelerator. */ + rval = xmalloc_and_zero (strlen(name) + 1 + underscores + + (found_accel ? 0 : 1)); + + if (!found_accel) + rval[0] = '_'; + + for (i = 0, j = (found_accel ? 0 : 1); name[i]; i++) + { + if (name[i]=='%') + { + i++; + if (!(name[i])) + continue; + + if ((name[i] != '_') && (name[i] != '%')) + i--; + + found_accel = TRUE; + } + else if (name[i] == '_') + { + rval[j++] = '_'; + } + + rval[j++] = name[i]; + } + + return rval; +} + + +/* Remove the XEmacs menu accellerator representation from a string. */ static char * remove_underscores(const char *name) { @@ -362,7 +531,9 @@ if (!(name[i])) continue; - if ((name[i] == '_')) + if ((name[i] != '_') && (name[i] != '%')) + i--; + else continue; } rval[j++] = name[i]; @@ -375,7 +546,8 @@ DESCR is either a list (meaning a submenu), a vector, or nil (if you include a :filter keyword) */ static GtkWidget * -menu_convert (Lisp_Object desc, GtkWidget *reuse) +menu_convert (Lisp_Object desc, GtkWidget *reuse, + GtkAccelGroup* menubar_accel_group) { GtkWidget *menu_item = NULL; GtkWidget *submenu = NULL; @@ -392,8 +564,23 @@ if (!reuse) { - char *temp_menu_name = remove_underscores (XSTRING_DATA (XCAR (desc))); - menu_item = gtk_menu_item_new_with_label (temp_menu_name); + char *temp_menu_name = convert_underscores (XSTRING_DATA (XCAR (desc))); + GtkWidget* accel_label = gtk_xemacs_accel_label_new(NULL); + guint accel_key; + + gtk_misc_set_alignment (GTK_MISC (accel_label), 0.0, 0.5); + accel_key = gtk_label_parse_uline (GTK_LABEL (accel_label), temp_menu_name); + + menu_item = gtk_menu_item_new (); + gtk_container_add (GTK_CONTAINER (menu_item), accel_label); + gtk_widget_show (accel_label); + + if (menubar_accel_group) + gtk_widget_add_accelerator (menu_item, + "activate_item", + menubar_accel_group, + accel_key, GDK_MOD1_MASK, + GTK_ACCEL_LOCKED); free (temp_menu_name); } else @@ -542,28 +729,13 @@ return (menu_item); } -static struct frame * -__get_channel (GtkWidget *w) -{ - struct frame *f = NULL; - - for (; w; w = w->parent) - { - if ((f = (struct frame *) gtk_object_get_data (GTK_OBJECT (w), "xemacs::frame"))) - return (f); - } - - return (selected_frame()); -} - - /* Called whenever a button, radio, or toggle is selected in the menu */ static void __generic_button_callback (GtkMenuItem *item, gpointer user_data) { Lisp_Object callback, function, data, channel; - XSETFRAME (channel, __get_channel (GTK_WIDGET (item))); + XSETFRAME (channel, gtk_widget_to_frame (GTK_WIDGET (item))); VOID_TO_LISP (callback, user_data); @@ -576,7 +748,8 @@ /* This function cannot GC. It is only called from menu_item_descriptor_to_widget_value, which prohibits GC. */ -static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr) +static GtkWidget * +menu_descriptor_to_widget_1 (Lisp_Object descr, GtkAccelGroup* accel_group) { if (STRINGP (descr)) { @@ -589,7 +762,7 @@ else if (LISTP (descr)) { /* It is a submenu */ - return (menu_convert (descr, NULL)); + return (menu_convert (descr, NULL, accel_group)); } else if (VECTORP (descr)) { @@ -610,6 +783,7 @@ int plist_p; int selected_spec = 0, included_spec = 0; GtkWidget *widget = NULL; + guint accel_key; if (length < 2) signal_simple_error ("button descriptors must be at least 2 long", descr); @@ -705,8 +879,9 @@ sprintf (label_buffer, "%s ", XSTRING_DATA (name)); } - temp_label = remove_underscores (label_buffer); - main_label = gtk_accel_label_new (temp_label); + temp_label = convert_underscores (label_buffer); + main_label = gtk_xemacs_accel_label_new (NULL); + accel_key = gtk_label_parse_uline (GTK_LABEL (main_label), temp_label); free (temp_label); } @@ -822,36 +997,23 @@ GTK_SIGNAL_FUNC (__generic_button_callback), LISP_TO_VOID (callback)); - /* We cheat here... GtkAccelLabel usually builds its - `accel_string' from the widget it is attached to, but we do - not want to go thru the overhead of converting our nice - string back into the modifier + key format that requires, - just so that they can convert it back into a (possibly - different/wrong) string - - We set the label string manually, and things should 'just - work' - - In an ideal world we would just subclass GtkLabel ourselves, - but I have known for a very long time that this is not an - ideal world. - - #### Should do menu shortcuts `correctly' one of these days. + /* Now that all the information about the menu item is know, set the + remaining properties. */ if (main_label) { - GtkAccelLabel *l = GTK_ACCEL_LABEL (main_label); - gtk_container_add (GTK_CONTAINER (widget), main_label); - gtk_accel_label_set_accel_widget (l, NULL); - gtk_misc_set_alignment (GTK_MISC (l), 0.0, 0.5); + gtk_misc_set_alignment (GTK_MISC (main_label), 0.0, 0.5); + gtk_xemacs_set_accel_keys(GTK_XEMACS_ACCEL_LABEL(main_label), keys); - if (STRINGP (keys) && XSTRING_LENGTH (keys)) - { - l->accel_string = g_strdup (XSTRING_DATA (keys)); - } + if (accel_group) + gtk_widget_add_accelerator (widget, + "activate_item", + accel_group, + accel_key, 0, + GTK_ACCEL_LOCKED); } return (widget); @@ -863,7 +1025,8 @@ } } -static GtkWidget *menu_descriptor_to_widget (Lisp_Object descr) +static GtkWidget * +menu_descriptor_to_widget (Lisp_Object descr, GtkAccelGroup* accel_group) { int count = specpdl_depth (); GtkWidget *rval = NULL; @@ -873,7 +1036,7 @@ gc_currently_forbidden = 1; /* Cannot GC from here on out... */ - rval = menu_descriptor_to_widget_1 (descr); + rval = menu_descriptor_to_widget_1 (descr, accel_group); unbind_to (count, Qnil); return (rval); @@ -883,23 +1046,24 @@ menu_can_reuse_widget (GtkWidget *child, const char *label) { /* Everything up at the top level was done using - ** gtk_menu_item_new_with_label(), but we still double check to make + ** gtk_xemacs_accel_label_new(), but we still double check to make ** sure we don't seriously foobar ourselves. */ - char *temp_label = NULL; - gpointer possible_child = g_list_nth_data (gtk_container_children (GTK_CONTAINER (child)), 0); + gpointer possible_child = + g_list_nth_data (gtk_container_children (GTK_CONTAINER (child)), 0); + gboolean ret_val = FALSE; if (possible_child && GTK_IS_LABEL (possible_child)) { - if (!temp_label) temp_label = remove_underscores (label); + char *temp_label = remove_underscores (label); + if (!strcmp (GTK_LABEL (possible_child)->label, temp_label)) - { - free (temp_label); - return (TRUE); - } + ret_val = TRUE; + + free (temp_label); } - if (temp_label) free (temp_label); - return (FALSE); + + return ret_val; } /* Converts a menubar description into a GtkMenuBar... a menubar is a @@ -915,6 +1079,7 @@ GtkWidget *menubar = FRAME_GTK_MENUBAR_WIDGET (f); GUI_ID id = (GUI_ID) gtk_object_get_data (GTK_OBJECT (menubar), XEMACS_MENU_GUIID_TAG); guint menu_position = 0; + GtkAccelGroup *menubar_accel_group; /* Remove any existing protection for old menu items */ ungcpro_popup_callbacks (id); @@ -922,6 +1087,8 @@ /* GCPRO the whole damn thing */ gcpro_popup_callbacks (id, descr); + menubar_accel_group = gtk_accel_group_new(); + EXTERNAL_LIST_LOOP (tail, value) { gpointer current_child = g_list_nth_data (GTK_MENU_SHELL (menubar)->children, menu_position); @@ -939,7 +1106,7 @@ /* It is a button description */ GtkWidget *item; - item = menu_descriptor_to_widget (item_descr); + item = menu_descriptor_to_widget (item_descr, menubar_accel_group); gtk_widget_set_name (item, "XEmacsMenuButton"); if (!item) @@ -961,12 +1128,13 @@ if (current_child && menu_can_reuse_widget (GTK_WIDGET (current_child), XSTRING_DATA (XCAR (item_descr)))) { - widget = menu_convert (item_descr, GTK_WIDGET (current_child)); + widget = menu_convert (item_descr, GTK_WIDGET (current_child), + menubar_accel_group); reused_p = TRUE; } else { - widget = menu_convert (item_descr, NULL); + widget = menu_convert (item_descr, NULL, menubar_accel_group); if (current_child) gtk_widget_destroy (GTK_WIDGET (current_child)); gtk_menu_bar_insert (GTK_MENU_BAR (menubar), widget, menu_position); } @@ -1005,6 +1173,10 @@ } } } + + /* Attach the new accelerator group to the frame. */ + gtk_window_add_accel_group (GTK_WINDOW (FRAME_GTK_SHELL_WIDGET(f)), + menubar_accel_group); } @@ -1227,7 +1399,7 @@ CHECK_STRING (XCAR (menu_desc)); /* Now lets get down to business... */ - widget = menu_descriptor_to_widget (menu_desc); + widget = menu_descriptor_to_widget (menu_desc, NULL); menu = GTK_MENU_ITEM (widget)->submenu; gtk_widget_set_name (widget, "XEmacsPopupMenu"); id = gtk_object_get_data (GTK_OBJECT (widget), XEMACS_MENU_GUIID_TAG); @@ -1271,7 +1443,7 @@ */ (menu)) { - GtkWidget *w = menu_descriptor_to_widget (menu); + GtkWidget *w = menu_descriptor_to_widget (menu, NULL); return (w ? build_gtk_object (GTK_OBJECT (w)) : Qnil); } diff -u -r -N xemacs-21.4.15/src/redisplay-x.c xemacs-21.4.16/src/redisplay-x.c --- xemacs-21.4.15/src/redisplay-x.c 2003-01-15 07:18:01.000000000 -0500 +++ xemacs-21.4.16/src/redisplay-x.c 2004-03-14 22:34:59.000000000 -0500 @@ -972,8 +972,9 @@ /* We draw underlines in the same color as the text. */ if (cachel->underline) { - unsigned long upos; - unsigned long uthick; + /* upos is naturally signed, why would anyone think otherwise? + uthick is signed to avoid unsigned propagation. */ + long upos, uthick; XFontStruct *xfont; xfont = FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font)); @@ -1001,7 +1002,9 @@ } if (cachel->strikethru) { - unsigned long ascent,descent,upos, uthick; + /* ascent, descent, and upos are naturally signed; why would anyone + think otherwise? uthick is signed to avoid unsigned propagation. */ + long ascent, descent, upos, uthick; XFontStruct *xfont; xfont = FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font)); diff -u -r -N xemacs-21.4.15/src/regex.c xemacs-21.4.16/src/regex.c --- xemacs-21.4.15/src/regex.c 2003-10-20 20:22:11.000000000 -0400 +++ xemacs-21.4.16/src/regex.c 2004-10-07 20:40:33.000000000 -0400 @@ -418,7 +418,7 @@ /* Start remembering the text that is matched, for storing in a register. Followed by one byte with the register number, in - the range 0 to one less than the pattern buffer's re_nsub + the range 1 to the pattern buffer's re_ngroups field. Then followed by one byte with the number of groups inner to this one. (This last has to be part of the start_memory only because we need it in the on_failure_jump @@ -427,7 +427,7 @@ /* Stop remembering the text that is matched and store it in a memory register. Followed by one byte with the register - number, in the range 0 to one less than `re_nsub' in the + number, in the range 1 to `re_ngroups' in the pattern buffer, and one byte with the number of inner groups, just like `start_memory'. (We need the number of inner groups here because we don't have any easy way of finding the @@ -974,6 +974,7 @@ } printf ("re_nsub: %ld\t", (long)bufp->re_nsub); + printf ("re_ngroups: %ld\t", (long)bufp->re_ngroups); printf ("regs_alloc: %d\t", bufp->regs_allocated); printf ("can_be_null: %d\t", bufp->can_be_null); printf ("newline_anchor: %d\n", bufp->newline_anchor); @@ -983,6 +984,20 @@ printf ("syntax: %d\n", bufp->syntax); /* Perhaps we should print the translate table? */ /* and maybe the category table? */ + + if (bufp->external_to_internal_register) + { + int i; + + printf ("external_to_internal_register:\n"); + for (i = 0; i <= bufp->re_nsub; i++) + { + if (i > 0) + printf (", "); + printf ("%d -> %d", i, bufp->external_to_internal_register[i]); + } + printf ("\n"); + } } @@ -1693,6 +1708,7 @@ ignore the excess. */ typedef unsigned regnum_t; +#define INIT_REG_TRANSLATE_SIZE 5 /* Macros for the compile stack. */ @@ -1843,7 +1859,7 @@ /* Make the register vectors big enough for NUM_REGS registers, but don't make them smaller. */ -static +static void regex_grow_registers (int num_regs) { if (num_regs > regs_allocated_size) @@ -1876,7 +1892,9 @@ `syntax' is set to SYNTAX; `used' is set to the length of the compiled pattern; `fastmap_accurate' is zero; - `re_nsub' is the number of subexpressions in PATTERN; + `re_ngroups' is the number of groups/subexpressions (including shy + groups) in PATTERN; + `re_nsub' is the number of non-shy groups in PATTERN; `not_bol' and `not_eol' are zero; The `fastmap' and `newline_anchor' fields are neither @@ -1974,6 +1992,23 @@ /* Always count groups, whether or not bufp->no_sub is set. */ bufp->re_nsub = 0; + bufp->re_ngroups = 0; + + if (bufp->external_to_internal_register == 0) + { + bufp->external_to_internal_register_size = INIT_REG_TRANSLATE_SIZE; + RETALLOC (bufp->external_to_internal_register, + bufp->external_to_internal_register_size, + int); + } + + { + int i; + + bufp->external_to_internal_register[0] = 0; + for (i = 1; i < bufp->external_to_internal_register_size; i++) + bufp->external_to_internal_register[i] = (int) 0xDEADBEEF; + } #if !defined (emacs) && !defined (SYNTAX_TABLE) /* Initialize the syntax table. */ @@ -2556,6 +2591,7 @@ handle_open: { regnum_t r; + int shy = 0; if (!(syntax & RE_NO_SHY_GROUPS) && p != pend @@ -2566,7 +2602,7 @@ switch (c) { case ':': /* shy groups */ - r = MAX_REGNUM + 1; + shy = 1; break; /* All others are reserved for future constructs. */ @@ -2574,11 +2610,32 @@ FREE_STACK_RETURN (REG_BADPAT); } } - else - { - bufp->re_nsub++; - r = ++regnum; - } + + r = ++regnum; + bufp->re_ngroups++; + if (!shy) + { + bufp->re_nsub++; + while (bufp->external_to_internal_register_size <= + bufp->re_nsub) + { + int i; + int old_size = + bufp->external_to_internal_register_size; + bufp->external_to_internal_register_size += 5; + RETALLOC (bufp->external_to_internal_register, + bufp->external_to_internal_register_size, + int); + /* debugging */ + for (i = old_size; + i < bufp->external_to_internal_register_size; i++) + bufp->external_to_internal_register[i] = + (int) 0xDEADBEEF; + } + + bufp->external_to_internal_register[bufp->re_nsub] = + bufp->re_ngroups; + } if (COMPILE_STACK_FULL) { @@ -2602,7 +2659,10 @@ /* We will eventually replace the 0 with the number of groups inner to this one. But do not push a start_memory for groups beyond the last one we can - represent in the compiled pattern. */ + represent in the compiled pattern. + #### bad bad bad. this will fail in lots of ways, if we + ever have to backtrack for these groups. + */ if (r <= MAX_REGNUM) { COMPILE_STACK_TOP.inner_group_offset @@ -2992,18 +3052,23 @@ case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { - regnum_t reg; + int reg; if (syntax & RE_NO_BK_REFS) goto normal_char; reg = c - '0'; - if (reg > regnum) + if (reg > bufp->re_nsub) FREE_STACK_RETURN (REG_ESUBREG); - /* Can't back reference to a subexpression if inside of it. */ - if (group_in_compile_stack (compile_stack, reg)) - goto normal_char; + { + int regint = bufp->external_to_internal_register[reg]; + /* Can't back reference to a subexpression if inside it. */ + if (group_in_compile_stack (compile_stack, regint)) + { + goto normal_char; + } + } laststart = buf_end; BUF_PUSH_2 (duplicate, reg); @@ -3121,7 +3186,7 @@ isn't necessary unless we're trying to avoid calling alloca in the search and match routines. */ { - int num_regs = bufp->re_nsub + 1; + int num_regs = bufp->re_ngroups + 1; /* Since DOUBLE_FAIL_STACK refuses to double only if the current size is strictly greater than re_max_failures, the largest possible stack @@ -4384,7 +4449,7 @@ /* We fill all the registers internally, independent of what we return, for use in backreferences. The number here includes an element for register zero. */ - int num_regs = bufp->re_nsub + 1; + int num_regs = bufp->re_ngroups + 1; /* The currently active registers. */ int lowest_active_reg = NO_LOWEST_ACTIVE_REG; @@ -4470,7 +4535,7 @@ there are groups, we include space for register 0 (the whole pattern), even though we never use it, since it simplifies the array indexing. We should fix this. */ - if (bufp->re_nsub) + if (bufp->re_ngroups) { regstart = REGEX_TALLOC (num_regs, re_char *); regend = REGEX_TALLOC (num_regs, re_char *); @@ -4646,80 +4711,87 @@ DEBUG_PRINT1 ("Accepting match.\n"); /* If caller wants register contents data back, do it. */ - if (regs && !bufp->no_sub) - { - /* Have the register data arrays been allocated? */ - if (bufp->regs_allocated == REGS_UNALLOCATED) - { /* No. So allocate them with malloc. We need one - extra element beyond `num_regs' for the `-1' marker - GNU code uses. */ - regs->num_regs = MAX (RE_NREGS, num_regs + 1); - regs->start = TALLOC (regs->num_regs, regoff_t); - regs->end = TALLOC (regs->num_regs, regoff_t); - if (regs->start == NULL || regs->end == NULL) - { - FREE_VARIABLES (); - return -2; - } - bufp->regs_allocated = REGS_REALLOCATE; - } - else if (bufp->regs_allocated == REGS_REALLOCATE) - { /* Yes. If we need more elements than were already - allocated, reallocate them. If we need fewer, just - leave it alone. */ - if (regs->num_regs < num_regs + 1) - { - regs->num_regs = num_regs + 1; - RETALLOC (regs->start, regs->num_regs, regoff_t); - RETALLOC (regs->end, regs->num_regs, regoff_t); - if (regs->start == NULL || regs->end == NULL) - { - FREE_VARIABLES (); - return -2; - } - } - } - else - { - /* These braces fend off a "empty body in an else-statement" - warning under GCC when assert expands to nothing. */ - assert (bufp->regs_allocated == REGS_FIXED); - } + { + int num_nonshy_regs = bufp->re_nsub + 1; + if (regs && !bufp->no_sub) + { + /* Have the register data arrays been allocated? */ + if (bufp->regs_allocated == REGS_UNALLOCATED) + { /* No. So allocate them with malloc. We need one + extra element beyond `num_regs' for the `-1' marker + GNU code uses. */ + regs->num_regs = MAX (RE_NREGS, num_nonshy_regs + 1); + regs->start = TALLOC (regs->num_regs, regoff_t); + regs->end = TALLOC (regs->num_regs, regoff_t); + if (regs->start == NULL || regs->end == NULL) + { + FREE_VARIABLES (); + return -2; + } + bufp->regs_allocated = REGS_REALLOCATE; + } + else if (bufp->regs_allocated == REGS_REALLOCATE) + { /* Yes. If we need more elements than were already + allocated, reallocate them. If we need fewer, just + leave it alone. */ + if (regs->num_regs < num_nonshy_regs + 1) + { + regs->num_regs = num_nonshy_regs + 1; + RETALLOC (regs->start, regs->num_regs, regoff_t); + RETALLOC (regs->end, regs->num_regs, regoff_t); + if (regs->start == NULL || regs->end == NULL) + { + FREE_VARIABLES (); + return -2; + } + } + } + else + { + /* The braces fend off a "empty body in an else-statement" + warning under GCC when assert expands to nothing. */ + assert (bufp->regs_allocated == REGS_FIXED); + } - /* Convert the pointer data in `regstart' and `regend' to - indices. Register zero has to be set differently, - since we haven't kept track of any info for it. */ - if (regs->num_regs > 0) - { - regs->start[0] = pos; - regs->end[0] = (MATCHING_IN_FIRST_STRING - ? ((regoff_t) (d - string1)) - : ((regoff_t) (d - string2 + size1))); - } + /* Convert the pointer data in `regstart' and `regend' to + indices. Register zero has to be set differently, + since we haven't kept track of any info for it. */ + if (regs->num_regs > 0) + { + regs->start[0] = pos; + regs->end[0] = (MATCHING_IN_FIRST_STRING + ? ((regoff_t) (d - string1)) + : ((regoff_t) (d - string2 + size1))); + } - /* Go through the first `min (num_regs, regs->num_regs)' - registers, since that is all we initialized. */ - for (mcnt = 1; mcnt < MIN (num_regs, regs->num_regs); mcnt++) - { - if (REG_UNSET (regstart[mcnt]) || REG_UNSET (regend[mcnt])) - regs->start[mcnt] = regs->end[mcnt] = -1; - else - { - regs->start[mcnt] - = (regoff_t) POINTER_TO_OFFSET (regstart[mcnt]); - regs->end[mcnt] - = (regoff_t) POINTER_TO_OFFSET (regend[mcnt]); - } - } - } /* regs && !bufp->no_sub */ + /* Go through the first `min (num_regs, regs->num_regs)' + registers, since that is all we initialized. */ + for (mcnt = 1; + mcnt < MIN (num_nonshy_regs, regs->num_regs); + mcnt++) + { + int ireg = bufp->external_to_internal_register[mcnt]; + + if (REG_UNSET (regstart[ireg]) || REG_UNSET (regend[ireg])) + regs->start[mcnt] = regs->end[mcnt] = -1; + else + { + regs->start[mcnt] + = (regoff_t) POINTER_TO_OFFSET (regstart[ireg]); + regs->end[mcnt] + = (regoff_t) POINTER_TO_OFFSET (regend[ireg]); + } + } + } /* regs && !bufp->no_sub */ + } /* If we have regs and the regs structure has more elements than - were in the pattern, set the extra elements to -1. If we + were in the pattern, set the extra elements to -1. If we (re)allocated the registers, this is the case, because we always allocate enough to have at least one -1 at the end. We do this even when no_sub is set because some applications - (XEmacs) reuse register structures which may contain stale + (XEmacs) reuse register structures which may contain stale information, and permit attempts to access those registers. It would be possible to require the caller to do this, but we'd @@ -4729,20 +4801,20 @@ for (mcnt = num_regs; mcnt < regs->num_regs; mcnt++) regs->start[mcnt] = regs->end[mcnt] = -1; - DEBUG_PRINT4 ("%u failure points pushed, %u popped (%u remain).\n", - nfailure_points_pushed, nfailure_points_popped, - nfailure_points_pushed - nfailure_points_popped); - DEBUG_PRINT2 ("%u registers pushed.\n", num_regs_pushed); + DEBUG_PRINT4 ("%u failure points pushed, %u popped (%u remain).\n", + nfailure_points_pushed, nfailure_points_popped, + nfailure_points_pushed - nfailure_points_popped); + DEBUG_PRINT2 ("%u registers pushed.\n", num_regs_pushed); - mcnt = d - pos - (MATCHING_IN_FIRST_STRING + mcnt = d - pos - (MATCHING_IN_FIRST_STRING ? string1 : string2 - size1); - DEBUG_PRINT2 ("Returning %d from re_match_2.\n", mcnt); + DEBUG_PRINT2 ("Returning %d from re_match_2.\n", mcnt); - FREE_VARIABLES (); - return mcnt; - } + FREE_VARIABLES (); + return mcnt; + } /* Otherwise match next pattern command. */ switch (SWITCH_ENUM_CAST ((re_opcode_t) *p++)) @@ -5071,11 +5143,15 @@ /* \ has been turned into a `duplicate' command which is - followed by the numeric value of as the register number. */ + followed by the numeric value of as the register number. + (Already passed through external-to-internal-register mapping, + so it refers to the actual group number, not the non-shy-only + numbering used in the external world.) */ case duplicate: { REGISTER re_char *d2, *dend2; - int regno = *p++; /* Get which register to match against. */ + /* Get which register to match against. */ + int regno = *p++; DEBUG_PRINT2 ("EXECUTING duplicate %d.\n", regno); /* Can't back reference a group which we've never matched. */ @@ -5548,7 +5624,8 @@ emch1, emch2 is the character at d, and syn2 is the syntax of emch2. */ Emchar emch1, emch2; - int syn1, syn2; + /* GCC isn't smart enough to see these are initialized if used. */ + int syn1 = 0, syn2 = 0; re_char *d_before, *d_after; int result, at_beg = AT_STRINGS_BEG (d), @@ -6252,6 +6329,8 @@ `newline_anchor' to REG_NEWLINE being set in CFLAGS; `fastmap' and `fastmap_accurate' to zero; `re_nsub' to the number of subexpressions in PATTERN. + (non-shy of course. POSIX probably doesn't know about + shy ones, and in any case they should be invisible.) PATTERN is the address of the pattern string. @@ -6294,7 +6373,7 @@ if (cflags & REG_ICASE) { - unsigned i; + int i; preg->translate = (char *) malloc (CHAR_SET_SIZE); if (preg->translate == NULL) diff -u -r -N xemacs-21.4.15/src/regex.h xemacs-21.4.16/src/regex.h --- xemacs-21.4.15/src/regex.h 2001-04-16 05:24:54.000000000 -0400 +++ xemacs-21.4.16/src/regex.h 2004-09-22 23:03:47.000000000 -0400 @@ -358,9 +358,14 @@ when it is matched. */ RE_TRANSLATE_TYPE translate; - /* Number of subexpressions found by the compiler. */ + /* Number of returnable groups found by the compiler. (This does + not count shy groups.) */ Element_count re_nsub; + /* Total number of groups found by the compiler. (Including + shy ones.) */ + Element_count re_ngroups; + /* Zero if this pattern cannot match the empty string, one else. Well, in truth it's used only in `re_search_2', to see whether or not we should use the fastmap, so we don't set @@ -395,6 +400,12 @@ /* If true, an anchor at a newline matches. */ unsigned newline_anchor : 1; + /* Mapping between back references and groups (may not be + equivalent with shy groups). */ + int *external_to_internal_register; + + int external_to_internal_register_size; + /* [[[end pattern_buffer]]] */ }; diff -u -r -N xemacs-21.4.15/src/s/usg5-4.h xemacs-21.4.16/src/s/usg5-4.h --- xemacs-21.4.15/src/s/usg5-4.h 2001-04-12 14:24:44.000000000 -0400 +++ xemacs-21.4.16/src/s/usg5-4.h 2004-06-24 00:02:38.000000000 -0400 @@ -91,9 +91,9 @@ * constant to dimension an array. So wire in the appropriate value here. */ -#ifndef NSIG +#if defined(emacs) && !defined(NSIG) #define NSIG 32 -#endif +#endif /* defined(emacs) && !defined(NSIG) */ /* We need bss_end from emacs.c for undumping */ diff -u -r -N xemacs-21.4.15/src/scrollbar-gtk.c xemacs-21.4.16/src/scrollbar-gtk.c --- xemacs-21.4.15/src/scrollbar-gtk.c 2001-07-25 03:45:35.000000000 -0400 +++ xemacs-21.4.16/src/scrollbar-gtk.c 2004-08-12 23:23:26.000000000 -0400 @@ -1,4 +1,4 @@ -/* scrollbar implementation -- X interface. +/* scrollbar implementation -- GTK interface. Copyright (C) 1994, 1995 Board of Trustees, University of Illinois. Copyright (C) 1994 Amdhal Corporation. Copyright (C) 1995 Sun Microsystems, Inc. @@ -98,8 +98,9 @@ SCROLLBAR_GTK_VDRAG_ORIG_VALUE (instance) = -1; SCROLLBAR_GTK_LAST_VALUE (instance) = adj->value; - gtk_object_set_data (GTK_OBJECT (adj), "xemacs::gui_id", (void *) SCROLLBAR_GTK_ID (instance)); - gtk_object_set_data (GTK_OBJECT (adj), "xemacs::frame", f); + gtk_object_set_data (GTK_OBJECT (adj), GTK_DATA_GUI_IDENTIFIER, + (void *) SCROLLBAR_GTK_ID (instance)); + gtk_object_set_data (GTK_OBJECT (adj), GTK_DATA_FRAME_IDENTIFIER, f); gtk_object_set_data (GTK_OBJECT (adj), "xemacs::sb_instance", instance); sb = GTK_SCROLLBAR (vertical ? gtk_vscrollbar_new (adj) : gtk_hscrollbar_new (adj)); @@ -217,6 +218,21 @@ gtk_widget_set_usize (wid, pos_data->scrollbar_width, pos_data->scrollbar_height); + + /* + UGLY! UGLY! UGLY! Changes to wid->allocation are queued and + not performed until the GTK event loop. However, when the + fontlock progress bar is run, the vertical scrollbar's height + is change and then changed back before events are again + processed. This means that the change back is not seen and + the scrollbar is left too short. Fix this by making the + change manually so the test above sees the change. This does + not seem to cause problems in other cases. + */ + + wid->allocation.width = pos_data->scrollbar_width; + wid->allocation.height = pos_data->scrollbar_height; + modified_p = 1; } @@ -228,6 +244,21 @@ wid, pos_data->scrollbar_x, pos_data->scrollbar_y); + + /* + UGLY! UGLY! UGLY! Changes to wid->allocation are queued and + not performed until the GTK event loop. However, when the + fontlock progress bar is run, the horizontal scrollbar's + position is change and then changed back before events are + again processed. This means that the change back is not seen + and the scrollbar is left in the wrong position. Fix this by + making the change manually so the test above sees the change. + This does not seem to cause problems in other cases. + */ + + wid->allocation.x = pos_data->scrollbar_x; + wid->allocation.y = pos_data->scrollbar_y; + modified_p = 1; } @@ -359,9 +390,9 @@ { /* This function can GC */ int vertical = (int) user_data; - struct frame *f = gtk_object_get_data (GTK_OBJECT (adj), "xemacs::frame"); + struct frame *f = gtk_object_get_data (GTK_OBJECT (adj), GTK_DATA_FRAME_IDENTIFIER); struct scrollbar_instance *instance = gtk_object_get_data (GTK_OBJECT (adj), "xemacs::sb_instance"); - GUI_ID id = (GUI_ID) gtk_object_get_data (GTK_OBJECT (adj), "xemacs::gui_id"); + GUI_ID id = (GUI_ID) gtk_object_get_data (GTK_OBJECT (adj), GTK_DATA_GUI_IDENTIFIER); Lisp_Object win, frame; struct window_mirror *mirror; Lisp_Object event_type = Qnil; diff -u -r -N xemacs-21.4.15/src/search.c xemacs-21.4.16/src/search.c --- xemacs-21.4.15/src/search.c 2003-10-22 22:03:57.000000000 -0400 +++ xemacs-21.4.16/src/search.c 2004-06-12 13:44:14.000000000 -0400 @@ -109,7 +109,6 @@ static void set_search_regs (struct buffer *buf, Bufpos beg, Charcount len); static void clear_unused_search_regs (struct re_registers *regp, int no_sub); -/* #### according to comment in 21.5, unnecessary */ static void save_search_regs (void); static Bufpos simple_search (struct buffer *buf, Bufbyte *base_pat, Bytecount len, Bytind pos, Bytind lim, @@ -2757,9 +2756,9 @@ CHECK_INT (num); n = XINT (num); - if (n < 0 || n >= search_regs.num_regs) + if (n < 0 || search_regs.num_regs <= 0) args_out_of_range (num, make_int (search_regs.num_regs)); - if (search_regs.num_regs == 0 || + if (n >= search_regs.num_regs || search_regs.start[n] < 0) return Qnil; return make_int (beginningp ? search_regs.start[n] : search_regs.end[n]); @@ -2880,11 +2879,8 @@ int num_regs; int length; -#if 0 - /* #### according to 21.5 comment, unnecessary */ if (running_asynch_code) save_search_regs (); -#endif CONCHECK_LIST (list); @@ -2947,7 +2943,6 @@ return Qnil; } -/* #### according to 21.5 comment, unnecessary */ /* If non-zero the match data have been saved in saved_search_regs during the execution of a sentinel or filter. */ static int search_regs_saved; @@ -2971,8 +2966,6 @@ } } -/* #### according to 21.5 comment, unnecessary - prototype in lisp.h, all calls in process.c */ /* Called upon exit from filters and sentinels. */ void restore_match_data (void) diff -u -r -N xemacs-21.4.15/src/sysdep.c xemacs-21.4.16/src/sysdep.c --- xemacs-21.4.15/src/sysdep.c 2002-08-20 07:38:14.000000000 -0400 +++ xemacs-21.4.16/src/sysdep.c 2004-04-19 22:56:34.000000000 -0400 @@ -3510,19 +3510,19 @@ get_random (void) { long val = random (); -#if VALBITS > RAND_BITS +#if INT_VALBITS > RAND_BITS val = (val << RAND_BITS) ^ random (); -#if VALBITS > 2*RAND_BITS +#if INT_VALBITS > 2*RAND_BITS val = (val << RAND_BITS) ^ random (); -#if VALBITS > 3*RAND_BITS +#if INT_VALBITS > 3*RAND_BITS val = (val << RAND_BITS) ^ random (); -#if VALBITS > 4*RAND_BITS +#if INT_VALBITS > 4*RAND_BITS val = (val << RAND_BITS) ^ random (); #endif /* need at least 5 */ #endif /* need at least 4 */ #endif /* need at least 3 */ #endif /* need at least 2 */ - return val & ((1L << VALBITS) - 1); + return val & (EMACS_INT) ((1UL << INT_VALBITS) - 1); } diff -u -r -N xemacs-21.4.15/src/sysdll.c xemacs-21.4.16/src/sysdll.c --- xemacs-21.4.15/src/sysdll.c 2003-08-14 23:06:30.000000000 -0400 +++ xemacs-21.4.16/src/sysdll.c 2004-03-25 16:08:19.000000000 -0500 @@ -280,19 +280,164 @@ return NSUnLinkModule((NSModule)h, NSUNLINKMODULE_OPTION_NONE); } +/* Given an address, return the mach_header for the image containing it + * or zero if the given address is not contained in any loaded images. + * + * Note: image_for_address(), my_find_image() and search_linked_libs() are + * based on code from the dlcompat library + * (http://www.opendarwin.org/projects/dlcompat). + */ + +static struct mach_header* +image_for_address(void *address) +{ + unsigned long i; + unsigned long count = _dyld_image_count(); + struct mach_header *mh = 0; + + for (i = 0; i < count; i++) + { + unsigned long addr = (unsigned long)address - + _dyld_get_image_vmaddr_slide(i); + mh = _dyld_get_image_header(i); + + if (mh) + { + struct load_command *lc = + (struct load_command *)((char *)mh + sizeof(struct mach_header)); + unsigned long j; + + for (j = 0; j < mh->ncmds; + j++, lc = (struct load_command *)((char *)lc + lc->cmdsize)) + { + if (LC_SEGMENT == lc->cmd && + addr >= ((struct segment_command *)lc)->vmaddr && + addr < + ((struct segment_command *)lc)->vmaddr + + ((struct segment_command *)lc)->vmsize) + { + goto image_found; + } + } + } + + mh = 0; + } + + image_found: + return mh; +} + +static const struct mach_header* +my_find_image(const char *name) +{ + const struct mach_header *mh = (struct mach_header *) + NSAddImage(name, NSADDIMAGE_OPTION_RETURN_ONLY_IF_LOADED | + NSADDIMAGE_OPTION_RETURN_ON_ERROR); + + if (!mh) + { + int count = _dyld_image_count(); + int j; + + for (j = 0; j < count; j++) + { + const char *id = _dyld_get_image_name(j); + + if (!strcmp(id, name)) + { + mh = _dyld_get_image_header(j); + break; + } + } + } + + return mh; +} + +/* + * dyld adds libraries by first adding the directly dependant libraries in + * link order, and then adding the dependencies for those libraries, so we + * should do the same... but we don't bother adding the extra dependencies, if + * the symbols are neither in the loaded image nor any of it's direct + * dependencies, then it probably isn't there. + */ +static NSSymbol +search_linked_libs(const struct mach_header * mh, const char *symbol) +{ + int n; + NSSymbol nssym = 0; + + struct load_command *lc = + (struct load_command *)((char *)mh + sizeof(struct mach_header)); + + for (n = 0; n < mh->ncmds; + n++, lc = (struct load_command *)((char *)lc + lc->cmdsize)) + { + if ((LC_LOAD_DYLIB == lc->cmd) || (LC_LOAD_WEAK_DYLIB == lc->cmd)) + { + struct mach_header *wh; + + if ((wh = (struct mach_header *) + my_find_image((char *)(((struct dylib_command *)lc)->dylib.name.offset + + (char *)lc)))) + { + if (NSIsSymbolNameDefinedInImage(wh, symbol)) + { + nssym = + NSLookupSymbolInImage(wh, + symbol, + NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | + NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR); + break; + } + } + } + } + + return nssym; +} + dll_func dll_function (dll_handle h, const char *n) { - NSSymbol sym; + NSSymbol sym = 0; #ifdef DLSYM_NEEDS_UNDERSCORE char *buf = alloca_array (char, strlen (n) + 2); *buf = '_'; strcpy (buf + 1, n); n = buf; #endif - sym = NSLookupSymbolInModule((NSModule)h, n); - if (sym == 0) return 0; - return (dll_func)NSAddressOfSymbol(sym); + + /* NULL means the program image and shared libraries, not bundles. */ + + if (h == NULL) + { + /* NOTE: This assumes that this function is included in the main program + and not in a shared library. */ + const struct mach_header* my_mh = image_for_address(&dll_function); + + if (NSIsSymbolNameDefinedInImage(my_mh, n)) + { + sym = + NSLookupSymbolInImage(my_mh, + n, + NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | + NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR); + } + + if (!sym) + { + sym = search_linked_libs(my_mh, n); + } + } + else + { + sym = NSLookupSymbolInModule((NSModule)h, n); + } + + if (sym == 0) return 0; + return (dll_func)NSAddressOfSymbol(sym); } dll_var diff -u -r -N xemacs-21.4.15/src/ui-gtk.c xemacs-21.4.16/src/ui-gtk.c --- xemacs-21.4.15/src/ui-gtk.c 2001-04-12 14:24:26.000000000 -0400 +++ xemacs-21.4.16/src/ui-gtk.c 2004-07-06 22:25:57.000000000 -0400 @@ -36,6 +36,7 @@ Lisp_Object gtk_type_to_lisp (GtkArg *arg); int lisp_to_gtk_type (Lisp_Object obj, GtkArg *arg); +int lisp_to_gtk_ret_type (Lisp_Object obj, GtkArg *arg); void describe_gtk_arg (GtkArg *arg); guint symbol_to_enum (Lisp_Object obj, GtkType t); static guint lisp_to_flag (Lisp_Object obj, GtkType t); @@ -960,7 +961,7 @@ emacs_gtk_object_data *data = NULL; GUI_ID id = 0; - id = (GUI_ID) gtk_object_get_data (obj, "xemacs::gui_id"); + id = (GUI_ID) gtk_object_get_data (obj, GTK_DATA_GUI_IDENTIFIER); if (id) { @@ -976,7 +977,7 @@ XSETGTK_OBJECT (retval, data); id = new_gui_id (); - gtk_object_set_data (obj, "xemacs::gui_id", (gpointer) id); + gtk_object_set_data (obj, GTK_DATA_GUI_IDENTIFIER, (gpointer) id); gcpro_popup_callbacks (id, retval); gtk_object_ref (obj); gtk_signal_connect (obj, "destroy", GTK_SIGNAL_FUNC (__notice_object_destruction), (gpointer)id); @@ -1035,7 +1036,7 @@ signal_fake_event (); if (args[n_args].type != GTK_TYPE_NONE) - lisp_to_gtk_type (rval, &args[n_args]); + lisp_to_gtk_ret_type (rval, &args[n_args]); UNGCPRO; } @@ -1796,6 +1797,285 @@ return (0); } +/* Convert lisp types to GTK return types. This is identical to + lisp_to_gtk_type() except that the macro used to set the value is + different. + + ### There should be some way of combining these two functions. +*/ +int lisp_to_gtk_ret_type (Lisp_Object obj, GtkArg *arg) +{ + switch (GTK_FUNDAMENTAL_TYPE (arg->type)) + { + /* flag types */ + case GTK_TYPE_NONE: + return (0); + case GTK_TYPE_CHAR: + { + Emchar c; + + CHECK_CHAR_COERCE_INT (obj); + c = XCHAR (obj); + *(GTK_RETLOC_CHAR (*arg)) = c; + } + break; + case GTK_TYPE_UCHAR: + { + Emchar c; + + CHECK_CHAR_COERCE_INT (obj); + c = XCHAR (obj); + *(GTK_RETLOC_CHAR (*arg)) = c; + } + break; + case GTK_TYPE_BOOL: + *(GTK_RETLOC_BOOL (*arg)) = NILP (obj) ? FALSE : TRUE; + break; + case GTK_TYPE_INT: + case GTK_TYPE_UINT: + if (NILP (obj) || EQ (Qt, obj)) + { + /* For we are a kind mistress and allow sending t/nil for + 1/0 to stupid GTK functions that say they take guint or + gint in the header files, but actually treat it like a + bool. *sigh* + */ + *(GTK_RETLOC_INT(*arg)) = NILP (obj) ? 0 : 1; + } + else + { + CHECK_INT (obj); + *(GTK_RETLOC_INT(*arg)) = XINT (obj); + } + break; + case GTK_TYPE_LONG: + case GTK_TYPE_ULONG: + abort(); + case GTK_TYPE_FLOAT: + CHECK_INT_OR_FLOAT (obj); + *(GTK_RETLOC_FLOAT(*arg)) = extract_float (obj); + break; + case GTK_TYPE_DOUBLE: + CHECK_INT_OR_FLOAT (obj); + *(GTK_RETLOC_DOUBLE(*arg)) = extract_float (obj); + break; + case GTK_TYPE_STRING: + if (NILP (obj)) + *(GTK_RETLOC_STRING (*arg)) = NULL; + else + { + CHECK_STRING (obj); + *(GTK_RETLOC_STRING (*arg)) = (char *) XSTRING_DATA (obj); + } + break; + case GTK_TYPE_ENUM: + case GTK_TYPE_FLAGS: + /* Convert a lisp symbol to a GTK enum */ + *(GTK_RETLOC_ENUM(*arg)) = lisp_to_flag (obj, arg->type); + break; + case GTK_TYPE_BOXED: + if (NILP (obj)) + { + *(GTK_RETLOC_BOXED(*arg)) = NULL; + } + else if (GTK_BOXEDP (obj)) + { + *(GTK_RETLOC_BOXED(*arg)) = XGTK_BOXED (obj)->object; + } + else if (arg->type == GTK_TYPE_STYLE) + { + obj = Ffind_face (obj); + CHECK_FACE (obj); + *(GTK_RETLOC_BOXED(*arg)) = face_to_style (obj); + } + else if (arg->type == GTK_TYPE_GDK_GC) + { + obj = Ffind_face (obj); + CHECK_FACE (obj); + *(GTK_RETLOC_BOXED(*arg)) = face_to_gc (obj); + } + else if (arg->type == GTK_TYPE_GDK_WINDOW) + { + if (GLYPHP (obj)) + { + Lisp_Object window = Fselected_window (Qnil); + Lisp_Object instance = glyph_image_instance (obj, window, ERROR_ME_NOT, 1); + struct Lisp_Image_Instance *p = XIMAGE_INSTANCE (instance); + + switch (XIMAGE_INSTANCE_TYPE (instance)) + { + case IMAGE_TEXT: + case IMAGE_POINTER: + case IMAGE_SUBWINDOW: + case IMAGE_NOTHING: + *(GTK_RETLOC_BOXED(*arg)) = NULL; + break; + + case IMAGE_MONO_PIXMAP: + case IMAGE_COLOR_PIXMAP: + *(GTK_RETLOC_BOXED(*arg)) = IMAGE_INSTANCE_GTK_PIXMAP (p); + break; + } + } + else if (GTK_OBJECTP (obj) && GTK_IS_WIDGET (XGTK_OBJECT (obj)->object)) + { + *(GTK_RETLOC_BOXED(*arg)) = GTK_WIDGET (XGTK_OBJECT (obj))->window; + } + else + { + signal_simple_error ("Don't know how to convert object to GDK_WINDOW", obj); + } + break; + } + else if (arg->type == GTK_TYPE_GDK_COLOR) + { + if (COLOR_SPECIFIERP (obj)) + { + /* If it is a specifier, we just convert it to an + instance, and let the ifs below handle it. + */ + obj = Fspecifier_instance (obj, Qnil, Qnil, Qnil); + } + + if (COLOR_INSTANCEP (obj)) + { + /* Easiest one */ + *(GTK_RETLOC_BOXED(*arg)) = COLOR_INSTANCE_GTK_COLOR (XCOLOR_INSTANCE (obj)); + } + else if (STRINGP (obj)) + { + signal_simple_error ("Please use a color specifier or instance, not a string", obj); + } + else + { + signal_simple_error ("Don't know hot to convert to GdkColor", obj); + } + } + else if (arg->type == GTK_TYPE_GDK_FONT) + { + if (SYMBOLP (obj)) + { + /* If it is a symbol, we treat that as a face name */ + obj = Ffind_face (obj); + } + + if (FACEP (obj)) + { + /* If it is a face, we just grab the font specifier, and + cascade down until we finally reach a FONT_INSTANCE + */ + obj = Fget (obj, Qfont, Qnil); + } + + if (FONT_SPECIFIERP (obj)) + { + /* If it is a specifier, we just convert it to an + instance, and let the ifs below handle it + */ + obj = Fspecifier_instance (obj, Qnil, Qnil, Qnil); + } + + if (FONT_INSTANCEP (obj)) + { + /* Easiest one */ + *(GTK_RETLOC_BOXED(*arg)) = FONT_INSTANCE_GTK_FONT (XFONT_INSTANCE (obj)); + } + else if (STRINGP (obj)) + { + signal_simple_error ("Please use a font specifier or instance, not a string", obj); + } + else + { + signal_simple_error ("Don't know hot to convert to GdkColor", obj); + } + } + else + { + /* Unknown type to convert to boxed */ + stderr_out ("Don't know how to convert to boxed!\n"); + *(GTK_RETLOC_BOXED(*arg)) = NULL; + } + break; + + case GTK_TYPE_POINTER: + if (NILP (obj)) + *(GTK_RETLOC_POINTER(*arg)) = NULL; + else + *(GTK_RETLOC_POINTER(*arg)) = LISP_TO_VOID (obj); + break; + + /* structured types */ + case GTK_TYPE_SIGNAL: + case GTK_TYPE_ARGS: /* This we can do as a list of values */ + case GTK_TYPE_C_CALLBACK: + case GTK_TYPE_FOREIGN: + stderr_out ("Do not know how to convert `%s' from lisp!\n", gtk_type_name (arg->type)); + return (-1); + +#if 0 + /* #### BILL! */ + /* This is not used, and does not work with union type */ + case GTK_TYPE_CALLBACK: + { + GUI_ID id; + + id = new_gui_id (); + obj = Fcons (Qnil, obj); /* Empty data */ + obj = Fcons (make_int (id), obj); + + gcpro_popup_callbacks (id, obj); + + *(GTK_RETLOC_CALLBACK(*arg)).marshal = __internal_callback_marshal; + *(GTK_RETLOC_CALLBACK(*arg)).data = (gpointer) obj; + *(GTK_RETLOC_CALLBACK(*arg)).notify = __internal_callback_destroy; + } + break; +#endif + + /* base type of the object system */ + case GTK_TYPE_OBJECT: + if (NILP (obj)) + *(GTK_RETLOC_OBJECT (*arg)) = NULL; + else + { + CHECK_GTK_OBJECT (obj); + if (XGTK_OBJECT (obj)->alive_p) + *(GTK_RETLOC_OBJECT (*arg)) = XGTK_OBJECT (obj)->object; + else + signal_simple_error ("Attempting to pass dead object to GTK function", obj); + } + break; + + default: + if (GTK_FUNDAMENTAL_TYPE (arg->type) == GTK_TYPE_ARRAY) + { + if (NILP (obj)) + *(GTK_RETLOC_POINTER(*arg)) = NULL; + else + { + xemacs_list_to_array (obj, arg); + } + } + else if (GTK_FUNDAMENTAL_TYPE (arg->type) == GTK_TYPE_LISTOF) + { + if (NILP (obj)) + *(GTK_RETLOC_POINTER(*arg)) = NULL; + else + { + xemacs_list_to_gtklist (obj, arg); + } + } + else + { + stderr_out ("Do not know how to convert `%s' from lisp!\n", gtk_type_name (arg->type)); + abort(); + } + break; + } + + return (0); +} + /* This is used in glyphs-gtk.c as well */ static Lisp_Object get_enumeration (GtkType t) diff -u -r -N xemacs-21.4.15/tests/ChangeLog xemacs-21.4.16/tests/ChangeLog --- xemacs-21.4.15/tests/ChangeLog 2004-02-02 22:01:42.000000000 -0500 +++ xemacs-21.4.16/tests/ChangeLog 2004-12-05 20:07:28.000000000 -0500 @@ -1,3 +1,36 @@ +2004-12-05 Vin Shelton + + * XEmacs 21.4.16 is released + +2004-10-28 Stephen J. Turnbull + + * automated/os-tests.el: New file. Add tests for bug reported by + Katsumi Yamaoka 2004-10-26 . Test + suggested by Katsumi Yamaoka . + +2004-10-07 Stephen J. Turnbull + + * automated/regexp-tests.el: Add tests for bug identified by + Steve Youngs 2004-09-30 + +2004-09-08 Stephen J. Turnbull + + * automated/regexp-tests.el: Add tests for bug identified by + Katsumi Yamaoka 2004-09-03 . + +2004-05-11 Vin Shelton + + * automated/tag-test.el: Use a temp directory to avoid conflicts + with extra TAGS files. + +2004-05-08 Vin Shelton + + * automated/tag-test.el: Created. + +2004-04-19 Stephen J. Turnbull + + * automated/mule-tests.el: Inhibit GC to speed up BIG_STRING tests. + 2004-02-02 Vin Shelton * XEmacs 21.4.15 is released diff -u -r -N xemacs-21.4.15/tests/automated/mule-tests.el xemacs-21.4.16/tests/automated/mule-tests.el --- xemacs-21.4.15/tests/automated/mule-tests.el 2001-07-25 03:47:09.000000000 -0400 +++ xemacs-21.4.16/tests/automated/mule-tests.el 2004-04-19 22:56:39.000000000 -0400 @@ -233,7 +233,7 @@ ;; Test strings waxing and waning across the 8k BIG_STRING limit (see alloc.c) ;;--------------------------------------------------------------- (defun charset-char-string (charset) - (let (lo hi string n) + (let (lo hi string n (gc-cons-threshold most-positive-fixnum)) (if (= (charset-chars charset) 94) (setq lo 33 hi 126) (setq lo 32 hi 127)) @@ -245,6 +245,7 @@ (progn (aset string n (make-char charset j)) (incf n))) + (garbage-collect) string) (progn (setq string (make-string (* (1+ (- hi lo)) (1+ (- hi lo))) ??)) @@ -254,6 +255,7 @@ (progn (aset string n (make-char charset j k)) (incf n)))) + (garbage-collect) string)))) ;; The following two used to crash xemacs! diff -u -r -N xemacs-21.4.15/tests/automated/os-tests.el xemacs-21.4.16/tests/automated/os-tests.el --- xemacs-21.4.15/tests/automated/os-tests.el 1969-12-31 19:00:00.000000000 -0500 +++ xemacs-21.4.16/tests/automated/os-tests.el 2004-12-04 22:26:27.000000000 -0500 @@ -0,0 +1,91 @@ +;;; os-tests.el --- test support for OS interaction + +;; Copyright (C) 2004 Free Software Foundation + +;; Author: Stephen J. Turnbull +;; Maintainer: Stephen J. Turnbull +;; Created: 2004 October 28 +;; Keywords: tests, process support + +;; This file is part of XEmacs. + +;; XEmacs is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; XEmacs is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with XEmacs; see the file COPYING. If not, write to the Free +;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +;; 02111-1307, USA. + +;;; Synched up with: Not in FSF. + +;;; Commentary: + +;; Test OS support. Processes, environment variables, etc. +;; See test-harness.el for instructions on how to run these tests. + +;; call-process-region bug reported by Katsumi Yamaoka on 2004-10-26 +;; in , who suggested the basic test scheme +;; in . + +;; tac works by lines, unfortunately +(let* ((original-string "a\nb\nc\nd\n") + (tac-cases (if (executable-find "tac") + '((1 . "c\nb\na\nd\n") + (3 . "a\nc\nb\nd\n") + (5 . "a\nc\nb\nd\n") + (7 . "a\nc\nb\nd\n") + (9 . "a\nd\nc\nb\n")) + nil)) + (cat-cases (if (executable-find "cat") + '((1 . "b\nc\na\nd\n") + (3 . "a\nb\nc\nd\n") + (5 . "a\nb\nc\nd\n") + (7 . "a\nb\nc\nd\n") + (9 . "a\nd\nb\nc\n")) + nil)) + cases case) + (with-temp-buffer + (Skip-Test-Unless tac-cases + "tac executable not found" + "Tests of call-process-region with region deleted after inserting +tac process output." + (setq cases tac-cases) + (while cases + (setq case (car cases) + cases (cdr cases)) + (flet ((do-test (pos result) + (erase-buffer) + (insert original-string) + (goto-char pos) + (call-process-region 3 7 "tac" t t) + (goto-char (point-min)) + (Assert (looking-at result)))) + (do-test (car case) (cdr case))))) + ;; if you're in that much of a hurry you can blow cat off + ;; if you've done tac, but I'm not going to bother + (Skip-Test-Unless cat-cases + "cat executable not found" + "Tests of call-process-region with region deleted after inserting +cat process output." + (setq cases cat-cases) + (while cases + (setq case (car cases) + cases (cdr cases)) + (flet ((do-test (pos result) + (erase-buffer) + (insert original-string) + (goto-char pos) + (call-process-region 3 7 "cat" t t) + (goto-char (point-min)) + (Assert (looking-at result)))) + (do-test (car case) (cdr case))))))) + +;;; end of os-tests.el diff -u -r -N xemacs-21.4.15/tests/automated/regexp-tests.el xemacs-21.4.16/tests/automated/regexp-tests.el --- xemacs-21.4.15/tests/automated/regexp-tests.el 2003-09-25 22:34:57.000000000 -0400 +++ xemacs-21.4.16/tests/automated/regexp-tests.el 2004-10-07 20:40:38.000000000 -0400 @@ -385,3 +385,32 @@ (string-match "b" a) (match-string 1 a)) a))) + +;; bug identified by Katsumi Yamaoka 2004-09-03 +;; fix submitted by sjt 2004-09-08 +;; trailing comments are values from buggy 21.4.15 +(let ((text "abc")) + (Assert (eq 0 (string-match "\\(?:ab+\\)*c" text))) ; 2 + (Assert (eq 0 (string-match "^\\(?:ab+\\)*c" text))) ; nil + (Assert (eq 0 (string-match "^\\(?:ab+\\)*" text))) ; 0 + (Assert (eq 0 (string-match "^\\(?:ab+\\)c" text))) ; 0 + (Assert (eq 0 (string-match "^\\(?:ab\\)*c" text))) ; 0 + (Assert (eq 0 (string-match "^\\(?:a+\\)*b" text))) ; nil + (Assert (eq 0 (string-match "^\\(?:a\\)*b" text))) ; 0 +) + +;; per Steve Youngs 2004-09-30 +;; fix submitted by sjt 2004-10-07 +;; trailing comments are values from buggy 21.4.pre16 +(let ((text "abc")) + (Assert (eq 0 (string-match "\\(?:a\\(b\\)\\)" text))) ; 0 + (Assert (string= (match-string 1 text) "b")) ; ab + (Assert (null (match-string 2 text))) ; b + (Assert (null (match-string 3 text))) ; nil + (Assert (eq 0 (string-match "\\(?:a\\(?:b\\(c\\)\\)\\)" text))) ; 0 + (Assert (string= (match-string 1 text) "c")) ; abc + (Assert (null (match-string 2 text))) ; ab + (Assert (null (match-string 3 text))) ; c + (Assert (null (match-string 4 text))) ; nil +) + diff -u -r -N xemacs-21.4.15/tests/automated/tag-tests.el xemacs-21.4.16/tests/automated/tag-tests.el --- xemacs-21.4.15/tests/automated/tag-tests.el 1969-12-31 19:00:00.000000000 -0500 +++ xemacs-21.4.16/tests/automated/tag-tests.el 2004-05-12 20:10:58.000000000 -0400 @@ -0,0 +1,91 @@ +;; Copyright (C) 2004 Vin Shelton + +;; Author: Vin Shelton +;; Maintainer: Vin Shelton +;; Created: 2004 +;; Keywords: tests + +;; This file is part of XEmacs. + +;; XEmacs is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; XEmacs is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with XEmacs; see the file COPYING. If not, write to the Free +;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +;; 02111-1307, USA. + +;;; Synched up with: Not in FSF. + +;;; Commentary: + +;; Test tag support. +;; See test-harness.el for instructions on how to run these tests. + +(let ((testfile "tag-test.c") + (tagfile "TAGS") + (tags-build-completion-table nil)) + + (cd (temp-directory)) + + ;; Create a TAGS file + (with-temp-file tagfile + (insert +" +tag-test.c,99 +struct mystruct mystruct2,1 +struct mystruct *foo\(4,23 +DEFUN \(\"require\", Frequire,require,7,51 +")) + + ;; Create the test file + (with-temp-file testfile + (insert +" +struct mystruct { }; + +struct mystruct *foo\(\) { +} + +DEFUN \(\"require\", Frequire, 1, 2, 0, /* +If feature FEATURE is not loaded, load it from FILENAME. +If FEATURE is not a member of the list `features', then the feature +is not loaded; so load the file FILENAME. +If FILENAME is omitted, the printname of FEATURE is used as the file name. +*/ + \(feature, filename\)\) +{ +} +")) + + (let ((tags-always-exact t)) + + ;; Search for the tag "mystruct"; this should succeed + (find-tag "mystruct") + (Assert (eq (point) 2)) + + ;; Search again. The search should fail, based on the patch that + ;; Sven Grundmann submitted for 21.4.16. + (Check-Error-Message error "No more entries matching mystruct" + (tags-loop-continue))) + + (let ((tags-always-exact nil)) + + ;; Search for the definition of "require". Until the etags.el upgrade + ;; from 21.5 in 21.4.16, this test would fail. + (condition-case nil + (find-tag "require") + (t t)) + (Assert (eq (point) 52))) + + (kill-buffer testfile) + (delete-file testfile) + (kill-buffer tagfile) + (delete-file tagfile)) diff -u -r -N xemacs-21.4.15/version.sh xemacs-21.4.16/version.sh --- xemacs-21.4.15/version.sh 2004-02-02 21:52:52.000000000 -0500 +++ xemacs-21.4.16/version.sh 2004-12-05 19:58:31.000000000 -0500 @@ -2,8 +2,8 @@ emacs_is_beta= emacs_major_version=21 emacs_minor_version=4 -emacs_beta_version=15 -xemacs_codename="Security Through Obscurity" +emacs_beta_version=16 +xemacs_codename="Corporate Culture" emacs_kit_version= infodock_major_version=4 infodock_minor_version=0