From: tomo Date: Mon, 17 May 1999 09:41:32 +0000 (+0000) Subject: XEmacs 21.2-b2 X-Git-Tag: r21-2b2~3 X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=commitdiff_plain;h=fb022c5b8ea6aca36b9661a6b2707afdd07e4c05 XEmacs 21.2-b2 --- diff --git a/CHANGES-beta b/CHANGES-beta index 530bc55..9a96988 100644 --- a/CHANGES-beta +++ b/CHANGES-beta @@ -1,4 +1,16 @@ -*- indented-text -*- +to 21.2 beta2 "Aether" +-- Synched with 21.0-pre14 "Poitou" +-- isearch improvements from Hrvoje Niksic +-- bytecompiler fix from Martin Buccholz +-- shadow.el speedup from Martin Buchholz +-- clash detection update from Jan Vroonhof +-- Indirect buffers from Hrvoje Niksic +-- ~user completion cleanup from Greg Klanderman +-- New face property from Didier Verna +-- ~user completion and fixes from Greg Klanderman +-- casefiddle.c speedup from Martin Buchholz + to 21.2 beta1 "Aeolus" -- Synch with 21.0-pre6 -- Removal of ancient obsolete symbols courtesy of Altrasoft diff --git a/ChangeLog b/ChangeLog index 2671250..a92e140 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,86 @@ +1998-09-29 SL Baur + + * XEmacs 21.2-beta2 is released. + +1998-09-09 Gunnar Evermann + + * lwlib/xlwmenu.c: + * lwlib/xlwscrollbar: fix for Motif >=2.0 + Patch provided by Glenn Barry + + * PROBLEMS: XEmacs 21.0 now works on HP-UX 11.0 + +1998-09-02 Andy Piper + + * configure.in: check for cygwin32/version.h. + +1998-08-31 Michael Sperber [Mr. Preprocessor] + + * PROBLEMS: Added AIX 4.3 note. + + * configure.in: Better detection of AIX 4.3. + AIX xlc can do -g and -Ox at the same time. + +1998-09-05 SL Baur + + * etc/check_cygwin_setup.sh: grammar fix. + +1998-09-02 Andy Piper + + * etc/check_cygwin_setup.sh: fix a couple of buglets. + +1998-08-23 Adrian Aichner + + * etc/sample.emacs: Enable sound support on mswindows devices. + +1998-08-17 P. E. Jareth Hein + + * configure.in: Alter configure so that it checks for mismatched PNG + header/libs, screams a little louder on old/mismatched library + conditions for both PNG and XPM, stop screaming if png is not found and + no window-system is selected, and fixed a bug in the XPM checking. + +1998-08-06 Adrian Aichner + + * etc/TUTORIAL.de: Fixing typos and grammatical errors. Fixing + inconsistent usage of RET, , and (only using + now). Changing TUTORIAL to TUTORIAL.de throughout + itself. Adding english equivalent to german translation of all + concepts used in TUTORIAL.de. + +1998-08-07 P. E. Jareth Hein + + * configure.usage (--without-gif): Modify text to reflect status + of GIF support + +1998-08-04 P. E. Jareth Hein + + * configure.in: add back in the support for the in-core GIF + code, change the required PNG library version to 1.0.2, and add + a warning if PNG not found, since PNG images are now distributed + as part of the core. Also minor wording changes in things reported + to the user. + +1998-07-28 Kai Haberzettl + + * BETA: Update mailing-list address for build-reports + +1998-08-01 SL Baur + + * Makefile.in (TAGS tags): Add variable `tagslisp' so a TAGS file + can built that includes package lisp. + +1998-07-23 Martin Buchholz + + * configure.in: + - support multiple flavors of alpha, (XEmacs treats them identically) + - Fix AC_TRY_RUN so that actions have access to $? + - Identify DEC C compilers. Add default optimization CFLAGS and + always use -std. + - Use an extensible method for adding support for future compilers. + - Have SunPro C use that same extensible method. + - Make sol2 always use `-R', Linux and DEC OSF always use `-rpath' + 1998-07-19 SL Baur * XEmacs 21.2-beta1 is released. diff --git a/INSTALL b/INSTALL index 50fba0b..bccc7f1 100644 --- a/INSTALL +++ b/INSTALL @@ -80,7 +80,7 @@ system using Mule and Wnn6 from OMRON corporation would be the packages `mule-base' and `egg-its'. By default, packages will be searched for in the path -~/.xemacs::$prefix/lib/xemacs-${version}/mule-packages:$prefix/lib/xemacs/mule-packages:$prefix/lib/xemacs-${version}/packages:$prefix/lib/xemacs/packages +~/.xemacs::$prefix/lib/xemacs-${version}/mule-packages:$prefix/lib/xemacs/mule-packages:$prefix/lib/xemacs-${version}/xemacs-packages:$prefix/lib/xemacs/xemacs-packages This may be changed by specifying a different value with the --package-path configuration option. diff --git a/PROBLEMS b/PROBLEMS index 072fc72..aa65af5 100644 --- a/PROBLEMS +++ b/PROBLEMS @@ -2,7 +2,7 @@ This file describes various problems that have been encountered in compiling, installing and running XEmacs. It has been updated for -XEmacs 21.2. +XEmacs 21.0. This file is rather large, but we have tried to sort the entries by their respective relevance for XEmacs, but may have not succeeded @@ -29,7 +29,8 @@ A general advice: * Problems with building XEmacs =============================== -** Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using +** General +*** Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using `-fno-strength-reduce'. gcc will generate incorrect code otherwise. This bug is present in at @@ -38,7 +39,7 @@ later. This bug is O/S independent, but is limited to x86 architectures. This problem is known to be fixed in egcs (or pgcc) 1.0 or later. -** Don't use -O2 with gcc 2.7.2 under Intel architectures without also +*** Don't use -O2 with gcc 2.7.2 under Intel architectures without also using `-fno-caller-saves'. gcc will generate incorrect code otherwise. This bug is still @@ -48,7 +49,16 @@ independent, but limited to x86 architectures. This problem is known to be fixed in egcs (or pgcc) 1.0 or later. -** Excessive optimization with pgcc can break XEmacs +*** When using gcc, you get the error message "undefined symbol __fixunsdfsi". +When using gcc, you get the error message "undefined symbol __main". + +This means that you need to link with the gcc library. It may be called +"gcc-gnulib" or "libgcc.a"; figure out where it is, and define LIB_GCC in +config.h to point to it. + +It may also work to use the GCC version of `ld' instead of the standard one. + +*** Excessive optimization with pgcc can break XEmacs It has been reported on some systems that compiling with -O6 can lead to XEmacs failures. The workaround is to use a lower optimization @@ -59,28 +69,21 @@ of libc. Snapshots near the release of pgcc-1.0 have been tested extensively and no sign of breakage has been seen on systems using glibc-2. -** `compress' and `uncompress' not found and XFree86 +*** src/Makefile and lib-src/Makefile are truncated--most of the file missing. -XFree86 installs a very old version of libz.a by default ahead of where -more modern version of libz might be installed. This will cause problems -when attempting to link against libMagick. The fix is to remove the old -libz.a in the X11 binary directory. - -** Excessive optimization on AIX 4.2 can lead to compiler failure. +This can happen if configure uses GNU sed version 2.03. That version +had a bug. GNU sed version 2.05 works properly. -Valdis.Kletnieks@vt.edu writes: - At least at the b34 level, and the latest-and-greatest IBM xlc - (3.1.4.4), there are problems with -O3. I haven't investigated - further. +*** When compiling with X11, you get "undefined symbol _XtStrings". -** Sed problems on Solaris 2.5 +This means that you are trying to link emacs against the X11r4 version of +libXt.a, but you have compiled either Emacs or the code in the lwlib +subdirectory with the X11r5 header files. That doesn't work. -There have been reports of Sun sed truncating very lines in the -Makefile during configuration. The workaround is to use GNU sed or, -even better, think of a better way to generate Makefile, and send us a -patch. :-) +Remember, you can't compile lwlib for r4 and emacs for r5, or vice versa. +They must be in sync. -** test-distrib says that the distribution has been clobbered +*** test-distrib says that the distribution has been clobbered or, temacs prints "Command key out of range 0-127" or, temacs runs and dumps xemacs, but xemacs totally fails to work. or, temacs gets errors dumping xemacs @@ -100,12 +103,162 @@ characters, you can fix them by running: This will rebuild all the needed .elc files. -** `Error: No ExtNode to pop!' on Linux systems with Lesstif. +*** `compress' and `uncompress' not found and XFree86 + +XFree86 installs a very old version of libz.a by default ahead of where +more modern version of libz might be installed. This will cause problems +when attempting to link against libMagick. The fix is to remove the old +libz.a in the X11 binary directory. + + +** AIX +*** On AIX 4.3, you must specify --with-dialogs=athena with configure + +*** On AIX, you get this compiler error message: + + Processing include file ./XMenuInt.h + 1501-106: (S) Include file X11/Xlib.h not found. + +This means your system was installed with only the X11 runtime i.d +libraries. You have to find your sipo (bootable tape) and install +X11Dev... with smit. + +*** On AIX 4.1.2, linker error messages such as + ld: 0711-212 SEVERE ERROR: Symbol .__quous, found in the global symbol table + of archive /usr/lib/libIM.a, was not defined in archive member shr.o. + +This is a problem in libIM.a. You can work around it by executing +these shell commands in the src subdirectory of the directory where +you build Emacs: + + cp /usr/lib/libIM.a . + chmod 664 libIM.a + ranlib libIM.a + +Then change -lIM to ./libIM.a in the command to link temacs (in +Makefile). + +*** Excessive optimization on AIX 4.2 can lead to compiler failure. + +Valdis.Kletnieks@vt.edu writes: + At least at the b34 level, and the latest-and-greatest IBM xlc + (3.1.4.4), there are problems with -O3. I haven't investigated + further. + + +** SunOS/Solaris +*** Link failure when using acc on a Sun. + +To use acc, you need additional options just before the libraries, such as + + /usr/lang/SC2.0.1/values-Xt.o -L/usr/lang/SC2.0.1/cg87 -L/usr/lang/SC2.0.1 + +and you need to add -lansi just before -lc. + +The precise file names depend on the compiler version, so we +cannot easily arrange to supply them. + +*** Problems finding X11 libraries on Solaris with Openwindows + +Some users have reported problems in this area. The reported solution +is to define the environment variable OPENWINHOME, even if you must set +it to `/usr/openwin'. + +*** Sed problems on Solaris 2.5 + +There have been reports of Sun sed truncating very lines in the +Makefile during configuration. The workaround is to use GNU sed or, +even better, think of a better way to generate Makefile, and send us a +patch. :-) + +*** On Solaris 2 I get undefined symbols from libcurses.a. + +You probably have /usr/ucblib/ on your LD_LIBRARY_PATH. Do the link with +LD_LIBRARY_PATH unset. Generally, avoid using any ucb* stuff when +building XEmacs. + +*** On Solaris 2 I cannot make alloc.o, glyphs.o or process.o. + +The SparcWorks C compiler may have difficulty building those modules +with optimization level -xO4. Try using only "-fast" optimization +for just those modules. (Or use gcc). + +*** Solaris 2.3 /bin/sh coredumps during configuration. + +This only occurs if you have LANG != C. This is a known bug with +/bin/sh fixed by installing Patch-ID# 101613-01. Or, you can use +bash, as a workaround. + +*** On SunOS, you get linker errors + ld: Undefined symbol + _get_wmShellWidgetClass + _get_applicationShellWidgetClass + +The fix to this is to install patch 100573 for OpenWindows 3.0 +or link libXmu statically. + +*** On Sunos 4, you get the error ld: Undefined symbol __lib_version. + +This is the result of using cc or gcc with the shared library meant +for acc (the Sunpro compiler). Check your LD_LIBRARY_PATH and delete +/usr/lang/SC2.0.1 or some similar directory. + +*** Undefined symbols when linking on Sunos 4.1. + +If you get the undefined symbols _atowc _wcslen, _iswprint, _iswspace, +_iswcntrl, _wcscpy, and _wcsncpy, then you need to add -lXwchar after +-lXaw in the command that links temacs. + +This problem seems to arise only when the international language +extensions to X11R5 are installed. + +*** On a Sun running SunOS 4.1.1, you get this error message from GNU ld: + + /lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment + +The problem is in the Sun shared C library, not in GNU ld. + +The solution is to install Patch-ID# 100267-03 from Sun. + +*** SunOS 4.1.2: undefined symbol _get_wmShellWidgetClass + + Apparently the version of libXmu.so.a that Sun ships is hosed: it's missing + some stuff that is in libXmu.a (the static version). Sun has a patch for + this, but a workaround is to use the static version of libXmu, by changing + the link command from "-lXmu" to "-Bstatic -lXmu -Bdynamic". If you have + OpenWindows 3.0, ask Sun for these patches: + 100512-02 4.1.x OpenWindows 3.0 libXt Jumbo patch + 100573-03 4.1.x OpenWindows 3.0 undefined symbols with shared libXmu + +*** Random other SunOS 4.1.[12] link errors. + + The X headers and libraries that Sun ships in /usr/{include,lib}/X11 are + broken. Use the ones in /usr/openwin/{include,lib} instead. + +** Linux +*** Under Linux, you get "too many arguments to function `getpgrp'". + +You have probably installed LessTiff under `/usr/local' and `libXm.so' +could not be found when linking `getpgrp()' test program, making XEmacs +think that `getpgrp()' takes an argument. Try adding `/usr/local/lib' +in `/etc/ld.so.conf' and run `ldconfig'. Then run XEmacs's `configure' +again. As with all problems of this type, reading the config.log file +generated from configure and seeing the log of how the test failed can +prove enlightening. + +*** `Error: No ExtNode to pop!' on Linux systems with Lesstif. This error message has been observed with lesstif-0.75a. It does not appear to cause any harm. -** Linking with -rpath on IRIX. +*** xemacs: can't resolve symbol '__malloc_hook' + +This is a Linux problem where you've compiled the XEmacs binary on a libc +5.4 with version higher than 5.4.19 and attempted to run the binary against +an earlier version. The solution is to upgrade your old library. + +** IRIX +*** Linking with -rpath on IRIX. Darrell Kindred writes: There are a couple of problems [with use of -rpath with Irix ld], though: @@ -126,35 +279,42 @@ There are a couple of problems [with use of -rpath with Irix ld], though: or --site-runtime-libraries, you must use --use-gcc=no, or configure will fail. -** On Irix 6.3, the SGI ld quits with segmentation fault when linking temacs +*** On Irix 6.3, the SGI ld quits with segmentation fault when linking temacs This occurs if you use the SGI linker version 7.1. Installing the patch SG0001872 fixes this problem. -** xemacs: can't resolve symbol '__malloc_hook' +*** On Irix 6.0, make tries (and fails) to build a program named unexelfsgi -This is a Linux problem where you've compiled the XEmacs binary on a libc -5.4 with version higher than 5.4.19 and attempted to run the binary against -an earlier version. The solution is to upgrade your old library. +A compiler bug inserts spaces into the string "unexelfsgi . o" +in src/Makefile. Edit src/Makefile, after configure is run, +find that string, and take out the spaces. -** Compilation errors on VMS. +Compiler fixes in Irix 6.0.1 should eliminate this problem. -Sorry, XEmacs does not work under VMS. You might consider working on -the port if you really want to have XEmacs work under VMS. +*** On Irix 5.2, unexelfsgi.c can't find cmplrs/stsupport.h. -** On Solaris 2 I get undefined symbols from libcurses.a. +The file cmplrs/stsupport.h was included in the wrong file set in the +Irix 5.2 distribution. You can find it in the optional fileset +compiler_dev, or copy it from some other Irix 5.2 system. A kludgy +workaround is to change unexelfsgi.c to include sym.h instead of +syms.h. -You probably have /usr/ucblib/ on your LD_LIBRARY_PATH. Do the link with -LD_LIBRARY_PATH unset. Generally, avoid using any ucb* stuff when -building XEmacs. +*** Coredumping in Irix 6.2 -** On Solaris 2 I cannot make alloc.o, glyphs.o or process.o. +Pete Forman writes: +A problem noted by myself and others (I've lost the references) was +that XEmacs coredumped when the cut or copy toolbar buttons were +pressed. This has been fixed by loading the SGI patchset (Feb 98) +without having to recompile XEmacs. -The SparcWorks C compiler may have difficulty building those modules -with optimization level -xO4. Try using only "-fast" optimization -for just those modules. (Or use gcc). +My versions are XEmacs 20.3 (problem first noted in 19.15) and IRIX +6.2, compiled using -n32. I'd guess that the relevant individual +patch was "SG0002580: multiple fixes for X libraries". SGI recommends +that the complete patch set be installed rather than parts of it. -** On Digital UNIX, the DEC C compiler might have a problem compiling +** Digital UNIX/OSF/VMS +*** On Digital UNIX, the DEC C compiler might have a problem compiling some files. In particular, src/extents.c and src/faces.c might cause the DEC C @@ -167,7 +327,19 @@ hand, use the old C compiler for the following versions of Digital UNIX: A related compiler bug has been fixed by the DEC compiler team. The new versions of the compiler should run fine. -** On HPUX, the HP C compiler might have a problem compiling some files +*** Under some versions of OSF XEmacs runs fine if built without +optimization but will crash randomly if built with optimization. + +Using 'cc -g' is not sufficient to eliminate all optimization. Try +'cc -g -O0' instead. + +*** Compilation errors on VMS. + +Sorry, XEmacs does not work under VMS. You might consider working on +the port if you really want to have XEmacs work under VMS. + +** HP-UX +*** On HPUX, the HP C compiler might have a problem compiling some files with optimization. Richard Cognot writes: @@ -181,30 +353,30 @@ Richard Cognot writes: remember the patch numbers. I think potential XEmacs builders on HP should be warned about this. -** I don't have `xmkmf' and `imake' on my HP. +*** I don't have `xmkmf' and `imake' on my HP. You can get these standard X tools by anonymous FTP to hpcvaaz.cv.hp.com. Essentially all X programs need these. -** On HP-UX, problems with make +*** On HP-UX, problems with make Marcus Thiessel Some releases of XEmacs (e.g. 20.4) require GNU make to build successfully. You don't need GNU make when building 21.x. -** On HP-UX 9.05 XEmacs won't compile or coredump during the build. +*** On HP-UX 9.05 XEmacs won't compile or coredump during the build. Marcus Thiessel This might be a sed problem. For your own safety make sure to use GNU sed while dumping XEmacs. -** On HP-UX 11.0 XEmacs causes excessive X11 errors when running. +*** On HP-UX 11.0 XEmacs causes excessive X11 errors when running. Marcus Thiessel - Unfortunately, XEmacs releases don't work with Motif2.1. It + Unfortunately, XEmacs releases <21.0 don't work with Motif2.1. It will compile but you will get excessive X11 errors like xemacs: X Error of failed request: BadGC (invalid GC parameter) @@ -218,34 +390,8 @@ Marcus Thiessel Make sure /usr/lib/Motif1.2_R6/libXm.sl is a link to /usr/lib/Motif1.2_R6/libXm.3. -** Solaris 2.3 /bin/sh coredumps during configuration. - -This only occurs if you have LANG != C. This is a known bug with -/bin/sh fixed by installing Patch-ID# 101613-01. Or, you can use -bash, as a workaround. - -** On Irix 6.0, make tries (and fails) to build a program named unexelfsgi - -A compiler bug inserts spaces into the string "unexelfsgi . o" -in src/Makefile. Edit src/Makefile, after configure is run, -find that string, and take out the spaces. - -Compiler fixes in Irix 6.0.1 should eliminate this problem. - -** Coredumping in Irix 6.2 - -Pete Forman writes: -A problem noted by myself and others (I've lost the references) was -that XEmacs coredumped when the cut or copy toolbar buttons were -pressed. This has been fixed by loading the SGI patchset (Feb 98) -without having to recompile XEmacs. - -My versions are XEmacs 20.3 (problem first noted in 19.15) and IRIX -6.2, compiled using -n32. I'd guess that the relevant individual -patch was "SG0002580: multiple fixes for X libraries". SGI recommends -that the complete patch set be installed rather than parts of it. - -** Native cc on SCO OpenServer 5 is now OK. Icc may still throw you +** SCO OpenServer +*** Native cc on SCO OpenServer 5 is now OK. Icc may still throw you a curve. Here is what Robert Lipe says: Unlike XEmacs 19.13, building with the native cc on SCO OpenServer 5 @@ -309,199 +455,40 @@ The comments at the top of emacskeys.sco describe its function, and the emacstrs.sco is a suitable candidate for /usr/lib/keyboard/strings to take advantage of the keyboard map in emacskeys.sco. -Note: Much of the above entry is probably not valid for XEmacs 21.2 +Note: Much of the above entry is probably not valid for XEmacs 21.0 and later. -** Under some versions of OSF XEmacs runs fine if built without -optimization but will crash randomly if built with optimization. -Using 'cc -g' is not sufficient to eliminate all optimization. Try -'cc -g -O0' instead. -** On SunOS, you get linker errors - ld: Undefined symbol - _get_wmShellWidgetClass - _get_applicationShellWidgetClass +* Problems with running XEmacs +============================== +** General +*** C-z just refreshes the screen instead of suspending Emacs. -The fix to this is to install patch 100573 for OpenWindows 3.0 -or link libXmu statically. +You are probably using a shell that doesn't support job control, even +though the system itself is capable of it. Try using a different +shell. -** On Sunos 4, you get the error ld: Undefined symbol __lib_version. +*** You type Control-H (Backspace) expecting to delete characters. -This is the result of using cc or gcc with the shared library meant -for acc (the Sunpro compiler). Check your LD_LIBRARY_PATH and delete -/usr/lang/SC2.0.1 or some similar directory. +Emacs has traditionally used Control-H for help; unfortunately this +interferes with its use as Backspace on TTY's. One way to solve this +problem is to put this in your .emacs: -** On AIX 4.1.2, linker error messages such as - ld: 0711-212 SEVERE ERROR: Symbol .__quous, found in the global symbol table - of archive /usr/lib/libIM.a, was not defined in archive member shr.o. + (when (eq tty-erase-char ?\C-h) + (keyboard-translate ?\C-h ?\C-?) + (global-set-key "\M-?" 'help-command)) -This is a problem in libIM.a. You can work around it by executing -these shell commands in the src subdirectory of the directory where -you build Emacs: +This checks whether the TTY erase char is C-h, and if it is, makes +Control-H (Backspace) work sensibly, and moves help to Meta-? (ESC ?). - cp /usr/lib/libIM.a . - chmod 664 libIM.a - ranlib libIM.a +Note that you can probably also access help using F1. -Then change -lIM to ./libIM.a in the command to link temacs (in -Makefile). +*** Mail agents (VM, Gnus, rmail) cannot get new mail -** On Irix 5.2, unexelfsgi.c can't find cmplrs/stsupport.h. - -The file cmplrs/stsupport.h was included in the wrong file set in the -Irix 5.2 distribution. You can find it in the optional fileset -compiler_dev, or copy it from some other Irix 5.2 system. A kludgy -workaround is to change unexelfsgi.c to include sym.h instead of -syms.h. - -** Link failure when using acc on a Sun. - -To use acc, you need additional options just before the libraries, such as - - /usr/lang/SC2.0.1/values-Xt.o -L/usr/lang/SC2.0.1/cg87 -L/usr/lang/SC2.0.1 - -and you need to add -lansi just before -lc. - -The precise file names depend on the compiler version, so we -cannot easily arrange to supply them. - -** Link failure on IBM AIX 1.3 ptf 0013. - -There is a real duplicate definition of the function `_slibc_free' in -the library /lib/libc_s.a (just do nm on it to verify). The -workaround/fix is: - - cd /lib - ar xv libc_s.a NLtmtime.o - ar dv libc_s.a NLtmtime.o - -** Undefined symbols when linking on Sunos 4.1. - -If you get the undefined symbols _atowc _wcslen, _iswprint, _iswspace, -_iswcntrl, _wcscpy, and _wcsncpy, then you need to add -lXwchar after --lXaw in the command that links temacs. - -This problem seems to arise only when the international language -extensions to X11R5 are installed. - -** src/Makefile and lib-src/Makefile are truncated--most of the file missing. - -This can happen if configure uses GNU sed version 2.03. That version -had a bug. GNU sed version 2.05 works properly. - -** On AIX, you get this compiler error message: - - Processing include file ./XMenuInt.h - 1501-106: (S) Include file X11/Xlib.h not found. - -This means your system was installed with only the X11 runtime i.d -libraries. You have to find your sipo (bootable tape) and install -X11Dev... with smit. - -** C-z just refreshes the screen instead of suspending Emacs. - -You are probably using a shell that doesn't support job control, even -though the system itself is capable of it. Try using a different -shell. - -** On a Sun running SunOS 4.1.1, you get this error message from GNU ld: - - /lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment - -The problem is in the Sun shared C library, not in GNU ld. - -The solution is to install Patch-ID# 100267-03 from Sun. - -** SunOS 4.1.2: undefined symbol _get_wmShellWidgetClass - - Apparently the version of libXmu.so.a that Sun ships is hosed: it's missing - some stuff that is in libXmu.a (the static version). Sun has a patch for - this, but a workaround is to use the static version of libXmu, by changing - the link command from "-lXmu" to "-Bstatic -lXmu -Bdynamic". If you have - OpenWindows 3.0, ask Sun for these patches: - 100512-02 4.1.x OpenWindows 3.0 libXt Jumbo patch - 100573-03 4.1.x OpenWindows 3.0 undefined symbols with shared libXmu - -** Random other SunOS 4.1.[12] link errors. - - The X headers and libraries that Sun ships in /usr/{include,lib}/X11 are - broken. Use the ones in /usr/openwin/{include,lib} instead. - -** When using gcc, you get the error message "undefined symbol __fixunsdfsi". -When using gcc, you get the error message "undefined symbol __main". - -This means that you need to link with the gcc library. It may be called -"gcc-gnulib" or "libgcc.a"; figure out where it is, and define LIB_GCC in -config.h to point to it. - -It may also work to use the GCC version of `ld' instead of the standard one. - -** When compiling with X11, you get "undefined symbol _XtStrings". - -This means that you are trying to link emacs against the X11r4 version of -libXt.a, but you have compiled either Emacs or the code in the lwlib -subdirectory with the X11r5 header files. That doesn't work. - -Remember, you can't compile lwlib for r4 and emacs for r5, or vice versa. -They must be in sync. - -** Problems finding X11 libraries on Solaris with Openwindows - -Some users have reported problems in this area. The reported solution -is to define the environment variable OPENWINHOME, even if you must set -it to `/usr/openwin'. - -** Under Linux, you get "too many arguments to function `getpgrp'". - -You have probably installed LessTiff under `/usr/local' and `libXm.so' -could not be found when linking `getpgrp()' test program, making XEmacs -think that `getpgrp()' takes an argument. Try adding `/usr/local/lib' -in `/etc/ld.so.conf' and run `ldconfig'. Then run XEmacs's `configure' -again. As with all problems of this type, reading the config.log file -generated from configure and seeing the log of how the test failed can -prove enlightening. - - -* Problems with running XEmacs -============================== -** On Solaris 2.6, XEmacs dumps core when exiting. - -This happens if you're XEmacs is running on the same machine as the X -server, and the optimized memory transport has been turned on by -setting the environment variable XSUNTRANSPORT. The crash occurs -during the call to XCloseDisplay. - -If this describes your situation, you need to undefine the -XSUNTRANSPORT environment variable. - -** `C-z', or `M-x suspend-emacs' hangs instead of suspending. - -If you build with `gpm' support on Linux, you cannot suspend XEmacs -because gpm installs a buggy SIGTSTP handler. Either compile with -`--with-gpm=no', or don't suspend XEmacs on the Linux console until -this bug is fixed. - -** You type Control-H (Backspace) expecting to delete characters. - -Emacs has traditionally used Control-H for help; unfortunately this -interferes with its use as Backspace on TTY's. One way to solve this -problem is to put this in your .emacs: - - (when (eq tty-erase-char ?\C-h) - (keyboard-translate ?\C-h ?\C-?) - (global-set-key "\M-?" 'help-command)) - -This checks whether the TTY erase char is C-h, and if it is, makes -Control-H (Backspace) work sensibly, and moves help to Meta-? (ESC ?). - -Note that you can probably also access help using F1. - -** Mail agents (VM, Gnus, rmail) cannot get new mail - -rmail and VM get new mail from /usr/spool/mail/$USER using a program -called `movemail'. This program interlocks with /bin/mail using the -protocol defined by /bin/mail. +rmail and VM get new mail from /usr/spool/mail/$USER using a program +called `movemail'. This program interlocks with /bin/mail using the +protocol defined by /bin/mail. There are two different protocols in general use. One of them uses the `flock' system call. The other involves creating a lock file; @@ -527,30 +514,12 @@ installed copy of movemail is usually in the directory mode of the installed copy; changing the group and mode of the build directory copy is ineffective. -** XEmacs crashes on Digital Unix within font-lock, or when dealing -with large compilation buffers. - -The default stack size under Digital Unix is rather small (2M as -opposed to Solaris 8M), hosing the regexp code, which uses alloca() -extensively, overflowing the stack when complex regexps are used. -Workarounds: - -1) Increase your stack size, using `ulimit -s 8192' or a (t)csh - equivalent; - -2) Recompile regex.c with REGEX_MALLOC defined. - -** On Solaris, C-x doesn't get through to Emacs when you use the console. - -This is a Solaris feature (at least on Intel x86 cpus). Type C-r -C-r C-t, to toggle whether C-x gets through to Emacs. - -** VM appears to hang in large folders. +*** VM appears to hang in large folders. This is normal (trust us) when upgrading to VM-6.22 from earlier versions. Let VM finish what it is doing and all will be well. -** Changes made to .el files do not take effect. +*** Changes made to .el files do not take effect. You may have forgotten to recompile them into .elc files. Then the old .elc files will be loaded, and your changes will not be seen. To @@ -560,7 +529,7 @@ that contains the Lisp files. Note that you will get a warning when loading a .elc file that is older than the corresponding .el file. -** Things which should be bold or italic (such as the initial +*** Things which should be bold or italic (such as the initial copyright notice) are not. The fonts of the "bold" and "italic" faces are generated from the font @@ -583,7 +552,7 @@ versions. All X fonts can be referred to via XLFD-style names, so you should use those forms. See the man pages for X(1), xlsfonts(1), and xfontsel(1). -** The dumped Emacs crashes when run, trying to write pure data. +*** The dumped Emacs crashes when run, trying to write pure data. Two causes have been seen for such problems. @@ -598,43 +567,14 @@ of its files pure after dumping, but the variables declared static and not initialized are not supposed to be pure. On these systems you may need to add "#define static" to the m- or the s- file. -** Reading and writing files is very very slow. +*** Reading and writing files is very very slow. Try evaluating the form (setq lock-directory nil) and see if that helps. There is a problem with file-locking on some systems (possibly related to NFS) that I don't understand. Please send mail to the address xemacs@xemacs.org if you figure this one out. -** The Emacs window disappears when you type M-q. - -Some versions of the Open Look window manager interpret M-q as a quit -command for whatever window you are typing at. If you want to use -Emacs with that window manager, you should try to configure the window -manager to use some other command. You can disable the -shortcut keys entirely by adding this line to ~/.OWdefaults: - - OpenWindows.WindowMenuAccelerators: False - -** The `Alt' key doesn't behave as `Meta' when running DECwindows. - -The default DEC keyboard mapping has the Alt keys set up to generate the -keysym `Multi_key', which has a meaning to xemacs which is distinct from that -of the `Meta_L' and `Meta-R' keysyms. A second problem is that certain keys -have the Mod2 modifier attached to them for no adequately explored reason. -The correct fix is to pass this file to xmodmap upon starting X: - - clear mod2 - keysym Multi_key = Alt_L - add mod1 = Alt_L - add mod1 = Alt_R - -** The Compose key on a DEC keyboard does not work as Meta key. - -This shell command should fix it: - - xmodmap -e 'keycode 0xb1 = Meta_L' - -** When emacs starts up, I get lots of warnings about unknown keysyms. +*** When emacs starts up, I get lots of warnings about unknown keysyms. If you are running the prebuilt binaries, the Motif library expects to find certain thing in the XKeysymDB file. This file is normally in /usr/lib/X11/ @@ -644,25 +584,14 @@ you still have the problem after doing that, perhaps your version of X is too old. There is a copy of the MIT X11R5 XKeysymDB file in the emacs `etc' directory. Try using that one. -** My X resources used to work, and now some of them are being ignored. +*** My X resources used to work, and now some of them are being ignored. Check the resources in .../etc/Emacs.ad (which is the same as the file sample.Xdefaults). Perhaps some of the default resources built in to emacs are now overriding your existing resources. Copy and edit the resources in Emacs.ad as necessary. -** I get complaints about the mapping of my HP keyboard at startup, -but I haven't changed anything. - -The default HP keymap is set up to have Mod1 assigned to two different keys: -Meta_L and Mode_switch (even though there is not actually a Mode_switch key on -the keyboard -- it uses an "imaginary" keycode.) There actually is a reason -for this, but it's not a good one. The correct fix is to execute this command -upon starting X: - - xmodmap -e 'remove mod1 = Mode_switch' - -** I have focus problems when I use `M-o' to switch to another screen +*** I have focus problems when I use `M-o' to switch to another screen without using the mouse. The focus issues with a program like XEmacs, which has multiple @@ -687,7 +616,7 @@ on another screen in point-to-type mode. This is not ICCCM-compliant behavior. Implementing such policy is the responsibility of the window manager itself, it is not legal for a client to do this.) -** Emacs spontaneously displays "I-search: " at the bottom of the screen. +*** Emacs spontaneously displays "I-search: " at the bottom of the screen. This means that Control-S/Control-Q (XON/XOFF) "flow control" is being used. C-s/C-q flow control is bad for Emacs editors because it takes @@ -771,7 +700,7 @@ use out of GNU Emacs on inferior terminals, more power to you, but I will not make Emacs worse for properly designed systems for the sake of inferior systems. -** Control-S and Control-Q commands are ignored completely. +*** Control-S and Control-Q commands are ignored completely. For some reason, your system is using brain-damaged C-s/C-q flow control despite Emacs's attempts to turn it off. Perhaps your @@ -786,7 +715,7 @@ If that line of approach is not successful, map some other characters into C-s and C-q using keyboard-translate-table. The example above shows how to do this with C-^ and C-\. -** Control-S and Control-Q commands are ignored completely on a net +*** Control-S and Control-Q commands are ignored completely on a net connection. Some versions of rlogin (and possibly telnet) do not pass flow @@ -813,7 +742,7 @@ following to your .emacs (on the host running rlogind): See the entry about spontaneous display of I-search (above) for more info. -** TTY redisplay is slow. +*** TTY redisplay is slow. XEmacs has fairly new TTY redisplay support (beginning from 19.12), which doesn't include some basic TTY optimizations -- like using @@ -824,7 +753,7 @@ slow. If you are interested in fixing this, please let us know at . -** Screen is updated wrong, but only on one kind of terminal. +*** Screen is updated wrong, but only on one kind of terminal. This could mean that the termcap entry you are using for that terminal is wrong, or it could mean that Emacs has a bug handing the @@ -863,183 +792,237 @@ This is unambiguously an Emacs bug, and can probably be fixed in termcap.c, terminfo.c, tparam.c, cm.c, redisplay-tty.c, redisplay-output.c, or redisplay.c. -** Your Delete key sends a Backspace to the terminal, using an AIXterm. +*** My buffers are full of \000 characters or otherwise corrupt. -The solution is to include in your .Xdefaults the lines: +Some compilers have trouble with gmalloc.c and ralloc.c; try recompiling +without optimization. If that doesn't work, try recompiling with +SYSTEM_MALLOC defined, and/or with REL_ALLOC undefined. - *aixterm.Translations: #override BackSpace: string(0x7f) - aixterm*ttyModes: erase ^? +*** A position you specified in .Xdefaults is ignored, using twm. -This makes your Backspace key send DEL (ASCII 127). +twm normally ignores "program-specified" positions. +You can tell it to obey them with this command in your `.twmrc' file: -** With certain fonts, when the cursor appears on a character, the -character doesn't appear--you get a solid box instead. + UsePPosition "on" #allow clents to request a position -One user on a Linux system reported that this problem went away with -installation of a new X server. The failing server was XFree86 3.1.1. -XFree86 3.1.2 works. +*** With M-x enable-flow-control, you need to type C-\ twice to do +incremental search--a single C-\ gets no response. -** On SunOS 4.1.3, Emacs unpredictably crashes in _yp_dobind_soft. +This has been traced to communicating with your machine via kermit, +with C-\ as the kermit escape character. One solution is to use +another escape character in kermit. One user did -This happens if you configure Emacs specifying just `sparc-sun-sunos4' -on a system that is version 4.1.3. You must specify the precise -version number (or let configure figure out the configuration, which -it can do perfectly well for SunOS). + set escape-character 17 -** On Irix, I don't see the toolbar icons and I'm getting lots of -entries in the warnings buffer. +in his .kermrc file, to make C-q the kermit escape character. -SGI ships a really old Xpm library in /usr/lib which does not work at -all well with XEmacs. The solution is to install your own copy of the -latest version of Xpm somewhere and then use the --site-includes and ---site-libraries flags to tell configure where to find it. +*** The Motif version of Emacs paints the screen a solid color. -** On HPUX, you get "poll: Interrupted system call" message in the -window where XEmacs was launched. +This has been observed to result from the following X resource: -Richard Cognot writes: + Emacs*default.attributeFont: -*-courier-medium-r-*-*-*-140-*-*-*-*-iso8859-* - I get a very strange problem when linking libc.a dynamically: every - event (mouse, keyboard, expose...) results in a "poll: Interrupted - system call" message in the window where XEmacs was - launched. Forcing a static link of libc.a alone by adding - /usr/lib/libc.a at the end of the link line solves this. Note that - my 9.07 build of 19.14b17 and my (old) build of 19.13 both exhibit - the same behaviour. I've tried various hpux patches to no avail. If - this problem cannot be solved before the release date, binary kits - for HP *must* be linked statically against libc, otherwise this - problem will show up. (This is directed at whoever will volunteer - for this kit, as I won't be available to do it, unless 19.14 gets - delayed until mid-june ;-). I think this problem will be an FAQ soon - after the release otherwise. +That the resource has this effect indicates a bug in something, but we +do not yet know what. If it is an Emacs bug, we hope someone can +explain what the bug is so we can fix it. In the mean time, removing +the resource prevents the problem. -Note: The above entry is probably not valid for XEmacs 21.2 and -later. +*** After running emacs once, subsequent invocations crash. -** When Emacs tries to ring the bell, you get an error like +Some versions of SVR4 have a serious bug in the implementation of the +mmap () system call in the kernel; this causes emacs to run correctly +the first time, and then crash when run a second time. - audio: sst_open: SETQSIZE" Invalid argument - audio: sst_close: SETREG MMR2, Invalid argument +Contact your vendor and ask for the mmap bug fix; in the mean time, +you may be able to work around the problem by adding a line to your +operating system description file (whose name is reported by the +configure script) that reads: +#define SYSTEM_MALLOC +This makes Emacs use memory less efficiently, but seems to work around +the kernel bug. -you have probably compiled using an ANSI C compiler, but with non-ANSI -include files. In particular, on Suns, the file -/usr/include/sun/audioio.h uses the _IOW macro to define the constant -AUDIOSETQSIZE. _IOW in turn uses a K&R preprocessor feature that is -now explicitly forbidden in ANSI preprocessors, namely substitution -inside character constants. All ANSI C compilers must provide a -workaround for this problem. Lucid's C compiler is shipped with a new -set of system include files. If you are using GCC, there is a script -called fixincludes that creates new versions of some system include -files that use this obsolete feature. +*** Inability to send an Alt-modified key, when Emacs is communicating +directly with an X server. -** My buffers are full of \000 characters or otherwise corrupt. +If you have tried to bind an Alt-modified key as a command, and it +does not work to type the command, the first thing you should check is +whether the key is getting through to Emacs. To do this, type C-h c +followed by the Alt-modified key. C-h c should say what kind of event +it read. If it says it read an Alt-modified key, then make sure you +have made the key binding correctly. -Some compilers have trouble with gmalloc.c and ralloc.c; try recompiling -without optimization. If that doesn't work, try recompiling with -SYSTEM_MALLOC defined, and/or with REL_ALLOC undefined. +If C-h c reports an event that doesn't have the Alt modifier, it may +be because your X server has no key for the Alt modifier. The X +server that comes from MIT does not set up the Alt modifier by +default. -** On AIX 4, some programs fail when run in a Shell buffer -with an error message like No terminfo entry for "unknown". +If your keyboard has keys named Alt, you can enable them as follows: -On AIX, many terminal type definitions are not installed by default. -`unknown' is one of them. Install the "Special Generic Terminal -Definitions" to make them defined. + xmodmap -e 'add mod2 = Alt_L' + xmodmap -e 'add mod2 = Alt_R' -** Emacs exits with "X protocol error" when run with an X server for -Windows. +If the keyboard has just one key named Alt, then only one of those +commands is needed. The modifier `mod2' is a reasonable choice if you +are using an unmodified MIT version of X. Otherwise, choose any +modifier bit not otherwise used. -A certain X server for Windows had a bug which caused this. -Supposedly the newer 32-bit version of this server doesn't have the -problem. +If your keyboard does not have keys named Alt, you can use some other +keys. Use the keysym command in xmodmap to turn a function key (or +some other 'spare' key) into Alt_L or into Alt_R, and then use the +commands show above to make them modifier keys. -** A position you specified in .Xdefaults is ignored, using twm. +Note that if you have Alt keys but no Meta keys, Emacs translates Alt +into Meta. This is because of the great importance of Meta in Emacs. -twm normally ignores "program-specified" positions. -You can tell it to obey them with this command in your `.twmrc' file: +*** In Shell mode, you get a ^M at the end of every line. - UsePPosition "on" #allow clents to request a position +This happens to people who use tcsh, because it is trying to be too +smart. It sees that the Shell uses terminal type `unknown' and turns +on the flag to output ^M at the end of each line. You can fix the +problem by adding this to your .cshrc file: -** The right Alt key works wrong on German HP keyboards (and perhaps - other non-English HP keyboards too). + if ($?EMACS) then + if ($EMACS == "t") then + unset edit + stty -icrnl -onlcr -echo susp ^Z + endif + endif -This is because HPUX defines the modifiers wrong in X. Here is a -shell script to fix the problem; be sure that it is run after VUE -configures the X server. +*** An error message such as `X protocol error: BadMatch (invalid +parameter attributes) on protocol request 93'. - xmodmap 2> /dev/null - << EOF - keysym Alt_L = Meta_L - keysym Alt_R = Meta_R - EOF +This comes from having an invalid X resource, such as + emacs*Cursor: black +(which is invalid because it specifies a color name for something +that isn't a color.) - xmodmap - << EOF - clear mod1 - keysym Mode_switch = NoSymbol - add mod1 = Meta_L - keysym Meta_R = Mode_switch - add mod2 = Mode_switch - EOF +The fix is to correct your X resources. -** Trouble using ptys on IRIX, or running out of ptys. +*** Once you pull down a menu from the menubar, it won't go away. -The program mkpts (which may be in `/usr/adm' or `/usr/sbin') needs to -be set-UID to root, or non-root programs like Emacs will not be able -to allocate ptys reliably. +It has been claimed that this is caused by a bug in certain very old +(1990?) versions of the twm window manager. It doesn't happen with +recent vintages, or with other window managers. -** Motif dialog boxes lose on Irix. +*** Emacs ignores the "help" key when running OLWM. -Larry Auton writes: -Beware of not specifying +OLWM grabs the help key, and retransmits it to the appropriate client +using XSendEvent. Allowing emacs to react to synthetic events is a +security hole, so this is turned off by default. You can enable it by +setting the variable x-allow-sendevents to t. You can also cause fix +this by telling OLWM to not grab the help key, with the null binding +"OpenWindows.KeyboardCommand.Help:". - --with-dialogs=athena +*** Programs running under terminal emulator do not recognize `emacs' +terminal type. -if it builds with the motif dialogs [boom!] you're a dead man. +The cause of this is a shell startup file that sets the TERMCAP +environment variable. The terminal emulator uses that variable to +provide the information on the special terminal type that Emacs +emulates. -** Beware of the default image & graphics library on Irix +Rewrite your shell startup file so that it does not change TERMCAP +in such a case. You could use the following conditional which sets +it only if it is undefined. -Richard Cognot writes: -You *have* to compile your own jpeg lib. The one delivered with SGI -systems is a C++ lib, which apparently XEmacs cannot cope with. + if ( ! ${?TERMCAP} ) setenv TERMCAP ~/my-termcap-file + +Or you could set TERMCAP only when you set TERM--which should not +happen in a non-login shell. -** Slow startup on Linux. +*** The popup menu appears at the buttom/right of my screen. -People using systems based on the Linux kernel sometimes report that -startup takes 10 to 15 seconds longer than `usual'. +You probably have something like the following in your ~/.Xdefaults -This is because Emacs looks up the host name when it starts. -Normally, this takes negligible time; the extra delay is due to -improper system configuration. This problem can occur for both -networked and non-networked machines. + Emacs.geometry: 81x56--9--1 -Here is how to fix the configuration. It requires being root. +Use the following instead -*** Networked Case + Emacs*EmacsFrame.geometry: 81x56--9--1 -First, make sure the files `/etc/hosts' and `/etc/host.conf' both -exist. The first line in the `/etc/hosts' file should look like this -(replace HOSTNAME with your host name): - 127.0.0.1 localhost HOSTNAME +** AIX +*** Your Delete key sends a Backspace to the terminal, using an AIXterm. -Also make sure that the `/etc/host.conf' files contains the following -lines: +The solution is to include in your .Xdefaults the lines: - order hosts, bind - multi on + *aixterm.Translations: #override BackSpace: string(0x7f) + aixterm*ttyModes: erase ^? -Any changes, permanent and temporary, to the host name should be -indicated in the `/etc/hosts' file, since it acts a limited local -database of addresses and names (e.g., some SLIP connections -dynamically allocate ip addresses). +This makes your Backspace key send DEL (ASCII 127). -*** Non-Networked Case +*** On AIX 4, some programs fail when run in a Shell buffer +with an error message like No terminfo entry for "unknown". -The solution described in the networked case applies here as well. -However, if you never intend to network your machine, you can use a -simpler solution: create an empty `/etc/host.conf' file. The command -`touch /etc/host.conf' suffices to create the file. The `/etc/hosts' -file is not necessary with this approach. +On AIX, many terminal type definitions are not installed by default. +`unknown' is one of them. Install the "Special Generic Terminal +Definitions" to make them defined. + +*** On AIX, you get this message when running Emacs: + + Could not load program emacs + Symbol smtcheckinit in csh is undefined + Error was: Exec format error + +or this one: + + Could not load program .emacs + Symbol _system_con in csh is undefined + Symbol _fp_trapsta in csh is undefined + Error was: Exec format error + +These can happen when you try to run on AIX 3.2.5 a program that was +compiled with 3.2.4. The fix is to recompile. + +*** Trouble using ptys on AIX. + +People often install the pty devices on AIX incorrectly. +Use `smit pty' to reinstall them properly. + + +** SunOS/Solaris +*** The Emacs window disappears when you type M-q. + +Some versions of the Open Look window manager interpret M-q as a quit +command for whatever window you are typing at. If you want to use +Emacs with that window manager, you should try to configure the window +manager to use some other command. You can disable the +shortcut keys entirely by adding this line to ~/.OWdefaults: + + OpenWindows.WindowMenuAccelerators: False + +*** When Emacs tries to ring the bell, you get an error like -** On Solaris 2.4, Dired hangs and C-g does not work. Or Emacs hangs + audio: sst_open: SETQSIZE" Invalid argument + audio: sst_close: SETREG MMR2, Invalid argument + +you have probably compiled using an ANSI C compiler, but with non-ANSI +include files. In particular, on Suns, the file +/usr/include/sun/audioio.h uses the _IOW macro to define the constant +AUDIOSETQSIZE. _IOW in turn uses a K&R preprocessor feature that is +now explicitly forbidden in ANSI preprocessors, namely substitution +inside character constants. All ANSI C compilers must provide a +workaround for this problem. Lucid's C compiler is shipped with a new +set of system include files. If you are using GCC, there is a script +called fixincludes that creates new versions of some system include +files that use this obsolete feature. + +*** On Solaris 2.6, XEmacs dumps core when exiting. + +This happens if you're XEmacs is running on the same machine as the X +server, and the optimized memory transport has been turned on by +setting the environment variable XSUNTRANSPORT. The crash occurs +during the call to XCloseDisplay. + +If this describes your situation, you need to undefine the +XSUNTRANSPORT environment variable. + +*** On Solaris, C-x doesn't get through to Emacs when you use the console. + +This is a Solaris feature (at least on Intel x86 cpus). Type C-r +C-r C-t, to toggle whether C-x gets through to Emacs. + +*** On Solaris 2.4, Dired hangs and C-g does not work. Or Emacs hangs forever waiting for termination of a subprocess that is a zombie. casper@fwi.uva.nl says the problem is in X11R6. Rebuild libX11.so @@ -1081,61 +1064,14 @@ in sun.cf and did `make World' to rebuild X11R6. Removing all `-DXTHREAD*' flags and `-lthread' entries from lib/X11/Makefile and typing 'make install' in that directory also seemed to work. -** With M-x enable-flow-control, you need to type C-\ twice to do -incremental search--a single C-\ gets no response. - -This has been traced to communicating with your machine via kermit, -with C-\ as the kermit escape character. One solution is to use -another escape character in kermit. One user did - - set escape-character 17 - -in his .kermrc file, to make C-q the kermit escape character. - -** The Motif version of Emacs paints the screen a solid color. - -This has been observed to result from the following X resource: - - Emacs*default.attributeFont: -*-courier-medium-r-*-*-*-140-*-*-*-*-iso8859-* - -That the resource has this effect indicates a bug in something, but we -do not yet know what. If it is an Emacs bug, we hope someone can -explain what the bug is so we can fix it. In the mean time, removing -the resource prevents the problem. - -** Regular expressions matching bugs on SCO systems. - -On SCO, there are problems in regexp matching when Emacs is compiled -with the system compiler. The compiler version is "Microsoft C -version 6", SCO 4.2.0h Dev Sys Maintenance Supplement 01/06/93; Quick -C Compiler Version 1.00.46 (Beta). The solution is to compile with -GCC. - -** In Shell mode, you get a ^M at the end of every line. - -This happens to people who use tcsh, because it is trying to be too -smart. It sees that the Shell uses terminal type `unknown' and turns -on the flag to output ^M at the end of each line. You can fix the -problem by adding this to your .cshrc file: - - if ($?EMACS) then - if ($EMACS == "t") then - unset edit - stty -icrnl -onlcr -echo susp ^Z - endif - endif - -** An error message such as `X protocol error: BadMatch (invalid -parameter attributes) on protocol request 93'. - -This comes from having an invalid X resource, such as - emacs*Cursor: black -(which is invalid because it specifies a color name for something -that isn't a color.) +*** On SunOS 4.1.3, Emacs unpredictably crashes in _yp_dobind_soft. -The fix is to correct your X resources. +This happens if you configure Emacs specifying just `sparc-sun-sunos4' +on a system that is version 4.1.3. You must specify the precise +version number (or let configure figure out the configuration, which +it can do perfectly well for SunOS). -** Mail is lost when sent to local aliases. +*** Mail is lost when sent to local aliases. Many emacs mail user agents (VM and rmail, for instance) use the sendmail.el library. This library can arrange for mail to be @@ -1162,79 +1098,171 @@ of this writing, these official versions are available: IDA sendmail on vixen.cso.uiuc.edu in /pub: sendmail-5.67b+IDA-1.5.tar.gz -** On AIX, you get this message when running Emacs: - - Could not load program emacs - Symbol smtcheckinit in csh is undefined - Error was: Exec format error +*** Emacs fails to understand most Internet host names, even though +the names work properly with other programs on the same system. + Emacs won't work with X-windows if the value of DISPLAY is HOSTNAME:0. + Gnus can't make contact with the specified host for nntp. -or this one: +This typically happens on Suns and other systems that use shared +libraries. The cause is that the site has installed a version of the +shared library which uses a name server--but has not installed a +similar version of the unshared library which Emacs uses. - Could not load program .emacs - Symbol _system_con in csh is undefined - Symbol _fp_trapsta in csh is undefined - Error was: Exec format error +The result is that most programs, using the shared library, work with +the nameserver, but Emacs does not. -These can happen when you try to run on AIX 3.2.5 a program that was -compiled with 3.2.4. The fix is to recompile. +The fix is to install an unshared library that corresponds to what you +installed in the shared library, and then relink Emacs. -** After running emacs once, subsequent invocations crash. +On SunOS 4.1, simply define HAVE_RES_INIT. -Some versions of SVR4 have a serious bug in the implementation of the -mmap () system call in the kernel; this causes emacs to run correctly -the first time, and then crash when run a second time. +If you have already installed the name resolver in the file libresolv.a, +then you need to compile Emacs to use that library. The easiest way to +do this is to add to config.h a definition of LIBS_SYSTEM, LIBS_MACHINE +or LIB_STANDARD which uses -lresolv. Watch out! If you redefine a macro +that is already in use in your configuration to supply some other libraries, +be careful not to lose the others. -Contact your vendor and ask for the mmap bug fix; in the mean time, -you may be able to work around the problem by adding a line to your -operating system description file (whose name is reported by the -configure script) that reads: -#define SYSTEM_MALLOC -This makes Emacs use memory less efficiently, but seems to work around -the kernel bug. +Thus, you could start by adding this to config.h: -** Inability to send an Alt-modified key, when Emacs is communicating -directly with an X server. +#define LIBS_SYSTEM -lresolv -If you have tried to bind an Alt-modified key as a command, and it -does not work to type the command, the first thing you should check is -whether the key is getting through to Emacs. To do this, type C-h c -followed by the Alt-modified key. C-h c should say what kind of event -it read. If it says it read an Alt-modified key, then make sure you -have made the key binding correctly. +Then if this gives you an error for redefining a macro, and you see that +the s- file defines LIBS_SYSTEM as -lfoo -lbar, you could change config.h +again to say this: -If C-h c reports an event that doesn't have the Alt modifier, it may -be because your X server has no key for the Alt modifier. The X -server that comes from MIT does not set up the Alt modifier by -default. +#define LIBS_SYSTEM -lresolv -lfoo -lbar -If your keyboard has keys named Alt, you can enable them as follows: +*** With process-connection-type set to t, each line of subprocess +output is terminated with a ^M, making ange-ftp and GNUS not work. - xmodmap -e 'add mod2 = Alt_L' - xmodmap -e 'add mod2 = Alt_R' +On SunOS systems, this problem has been seen to be a result of an +incomplete installation of gcc 2.2 which allowed some non-ANSI +compatible include files into the compilation. In particular this +affected virtually all ioctl() calls. -If the keyboard has just one key named Alt, then only one of those -commands is needed. The modifier `mod2' is a reasonable choice if you -are using an unmodified MIT version of X. Otherwise, choose any -modifier bit not otherwise used. -If your keyboard does not have keys named Alt, you can use some other -keys. Use the keysym command in xmodmap to turn a function key (or -some other 'spare' key) into Alt_L or into Alt_R, and then use the -commands show above to make them modifier keys. +** Linux +*** `C-z', or `M-x suspend-emacs' hangs instead of suspending. -Note that if you have Alt keys but no Meta keys, Emacs translates Alt -into Meta. This is because of the great importance of Meta in Emacs. +If you build with `gpm' support on Linux, you cannot suspend XEmacs +because gpm installs a buggy SIGTSTP handler. Either compile with +`--with-gpm=no', or don't suspend XEmacs on the Linux console until +this bug is fixed. -** `Pid xxx killed due to text modification or page I/O error' +*** With certain fonts, when the cursor appears on a character, the +character doesn't appear--you get a solid box instead. -On HP/UX, you can get that error when the Emacs executable is on an NFS -file system. HP/UX responds this way if it tries to swap in a page and -does not get a response from the server within a timeout whose default -value is just ten seconds. +One user on a Linux system reported that this problem went away with +installation of a new X server. The failing server was XFree86 3.1.1. +XFree86 3.1.2 works. -If this happens to you, extend the timeout period. +*** Slow startup on Linux. + +People using systems based on the Linux kernel sometimes report that +startup takes 10 to 15 seconds longer than `usual'. + +This is because Emacs looks up the host name when it starts. +Normally, this takes negligible time; the extra delay is due to +improper system configuration. This problem can occur for both +networked and non-networked machines. + +Here is how to fix the configuration. It requires being root. + +**** Networked Case + +First, make sure the files `/etc/hosts' and `/etc/host.conf' both +exist. The first line in the `/etc/hosts' file should look like this +(replace HOSTNAME with your host name): + + 127.0.0.1 localhost HOSTNAME + +Also make sure that the `/etc/host.conf' files contains the following +lines: + + order hosts, bind + multi on + +Any changes, permanent and temporary, to the host name should be +indicated in the `/etc/hosts' file, since it acts a limited local +database of addresses and names (e.g., some SLIP connections +dynamically allocate ip addresses). + +**** Non-Networked Case + +The solution described in the networked case applies here as well. +However, if you never intend to network your machine, you can use a +simpler solution: create an empty `/etc/host.conf' file. The command +`touch /etc/host.conf' suffices to create the file. The `/etc/hosts' +file is not necessary with this approach. + + +** IRIX +*** On Irix, I don't see the toolbar icons and I'm getting lots of +entries in the warnings buffer. + +SGI ships a really old Xpm library in /usr/lib which does not work at +all well with XEmacs. The solution is to install your own copy of the +latest version of Xpm somewhere and then use the --site-includes and +--site-libraries flags to tell configure where to find it. + +*** Trouble using ptys on IRIX, or running out of ptys. + +The program mkpts (which may be in `/usr/adm' or `/usr/sbin') needs to +be set-UID to root, or non-root programs like Emacs will not be able +to allocate ptys reliably. + +*** Motif dialog boxes lose on Irix. + +Larry Auton writes: +Beware of not specifying + + --with-dialogs=athena + +if it builds with the motif dialogs [boom!] you're a dead man. + +*** Beware of the default image & graphics library on Irix + +Richard Cognot writes: + +You *have* to compile your own jpeg lib. The one delivered with SGI +systems is a C++ lib, which apparently XEmacs cannot cope with. + + +** Digital UNIX/OSF/VMS/Ultrix +*** XEmacs crashes on Digital Unix within font-lock, or when dealing +with large compilation buffers. + +The default stack size under Digital Unix is rather small (2M as +opposed to Solaris 8M), hosing the regexp code, which uses alloca() +extensively, overflowing the stack when complex regexps are used. +Workarounds: + +1) Increase your stack size, using `ulimit -s 8192' or a (t)csh + equivalent; + +2) Recompile regex.c with REGEX_MALLOC defined. + +*** The `Alt' key doesn't behave as `Meta' when running DECwindows. + +The default DEC keyboard mapping has the Alt keys set up to generate the +keysym `Multi_key', which has a meaning to xemacs which is distinct from that +of the `Meta_L' and `Meta-R' keysyms. A second problem is that certain keys +have the Mod2 modifier attached to them for no adequately explored reason. +The correct fix is to pass this file to xmodmap upon starting X: + + clear mod2 + keysym Multi_key = Alt_L + add mod1 = Alt_L + add mod1 = Alt_R + +*** The Compose key on a DEC keyboard does not work as Meta key. + +This shell command should fix it: + + xmodmap -e 'keycode 0xb1 = Meta_L' -** `expand-file-name' fails to work on any but the machine you dumped +*** `expand-file-name' fails to work on any but the machine you dumped Emacs on. On Ultrix, if you use any of the functions which look up information @@ -1250,47 +1278,71 @@ going on, and perhaps find a fix or a workaround, please let us know. Perhaps the YP functions cache some information, the cache is included in the dumped Emacs, and is then inaccurate on any other host. -** Emacs fails to understand most Internet host names, even though -the names work properly with other programs on the same system. - Emacs won't work with X-windows if the value of DISPLAY is HOSTNAME:0. - Gnus can't make contact with the specified host for nntp. -This typically happens on Suns and other systems that use shared -libraries. The cause is that the site has installed a version of the -shared library which uses a name server--but has not installed a -similar version of the unshared library which Emacs uses. +** HP-UX +*** I get complaints about the mapping of my HP keyboard at startup, +but I haven't changed anything. -The result is that most programs, using the shared library, work with -the nameserver, but Emacs does not. +The default HP keymap is set up to have Mod1 assigned to two different keys: +Meta_L and Mode_switch (even though there is not actually a Mode_switch key on +the keyboard -- it uses an "imaginary" keycode.) There actually is a reason +for this, but it's not a good one. The correct fix is to execute this command +upon starting X: -The fix is to install an unshared library that corresponds to what you -installed in the shared library, and then relink Emacs. + xmodmap -e 'remove mod1 = Mode_switch' -On SunOS 4.1, simply define HAVE_RES_INIT. +*** On HP-UX, you get "poll: Interrupted system call" message in the +window where XEmacs was launched. -If you have already installed the name resolver in the file libresolv.a, -then you need to compile Emacs to use that library. The easiest way to -do this is to add to config.h a definition of LIBS_SYSTEM, LIBS_MACHINE -or LIB_STANDARD which uses -lresolv. Watch out! If you redefine a macro -that is already in use in your configuration to supply some other libraries, -be careful not to lose the others. +Richard Cognot writes: -Thus, you could start by adding this to config.h: + I get a very strange problem when linking libc.a dynamically: every + event (mouse, keyboard, expose...) results in a "poll: Interrupted + system call" message in the window where XEmacs was + launched. Forcing a static link of libc.a alone by adding + /usr/lib/libc.a at the end of the link line solves this. Note that + my 9.07 build of 19.14b17 and my (old) build of 19.13 both exhibit + the same behaviour. I've tried various hpux patches to no avail. If + this problem cannot be solved before the release date, binary kits + for HP *must* be linked statically against libc, otherwise this + problem will show up. (This is directed at whoever will volunteer + for this kit, as I won't be available to do it, unless 19.14 gets + delayed until mid-june ;-). I think this problem will be an FAQ soon + after the release otherwise. -#define LIBS_SYSTEM -lresolv +Note: The above entry is probably not valid for XEmacs 21.0 and +later. -Then if this gives you an error for redefining a macro, and you see that -the s- file defines LIBS_SYSTEM as -lfoo -lbar, you could change config.h -again to say this: +*** The right Alt key works wrong on German HP keyboards (and perhaps + other non-English HP keyboards too). -#define LIBS_SYSTEM -lresolv -lfoo -lbar +This is because HP-UX defines the modifiers wrong in X. Here is a +shell script to fix the problem; be sure that it is run after VUE +configures the X server. -** Trouble using ptys on AIX. + xmodmap 2> /dev/null - << EOF + keysym Alt_L = Meta_L + keysym Alt_R = Meta_R + EOF -People often install the pty devices on AIX incorrectly. -Use `smit pty' to reinstall them properly. + xmodmap - << EOF + clear mod1 + keysym Mode_switch = NoSymbol + add mod1 = Meta_L + keysym Meta_R = Mode_switch + add mod2 = Mode_switch + EOF + +*** `Pid xxx killed due to text modification or page I/O error' + +On HP-UX, you can get that error when the Emacs executable is on an NFS +file system. HP-UX responds this way if it tries to swap in a page and +does not get a response from the server within a timeout whose default +value is just ten seconds. + +If this happens to you, extend the timeout period. -** Shell mode on HP/UX gives the message, "`tty`: Ambiguous". +*** Shell mode on HP-UX gives the message, "`tty`: Ambiguous". christos@theory.tn.cornell.edu says: @@ -1311,51 +1363,31 @@ if ("`tty`" == "/dev/console") Even better, move things that set up terminal sections out of .cshrc and into .login. -** With process-connection-type set to t, each line of subprocess -output is terminated with a ^M, making ange-ftp and GNUS not work. - -On SunOS systems, this problem has been seen to be a result of an -incomplete installation of gcc 2.2 which allowed some non-ANSI -compatible include files into the compilation. In particular this -affected virtually all ioctl() calls. - -** Once you pull down a menu from the menubar, it won't go away. -It has been claimed that this is caused by a bug in certain very old -(1990?) versions of the twm window manager. It doesn't happen with -recent vintages, or with other window managers. +** SCO +*** Regular expressions matching bugs on SCO systems. -** Emacs ignores the "help" key when running OLWM. - -OLWM grabs the help key, and retransmits it to the appropriate client -using XSendEvent. Allowing emacs to react to synthetic events is a -security hole, so this is turned off by default. You can enable it by -setting the variable x-allow-sendevents to t. You can also cause fix -this by telling OLWM to not grab the help key, with the null binding -"OpenWindows.KeyboardCommand.Help:". - -** Programs running under terminal emulator do not recognize `emacs' -terminal type. +On SCO, there are problems in regexp matching when Emacs is compiled +with the system compiler. The compiler version is "Microsoft C +version 6", SCO 4.2.0h Dev Sys Maintenance Supplement 01/06/93; Quick +C Compiler Version 1.00.46 (Beta). The solution is to compile with +GCC. -The cause of this is a shell startup file that sets the TERMCAP -environment variable. The terminal emulator uses that variable to -provide the information on the special terminal type that Emacs -emulates. -Rewrite your shell startup file so that it does not change TERMCAP -in such a case. You could use the following conditional which sets -it only if it is undefined. +** Windows +*** Emacs exits with "X protocol error" when run with an X server for +Windows. - if ( ! ${?TERMCAP} ) setenv TERMCAP ~/my-termcap-file +A certain X server for Windows had a bug which caused this. +Supposedly the newer 32-bit version of this server doesn't have the +problem. -Or you could set TERMCAP only when you set TERM--which should not -happen in a non-login shell. * Compatibility problems (with Emacs 18, GNU Emacs, or previous XEmacs/lemacs) ============================================================================== -** "Symbol's value as variable is void: unread-command-char". +*** "Symbol's value as variable is void: unread-command-char". "Wrong type argument: arrayp, #" "Wrong type argument: stringp, [#]" diff --git a/configure b/configure index 0beba52..9347c6c 100755 --- a/configure +++ b/configure @@ -999,7 +999,7 @@ machine='' opsys='' case "$canonical" in sparc-*-* ) machine=sparc ;; - alpha-*-* ) machine=alpha ;; + alpha*-*-* ) machine=alpha ;; vax-*-* ) machine=vax ;; mips-dec-* ) machine=pmax ;; mips-sgi-* ) machine=iris4d ;; @@ -1034,9 +1034,9 @@ case "$canonical" in *-*-aix3.1* ) opsys=aix3-1 ;; *-*-aix3.2.5 ) opsys=aix3-2-5 ;; *-*-aix3* ) opsys=aix3-2 ;; - *-*-aix4.2* ) opsys=aix4-2 ;; + *-*-aix4.0* ) opsys=aix4 ;; *-*-aix4.1* ) opsys=aix4-1 ;; - *-*-aix4* ) opsys=aix4 ;; + *-*-aix4* ) opsys=aix4-2 ;; *-gnu* ) opsys=gnu ;; *-*-bsd4.[01] ) opsys=bsd4-1 ;; @@ -2081,31 +2081,35 @@ EOF } -echo $ac_n "checking whether we are using SunPro C""... $ac_c" 1>&6 -echo "configure:2086: checking whether we are using SunPro C" >&5 + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - __sunpro_c=yes +if { (eval echo configure:2099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +then + : else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -rf conftest* - __sunpro_c=no + rm -fr conftest* + case "$conftest_rc" in + 11) echo "You appear to be using the SunPro C compiler."; __SUNPRO_C=yes ;; + 12) echo "You appear to be using the DEC C compiler." ; __DECC=yes ;; +esac fi -rm -f conftest* -echo "$ac_t""$__sunpro_c" 1>&6 +rm -fr conftest* + @@ -2277,20 +2281,24 @@ test "$extra_verbose" = "yes" && \ test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc" +test "$__DECC" = "yes" && c_switch_site="$c_switch_site -std" && if test "$extra_verbose" = "yes"; then echo " Appending \"-std\" to \$c_switch_site"; fi + if test "$cflags_specified" = "no"; then if test "$GCC" = "yes"; then CFLAGS="-g -O3 -Wall -Wno-switch" test "$opsys $machine" = "cygwin32 intel386" && \ CFLAGS="-g -O2 -Wall -Wno-switch" - elif test "$__sunpro_c" = "yes"; then + elif test "$__SUNPRO_C" = "yes"; then case "$opsys" in sol2 ) CFLAGS="-v -xO4" ;; sunos4* ) CFLAGS="-xO2";; esac + elif test "$__DECC" = "yes"; then + CFLAGS="-O3" elif test "$CC" = "xlc"; then - CFLAGS="-O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000" - else - CFLAGS="-O" ; fi + CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000" + else + CFLAGS="-O" ; fi fi @@ -2357,7 +2365,7 @@ test -n "$unexec" && extra_objs="$extra_objs $unexec" && if test "$ext fi echo $ac_n "checking for dynodump""... $ac_c" 1>&6 -echo "configure:2361: checking for dynodump" >&5 +echo "configure:2369: checking for dynodump" >&5 if test "$unexec" != "unexsol2.o"; then echo "$ac_t""no" 1>&6 else @@ -2395,12 +2403,12 @@ if test "$unexec" = "unexaix.o"; then done echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6 -echo "configure:2399: checking for terminateAndUnload in -lC" >&5 +echo "configure:2407: 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; then +if { (eval echo configure:2423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2488,18 +2496,22 @@ fi if test "$dynamic" = "no"; then add_runtime_path=no elif test -n "$LD_RUN_PATH"; then add_runtime_path=yes else case "$opsys" in - sol2 | irix* | *bsd* ) add_runtime_path=yes ;; + sol2 | irix* | *bsd* | decosf* ) add_runtime_path=yes ;; * ) add_runtime_path=no ;; esac fi if test "$add_runtime_path" = "yes"; then echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6 -echo "configure:2499: checking "for runtime libraries flag"" >&5 - dash_r="" - for try_dash_r in "-R" "-R " "-rpath "; do - xe_check_libs="${try_dash_r}/no/such/file-or-directory" - +echo "configure:2507: checking "for runtime libraries flag"" >&5 + case "$opsys" in + sol2 ) dash_r = "-R" ;; + decosf* | linux* ) dash_r = "-rpath " ;; + *) + dash_r="" + for try_dash_r in "-R" "-R " "-rpath "; do + xe_check_libs="${try_dash_r}/no/such/file-or-directory" + if test "$GCC" = "yes"; then set x $xe_check_libs; shift; xe_check_libs="" while test -n "$1"; do @@ -2512,15 +2524,15 @@ if test "$GCC" = "yes"; then shift done fi - cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* dash_r="$try_dash_r" else @@ -2528,9 +2540,10 @@ else cat conftest.$ac_ext >&5 fi rm -f conftest* - xe_check_libs="" - test -n "$dash_r" && break - done + xe_check_libs="" + test -n "$dash_r" && break + done ;; + esac if test -n "$dash_r"; then echo "$ac_t"""\"${dash_r}\""" 1>&6 else echo "$ac_t""NONE" 1>&6 @@ -2620,10 +2633,10 @@ else fi after_morecore_hook_exists=yes echo $ac_n "checking for malloc_get_state""... $ac_c" 1>&6 -echo "configure:2624: checking for malloc_get_state" >&5 +echo "configure:2637: checking for malloc_get_state" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_malloc_get_state=yes" else @@ -2666,10 +2679,10 @@ doug_lea_malloc=no fi echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6 -echo "configure:2670: checking for malloc_set_state" >&5 +echo "configure:2683: checking for malloc_set_state" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_malloc_set_state=yes" else @@ -2712,16 +2725,16 @@ doug_lea_malloc=no fi echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6 -echo "configure:2716: checking whether __after_morecore_hook exists" >&5 +echo "configure:2729: checking whether __after_morecore_hook exists" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -2780,7 +2793,7 @@ fi # 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:2784: checking for $ac_word" >&5 +echo "configure:2797: checking for $ac_word" >&5 if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -2833,7 +2846,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. # 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:2837: checking for a BSD compatible install" >&5 +echo "configure:2850: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" @@ -2884,7 +2897,7 @@ do # 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:2888: checking for $ac_word" >&5 +echo "configure:2901: checking for $ac_word" >&5 if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. @@ -2915,15 +2928,15 @@ for ac_hdr in mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2919: checking for $ac_hdr" >&5 +echo "configure:2932: 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:2927: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2940: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2952,19 +2965,19 @@ else fi done -for ac_hdr in utime.h locale.h libgen.h fcntl.h ulimit.h +for ac_hdr in utime.h locale.h libgen.h fcntl.h ulimit.h cygwin32/version.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2960: checking for $ac_hdr" >&5 +echo "configure:2973: 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:2968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2981: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2997,15 +3010,15 @@ for ac_hdr in linux/version.h kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3001: checking for $ac_hdr" >&5 +echo "configure:3014: 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:3009: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3022: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -3035,10 +3048,10 @@ fi done echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:3039: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:3052: checking for sys/wait.h that is POSIX.1 compatible" >&5 cat > conftest.$ac_ext < #include @@ -3054,7 +3067,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:3058: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3071: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -3078,10 +3091,10 @@ EOF fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3082: checking for ANSI C header files" >&5 +echo "configure:3095: checking for ANSI C header files" >&5 cat > conftest.$ac_ext < #include @@ -3089,7 +3102,7 @@ cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3106: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -3106,7 +3119,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3124,7 +3137,7 @@ fi 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 @@ -3142,7 +3155,7 @@ fi 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') @@ -3153,10 +3166,11 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:3157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -3178,10 +3192,10 @@ EOF fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3182: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:3196: checking whether time.h and sys/time.h may both be included" >&5 cat > conftest.$ac_ext < #include @@ -3190,7 +3204,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:3194: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3208: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -3214,10 +3228,10 @@ EOF fi echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:3218: checking for sys_siglist declaration in signal.h or unistd.h" >&5 +echo "configure:3232: checking for sys_siglist declaration in signal.h or unistd.h" >&5 cat > conftest.$ac_ext < #include @@ -3229,7 +3243,7 @@ int main() { char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:3233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3247: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -3254,9 +3268,9 @@ fi echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6 -echo "configure:3258: checking for struct utimbuf" >&5 +echo "configure:3272: checking for struct utimbuf" >&5 cat > conftest.$ac_ext < @@ -3275,7 +3289,7 @@ int main() { static struct utimbuf x; x.actime = x.modtime; ; return 0; } EOF -if { (eval echo configure:3279: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3293: \"$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 @@ -3295,10 +3309,10 @@ fi rm -f conftest* echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:3299: checking return type of signal handlers" >&5 +echo "configure:3313: checking return type of signal handlers" >&5 cat > conftest.$ac_ext < #include @@ -3315,7 +3329,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:3319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -3337,10 +3351,10 @@ EOF echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3341: checking for size_t" >&5 +echo "configure:3355: checking for size_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3371,10 +3385,10 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3375: checking for pid_t" >&5 +echo "configure:3389: checking for pid_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3405,10 +3419,10 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3409: checking for uid_t in sys/types.h" >&5 +echo "configure:3423: checking for uid_t in sys/types.h" >&5 cat > conftest.$ac_ext < EOF @@ -3444,10 +3458,10 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:3448: checking for mode_t" >&5 +echo "configure:3462: checking for mode_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3478,10 +3492,10 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3482: checking for off_t" >&5 +echo "configure:3496: checking for off_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3513,9 +3527,9 @@ fi echo $ac_n "checking for struct timeval""... $ac_c" 1>&6 -echo "configure:3517: checking for struct timeval" >&5 +echo "configure:3531: checking for struct timeval" >&5 cat > conftest.$ac_ext < @@ -3531,7 +3545,7 @@ int main() { static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } EOF -if { (eval echo configure:3535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3549: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 HAVE_TIMEVAL=yes @@ -3553,10 +3567,10 @@ fi rm -f conftest* echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:3557: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:3571: checking whether struct tm is in sys/time.h or time.h" >&5 cat > conftest.$ac_ext < #include @@ -3564,7 +3578,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:3568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3582: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -3588,10 +3602,10 @@ EOF fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:3592: checking for tm_zone in struct tm" >&5 +echo "configure:3606: checking for tm_zone in struct tm" >&5 cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -3599,7 +3613,7 @@ int main() { struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:3603: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -3622,10 +3636,10 @@ EOF else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:3626: checking for tzname" >&5 +echo "configure:3640: checking for tzname" >&5 cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -3635,7 +3649,7 @@ int main() { atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:3639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -3661,10 +3675,10 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:3665: checking for working const" >&5 +echo "configure:3679: checking for working const" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -3738,7 +3752,7 @@ fi echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:3742: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:3756: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` cat > conftestmake <<\EOF @@ -3763,12 +3777,12 @@ fi echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3767: checking whether byte ordering is bigendian" >&5 +echo "configure:3781: 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 @@ -3779,11 +3793,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:3783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3797: \"$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 @@ -3794,7 +3808,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:3798: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3812: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -3811,7 +3825,7 @@ fi 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:3842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_bigendian=no else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -3850,10 +3865,10 @@ fi echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:3854: checking size of short" >&5 +echo "configure:3869: checking size of short" >&5 cat > conftest.$ac_ext < main() @@ -3864,10 +3879,11 @@ main() exit(0); } EOF -if { (eval echo configure:3868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -3891,10 +3907,10 @@ if test "$ac_cv_sizeof_short" = 0; then exit 1 fi echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:3895: checking size of int" >&5 +echo "configure:3911: checking size of int" >&5 cat > conftest.$ac_ext < main() @@ -3905,10 +3921,11 @@ main() exit(0); } EOF -if { (eval echo configure:3909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_int=`cat conftestval` else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -3926,10 +3943,10 @@ EOF echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:3930: checking size of long" >&5 +echo "configure:3947: checking size of long" >&5 cat > conftest.$ac_ext < main() @@ -3940,10 +3957,11 @@ main() exit(0); } EOF -if { (eval echo configure:3944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long=`cat conftestval` else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -3961,10 +3979,10 @@ EOF echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:3965: checking size of long long" >&5 +echo "configure:3983: checking size of long long" >&5 cat > conftest.$ac_ext < main() @@ -3975,10 +3993,11 @@ main() exit(0); } EOF -if { (eval echo configure:3979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:3997: \"$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 + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -3996,10 +4015,10 @@ EOF echo $ac_n "checking size of void *""... $ac_c" 1>&6 -echo "configure:4000: checking size of void *" >&5 +echo "configure:4019: checking size of void *" >&5 cat > conftest.$ac_ext < main() @@ -4010,10 +4029,11 @@ main() exit(0); } EOF -if { (eval echo configure:4014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:4033: \"$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 + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -4032,7 +4052,7 @@ EOF echo $ac_n "checking for long file names""... $ac_c" 1>&6 -echo "configure:4036: checking for long file names" >&5 +echo "configure:4056: 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: @@ -4079,12 +4099,12 @@ fi echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 -echo "configure:4083: checking for sin in -lm" >&5 +echo "configure:4103: 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; then +if { (eval echo configure:4119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4137,14 +4157,14 @@ EOF cat > conftest.$ac_ext < int main() { return atanh(1.0) + asinh(1.0) + acosh(1.0); ; return 0; } EOF -if { (eval echo configure:4148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_INVERSE_HYPERBOLIC @@ -4161,7 +4181,7 @@ fi rm -f conftest* echo "checking type of mail spool file locking" 1>&6 -echo "configure:4165: checking type of mail spool file locking" >&5 +echo "configure:4185: checking type of mail spool file locking" >&5 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf if test "$mail_locking" = "lockf"; then { test "$extra_verbose" = "yes" && cat << \EOF @@ -4185,12 +4205,12 @@ fi echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:4189: checking for kstat_open in -lkstat" >&5 +echo "configure:4209: 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; then +if { (eval echo configure:4225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4235,12 +4255,12 @@ fi echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:4239: checking for kvm_read in -lkvm" >&5 +echo "configure:4259: 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; then +if { (eval echo configure:4275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4286,12 +4306,12 @@ fi case "$opsys" in decosf*) echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6 -echo "configure:4290: checking for cma_open in -lpthreads" >&5 +echo "configure:4310: 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; then +if { (eval echo configure:4326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4338,7 +4358,7 @@ fi esac echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6 -echo "configure:4342: checking whether the -xildoff compiler flag is required" >&5 +echo "configure:4362: 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; @@ -4349,7 +4369,7 @@ fi if test "$opsys" = "sol2" && test "$OS_RELEASE" -ge 56; then echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6 -echo "configure:4353: checking for \"-z ignore\" linker flag" >&5 +echo "configure:4373: 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 ;; @@ -4359,7 +4379,7 @@ fi echo "checking "for specified window system"" 1>&6 -echo "configure:4363: checking "for specified window system"" >&5 +echo "configure:4383: checking "for specified window system"" >&5 if test "$with_x11" != "no"; then test "$x_includes $x_libraries" != "NONE NONE" && \ @@ -4392,7 +4412,7 @@ if test "$with_x11" != "no"; then # 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:4396: checking for X" >&5 +echo "configure:4416: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -4452,12 +4472,12 @@ if test "$ac_x_includes" = NO; then # 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:4461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4481: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -4526,14 +4546,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -4642,17 +4662,17 @@ else 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:4646: checking whether -R must be followed by a space" >&5 +echo "configure:4666: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_R_nospace=yes else @@ -4668,14 +4688,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_R_space=yes else @@ -4711,12 +4731,12 @@ ac_cv_lib_dnet_dnet_ntoa=no else echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:4715: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:4735: 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; then +if { (eval echo configure:4751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4751,12 +4771,12 @@ fi 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:4755: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:4775: 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; then +if { (eval echo configure:4791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4796,10 +4816,10 @@ fi # 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:4800: checking for gethostbyname" >&5 +echo "configure:4820: checking for gethostbyname" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -4843,12 +4863,12 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:4847: checking for gethostbyname in -lnsl" >&5 +echo "configure:4867: 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; then +if { (eval echo configure:4883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4889,10 +4909,10 @@ fi # -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:4893: checking for connect" >&5 +echo "configure:4913: checking for connect" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4939: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -4938,12 +4958,12 @@ fi 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:4942: checking "$xe_msg_checking"" >&5 +echo "configure:4962: 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; then +if { (eval echo configure:4978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4978,10 +4998,10 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:4982: checking for remove" >&5 +echo "configure:5002: checking for remove" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -5025,12 +5045,12 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:5029: checking for remove in -lposix" >&5 +echo "configure:5049: 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; then +if { (eval echo configure:5065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5065,10 +5085,10 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:5069: checking for shmat" >&5 +echo "configure:5089: checking for shmat" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -5112,12 +5132,12 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:5116: checking for shmat in -lipc" >&5 +echo "configure:5136: 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; then +if { (eval echo configure:5152: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5162,12 +5182,12 @@ fi # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:5166: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:5186: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` xe_check_libs=" -lICE " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:5202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5253,6 +5273,8 @@ EOF break; fi done + if test "$GCC" = yes -a -d /usr/shlib; then X_LIBS="$X_LIBS -L/usr/shlib" && if test "$extra_verbose" = "yes"; then echo " Appending \"-L/usr/shlib\" to \$X_LIBS"; fi; fi + ld_switch_x_site="$X_LIBS" @@ -5345,7 +5367,7 @@ EOF echo "checking for X defines extracted by xmkmf" 1>&6 -echo "configure:5349: checking for X defines extracted by xmkmf" >&5 +echo "configure:5371: checking for X defines extracted by xmkmf" >&5 rm -fr conftestdir if mkdir conftestdir; then cd conftestdir @@ -5377,15 +5399,15 @@ EOF ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6 -echo "configure:5381: checking for X11/Intrinsic.h" >&5 +echo "configure:5403: 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:5389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5409,12 +5431,12 @@ fi echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:5413: checking for XOpenDisplay in -lX11" >&5 +echo "configure:5435: 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; then +if { (eval echo configure:5451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5450,12 +5472,12 @@ fi 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:5454: checking "$xe_msg_checking"" >&5 +echo "configure:5476: 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; then +if { (eval echo configure:5492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5493,12 +5515,12 @@ fi echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 -echo "configure:5497: checking for XShapeSelectInput in -lXext" >&5 +echo "configure:5519: 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; then +if { (eval echo configure:5535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5532,12 +5554,12 @@ fi echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6 -echo "configure:5536: checking for XtOpenDisplay in -lXt" >&5 +echo "configure:5558: 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; then +if { (eval echo configure:5574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5571,17 +5593,18 @@ fi echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6 -echo "configure:5575: checking the version of X11 being used" >&5 +echo "configure:5597: 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:5582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:5604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest foobar; x11_release=$? else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -5602,15 +5625,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5606: checking for $ac_hdr" >&5 +echo "configure:5629: 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:5614: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5641,7 +5664,7 @@ done echo $ac_n "checking for XFree86""... $ac_c" 1>&6 -echo "configure:5645: checking for XFree86" >&5 +echo "configure:5668: checking for XFree86" >&5 if test -d "/usr/X386/include" -o \ -f "/etc/XF86Config" -o \ -f "/etc/X11/XF86Config" -o \ @@ -5661,12 +5684,12 @@ EOF test -z "$with_xmu" && { echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6 -echo "configure:5665: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 +echo "configure:5688: 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; then +if { (eval echo configure:5704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5716,19 +5739,19 @@ EOF echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6 -echo "configure:5720: checking for main in -lXbsd" >&5 +echo "configure:5743: 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; then +if { (eval echo configure:5755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5765,22 +5788,22 @@ fi fi if test "$with_msw" != "no"; then echo "checking for MS-Windows" 1>&6 -echo "configure:5769: checking for MS-Windows" >&5 +echo "configure:5792: checking for MS-Windows" >&5 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6 -echo "configure:5772: checking for main in -lgdi32" >&5 +echo "configure:5795: 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; then +if { (eval echo configure:5807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5844,12 +5867,12 @@ EOF fi fi cat > conftest.$ac_ext < int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; } EOF -if { (eval echo configure:5853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:5876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_MSG_SELECT @@ -5860,6 +5883,7 @@ EOF } else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi @@ -5927,7 +5951,7 @@ case "$x_libraries" in *X11R4* ) esac echo "checking for session-management option" 1>&6 -echo "configure:5931: checking for session-management option" >&5; +echo "configure:5955: checking for session-management option" >&5; if test "$with_session" != "no"; then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_SESSION @@ -5942,15 +5966,15 @@ fi 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:5946: checking for X11/Xauth.h" >&5 +echo "configure:5970: 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:5954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -5973,12 +5997,12 @@ fi } test -z "$with_xauth" && { echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6 -echo "configure:5977: checking for XauGetAuthByAddr in -lXau" >&5 +echo "configure:6001: 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; then +if { (eval echo configure:6017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6034,15 +6058,15 @@ if test "$with_tooltalk" != "no" ; then 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:6038: checking for ${dir}tt_c.h" >&5 +echo "configure:6062: 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:6046: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6070: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6078,12 +6102,12 @@ if test "$with_tooltalk" != "no" ; then 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:6082: checking "$xe_msg_checking"" >&5 +echo "configure:6106: 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; then +if { (eval echo configure:6122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6151,15 +6175,15 @@ fi 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:6155: checking for Dt/Dt.h" >&5 +echo "configure:6179: 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:6163: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6187: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6182,12 +6206,12 @@ fi } test -z "$with_cde" && { echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6 -echo "configure:6186: checking for DtDndDragStart in -lDtSvc" >&5 +echo "configure:6210: 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; then +if { (eval echo configure:6226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6267,7 +6291,7 @@ EOF fi echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6 -echo "configure:6271: checking if drag and drop API is needed" >&5 +echo "configure:6295: checking if drag and drop API is needed" >&5 if test "$with_dragndrop" != "no" ; then if test -n "$dragndrop_proto" ; then with_dragndrop=yes @@ -6288,18 +6312,18 @@ EOF fi echo "checking for LDAP" 1>&6 -echo "configure:6292: checking for LDAP" >&5 +echo "configure:6316: 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:6295: checking for ldap.h" >&5 +echo "configure:6319: 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:6303: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6327: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6322,15 +6346,15 @@ fi } 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:6326: checking for lber.h" >&5 +echo "configure:6350: 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:6334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6356,12 +6380,12 @@ if test "$with_ldap" != "no"; then 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:6360: checking "$xe_msg_checking"" >&5 +echo "configure:6384: 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; then +if { (eval echo configure:6400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6395,12 +6419,12 @@ fi } test "$with_umich_ldap" = "no" && { echo $ac_n "checking for ldap_set_option in -lldap10""... $ac_c" 1>&6 -echo "configure:6399: checking for ldap_set_option in -lldap10" >&5 +echo "configure:6423: checking for ldap_set_option in -lldap10" >&5 ac_lib_var=`echo ldap10'_'ldap_set_option | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap10 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6475,14 +6499,15 @@ fi if test "$window_system" != "none"; then echo "checking for graphics libraries" 1>&6 -echo "configure:6479: checking for graphics libraries" >&5 +echo "configure:6503: checking for graphics libraries" >&5 - if test -z "$with_xpm"; then + xpm_problem="" + if test -z "$with_xpm"; then echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6 -echo "configure:6483: checking for Xpm - no older than 3.4f" >&5 +echo "configure:6508: checking for Xpm - no older than 3.4f" >&5 xe_check_libs=-lXpm cat > conftest.$ac_ext < int main(int c, char **v) { @@ -6490,27 +6515,28 @@ echo "configure:6483: checking for Xpm - no older than 3.4f" >&5 XpmIncludeVersion != XpmLibraryVersion() ? 1 : XpmIncludeVersion < 30406 ? 2 : 0 ;} EOF -if { (eval echo configure:6494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:6519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest dummy_arg; xpm_status=$?; - if test "$?" = "0"; then + if test "$xpm_status" = "0"; then with_xpm=yes; else with_xpm=no; - if test "$?" = "1"; then + if test "$xpm_status" = "1"; then xpm_problem="Xpm library version and header file version don't match!" - elif test "$?" = "2"; then + elif test "$xpm_status" = "2"; then xpm_problem="Xpm library version is too old!" else xpm_problem="Internal xpm detection logic error!" fi echo " -*** WARNING *** $problem +*** WARNING *** $xpm_problem I'm not touching that with a 10-foot pole! If you really want to use the installed version of Xpm, rerun - configure --with-xpm=yes, but don't blame me if XEmacs crashes!" + configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!" fi else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -6531,17 +6557,17 @@ EOF libs_x="-lXpm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXpm\" to \$libs_x"; fi echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6 -echo "configure:6535: checking for \"FOR_MSW\" xpm" >&5 +echo "configure:6561: checking for \"FOR_MSW\" xpm" >&5 xe_check_libs=-lXpm cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* xpm_for_msw=no else @@ -6565,15 +6591,30 @@ EOF fi fi + if test "$with_gif" != "no"; then + with_gif="yes" + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_GIF +EOF +cat >> confdefs.h <<\EOF +#define HAVE_GIF 1 +EOF +} + + extra_objs="$extra_objs dgif_lib.o gif_io.o" && if test "$extra_verbose" = "yes"; then + echo " xemacs will be linked with \"dgif_lib.o gif_io.o\"" + fi + fi + if test "$with_png $with_tiff" != "no no"; then echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6 -echo "configure:6572: checking for inflate in -lc" >&5 +echo "configure:6613: 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; then +if { (eval echo configure:6629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6603,12 +6644,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6 -echo "configure:6607: checking for inflate in -lz" >&5 +echo "configure:6648: 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; then +if { (eval echo configure:6664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6638,12 +6679,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6 -echo "configure:6642: checking for inflate in -lgz" >&5 +echo "configure:6683: 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; then +if { (eval echo configure:6699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6682,102 +6723,17 @@ fi fi - echo $ac_n "checking for gifreader""... $ac_c" 1>&6 -echo "configure:6687: checking for gifreader" >&5 - test -z "$with_gif" && { ac_safe=`echo "gifrlib.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for gifrlib.h""... $ac_c" 1>&6 -echo "configure:6690: checking for gifrlib.h" >&5 - -cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6698: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -with_gif=no -fi - } - test -z "$with_gif" && { -echo $ac_n "checking for GetGifError in -lgifreader""... $ac_c" 1>&6 -echo "configure:6721: checking for GetGifError in -lgifreader" >&5 -ac_lib_var=`echo gifreader'_'GetGifError | sed 'y%./+-%__p_%'` - -xe_check_libs=" -lgifreader " -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -with_gif=no -fi - - } - test -z "$with_gif" && with_gif=yes - if test "$with_gif" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_GIF -EOF -cat >> confdefs.h <<\EOF -#define HAVE_GIF 1 -EOF -} - - libs_x="-lgifreader $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lgifreader\" to \$libs_x"; fi - fi - 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:6773: checking for jpeglib.h" >&5 +echo "configure:6729: 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:6781: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -6800,12 +6756,12 @@ fi } test -z "$with_jpeg" && { echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:6804: checking for jpeg_destroy_decompress in -ljpeg" >&5 +echo "configure:6760: 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; then +if { (eval echo configure:6776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6850,34 +6806,12 @@ EOF libs_x="-ljpeg $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ljpeg\" to \$libs_x"; fi fi - if test -z "$with_png"; then - echo $ac_n "checking for png.h - no older than 0.96""... $ac_c" 1>&6 -echo "configure:6856: checking for png.h - no older than 0.96" >&5 - cat > conftest.$ac_ext < -#if PNG_LIBPNG_VER >= 96 -yes -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - echo "$ac_t""yes" 1>&6 -else - rm -rf conftest* - echo "$ac_t""no" 1>&6; with_png=no -fi -rm -f conftest* - - fi + png_problem="" test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:6878: checking for pow" >&5 +echo "configure:6812: checking for pow" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:6838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_pow=yes" else @@ -6919,14 +6853,45 @@ else with_png=no fi } + 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:6859: 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:6867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +with_png=no +fi + } test -z "$with_png" && { echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6 -echo "configure:6925: checking for png_read_image in -lpng" >&5 +echo "configure:6890: 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; then +if { (eval echo configure:6906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6958,7 +6923,48 @@ with_png=no fi } - test -z "$with_png" && with_png=yes + if test -z "$with_png"; then + echo $ac_n "checking for workable png version information""... $ac_c" 1>&6 +echo "configure:6929: checking for workable png version information" >&5 + xe_check_libs="-lpng -lz" + cat > conftest.$ac_ext < + int main(int c, char **v) { + if (c == 1) return 0; + if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1; + return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;} +EOF +if { (eval echo configure:6940: \"$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 + with_png=yes; + else + with_png=no; + if test "$png_status" = "1"; then + png_problem="PNG library version and header file don't match!" + elif test "$png_status" = "2"; then + png_problem="PNG library version too old (pre 1.0.2)!" + fi + echo " +*** WARNING *** $png_problem + I'm not touching that with a 10-foot pole! + If you really want to use the installed version of libPNG, rerun + configure and add '--with-png=yes', but don't blame me if XEmacs crashes!" + fi +else + conftest_rc="$?" + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + with_png=no +fi +rm -fr conftest* + xe_check_libs= + echo "$ac_t""$with_png" 1>&6 + fi if test "$with_png" = "yes"; then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_PNG @@ -6973,15 +6979,15 @@ EOF 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:6977: checking for tiffio.h" >&5 +echo "configure:6983: 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:6985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6991: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7004,12 +7010,12 @@ fi } test -z "$with_tiff" && { echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6 -echo "configure:7008: checking for TIFFClientOpen in -ltiff" >&5 +echo "configure:7014: 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; then +if { (eval echo configure:7030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7059,19 +7065,19 @@ fi if test "$with_x11" = "yes"; then echo "checking for X11 graphics libraries" 1>&6 -echo "configure:7063: checking for X11 graphics libraries" >&5 +echo "configure:7069: checking for X11 graphics libraries" >&5 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:7067: checking for compface.h" >&5 +echo "configure:7073: 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:7075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7081: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7094,12 +7100,12 @@ fi } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:7098: checking for UnGenFace in -lcompface" >&5 +echo "configure:7104: 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; then +if { (eval echo configure:7120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7146,12 +7152,12 @@ EOF echo $ac_n "checking for XawScrollbarSetThumb in -lXaw""... $ac_c" 1>&6 -echo "configure:7150: checking for XawScrollbarSetThumb in -lXaw" >&5 +echo "configure:7156: checking for XawScrollbarSetThumb in -lXaw" >&5 ac_lib_var=`echo Xaw'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'` xe_check_libs=" -lXaw " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7186,15 +7192,15 @@ fi ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:7190: checking for Xm/Xm.h" >&5 +echo "configure:7196: 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:7198: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7211,12 +7217,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6 -echo "configure:7215: checking for XmStringFree in -lXm" >&5 +echo "configure:7221: 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; then +if { (eval echo configure:7237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7256,9 +7262,9 @@ fi if test "$have_motif" = "yes"; then echo $ac_n "checking for Lesstif""... $ac_c" 1>&6 -echo "configure:7260: checking for Lesstif" >&5 +echo "configure:7266: checking for Lesstif" >&5 cat > conftest.$ac_ext < #ifdef LESSTIF_VERSION @@ -7542,7 +7548,7 @@ fi if test "$with_mule" = "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:7546: checking for Mule-related features" >&5 +echo "configure:7552: checking for Mule-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining MULE EOF @@ -7567,15 +7573,15 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7571: checking for $ac_hdr" >&5 +echo "configure:7577: 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:7579: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7585: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7606,12 +7612,12 @@ done echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:7610: checking for strerror in -lintl" >&5 +echo "configure:7616: 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; then +if { (eval echo configure:7632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7655,19 +7661,19 @@ fi echo "checking for Mule input methods" 1>&6 -echo "configure:7659: checking for Mule input methods" >&5 +echo "configure:7665: checking for Mule input methods" >&5 case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:7662: checking for XIM" >&5 +echo "configure:7668: checking for XIM" >&5 if test "$have_lesstif" = "yes"; then with_xim=xlib else echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6 -echo "configure:7666: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:7672: 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; then +if { (eval echo configure:7688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7744,15 +7750,15 @@ EOF if test "$with_xfs" = "yes" ; then echo "checking for XFontSet" 1>&6 -echo "configure:7748: checking for XFontSet" >&5 +echo "configure:7754: checking for XFontSet" >&5 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6 -echo "configure:7751: checking for XmbDrawString in -lX11" >&5 +echo "configure:7757: 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; then +if { (eval echo configure:7773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7803,15 +7809,15 @@ EOF 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:7807: checking for wnn/jllib.h" >&5 +echo "configure:7813: 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:7815: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -7836,10 +7842,10 @@ fi for ac_func in crypt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7840: checking for $ac_func" >&5 +echo "configure:7846: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:7872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7891,12 +7897,12 @@ done test "$ac_cv_func_crypt" != "yes" && { echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:7895: checking for crypt in -lcrypt" >&5 +echo "configure:7901: 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; then +if { (eval echo configure:7917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7941,12 +7947,12 @@ fi fi test -z "$with_wnn" && { echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6 -echo "configure:7945: checking for jl_dic_list_e in -lwnn" >&5 +echo "configure:7951: 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; then +if { (eval echo configure:7967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7995,12 +8001,12 @@ EOF if test "$with_wnn6" != "no"; then echo $ac_n "checking for jl_fi_dic_list in -lwnn""... $ac_c" 1>&6 -echo "configure:7999: checking for jl_fi_dic_list in -lwnn" >&5 +echo "configure:8005: checking for jl_fi_dic_list in -lwnn" >&5 ac_lib_var=`echo wnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8046,15 +8052,15 @@ EOF 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:8050: checking for canna/jrkanji.h" >&5 +echo "configure:8056: 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:8058: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8064: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8081,15 +8087,15 @@ fi 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:8085: checking for canna/jrkanji.h" >&5 +echo "configure:8091: 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:8093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8117,15 +8123,15 @@ fi 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:8121: checking for canna/RK.h" >&5 +echo "configure:8127: 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:8129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8135: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8148,12 +8154,12 @@ fi } test -z "$with_canna" && { echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:8152: checking for RkBgnBun in -lRKC" >&5 +echo "configure:8158: 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; then +if { (eval echo configure:8174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8187,12 +8193,12 @@ fi } test -z "$with_canna" && { echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:8191: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:8197: 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; then +if { (eval echo configure:8213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8252,12 +8258,12 @@ if test "$need_motif" = "yes" ; then 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:8256: checking for layout_object_getvalue in -li18n" >&5 +echo "configure:8262: 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; then +if { (eval echo configure:8278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8354,10 +8360,10 @@ fi for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname 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 strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8358: checking for $ac_func" >&5 +echo "configure:8364: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8417,10 +8423,10 @@ case "$opsys" in for ac_func in realpath do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8421: checking for $ac_func" >&5 +echo "configure:8427: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8476,16 +8482,16 @@ done esac echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:8480: checking whether netdb declares h_errno" >&5 +echo "configure:8486: checking whether netdb declares h_errno" >&5 cat > conftest.$ac_ext < int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:8489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6 { test "$extra_verbose" = "yes" && cat << \EOF @@ -8505,16 +8511,16 @@ fi rm -f conftest* echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:8509: checking for sigsetjmp" >&5 +echo "configure:8515: checking for sigsetjmp" >&5 cat > conftest.$ac_ext < int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:8518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8524: \"$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 @@ -8534,11 +8540,11 @@ fi rm -f conftest* echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:8538: checking whether localtime caches TZ" >&5 +echo "configure:8544: checking whether localtime caches TZ" >&5 if test "$ac_cv_func_tzset" = "yes"; then cat > conftest.$ac_ext < #if STDC_HEADERS @@ -8573,10 +8579,11 @@ main() exit (0); } EOF -if { (eval echo configure:8577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:8583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then emacs_cv_localtime_cache=no else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -8602,9 +8609,9 @@ fi if test "$HAVE_TIMEVAL" = "yes"; then echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6 -echo "configure:8606: checking whether gettimeofday accepts one or two arguments" >&5 +echo "configure:8613: checking whether gettimeofday accepts one or two arguments" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""two" 1>&6 else @@ -8648,19 +8655,19 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:8652: checking for inline" >&5 +echo "configure:8659: 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:8671: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -8710,17 +8717,17 @@ fi # 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:8714: checking for working alloca.h" >&5 +echo "configure:8721: 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:8724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -8744,10 +8751,10 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:8748: checking for alloca" >&5 +echo "configure:8755: checking for alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -8809,10 +8816,10 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:8813: checking whether alloca needs Cray hooks" >&5 +echo "configure:8820: checking whether alloca needs Cray hooks" >&5 cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8840: checking for $ac_func" >&5 +echo "configure:8847: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:8873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8892,10 +8899,10 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:8896: checking stack direction for C alloca" >&5 +echo "configure:8903: 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:8925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_stack_direction=1 else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -8942,15 +8950,15 @@ test -n "$ALLOCA" && extra_objs="$extra_objs $ALLOCA" && if test "$extra_verbos ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:8946: checking for vfork.h" >&5 +echo "configure:8954: 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:8954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8962: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -8978,10 +8986,10 @@ else fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:8982: checking for working vfork" >&5 +echo "configure:8990: checking for working vfork" >&5 cat > conftest.$ac_ext < @@ -9076,10 +9084,11 @@ main() { } } EOF -if { (eval echo configure:9080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:9088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_vfork_works=yes else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -9101,10 +9110,10 @@ fi echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:9105: checking for working strcoll" >&5 +echo "configure:9114: checking for working strcoll" >&5 cat > conftest.$ac_ext < main () @@ -9114,10 +9123,11 @@ main () strcoll ("123", "456") >= 0); } EOF -if { (eval echo configure:9118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:9127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_strcoll_works=yes else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -9141,10 +9151,10 @@ fi for ac_func in getpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:9145: checking for $ac_func" >&5 +echo "configure:9155: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -9195,10 +9205,10 @@ fi done echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:9199: checking whether getpgrp takes no argument" >&5 +echo "configure:9209: 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:9267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_getpgrp_void=yes else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -9279,10 +9290,10 @@ fi echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:9283: checking for working mmap" >&5 +echo "configure:9294: checking for working mmap" >&5 case "$opsys" in ultrix* ) have_mmap=no ;; *) cat > conftest.$ac_ext < #include @@ -9315,10 +9326,11 @@ int main (int argc, char *argv[]) return 1; } EOF -if { (eval echo configure:9319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:9330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then have_mmap=yes else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -9335,6 +9347,271 @@ cat >> confdefs.h <<\EOF EOF } +for ac_hdr in unistd.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:9355: 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:9363: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + { test "$extra_verbose" = "yes" && cat << EOF + Defining $ac_tr_hdr +EOF +cat >> confdefs.h <&6 +fi +done + +for ac_func in getpagesize +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:9395: checking for $ac_func" >&5 + +cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:9421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + { test "$extra_verbose" = "yes" && cat << EOF + Defining $ac_tr_func +EOF +cat >> confdefs.h <&6 +fi +done + +echo $ac_n "checking for working mmap""... $ac_c" 1>&6 +echo "configure:9449: checking for working mmap" >&5 + +cat > conftest.$ac_ext < +#include +#include + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef HAVE_UNISTD_H +# include +# endif + +/* Assume that all systems that can run configure have sys/param.h. */ +# ifndef HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +#ifdef __cplusplus +extern "C" { void *malloc(unsigned); } +#else +char *malloc(); +#endif + +int +main() +{ + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize(); + + /* + * First, make a file with some known garbage in it. + */ + data = malloc(pagesize); + if (!data) + exit(1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand(); + umask(0); + fd = creat("conftestmmap", 0600); + if (fd < 0) + exit(1); + if (write(fd, data, pagesize) != pagesize) + exit(1); + close(fd); + + /* + * Next, try to mmap the file at a fixed address which + * already has something else allocated at it. If we can, + * also make sure that we see the same garbage. + */ + fd = open("conftestmmap", O_RDWR); + if (fd < 0) + exit(1); + data2 = malloc(2 * pagesize); + if (!data2) + exit(1); + data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit(1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit(1); + + /* + * Finally, make sure that changes to the mapped area + * do not percolate back to the file as seen by read(). + * (This is a bug on some variants of i386 svr4.0.) + */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = malloc(pagesize); + if (!data3) + exit(1); + if (read(fd, data3, pagesize) != pagesize) + exit(1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit(1); + close(fd); + unlink("conftestmmap"); + exit(0); +} + +EOF +if { (eval echo configure:9592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +then + ac_cv_func_mmap_fixed_mapped=yes +else + conftest_rc="$?" + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_func_mmap_fixed_mapped=no +fi +rm -fr conftest* + +echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6 +if test $ac_cv_func_mmap_fixed_mapped = yes; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_MMAP +EOF +cat >> confdefs.h <<\EOF +#define HAVE_MMAP 1 +EOF +} + +fi + test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no test "$rel_alloc" = "default" -a "$have_mmap" = "yes" && rel_alloc=yes @@ -9349,15 +9626,15 @@ EOF ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:9353: checking for termios.h" >&5 +echo "configure:9630: 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:9361: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9400,15 +9677,15 @@ else 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:9404: checking for termio.h" >&5 +echo "configure:9681: 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:9412: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9440,10 +9717,10 @@ fi echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:9444: checking for socket" >&5 +echo "configure:9721: checking for socket" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_socket=yes" else @@ -9481,15 +9758,15 @@ if eval "test \"`echo '$ac_cv_func_'socket`\" = yes"; then 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:9485: checking for netinet/in.h" >&5 +echo "configure:9762: 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:9493: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9770: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9506,15 +9783,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then 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:9510: checking for arpa/inet.h" >&5 +echo "configure:9787: 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:9518: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9795: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9539,9 +9816,9 @@ EOF } echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:9543: checking "for sun_len member in struct sockaddr_un"" >&5 +echo "configure:9820: checking "for sun_len member in struct sockaddr_un"" >&5 cat > conftest.$ac_ext < @@ -9552,7 +9829,7 @@ int main() { static struct sockaddr_un x; x.sun_len = 1; ; return 0; } EOF -if { (eval echo configure:9556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_SOCKADDR_SUN_LEN @@ -9570,9 +9847,9 @@ else fi rm -f conftest* echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6 -echo "configure:9574: checking "for ip_mreq struct in netinet/in.h"" >&5 +echo "configure:9851: checking "for ip_mreq struct in netinet/in.h"" >&5 cat > conftest.$ac_ext < @@ -9582,7 +9859,7 @@ int main() { static struct ip_mreq x; ; return 0; } EOF -if { (eval echo configure:9586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_MULTICAST @@ -9613,10 +9890,10 @@ fi echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:9617: checking for msgget" >&5 +echo "configure:9894: checking for msgget" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:9920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_msgget=yes" else @@ -9654,15 +9931,15 @@ if eval "test \"`echo '$ac_cv_func_'msgget`\" = yes"; then 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:9658: checking for sys/ipc.h" >&5 +echo "configure:9935: 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:9666: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9943: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9679,15 +9956,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then 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:9683: checking for sys/msg.h" >&5 +echo "configure:9960: 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:9691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9725,15 +10002,15 @@ fi ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:9729: checking for dirent.h" >&5 +echo "configure:10006: 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:9737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10014: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9760,15 +10037,15 @@ else 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:9764: checking for sys/dir.h" >&5 +echo "configure:10041: 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:9772: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10049: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9801,15 +10078,15 @@ fi ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:9805: checking for nlist.h" >&5 +echo "configure:10082: 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:9813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9839,7 +10116,7 @@ fi echo "checking "for sound support"" 1>&6 -echo "configure:9843: checking "for sound support"" >&5 +echo "configure:10120: checking "for sound support"" >&5 case "$with_sound" in native | both ) with_native_sound=yes;; nas | no ) with_native_sound=no;; @@ -9850,15 +10127,15 @@ 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:9854: checking for multimedia/audio_device.h" >&5 +echo "configure:10131: 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:9862: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -9906,12 +10183,12 @@ fi if test -z "$native_sound_lib"; then echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:9910: checking for ALopenport in -laudio" >&5 +echo "configure:10187: 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; then +if { (eval echo configure:10203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9953,12 +10230,12 @@ fi if test -z "$native_sound_lib"; then echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:9957: checking for AOpenAudio in -lAlib" >&5 +echo "configure:10234: 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; then +if { (eval echo configure:10250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10007,15 +10284,15 @@ fi 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:10011: checking for ${dir}/soundcard.h" >&5 +echo "configure:10288: 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:10019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10296: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -10085,7 +10362,7 @@ EOF fi libs_x="-laudio $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-laudio\" to \$libs_x"; fi cat > conftest.$ac_ext < EOF @@ -10112,7 +10389,7 @@ test -z "$with_tty" && with_tty=yes if test "$with_tty" = "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:10116: checking for TTY-related features" >&5 +echo "configure:10393: checking for TTY-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -10128,12 +10405,12 @@ EOF if test -z "$with_ncurses"; then echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:10132: checking for tgetent in -lncurses" >&5 +echo "configure:10409: 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; then +if { (eval echo configure:10425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10177,15 +10454,15 @@ EOF ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:10181: checking for ncurses/curses.h" >&5 +echo "configure:10458: 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:10189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -10207,15 +10484,15 @@ fi ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6 -echo "configure:10211: checking for ncurses/term.h" >&5 +echo "configure:10488: 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:10219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -10245,15 +10522,15 @@ fi 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:10249: checking for ncurses/curses.h" >&5 +echo "configure:10526: 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:10257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -10288,12 +10565,12 @@ fi for lib in curses termlib termcap; do echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:10292: checking for tgetent in -l$lib" >&5 +echo "configure:10569: 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; then +if { (eval echo configure:10585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10335,12 +10612,12 @@ fi else echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:10339: checking for tgetent in -lcurses" >&5 +echo "configure:10616: 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; then +if { (eval echo configure:10632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10369,12 +10646,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6 -echo "configure:10373: checking for tgetent in -ltermcap" >&5 +echo "configure:10650: 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; then +if { (eval echo configure:10666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10433,15 +10710,15 @@ EOF 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:10437: checking for gpm.h" >&5 +echo "configure:10714: 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:10445: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10722: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -10464,12 +10741,12 @@ fi } test -z "$with_gpm" && { echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6 -echo "configure:10468: checking for Gpm_Open in -lgpm" >&5 +echo "configure:10745: 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; then +if { (eval echo configure:10761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10529,22 +10806,22 @@ test "$with_x11" = "yes" -o "$with_tty" = "yes" && extra_objs="$extra_objs event echo "checking for database support" 1>&6 -echo "configure:10533: checking for database support" >&5 +echo "configure:10810: checking for database support" >&5 if test "$with_database_gnudbm" != "no"; then for ac_hdr in ndbm.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10540: checking for $ac_hdr" >&5 +echo "configure:10817: 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:10548: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -10576,12 +10853,12 @@ done if test "$have_ndbm_h" = "yes"; then echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:10580: checking for dbm_open in -lgdbm" >&5 +echo "configure:10857: 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; then +if { (eval echo configure:10873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10615,10 +10892,10 @@ fi fi if test "$with_database_gnudbm" != "yes"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:10619: checking for dbm_open" >&5 +echo "configure:10896: checking for dbm_open" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:10922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_dbm_open=yes" else @@ -10677,10 +10954,10 @@ fi if test "$with_database_dbm" != "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:10681: checking for dbm_open" >&5 +echo "configure:10958: checking for dbm_open" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:10984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_dbm_open=yes" else @@ -10724,12 +11001,12 @@ fi if test "$need_libdbm" != "no"; then echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:10728: checking for dbm_open in -ldbm" >&5 +echo "configure:11005: 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; then +if { (eval echo configure:11021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10777,10 +11054,10 @@ fi if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 -echo "configure:10781: checking for Berkeley db.h" >&5 +echo "configure:11058: checking for Berkeley db.h" >&5 for path in "db/db.h" "db.h"; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_path="$path"; break else @@ -10807,16 +11084,16 @@ else fi rm -f conftest* done - if test -z "$db_h_path" + if test -z "$db_h_path" then echo "$ac_t""no" 1>&6; with_database_berkdb=no else echo "$ac_t""$db_h_path" 1>&6 fi if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6 -echo "configure:10818: checking for Berkeley DB version" >&5 +echo "configure:11095: checking for Berkeley DB version" >&5 cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 1 @@ -10835,10 +11112,10 @@ fi rm -f conftest* echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 -echo "configure:10839: checking for $dbfunc" >&5 +echo "configure:11116: checking for $dbfunc" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$dbfunc=yes" else @@ -10880,12 +11157,12 @@ else echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 -echo "configure:10884: checking for $dbfunc in -ldb" >&5 +echo "configure:11161: 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; then +if { (eval echo configure:11177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10960,12 +11237,12 @@ fi if test "$with_socks" = "yes"; then echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:10964: checking for SOCKSinit in -lsocks" >&5 +echo "configure:11241: 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; then +if { (eval echo configure:11257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11033,15 +11310,15 @@ for ac_hdr in dlfcn.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11037: checking for $ac_hdr" >&5 +echo "configure:11314: 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:11045: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11322: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -11072,12 +11349,12 @@ done test -z "$with_shlib" && test ! -z "$have_dlfcn" && { echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:11076: checking for dlopen in -ldl" >&5 +echo "configure:11353: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` xe_check_libs=" -ldl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11117,12 +11394,12 @@ fi } test -z "$with_shlib" && test ! -z "$have_dlfcn" && { echo $ac_n "checking for _dlopen in -lc""... $ac_c" 1>&6 -echo "configure:11121: checking for _dlopen in -lc" >&5 +echo "configure:11398: checking for _dlopen in -lc" >&5 ac_lib_var=`echo c'_'_dlopen | sed 'y%./+-%__p_%'` xe_check_libs=" -lc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11162,12 +11439,12 @@ fi } test -z "$with_shlib" && test ! -z "$have_dlfcn" && { echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6 -echo "configure:11166: checking for dlopen in -lc" >&5 +echo "configure:11443: checking for dlopen in -lc" >&5 ac_lib_var=`echo c'_'dlopen | sed 'y%./+-%__p_%'` xe_check_libs=" -lc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11207,12 +11484,12 @@ fi } test -z "$with_shlib" && { echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:11211: checking for shl_load in -ldld" >&5 +echo "configure:11488: 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; then +if { (eval echo configure:11504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11252,12 +11529,12 @@ fi } test -z "$with_shlib" && { echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:11256: checking for dld_init in -ldld" >&5 +echo "configure:11533: 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; then +if { (eval echo configure:11549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11318,7 +11595,7 @@ dll_cflags="-r" dll_oflags="-o " echo $ac_n "checking how to build a shared library""... $ac_c" 1>&6 -echo "configure:11322: checking how to build a shared library" >&5 +echo "configure:11599: checking how to build a shared library" >&5 case `uname -rs` in UNIX_SV*|UNIX_System_V*) dll_lflags="-G" @@ -11409,10 +11686,10 @@ case `uname -rs` in for ac_func in dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11413: checking for $ac_func" >&5 +echo "configure:11690: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:11716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -11471,14 +11748,15 @@ done fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>&5 +if { (eval echo configure:11756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else + conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* @@ -11615,7 +11893,7 @@ if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then echo "source $srcdir/src/gdbinit" > src/gdbinit fi -if test "$__sunpro_c" = "yes"; then +if test "$__SUNPRO_C" = "yes"; then echo "creating .sbinit"; echo "" ( echo "# For use with Sun WorkShop's Source browser." echo "# See sbquery(1) and sbinit(4) for more information" @@ -12035,15 +12313,31 @@ if test "$with_xpm" = yes; then elif test "$with_x11" = yes; then echo " --------------------------------------------------------------------" echo " WARNING: Compiling without XPM support." - echo " WARNING: You should strongly considering installing XPM." + if test "$xpm_problem" != ""; then + echo " Reason: $xpm_problem" + fi + echo " WARNING: You should strongly consider installing XPM." echo " WARNING: Otherwise toolbars and other graphics will look suboptimal." + echo " WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)" + echo " --------------------------------------------------------------------" +fi +if test "$with_png" = yes; then + echo " Compiling in support for PNG image handling." +elif test "$window_system" != "none"; then + echo " --------------------------------------------------------------------" + echo " WARNING: Compiling without PNG image support." + if test "$png_problem" != ""; then + echo " Reason: $png_problem" + fi + echo " WARNING: You should strongly consider installing the PNG libraries." + echo " WARNING: Otherwise certain images and glyphs may not display." + echo " WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)" echo " --------------------------------------------------------------------" fi +test "$with_gif" = yes && echo " Compiling in support for (builtin) GIF image handling." +test "$with_jpeg" = yes && echo " Compiling in support for JPEG image handling." +test "$with_tiff" = yes && echo " Compiling in support for TIFF image handling." test "$with_xface" = yes && echo " Compiling in support for X-Face message headers." -test "$with_gif" = yes && echo " Compiling in support for GIF image conversion." -test "$with_jpeg" = yes && echo " Compiling in support for JPEG image conversion." -test "$with_png" = yes && echo " Compiling in support for PNG image conversion." -test "$with_tiff" = yes && echo " Compiling in support for TIFF image conversion." case "$with_sound" in nas ) echo " Compiling in network sound (NAS) support." ;; native ) echo " Compiling in native sound support." ;; diff --git a/configure.in b/configure.in index 3044365..fc963ae 100644 --- a/configure.in +++ b/configure.in @@ -79,11 +79,12 @@ define([AC_TRY_RUN_NATIVE], #include "confdefs.h" [$1] EOF -if AC_TRY_EVAL(ac_link) && test -s conftest && (./conftest; exit) 2>&AC_FD_CC +if AC_TRY_EVAL(ac_link) && test -s conftest && (./conftest; exit $?) 2>&AC_FD_CC then dnl Do not remove the temporary files here, so they can be examined. ifelse([$2], , :, [$2]) else + conftest_rc="$?" echo "configure: failed program was:" >&AC_FD_CC cat conftest.$ac_ext >&AC_FD_CC ifelse([$3], , , [ rm -fr conftest* @@ -1019,7 +1020,7 @@ machine='' opsys='' dnl Straightforward machine determination case "$canonical" in sparc-*-* ) machine=sparc ;; - alpha-*-* ) machine=alpha ;; + alpha*-*-* ) machine=alpha ;; vax-*-* ) machine=vax ;; mips-dec-* ) machine=pmax ;; mips-sgi-* ) machine=iris4d ;; @@ -1058,9 +1059,9 @@ case "$canonical" in *-*-aix3.1* ) opsys=aix3-1 ;; *-*-aix3.2.5 ) opsys=aix3-2-5 ;; *-*-aix3* ) opsys=aix3-2 ;; - *-*-aix4.2* ) opsys=aix4-2 ;; + *-*-aix4.0* ) opsys=aix4 ;; *-*-aix4.1* ) opsys=aix4-1 ;; - *-*-aix4* ) opsys=aix4 ;; + *-*-aix4* ) opsys=aix4-2 ;; dnl Other generic OSes *-gnu* ) opsys=gnu ;; @@ -1594,13 +1595,24 @@ dnl I'm tired of pop being broken with GLIBC -slb dnl Well. then why not fix fucking pop? test "$have_glibc" = "yes" && AC_DEFINE(_GNU_SOURCE) -AC_MSG_CHECKING(whether we are using SunPro C) -AC_TRY_COMPILE([],[#ifndef __SUNPRO_C -#error Not a SunPro compiler :-( -******* ======= ******** &&&&&&&& + +dnl Identify compilers to enable compiler-specific hacks. +dnl Add support for other compilers HERE! +dnl GCC is already identified elsewhere. +AC_TRY_RUN([int main () { +#if defined __SUNPRO_C +return 11; +#elif defined __DECC +return 12; +#else +return 0; #endif -], __sunpro_c=yes, __sunpro_c=no) -AC_MSG_RESULT($__sunpro_c) +}], [], +[case "$conftest_rc" in + 11) echo "You appear to be using the SunPro C compiler."; __SUNPRO_C=yes ;; + 12) echo "You appear to be using the DEC C compiler." ; __DECC=yes ;; +esac]) + dnl case "$canonical" in dnl *-sun-sunos* ) test "$CPP" = "acc -E" && CPP="acc -E -Xs" ;; @@ -1726,6 +1738,10 @@ test "$extra_verbose" = "yes" && \ dnl Non-ordinary link usually requires -lc test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc" +dnl Compiler-specific hacks +dnl DEC C requires -std +test "$__DECC" = "yes" && XE_APPEND(-std, c_switch_site) + dnl Calculalate value of CFLAGS: dnl Use either command line flag, environment var, or autodetection if test "$cflags_specified" = "no"; then @@ -1739,15 +1755,17 @@ if test "$cflags_specified" = "no"; then dnl cygwin can't cope with -O3 test "$opsys $machine" = "cygwin32 intel386" && \ CFLAGS="-g -O2 -Wall -Wno-switch" - elif test "$__sunpro_c" = "yes"; then + elif test "$__SUNPRO_C" = "yes"; then case "$opsys" in sol2 ) CFLAGS="-v -xO4" ;; sunos4* ) CFLAGS="-xO2";; esac + elif test "$__DECC" = "yes"; then + CFLAGS="-O3" elif test "$CC" = "xlc"; then - CFLAGS="-O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000" + CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000" + dnl ### Add optimal CFLAGS support for other compilers HERE! else - dnl ### Add tests for other compilers here... CFLAGS="-O" ;dnl The only POSIX-approved flag fi fi @@ -1889,7 +1907,7 @@ dnl ------------------------------------- if test "$dynamic" = "no"; then add_runtime_path=no elif test -n "$LD_RUN_PATH"; then add_runtime_path=yes else case "$opsys" in - sol2 | irix* | *bsd* ) add_runtime_path=yes ;; + sol2 | irix* | *bsd* | decosf* ) add_runtime_path=yes ;; * ) add_runtime_path=no ;; esac fi @@ -1898,14 +1916,19 @@ if test "$add_runtime_path" = "yes"; then dnl Try to autodetect runtime library flag (usually -R), dnl and whether it works (or at least does no harm) AC_MSG_CHECKING("for runtime libraries flag") - dash_r="" - for try_dash_r in "-R" "-R " "-rpath "; do - xe_check_libs="${try_dash_r}/no/such/file-or-directory" - XE_PROTECT_LINKER_FLAGS(xe_check_libs) - AC_TRY_LINK(, , dash_r="$try_dash_r") - xe_check_libs="" - test -n "$dash_r" && break - done + case "$opsys" in + sol2 ) dash_r = "-R" ;; + decosf* | linux* ) dash_r = "-rpath " ;; + *) + dash_r="" + for try_dash_r in "-R" "-R " "-rpath "; do + xe_check_libs="${try_dash_r}/no/such/file-or-directory" + XE_PROTECT_LINKER_FLAGS(xe_check_libs) + AC_TRY_LINK(, , dash_r="$try_dash_r") + xe_check_libs="" + test -n "$dash_r" && break + done ;; + esac if test -n "$dash_r"; then AC_MSG_RESULT("\"${dash_r}\"") else AC_MSG_RESULT(NONE) @@ -2058,7 +2081,7 @@ AC_PROG_YACC dnl checks for header files AC_CHECK_HEADERS(mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h) -AC_CHECK_HEADERS(utime.h locale.h libgen.h fcntl.h ulimit.h) +AC_CHECK_HEADERS(utime.h locale.h libgen.h fcntl.h ulimit.h cygwin32/version.h) AC_CHECK_HEADERS(linux/version.h kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h) AC_HEADER_SYS_WAIT AC_HEADER_STDC @@ -2281,6 +2304,9 @@ if test "$with_x11" = "yes"; then fi done + dnl Avoid version mismatch for shared library libXm.so on osf4 + if test "$GCC" = yes -a -d /usr/shlib; then XE_APPEND(-L/usr/shlib, X_LIBS); fi + ld_switch_x_site="$X_LIBS" XE_COMPUTE_RUNPATH() @@ -2651,6 +2677,7 @@ if test "$window_system" != "none"; then AC_CHECKING(for graphics libraries) dnl Autodetect Xpm + xpm_problem="" if test -z "$with_xpm"; then AC_MSG_CHECKING(for Xpm - no older than 3.4f) xe_check_libs=-lXpm @@ -2660,22 +2687,22 @@ if test "$window_system" != "none"; then XpmIncludeVersion != XpmLibraryVersion() ? 1 : XpmIncludeVersion < 30406 ? 2 : 0 ;}], [./conftest dummy_arg; xpm_status=$?; - if test "$?" = "0"; then + if test "$xpm_status" = "0"; then with_xpm=yes; else with_xpm=no; - if test "$?" = "1"; then + if test "$xpm_status" = "1"; then xpm_problem="Xpm library version and header file version don't match!" - elif test "$?" = "2"; then + elif test "$xpm_status" = "2"; then xpm_problem="Xpm library version is too old!" else xpm_problem="Internal xpm detection logic error!" fi echo " -*** WARNING *** $problem +*** WARNING *** $xpm_problem I'm not touching that with a 10-foot pole! If you really want to use the installed version of Xpm, rerun - configure --with-xpm=yes, but don't blame me if XEmacs crashes!" + configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!" fi], [with_xpm=no]) xe_check_libs= @@ -2696,6 +2723,15 @@ if test "$window_system" != "none"; then fi fi + dnl For a brief period we had the GIF code split out into a separate library, + dnl but patent problems, etc. sort of squashed that idea. + dnl We default to building with builtin GIF decoding + if test "$with_gif" != "no"; then + with_gif="yes" + AC_DEFINE(HAVE_GIF) + XE_ADD_OBJS(dgif_lib.o gif_io.o) + fi + dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime dnl So we always search for libz compression support. if test "$with_png $with_tiff" != "no no"; then @@ -2704,16 +2740,6 @@ if test "$window_system" != "none"; then AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])]) fi - dnl Autodetect GIFlib - AC_MSG_CHECKING(for gifreader) - test -z "$with_gif" && { AC_CHECK_HEADER(gifrlib.h, ,with_gif=no) } - test -z "$with_gif" && { AC_CHECK_LIB(gifreader, GetGifError,[:] ,with_gif=no) } - test -z "$with_gif" && with_gif=yes - if test "$with_gif" = "yes"; then - AC_DEFINE(HAVE_GIF) - XE_PREPEND(-lgifreader, libs_x) - fi - dnl autodetect JPEG test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h, ,with_jpeg=no) } test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) } @@ -2724,18 +2750,38 @@ if test "$window_system" != "none"; then fi dnl autodetect PNG - if test -z "$with_png"; then - AC_MSG_CHECKING(for png.h - no older than 0.96) - AC_EGREP_CPP(yes, -[#include -#if PNG_LIBPNG_VER >= 96 -yes -#endif -], [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no); with_png=no]) - fi + png_problem="" test -z "$with_png" && { AC_CHECK_FUNC(pow, ,with_png=no) } + test -z "$with_png" && { AC_CHECK_HEADER(png.h, ,with_png=no) } test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) } - test -z "$with_png" && with_png=yes + if test -z "$with_png"; then + AC_MSG_CHECKING(for workable png version information) + xe_check_libs="-lpng -lz" + AC_TRY_RUN([#include + int main(int c, char **v) { + if (c == 1) return 0; + if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1; + return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}], + [./conftest dummy_arg; png_status=$?; + if test "$png_status" = "0"; then + with_png=yes; + else + with_png=no; + if test "$png_status" = "1"; then + png_problem="PNG library version and header file don't match!" + elif test "$png_status" = "2"; then + png_problem="PNG library version too old (pre 1.0.2)!" + fi + echo " +*** WARNING *** $png_problem + I'm not touching that with a 10-foot pole! + If you really want to use the installed version of libPNG, rerun + configure and add '--with-png=yes', but don't blame me if XEmacs crashes!" + fi], + [with_png=no]) + xe_check_libs= + AC_MSG_RESULT($with_png) + fi if test "$with_png" = "yes"; then AC_DEFINE(HAVE_PNG) XE_PREPEND(-lpng, libs_x) @@ -2752,7 +2798,7 @@ yes fi dnl ---------------------- -dnl Graphics libraries +dnl X-Specific Graphics libraries dnl ---------------------- if test "$with_x11" = "yes"; then @@ -3181,6 +3227,7 @@ int main (int argc, char *argv[]) esac AC_MSG_RESULT($have_mmap) test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP) +AC_FUNC_MMAP dnl rel_alloc requires either GNU malloc or system malloc with mmap dnl We only turn rel_alloc on by default if mmap is available. @@ -3467,7 +3514,7 @@ typedef uint64_t u_int64_t; #include <$path> ],[], db_h_path="$path"; break) done - if test -z "$db_h_path" + if test -z "$db_h_path" then AC_MSG_RESULT(no); with_database_berkdb=no else AC_MSG_RESULT($db_h_path) fi @@ -3623,7 +3670,7 @@ if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then fi dnl Create top level .sbinit for Sun compilers -if test "$__sunpro_c" = "yes"; then +if test "$__SUNPRO_C" = "yes"; then echo "creating .sbinit"; echo "" ( echo "# For use with Sun WorkShop's Source browser." echo "# See sbquery(1) and sbinit(4) for more information" @@ -3899,15 +3946,31 @@ if test "$with_xpm" = yes; then elif test "$with_x11" = yes; then echo " --------------------------------------------------------------------" echo " WARNING: Compiling without XPM support." - echo " WARNING: You should strongly considering installing XPM." + if test "$xpm_problem" != ""; then + echo " Reason: $xpm_problem" + fi + echo " WARNING: You should strongly consider installing XPM." echo " WARNING: Otherwise toolbars and other graphics will look suboptimal." + echo " WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)" + echo " --------------------------------------------------------------------" +fi +if test "$with_png" = yes; then + echo " Compiling in support for PNG image handling." +elif test "$window_system" != "none"; then + echo " --------------------------------------------------------------------" + echo " WARNING: Compiling without PNG image support." + if test "$png_problem" != ""; then + echo " Reason: $png_problem" + fi + echo " WARNING: You should strongly consider installing the PNG libraries." + echo " WARNING: Otherwise certain images and glyphs may not display." + echo " WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)" echo " --------------------------------------------------------------------" fi +test "$with_gif" = yes && echo " Compiling in support for (builtin) GIF image handling." +test "$with_jpeg" = yes && echo " Compiling in support for JPEG image handling." +test "$with_tiff" = yes && echo " Compiling in support for TIFF image handling." test "$with_xface" = yes && echo " Compiling in support for X-Face message headers." -test "$with_gif" = yes && echo " Compiling in support for GIF image conversion." -test "$with_jpeg" = yes && echo " Compiling in support for JPEG image conversion." -test "$with_png" = yes && echo " Compiling in support for PNG image conversion." -test "$with_tiff" = yes && echo " Compiling in support for TIFF image conversion." case "$with_sound" in nas ) echo " Compiling in network sound (NAS) support." ;; native ) echo " Compiling in native sound support." ;; diff --git a/configure.usage b/configure.usage index bcab03e..dfb58d9 100644 --- a/configure.usage +++ b/configure.usage @@ -97,9 +97,8 @@ Window-system options: --with-xface (*) Compile with support for X-Face mail header conversion. Requires the compface library. Get it from the XEmacs FTP site. ---with-gif (*) Compile with support for GIF image conversion. - Requires GifLib 3.1 or greater. Get it from - the XEmacs FTP site. +--without-gif Compile without the built-in support for GIF image + conversion. --with-jpeg (*) Compile with support for JPEG image conversion. Requires libjpeg from the Independent JPEG Group. Get it from the XEmacs FTP site. diff --git a/etc/BETA b/etc/BETA index 0e619ee..a6658c1 100644 --- a/etc/BETA +++ b/etc/BETA @@ -197,7 +197,7 @@ Then type `make' and you should have a working XEmacs. After you have verified that you have a functional editor, fire up your favorite mail program and send a build report to -xemacs-beta@xemacs.org. The build report should include +xemacs-build-reports@xemacs.org. The build report should include 1. Your hardware configuration (OS version, etc.) diff --git a/etc/NEWS b/etc/NEWS index 01711ba..ffd4989 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -32,8 +32,32 @@ file. * Changes in XEmacs 21.2 ======================== -None yet. +*** You can now create an "indirect buffer", like in GNU Emacs. An +indirect buffer shares its text with another buffer ("base buffer"), +but has its own major mode, local variables, extents, and narrowing. +An indirect buffer has a name of its own, distinct from those of the +base buffer and all other buffers. An indirect buffer cannot itself +be visiting a file (though its base buffer can be). The base buffer +cannot itself be indirect. + +Use (make-indirect-buffer BASE-BUFFER NAME) to make an indirect buffer +named NAME whose base is BASE-BUFFER. If BASE-BUFFER is an indirect +buffer, its base buffer is used as the base for the new buffer. + +You can make an indirect buffer current, or switch to it in a window, +just as you would a non-indirect buffer. + +The function `buffer-base-buffer', given an indirect buffer, returns +its base buffer. It returns nil when given an ordinary buffer (not +indirect). `buffer-indirect-children' returns a list of the indirect +children of a base buffer. + +#### The library `noutline' has versions of Outline mode and Outline +minor mode which let you display different parts of the outline in +different indirect buffers. + + * Changes in XEmacs 21.0 ======================== diff --git a/etc/TUTORIAL.de b/etc/TUTORIAL.de index a7b9fa8..b0ef6d0 100644 --- a/etc/TUTORIAL.de +++ b/etc/TUTORIAL.de @@ -110,7 +110,7 @@ C-f kann sich, wie C-b, Nun versuche ein weiteres C-f um in die nächste Zeile zu gelangen. Wenn Du Dich am Anfang oder Ende aus dem Bildschirm bewegst, schiebt -sich der Text ins Blickfeld. Diesen Vorgang nennt man rollen oder +sich der Text ins Blickfeld. Diesen Vorgang nennt man Rollen oder "scrolling". Er erlaubt Emacs den Textzeiger an die gewünschte Stelle zu bringen, ohne ihn aus dem Bildschirmfenster zu bewegen. @@ -148,9 +148,9 @@ Schau wie mehrere C-a's nichts bewirken, mehrere M-a's sich aber Satz für Satz weiterbewegen. Obwohl sich ihr Verhalten unterscheidet, erscheint es natürlich. -Die Stelle des Textzeigers im Text wird auch "Punkt" genannt. Der -Textzeiger auf dem Bildschirm zeigt an welchem Punkt im Text sich -dieser befindet. +Die Stelle des Textzeigers im Text wird auch Punkt oder "point" +genannt. Der Textzeiger auf dem Bildschirm zeigt an welchem Punkt im +Text sich dieser befindet. Hier ist eine Zusammenfassung der einfachen Befehle zur Bewegung des Textzeigers, inklusive der Befehle zur wort- und satzweisen Bewegung: @@ -187,7 +187,7 @@ Shift-Taste w Dann verwende C-v wiederholt um hierher zurück zu kommen. >> Versuche jetzt M-> um ans Ende der Übungen zu springen. - Benutzte M-v widerholt um hierher zurück zu gelangen. + Benutzte M-v wiederholt um hierher zurück zu gelangen. Du kannst den Textzeiger auch mit den Pfeil-Tasten bewegen, falls Deine Tastatur solche besitzt. Wir empfehlen das Erlernen von C-b, @@ -195,7 +195,7 @@ C-f, C-n und C-p aus drei Gr Tastaturen. Zweitens wirst Du herausfinden, wenn Du einige Übung mit Emacs bekommst, daß es schneller ist die CTRL-Tasten zu drücken als die Pfeil-Tasten (weil Du Deine Hände nicht aus dem normalen -Fingersatz bringen mußt). Drittens: Hast Du die Versendung der CTRL +Fingersatz bringen mußt). Drittens: Hast Du die Verwendung der CTRL Befehle erst zu Deiner Gewohnheit gemacht, wird es ein Leichtes weitere Bewegungs-Befehle zu erlernen. @@ -226,7 +226,7 @@ haben. Wenn Du ihn wieder zur entsprechendes Argument geben. Verwendest Du das X Window System, so befindet sich wahrscheinlich ein -rechteckiger Balken, Scrollbar oder Rollbalken genannt, rechts neben +rechteckiger Balken, Rollbalken oder "scrollbar" genannt, rechts neben dem Emacs-Fenster. Du kannst den Text auch durch Manipulieren dieses Rollbalkens mit der Maus rollen. @@ -242,8 +242,8 @@ Rollbalkens mit der Maus rollen. ------------------------------------------- An einem X-Terminal wirst Du es wahrscheinlich einfacher finden die -Tasten des Tastenfeldes zur Textzeiger Steuerung zu gebrauchen. Die -Links, Rechts, Auf und Ab Pfeil Tasten steuern in die erwartete +Tasten des Tastenfeldes zur Textzeiger-Steuerung zu gebrauchen. Die +Links, Rechts, Auf und Ab Pfeil-Tasten steuern in die erwartete Richtung; sie funktionieren exakt wie C-b, C-f, C-p und C-n, sind aber leichter zu tippen und zu merken. Du kannst auch C-Links und C-Rechts verwenden um wortweise zu springen. C-Auf und C-Ab bewegen den @@ -264,9 +264,9 @@ CONTROL-Taste, getippt werden kann. * WENN EMACS HÄNGT ------------------ -Wenn Emacs auf Deine Befehle nicht mehr reagiert, kannst Du den -Befehle risikolos mit C-g unterbrechen. Mit C-g kann man Befehle -abbrechen, die zu lange dauern. +Wenn Emacs auf Deine Befehle nicht mehr reagiert, kannst Du den Befehl +risikolos mit C-g unterbrechen. Mit C-g kann man Befehle abbrechen, +die zu lange dauern. Du kannst mit C-g auch ein numerisches Argument oder einen teilweise eingegebenen Befehl, den Du nicht mehr ausführen willst, verwerfen. @@ -367,7 +367,7 @@ wieder eine Fortsetzungszeile. >> Geh an den Anfang einer Zeile und tippe . Dies fügt die Zeile an die vorhergehende an. ->> Tippe um den Newline-Zeichen wieder einzufügen. +>> Tippe um das Newline-Zeichen wieder einzufügen. Denke daran, daß die meisten Emacs-Befehle mittels eines Arguments wiederholt werden können; Ein Textzeichen wird mittels Argument @@ -393,12 +393,12 @@ Verwandtschaft von C-f und M-f fortsetzen ( ist zwar keine CONTROL-Taste, aber das kümmert uns nicht). C-k und M-k verhalten sich zueinander wie C-e und M-e zu Zeilen und Sätzen. -Wenn Du mehr als ein Zeichen auf einmal löschst, speichert sie -Emacs, damit Du sie wieder abrufen kannst. Den gelöschten Text -zurückzuholen nennt man "yanking". Du kannst den gelöschten Text an -der selben oder an einer anderen Textstelle zurückholen. Der Text -kann mehrere Male zurückgeholt geholt werden um Mehrfachkopien -anzulegen. Der Zurückhol-Befehl ist C-y. +Wenn Du mehr als ein Zeichen auf einmal löschst, speichert sie Emacs, +damit Du sie wieder abrufen kannst. Den gelöschten Text zurückzuholen +nennt man "yanking". Du kannst den gelöschten Text an der selben oder +an einer anderen Textstelle zurückholen. Der Text kann mehrere Male +zurückgeholt werden um Mehrfachkopien anzulegen. Der Zurückhol-Befehl +ist C-y. Beachte daß der Unterschied zwischen Entfernen ("Killing") und Löschen ("Deleting") darin besteht, daß gelöschte Teile zurückgeholt werden @@ -442,8 +442,8 @@ zur zurückgeholten Text durch früher gelöschten Text ersetzten. Tippst Du M-y wieder und wieder, holst Du früher und früher Gelöschtes zurück. Hast Du den gewünschten Text erreicht, brauchst Du nichts weiter zu -tun um diesen zu behalten. Fahre mit mit Deiner Arbeit fort und laß -den zurückgeholten Text wo er ist. +tun um diesen zu behalten. Fahre mit Deiner Arbeit fort und laß den +zurückgeholten Text wo er ist. Verwendest Du M-y oft genug, kehrst Du an den Anfang zurück (der letzte Löschvorgang). @@ -505,9 +505,9 @@ Namen falls Du sp Fehler waren. Nahe dem unteren Ende des Bildschirms siehst Du eine Zeile die mit -Bindestrichen beginnt und endet und den Text "Emacs: TUTORIAL" +Bindestrichen beginnt und endet und den Text "XEmacs: TUTORIAL.de" enthält. Dieser Teil des Bildschirms zeigt immer den Namen der -besuchten Datei. Zur Zeit besuchst Du eine Datei namens "TUTORIAL", +besuchten Datei. Zur Zeit besuchst Du eine Datei namens "TUTORIAL.de", welche Deine persönliche Kopie des Emacs Tutorials ist. Was immer für eine Datei Du findest, ihr Name wird immer an dieser Stelle erscheinen. @@ -560,7 +560,7 @@ Du solltest recht oft sichern, damit Du nicht viel Arbeit verlierst, sollte das System abstürzen. >> Tippe C-x C-s um Deine Kopie des tutorials zu sichern. - Dies sollte "Wrote ...TUTORIAL" am Fuß des Bildschirms ausgeben. + Dies sollte "Wrote ...TUTORIAL.de" am Fuß des Bildschirms ausgeben. ACHTUNG: Auf manchen Systemen wird C-x C-s den Bildschirm anhalten und Du wirst keine weitere Ausgabe von Emacs sehen. Dies bedeutet, daß @@ -592,7 +592,7 @@ haben. . Dann füge etwas Text ein, bearbeite ihn und sichere die Datei "foo" mit C-x C-s. - Schließlich tippe C-x C-f TUTORIAL um zum Tutorial zurück + Schließlich tippe C-x C-f TUTORIAL.de um zum Tutorial zurück zu gelangen. Emacs hält den Text jeder Datei in einem Objekt namens "buffer". Das @@ -628,20 +628,20 @@ enth willst. >> Füge eine Text-Zeile ein, dann tippe C-x s. - Du wirst gefragt, ob Du den Buffer namens TUTORIAL speichern + Du wirst gefragt, ob Du den Buffer namens TUTORIAL.de speichern willst. * VERWENDUNG DES MENÜS ---------------------- -An einem X-Terminal wirst Du eine Menüleiste am oberen Ende des Emacs +An einem X-Terminal wirst Du eine Menüleiste am oberen Ende des Emacs- Fensters bemerken. Mit der Menüleiste kannst Du die allgemeinsten Emacs-Befehle, wie "Finde Datei" ("find file"), erreichen. Du wirst -dies anfänglich einfacher finden, da Du dir die notwendigen -Tastenkombinationen der Befehle nicht merken mußt. Bist Du einmal -mit Emacs vertraut, wird es ein Leichtes sein die Kommandos zu -benutzen, da jeder Menüeintrag, der einer Tastenkombination -entspricht, diese auch anzeigt. +dies anfänglich einfacher finden, da Du Dir die notwendigen Tasten- +kombinationen der Befehle nicht merken mußt. Bist Du einmal mit Emacs +vertraut, wird es ein Leichtes sein die Kommandos zu benutzen, da +jeder Menüeintrag, der einer Tastenkombination entspricht, diese auch +anzeigt. Beachte, daß es viele Menüeinträge ohne entsprechende Tastensequenz gibt. So listet z.B. das Buffers-Menü die verfügbaren Buffer in @@ -669,7 +669,7 @@ abholen k Verwende "Paste" im Edit-Menü um Text vom X Clipboard zurückzuholen. Die mittlere Maustaste wird häufig verwendet um sichtbare Objekte auf -dem Bildschirm auszuwählen. Wenn Du z.B. "Info" (die Online Emacs +dem Bildschirm auszuwählen. Wenn Du z.B. "Info" (die Emacs Online Dokumentation) mit C-h i oder über das Help-Menü aufrufst, kannst Du einer hervorgehobenen Verknüpfung durch Klicken der mittleren Maustaste folgen. Ganz ähnlich, wenn Du einen Dateinamen eingibst @@ -694,7 +694,7 @@ META-Zeichen unterbringen k (eXtend) Befehl. Davon gibt es zwei Ausführungen: C-x Zeichenerweiterung eXtend. Gefolgt von einer - Tastaturkombination. + Tastenkombination. M-x Namenserweiterung eXtend. Gefolgt von einer ausgeschriebenen Befehlsbezeichnung. @@ -709,7 +709,7 @@ Sichern einer jeden ge Mit C-z kann man Emacs vorübergehend verlassen -- so daß Du später zur gleichen Sitzung zurückkehren kannst. -Auf Systemen, die dies unterstützen sendet C-z Emacs "in den +Auf Systemen, die dies unterstützen, sendet C-z Emacs "in den Hintergrund"; man kehrt zur Shell zurück, ohne daß der Emacs-Prozeß beendet wird. In den gebräuchlichsten Shells kann man zu Emacs mit `fg' oder `%emacs' zurückkehren. @@ -725,7 +725,7 @@ Es ist auch die richtige Methode um einen Emacs zu verlassen der f E-mail-Programme, oder andere Erweiterungen, die das Aussetzen von Emacs nicht korrekt handhaben können, benutzt wird. Normalerweise ist es besser Emacs mit C-z auszusetzen statt ihn zu beenden, wenn -man das System nicht verlassen will,. +man das System nicht verlassen will. Es gibt viele C-x-Befehle. Hier ist eine Liste der bereits erlernten: @@ -753,7 +753,7 @@ werden. Beachte wie diese Zeile sich veraendert hat: Du hast das Wort v-e-r-a-e-n-d-e-r-t mit "geaendert" ersetzt wo immer es nach der - anfänglichen Textzeiger Position auftrat. + anfänglichen Textzeiger-Position auftrat. * AUTOMATISCHE SICHERUNG @@ -764,14 +764,14 @@ gesichert hast, so k gehen. Um Dich davor zu schützen, schreibt Emacs regelmäßig eine Autosave-Datei für jede Datei, die Du bearbeitest. Autosave-Dateien beginnen und enden mit "#"; wenn Deine Datei z.B. "hello.c" heißt, so -heißt die auto-save Datei "#hello.c#". Sicherst Du die Datei, so +heißt ihre auto-save Datei "#hello.c#". Sicherst Du die Datei, so löscht Emacs die entsprechende auto-save Datei. Nach einem Computerabsturz kannst Du die automatisch gesicherten Änderungen nach dem normalen Finden der Datei (Deiner Datei, nicht der Autosave-Datei) durch Eintippen von M-x -recover-file zurückholen. Wenn Du nach der Bestätigung -gefragt wirst, tippst Du yes um die Änderungen in der +recover-file zurückholen. Wenn Du nach der Bestätigung +gefragt wirst, tippst Du yes um die Änderungen in der Autosave-Datei wiederherzustellen. @@ -789,7 +789,7 @@ area nimmt die unterste Zeile im Emacs-Fenster ein. Die Zeile über der echo area wird "mode line" genannt. Die Moduszeile zeigt etwa folgendes: ---**-XEmacs: TUTORIAL (Fundamental)--L670--58%---------------- +--**-XEmacs: TUTORIAL.de (Fundamental)--L791--67%---------------- Diese Zeile gibt nützliche Information über den Zustand von Emacs und dem Text, den Du bearbeitest. @@ -817,7 +817,7 @@ Hauptmodus aktiv und sein Name kann dort gefunden werden, wo jetzt "Fundamental" steht. Jeder Hauptmodus ändert das Verhalten einiger Befehle. So gibt es -z.B. Befehle zum Erstellen von Kommentaren in Programmen und da diese +z.B. Befehle zum Erstellen von Kommentaren in Programmen. Da diese in jeder Programmiersprache unterschiedlich aussehen, muß jeder Hauptmodus diese Kommentare entsprechend vorbereiten. Jeder Hauptmodus trägt den Namen eines entsprechenden Erweiterungsbefehls, so @@ -899,7 +899,7 @@ f Wenn Du C-s tippt, wirst Du den String "I-search" in der echo area bemerken. Dies bedeutet, daß Emacs im inkrementellen Suchmodus auf -Deine Eingabe wartet. bricht die Suche ab. +Deine Eingabe wartet. bricht die Suche ab. >> Nun tippe C-s um die Suche einzuleiten. LANGSAM, Buchstabe für Buchstabe, tippe das Wort 'Textzeiger', mit Pausen dazwischen, @@ -909,7 +909,7 @@ Deine Eingabe wartet. bricht die Suche ab. zu suchen. >> Nun tippe viermal und schau wie sich der Textzeiger bewegt. ->> Tippe zum Abbrechen der Suche. +>> Tippe zum Abbrechen der Suche. Hast Du gesehen was passiert? Emacs, in der inkrementellen Suche, versucht zu dem String zu springen, den Du bisher getippt hast. Um @@ -1054,7 +1054,7 @@ keine Hilfe mehr, dann tippe einfach C-g zum Abbrechen des Befehls. dies wirklich nicht tun, beschwere Dich also beim System Administrator. In der Zwischenzeit, wenn C-h keine Mitteilung bezüglich Hilfe am Fuß des Emacs-Fensters anzeigt, versuche M-x help -RET zu tippen.) + zu tippen.) Die einfachste Hilfe-Einrichtung ist C-h c. Tippe C-h, ein c und einen Befehls-Buchstaben oder eine Sequenz davon und Emacs gibt Dir @@ -1065,7 +1065,7 @@ eine ganz kurze Beschreibung des Befehls. C-p runs the command previous-line -Dies teils Dir den "Namen der Funktion" mit. Funktions-Namen werden +Dies teilt Dir den "Namen der Funktion" mit. Funktions-Namen werden hauptsächlich zum Spezialisieren und Erweitern von Emacs verwendet. Aber da die Funktions-Namen etwas darüber aussagen was der Befehl tut, können Sie auch als sehr kurze Dokumentation dienen -- genug um Dich @@ -1079,11 +1079,11 @@ C-h c. >> Tippe C-h k C-p. -Dies zeigt die Dokumentation der Funktion, als auch ihren Namen, in -einem eigenen Emacs-Fenster. Wenn Du mit dem Lesen fertig bist, tippe -C-x 1 um den Hilfetext loszuwerden. Du mußt dies nicht gleich tun. -Du kannst etwas bearbeiten, das sich auf den Hilfetext bezieht und -dann C-x 1 tippen. +Dies zeigt sowohl die Dokumentation der Funktion, als auch ihren +Namen, in einem eigenen Emacs-Fenster. Wenn Du mit dem Lesen fertig +bist, tippe C-x 1 um den Hilfetext loszuwerden. Du mußt dies nicht +gleich tun. Du kannst etwas bearbeiten, das sich auf den Hilfetext +bezieht und dann C-x 1 tippen. Hier sind einige andere nützliche C-h Möglichkeiten: @@ -1120,7 +1120,7 @@ in eine Shell auszusteigen, so da verwende C-z. (Unter X ikonifiziert dies den aktuellen Emacs-Rahmen.) Dieses Tutorial sollte für Anfänger verständlich sein, hast Du etwas -Unklares gefunden, schiebe die Schuld nicht auf Dich - beschwere Dich! +Unklares gefunden, schiebe die Schuld nicht auf Dich -- beschwere Dich! ANFERTIGEN VON KOPIEN diff --git a/etc/check_cygwin_setup.sh b/etc/check_cygwin_setup.sh index f569562..8c24ce9 100644 --- a/etc/check_cygwin_setup.sh +++ b/etc/check_cygwin_setup.sh @@ -23,17 +23,17 @@ fi OSversion="`uname -v | sed 's/^\(.\).*$/\1/'`" shell=`type sh | sed 's/sh is //'` -distdir=`dirname $shell` +distdir=`dirname $shell | sed 's!^//\(.\)/\(.*\)!\1:/\2!'` echo "cygwin installed in $distdir" echo "checking paths ..." if [ ! -d "/bin" ]; then - echo "You don't have /bin would like to mount cygwin as /bin ?" + echo "You don't have a /bin directory. Would you like to mount cygwin as /bin ?" if yorn; then mkdir /bin - mount -b /bin $distdir + mount -b $distdir /bin fi elif [ "$distdir" != "/bin" ]; then echo "Warning: you have /bin but it's not the cygwin installation." diff --git a/etc/chr.png b/etc/chr.png new file mode 100644 index 0000000..f329bae Binary files /dev/null and b/etc/chr.png differ diff --git a/etc/chrm.png b/etc/chrm.png new file mode 100644 index 0000000..f329bae Binary files /dev/null and b/etc/chrm.png differ diff --git a/etc/photos/ajc.png b/etc/photos/ajc.png new file mode 100644 index 0000000..1840291 Binary files /dev/null and b/etc/photos/ajc.png differ diff --git a/etc/photos/ajcm.png b/etc/photos/ajcm.png new file mode 100644 index 0000000..1840291 Binary files /dev/null and b/etc/photos/ajcm.png differ diff --git a/etc/photos/baw.png b/etc/photos/baw.png new file mode 100644 index 0000000..2e1eb1e Binary files /dev/null and b/etc/photos/baw.png differ diff --git a/etc/photos/bawm.png b/etc/photos/bawm.png new file mode 100644 index 0000000..2e1eb1e Binary files /dev/null and b/etc/photos/bawm.png differ diff --git a/etc/photos/bw.png b/etc/photos/bw.png new file mode 100644 index 0000000..bf04f2a Binary files /dev/null and b/etc/photos/bw.png differ diff --git a/etc/photos/bwm.png b/etc/photos/bwm.png new file mode 100644 index 0000000..b721837 Binary files /dev/null and b/etc/photos/bwm.png differ diff --git a/etc/photos/cthomp.png b/etc/photos/cthomp.png new file mode 100644 index 0000000..2946e3c Binary files /dev/null and b/etc/photos/cthomp.png differ diff --git a/etc/photos/cthompm.png b/etc/photos/cthompm.png new file mode 100644 index 0000000..bc36004 Binary files /dev/null and b/etc/photos/cthompm.png differ diff --git a/etc/photos/dkindred.png b/etc/photos/dkindred.png new file mode 100644 index 0000000..2956bf6 Binary files /dev/null and b/etc/photos/dkindred.png differ diff --git a/etc/photos/dkindredm.png b/etc/photos/dkindredm.png new file mode 100644 index 0000000..dd78752 Binary files /dev/null and b/etc/photos/dkindredm.png differ diff --git a/etc/photos/dmoore.png b/etc/photos/dmoore.png new file mode 100644 index 0000000..83f6810 Binary files /dev/null and b/etc/photos/dmoore.png differ diff --git a/etc/photos/dmoorem.png b/etc/photos/dmoorem.png new file mode 100644 index 0000000..5c1ca35 Binary files /dev/null and b/etc/photos/dmoorem.png differ diff --git a/etc/photos/dv.png b/etc/photos/dv.png new file mode 100644 index 0000000..db531ff Binary files /dev/null and b/etc/photos/dv.png differ diff --git a/etc/photos/dvm.png b/etc/photos/dvm.png new file mode 100644 index 0000000..18ddd8a Binary files /dev/null and b/etc/photos/dvm.png differ diff --git a/etc/photos/hniksic.png b/etc/photos/hniksic.png new file mode 100644 index 0000000..6394eb9 Binary files /dev/null and b/etc/photos/hniksic.png differ diff --git a/etc/photos/hniksicm.png b/etc/photos/hniksicm.png new file mode 100644 index 0000000..190b4c9 Binary files /dev/null and b/etc/photos/hniksicm.png differ diff --git a/etc/photos/jareth.png b/etc/photos/jareth.png new file mode 100644 index 0000000..0e8146b Binary files /dev/null and b/etc/photos/jareth.png differ diff --git a/etc/photos/jarethm.png b/etc/photos/jarethm.png new file mode 100644 index 0000000..206c1ec Binary files /dev/null and b/etc/photos/jarethm.png differ diff --git a/etc/photos/jens.png b/etc/photos/jens.png new file mode 100644 index 0000000..fbdfe83 Binary files /dev/null and b/etc/photos/jens.png differ diff --git a/etc/photos/jensm.png b/etc/photos/jensm.png new file mode 100644 index 0000000..fbdfe83 Binary files /dev/null and b/etc/photos/jensm.png differ diff --git a/etc/photos/jmiller.png b/etc/photos/jmiller.png new file mode 100644 index 0000000..5005cd5 Binary files /dev/null and b/etc/photos/jmiller.png differ diff --git a/etc/photos/jmillerm.png b/etc/photos/jmillerm.png new file mode 100644 index 0000000..aa1ed0e Binary files /dev/null and b/etc/photos/jmillerm.png differ diff --git a/etc/photos/jwz.png b/etc/photos/jwz.png new file mode 100644 index 0000000..fe55b4f Binary files /dev/null and b/etc/photos/jwz.png differ diff --git a/etc/photos/jwzm.png b/etc/photos/jwzm.png new file mode 100644 index 0000000..327d73d Binary files /dev/null and b/etc/photos/jwzm.png differ diff --git a/etc/photos/kazz.png b/etc/photos/kazz.png new file mode 100644 index 0000000..03b97ef Binary files /dev/null and b/etc/photos/kazz.png differ diff --git a/etc/photos/kazzm.png b/etc/photos/kazzm.png new file mode 100644 index 0000000..f47ac01 Binary files /dev/null and b/etc/photos/kazzm.png differ diff --git a/etc/photos/kyle.png b/etc/photos/kyle.png new file mode 100644 index 0000000..3fd18f3 Binary files /dev/null and b/etc/photos/kyle.png differ diff --git a/etc/photos/kylem.png b/etc/photos/kylem.png new file mode 100644 index 0000000..3fd18f3 Binary files /dev/null and b/etc/photos/kylem.png differ diff --git a/etc/photos/larsi.png b/etc/photos/larsi.png new file mode 100644 index 0000000..148add1 Binary files /dev/null and b/etc/photos/larsi.png differ diff --git a/etc/photos/larsim.png b/etc/photos/larsim.png new file mode 100644 index 0000000..148add1 Binary files /dev/null and b/etc/photos/larsim.png differ diff --git a/etc/photos/martin.png b/etc/photos/martin.png new file mode 100644 index 0000000..c6877cd Binary files /dev/null and b/etc/photos/martin.png differ diff --git a/etc/photos/martinm.png b/etc/photos/martinm.png new file mode 100644 index 0000000..d4bc731 Binary files /dev/null and b/etc/photos/martinm.png differ diff --git a/etc/photos/mcook.png b/etc/photos/mcook.png new file mode 100644 index 0000000..98efe4a Binary files /dev/null and b/etc/photos/mcook.png differ diff --git a/etc/photos/mcookm.png b/etc/photos/mcookm.png new file mode 100644 index 0000000..f3ff539 Binary files /dev/null and b/etc/photos/mcookm.png differ diff --git a/etc/photos/mly.png b/etc/photos/mly.png new file mode 100644 index 0000000..2fb240a Binary files /dev/null and b/etc/photos/mly.png differ diff --git a/etc/photos/mlym.png b/etc/photos/mlym.png new file mode 100644 index 0000000..435ac93 Binary files /dev/null and b/etc/photos/mlym.png differ diff --git a/etc/photos/morioka.png b/etc/photos/morioka.png new file mode 100644 index 0000000..5329b5e Binary files /dev/null and b/etc/photos/morioka.png differ diff --git a/etc/photos/moriokam.png b/etc/photos/moriokam.png new file mode 100644 index 0000000..b46f618 Binary files /dev/null and b/etc/photos/moriokam.png differ diff --git a/etc/photos/ograf.png b/etc/photos/ograf.png new file mode 100644 index 0000000..5211917 Binary files /dev/null and b/etc/photos/ograf.png differ diff --git a/etc/photos/ografm.png b/etc/photos/ografm.png new file mode 100644 index 0000000..3c453f9 Binary files /dev/null and b/etc/photos/ografm.png differ diff --git a/etc/photos/pez.png b/etc/photos/pez.png new file mode 100644 index 0000000..6d0f5f4 Binary files /dev/null and b/etc/photos/pez.png differ diff --git a/etc/photos/pezm.png b/etc/photos/pezm.png new file mode 100644 index 0000000..acd6007 Binary files /dev/null and b/etc/photos/pezm.png differ diff --git a/etc/photos/piper.png b/etc/photos/piper.png new file mode 100644 index 0000000..de555fd Binary files /dev/null and b/etc/photos/piper.png differ diff --git a/etc/photos/piperm.png b/etc/photos/piperm.png new file mode 100644 index 0000000..de555fd Binary files /dev/null and b/etc/photos/piperm.png differ diff --git a/etc/photos/rickc.png b/etc/photos/rickc.png new file mode 100644 index 0000000..0a91306 Binary files /dev/null and b/etc/photos/rickc.png differ diff --git a/etc/photos/rickcm.png b/etc/photos/rickcm.png new file mode 100644 index 0000000..37630b1 Binary files /dev/null and b/etc/photos/rickcm.png differ diff --git a/etc/photos/slb.png b/etc/photos/slb.png new file mode 100644 index 0000000..5ae2659 Binary files /dev/null and b/etc/photos/slb.png differ diff --git a/etc/photos/slbm.png b/etc/photos/slbm.png new file mode 100644 index 0000000..0ed6713 Binary files /dev/null and b/etc/photos/slbm.png differ diff --git a/etc/photos/sperber.png b/etc/photos/sperber.png new file mode 100644 index 0000000..5853b05 Binary files /dev/null and b/etc/photos/sperber.png differ diff --git a/etc/photos/sperberm.png b/etc/photos/sperberm.png new file mode 100644 index 0000000..88b49cb Binary files /dev/null and b/etc/photos/sperberm.png differ diff --git a/etc/photos/stig.png b/etc/photos/stig.png new file mode 100644 index 0000000..93c9958 Binary files /dev/null and b/etc/photos/stig.png differ diff --git a/etc/photos/stigb.png b/etc/photos/stigb.png new file mode 100644 index 0000000..e391d97 Binary files /dev/null and b/etc/photos/stigb.png differ diff --git a/etc/photos/stigbm.png b/etc/photos/stigbm.png new file mode 100644 index 0000000..49b8c5c Binary files /dev/null and b/etc/photos/stigbm.png differ diff --git a/etc/photos/stigm.png b/etc/photos/stigm.png new file mode 100644 index 0000000..73209e6 Binary files /dev/null and b/etc/photos/stigm.png differ diff --git a/etc/photos/thiessel.png b/etc/photos/thiessel.png new file mode 100644 index 0000000..0ba5cf2 Binary files /dev/null and b/etc/photos/thiessel.png differ diff --git a/etc/photos/thiesselm.png b/etc/photos/thiesselm.png new file mode 100644 index 0000000..0ba5cf2 Binary files /dev/null and b/etc/photos/thiesselm.png differ diff --git a/etc/photos/vin.png b/etc/photos/vin.png new file mode 100644 index 0000000..3d5fb27 Binary files /dev/null and b/etc/photos/vin.png differ diff --git a/etc/photos/vinm.png b/etc/photos/vinm.png new file mode 100644 index 0000000..94587f5 Binary files /dev/null and b/etc/photos/vinm.png differ diff --git a/etc/photos/vladimir.png b/etc/photos/vladimir.png new file mode 100644 index 0000000..30a3d6d Binary files /dev/null and b/etc/photos/vladimir.png differ diff --git a/etc/photos/vladimirm.png b/etc/photos/vladimirm.png new file mode 100644 index 0000000..30a3d6d Binary files /dev/null and b/etc/photos/vladimirm.png differ diff --git a/etc/photos/wmperry.png b/etc/photos/wmperry.png new file mode 100644 index 0000000..efae1cd Binary files /dev/null and b/etc/photos/wmperry.png differ diff --git a/etc/photos/wmperrym.png b/etc/photos/wmperrym.png new file mode 100644 index 0000000..6e28324 Binary files /dev/null and b/etc/photos/wmperrym.png differ diff --git a/etc/xemacs-enhanced.png b/etc/xemacs-enhanced.png new file mode 100644 index 0000000..90c8eb6 Binary files /dev/null and b/etc/xemacs-enhanced.png differ diff --git a/lisp/package-ui.el b/lisp/package-ui.el new file mode 100644 index 0000000..cfcd053 --- /dev/null +++ b/lisp/package-ui.el @@ -0,0 +1,483 @@ +;;; package-ui.el --- + +;; Copyright (C) 1998 by Darryl Okahata + +;; Author: Darryl Okahata +;; Keywords: internal + +;; 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 + +(require 'package-get) ;; which, in turn, requires 'package-admin + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; User-changeable variables: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar pui-up-to-date-package-face nil + "The face to use for packages that are up-to-date.") + +(defvar pui-selected-package-face (get-face 'bold) + "The face to use for selected packages. +Set this to `nil' to use the `default' face.") + +(defvar pui-outdated-package-face (get-face 'red) + "The face to use for outdated packages. +Set this to `nil' to use the `default' face.") + +(defvar pui-uninstalled-package-face (get-face 'italic) + "The face to use for uninstalled packages. +Set this to `nil' to use the `default' face.") + +(defvar pui-list-verbose t + "If non-nil, display verbose info in the package list buffer.") + +(defvar pui-info-buffer "*Packages*" + "Buffer to use for displaying package information.") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; End of user-changeable variables. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar pui-selected-packages nil + "The list of user-selected packages to install.") + +(defvar pui-display-keymap + (let ((m (make-keymap))) + (suppress-keymap m) + (set-keymap-name m 'pui-display-keymap) + (define-key m "q" 'pui-quit) + (define-key m "g" 'pui-list-packages) + (define-key m " " 'pui-display-info) + (define-key m "?" 'pui-help) + (define-key m "v" 'pui-toggle-verbosity-redisplay) + (define-key m "d" 'pui-toggle-verbosity-redisplay) + (define-key m [return] 'pui-toggle-package-key) + (define-key m "x" 'pui-install-selected-packages) + (define-key m "I" 'pui-install-selected-packages) + (define-key m "n" 'next-line) + (define-key m "+" 'next-line) + (define-key m "p" 'previous-line) + (define-key m "-" 'previous-line) + m) + "Keymap to use in the `pui-info-buffer' buffer") + +(defvar pui-package-keymap + (let ((m (make-sparse-keymap))) + (set-keymap-name m 'pui-package-keymap) + (define-key m 'button2 'pui-toggle-package-event) + (define-key m 'button3 'pui-toggle-package-event) + m) + "Keymap to use over package names/descriptions.") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; End of variables + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Configuration routines + +(defun pui-directory-exists (dir) + "Check to see if DIR exists in `package-get-remote'." + (let (found) + (mapcar '(lambda (item) + (if (and (null (car item)) + (string-equal (file-name-as-directory (car (cdr item))) + (file-name-as-directory dir))) + (setq found t)) + ) package-get-remote) + found + )) + +(defun pui-package-dir-list (buffer) + "In BUFFER, format the list of package binary paths." + (let ( (count 1) paths sys dir) + (set-buffer buffer) + (buffer-disable-undo buffer) + (erase-buffer buffer) + (insert "Existing package binary paths:\n\n") + (setq paths package-get-remote) + (while paths + (setq sys (car (car paths)) + dir (car (cdr (car paths)))) + (insert (format "%2s. " count)) + (if (null sys) + (insert dir) + (insert sys ":" dir)) + (insert "\n") + (setq count (1+ count)) + (setq paths (cdr paths)) + ) + (insert "\nThese are the places that will be searched for package binaries.\n") + (goto-char (point-min)) + )) + +;;;###autoload +(defun pui-add-install-directory (dir) + "Add a new package binary directory to the head of `package-get-remote'. +Note that no provision is made for saving any changes made by this function. +It exists mainly as a convenience for one-time package installations from +disk." + (interactive (let ( (tmpbuf (get-buffer-create + "*Existing Package Binary Paths*")) + dir) + (save-window-excursion + (save-excursion + (unwind-protect + (progn + (pui-package-dir-list tmpbuf) + (display-buffer tmpbuf) + (setq dir (read-directory-name + "New package binary directory to add? " + nil nil t)) + ) + (kill-buffer tmpbuf) + ))) + (list dir) + )) + (progn + (if (not (pui-directory-exists dir)) + (progn + (setq package-get-remote (cons (list nil dir) package-get-remote)) + (message "Package directory \"%s\" added." dir) + ) + (message "Directory \"%s\" already exists in `package-get-remote'." dir)) + )) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Package list/installer routines + +(defun pui-quit () + (interactive) + (kill-buffer nil)) + +(defun pui-help () + (interactive) + (let ( (help-buffer (get-buffer-create "*Help*")) ) + (display-buffer help-buffer t) + (save-window-excursion + (set-buffer help-buffer) + (buffer-disable-undo help-buffer) + (erase-buffer help-buffer) + (insert (pui-help-string)) + ) + )) + +(defun pui-package-symbol-char (pkg-sym version) + (progn + (if (package-get-info-find-package packages-package-list pkg-sym) + (if (package-get-installedp pkg-sym version) + (list " " pui-up-to-date-package-face) + (list "*" pui-outdated-package-face)) + (list "-" pui-uninstalled-package-face)) + )) + +(defun pui-update-package-display (extent &optional pkg-sym version) + "Update the package status for EXTENT. +If PKG-SYM or VERSION are not given, they are read from the extent. +These are used to determine whether or not the package is installed, +and whether or not it is up-to-date." + (let (buffer-read-only disp sym-char) + (if (not pkg-sym) + (setq pkg-sym (extent-property extent 'pui-package))) + (if (not version) + (setq version (package-get-info-prop (extent-property extent 'pui-info) + 'version))) + (if (member pkg-sym pui-selected-packages) + (progn + (if pui-selected-package-face + (set-extent-face extent (get-face pui-selected-package-face)) + (set-extent-face extent (get-face 'default))) + (setq sym-char "+") + ) + (progn + (setq disp (pui-package-symbol-char pkg-sym version)) + (setq sym-char (car disp)) + (if (cdr disp) + (set-extent-face extent (car (cdr disp))) + (set-extent-face extent (get-face 'default))) + )) + (save-excursion + (goto-char (extent-start-position extent)) + (delete-char 1) + (insert sym-char) + (set-buffer-modified-p nil) + ) + )) + +(defun pui-toggle-package (extent) + (let (pkg-sym) + (setq pkg-sym (extent-property extent 'pui-package)) + (if (member pkg-sym pui-selected-packages) + (setq pui-selected-packages + (delete pkg-sym pui-selected-packages)) + (setq pui-selected-packages + (cons pkg-sym pui-selected-packages))) + (pui-update-package-display extent pkg-sym) + )) + +(defun pui-toggle-package-key () + "Select/unselect package for installation, using the keyboard." + (interactive) + (let (extent) + (if (setq extent (extent-at (point) (current-buffer) 'pui)) + (progn + (pui-toggle-package extent) + (forward-line 1) + ) + (error "No package under cursor!")) + )) + +(defun pui-toggle-package-event (event) + "Select/unselect package for installation, using the mouse." + (interactive "e") + (let* ( (ep (event-point event)) + (buffer (window-buffer (event-window event))) + (extent (extent-at ep buffer 'pui-package)) + ) + (pui-toggle-package extent) + )) + +(defun pui-toggle-verbosity-redisplay () + "Toggle verbose package info." + (interactive) + (progn + (setq pui-list-verbose (not pui-list-verbose)) + (pui-list-packages) + )) + +(defun pui-install-selected-packages () + "Install selected packages." + (interactive) + (let ( (tmpbuf "*Packages-To-Install*") do-install) + (if pui-selected-packages + (progn + ;; Don't change window config when asking the user if he really + ;; wants to install the packages. We do this to avoid messing up + ;; the window configuration if errors occur (we don't want to + ;; display random buffers in addition to the error buffer, if + ;; errors occur, which would normally be caused by display-buffer). + (save-window-excursion + (with-output-to-temp-buffer tmpbuf + (display-completion-list (sort + (mapcar '(lambda (pkg) + (symbol-name pkg) + ) + pui-selected-packages) + 'string<) + :activate-callback nil + :help-string "Packages selected for installation:\n" + :completion-string t + )) + (setq tmpbuf (get-buffer-create tmpbuf)) + (display-buffer tmpbuf) + (setq do-install (y-or-n-p "Install these packages? ")) + (kill-buffer tmpbuf) + ) + (if do-install + (progn + (save-excursion + ;; Clear old temp buffer history + (set-buffer (get-buffer-create package-admin-temp-buffer)) + (buffer-disable-undo package-admin-temp-buffer) + (erase-buffer package-admin-temp-buffer) + ) + (message "Installing selected packages ...") (sit-for 0) + (if (catch 'done + (mapcar (lambda (pkg) + (if (not (package-get-all pkg nil)) + (throw 'done nil))) + pui-selected-packages) + t) + (progn + (pui-list-packages) + (message "Packages installed") + )) + ) + (clear-message) + ) + ) + (error "No packages have been selected!")) + )) + +(defun pui-help-echo (extent &optional force-update) + "Display additional package info in the modeline. +EXTENT determines the package to display (the package information is +attached to the extent as properties)." + (let (pkg-sym info inst-ver auth-ver date maintainer) + (if (or force-update (not (current-message)) + (string-match ".*: .*: " (current-message)) + ) + (progn + (setq pkg-sym (extent-property extent 'pui-package) + info (extent-property extent 'pui-info) + inst-ver (package-get-key pkg-sym :version) + auth-ver (package-get-info-prop info 'author-version) + date (package-get-info-prop info 'date) + maintainer (package-get-info-prop info 'maintainer)) + (if (not inst-ver) + (setq inst-ver "")) + (if pui-list-verbose + (format "Author version: %-8s %11s: %s" + auth-ver date maintainer) + (format "%-6s: %-8s %11s: %s" + inst-ver auth-ver date maintainer)) + )) + )) + +(defun pui-display-info (&optional no-error) + "Display additional package info in the modeline. +Designed to be called interactively (from a keypress)." + (interactive) + (let (extent) + (save-excursion + (beginning-of-line) + (if (setq extent (extent-at (point) (current-buffer) 'pui)) + (message (pui-help-echo extent t)) + (if no-error + (clear-message nil) + (error "No package under cursor!"))) + ))) + +(defun pui-help-string () + "Return the help string for the package-info buffer. +This is not a defconst because of the call to substitute-command-keys." + (save-excursion + (set-buffer (get-buffer pui-info-buffer)) + (substitute-command-keys +"Symbols in the leftmost column: + + + The package is marked for installation. + - The package has not been installed. + * The currently installed package is old, and a newer version is + available. + +Useful keys: + + `\\[pui-toggle-package-key]' to select/unselect the current package for installation. + `\\[pui-install-selected-packages]' to install selected packages. + `\\[pui-display-info]' to display additional information about the package in the modeline. + `\\[pui-list-packages]' to refresh the package list. + `\\[pui-toggle-verbosity-redisplay]' to toggle between a verbose and non-verbose display. + `\\[pui-quit]' to kill this buffer. +") + )) + +;;;###autoload +(defun pui-list-packages () + "List all packages and package information. +The package name, version, and description are displayed. From the displayed +buffer, the user can see which packages are installed, which are not, and +which are out-of-date (a newer version is available). The user can then +select packages for installation via the keyboard or mouse." + (interactive) + (let ( (outbuf (get-buffer-create pui-info-buffer)) + (sep-string "===============================================================================\n") + start ) + (message "Creating package list ...") (sit-for 0) + (set-buffer outbuf) + (setq buffer-read-only nil) + (buffer-disable-undo outbuf) + (erase-buffer outbuf) + (use-local-map pui-display-keymap) + (if pui-list-verbose + (insert " Latest Installed + Package name Vers. Vers. Description +") + (insert " Latest + Package name Vers. Description +")) + (insert sep-string) + (setq start (point)) + (mapcar '(lambda (pkg) + (let (pkg-sym info version desc + b e extent current-vers disp) + (setq pkg-sym (car pkg) + info (package-get-info-version (cdr pkg) nil)) + (setq version (package-get-info-prop info 'version) + desc (package-get-info-prop info 'description)) + + (setq disp (pui-package-symbol-char pkg-sym + version)) + (setq b (point)) + (if pui-list-verbose + (progn + (setq current-vers (package-get-key pkg-sym :version)) + (cond + ( (not current-vers) + (setq current-vers "-----") ) + ( (stringp current-vers) + (setq current-vers + (format "%.2f" + (string-to-number current-vers))) ) + ( (numberp current-vers) + (setq current-vers (format "%.2f" current-vers)) ) + ) + (insert + (format "%s %-15s %-5.2f %-5s %s\n" + (car disp) pkg-sym + (if (stringp version) + (string-to-number version) + version) + current-vers desc)) +;; (insert +;; (format "\t\t %-12s %s\n" +;; (package-get-info-prop info 'author-version) +;; (package-get-info-prop info 'date) +;; )) + ) + (insert (format "%s %-15s %-5s %s\n" + (car disp) + pkg-sym version desc))) + (save-excursion + (setq e (progn + (forward-line -1) + (end-of-line) + (point))) + ) + (setq extent (make-extent b e)) + (if (cdr disp) + (set-extent-face extent (car (cdr disp))) + (set-extent-face extent (get-face 'default))) + (set-extent-property extent 'highlight t) + (set-extent-property extent 'pui t) + (set-extent-property extent 'pui-package pkg-sym) + (set-extent-property extent 'pui-info info) + (set-extent-property extent 'help-echo 'pui-help-echo) + (set-extent-property extent 'keymap pui-package-keymap) + )) (sort (copy-sequence package-get-base) + '(lambda (a b) + (string< (symbol-name (car a)) + (symbol-name (car b))) + ))) + (insert sep-string) + (insert (pui-help-string)) + (set-buffer-modified-p nil) + (setq buffer-read-only t) + (pop-to-buffer outbuf) + (delete-other-windows) + (goto-char start) + (setq pui-selected-packages nil) ; Reset list + (clear-message) +; (message (substitute-command-keys "Press `\\[pui-help]' for help.")) + )) + +(provide 'package-ui) + +;;; package-ui.el ends here diff --git a/man/lispref/customize.texi b/man/lispref/customize.texi new file mode 100644 index 0000000..6d7a3a5 --- /dev/null +++ b/man/lispref/customize.texi @@ -0,0 +1,750 @@ +@c -*-texinfo-*- +@c This is part of the XEmacs Lisp Reference Manual. +@c Copyright (C) 1997, 1998 Free Software Foundation, Inc. +@c See the file lispref.texi for copying conditions. +@setfilename ../info/customize +@node Customization, , , Top +@chapter Writing Customization Definitions + + This chapter describes how to declare user options for customization, +and also customization groups for classifying them. We use the term +@dfn{customization item} to include both kinds of customization +definitions---as well as face definitions. + +@menu +* Common Keywords:: +* Group Definitions:: +* Variable Definitions:: +* Customization Types:: +@end menu + +@node Common Keywords +@section Common Keywords for All Kinds of Items + + All kinds of customization declarations (for variables and groups, and +for faces) accept keyword arguments for specifying various information. +This section describes some keywords that apply to all kinds. + + All of these keywords, except @code{:tag}, can be used more than once +in a given item. Each use of the keyword has an independent effect. +The keyword @code{:tag} is an exception because any given item can only +display one name. + +@table @code +@item :tag @var{name} +Use @var{name}, a string, instead of the item's name, to label the item +in customization menus and buffers. + +@item :group @var{group} +Put this customization item in group @var{group}. When you use +@code{:group} in a @code{defgroup}, it makes the new group a subgroup of +@var{group}. + +If you use this keyword more than once, you can put a single item into +more than one group. Displaying any of those groups will show this +item. Be careful not to overdo this! + +@item :link @var{link-data} +Include an external link after the documentation string for this item. +This is a sentence containing an active field which references some +other documentation. + +There are three alternatives you can use for @var{link-data}: + +@table @code +@item (custom-manual @var{info-node}) +Link to an Info node; @var{info-node} is a string which specifies the +node name, as in @code{"(emacs)Top"}. The link appears as +@samp{[manual]} in the customization buffer. + +@item (info-link @var{info-node}) +Like @code{custom-manual} except that the link appears +in the customization buffer with the Info node name. + +@item (url-link @var{url}) +Link to a web page; @var{url} is a string which specifies the @sc{url}. +The link appears in the customization buffer as @var{url}. +@end table + +You can specify the text to use in the customization buffer by adding +@code{:tag @var{name}} after the first element of the @var{link-data}; +for example, @code{(info-link :tag "foo" "(emacs)Top")} makes a link to +the Emacs manual which appears in the buffer as @samp{foo}. + +An item can have more than one external link; however, most items have +none at all. + +@item :load @var{file} +Load file @var{file} (a string) before displaying this customization +item. Loading is done with @code{load-library}, and only if the file is +not already loaded. + +@item :require @var{feature} +Require feature @var{feature} (a symbol) when installing a value for +this item (an option or a face) that was saved using the customization +feature. This is done by calling @code{require}. + +The most common reason to use @code{:require} is when a variable enables +a feature such as a minor mode, and just setting the variable won't have +any effect unless the code which implements the mode is loaded. +@end table + +@node Group Definitions +@section Defining Custom Groups + + Each Emacs Lisp package should have one main customization group which +contains all the options, faces and other groups in the package. If the +package has a small number of options and faces, use just one group and +put everything in it. When there are more than twelve or so options and +faces, then you should structure them into subgroups, and put the +subgroups under the package's main customization group. It is OK to +put some of the options and faces in the package's main group alongside +the subgroups. + + The package's main or only group should be a member of one or more of +the standard customization groups. (To display the full list of them, +use @kbd{M-x customize}.) Choose one or more of them (but not too +many), and add your group to each of them using the @code{:group} +keyword. + + The way to declare new customization groups is with @code{defgroup}. + +@tindex defgroup +@defmac defgroup group members doc [keyword value]... +Declare @var{group} as a customization group containing @var{members}. +Do not quote the symbol @var{group}. The argument @var{doc} specifies +the documentation string for the group. + +The argument @var{members} is a list specifying an initial set of +customization items to be members of the group. However, most often +@var{members} is @code{nil}, and you specify the group's members by +using the @code{:group} keyword when defining those members. + +If you want to specify group members through @var{members}, each element +should have the form @code{(@var{name} @var{widget})}. Here @var{name} +is a symbol, and @var{widget} is a widget type for editing that symbol. +Useful widgets are @code{custom-variable} for a variable, +@code{custom-face} for a face, and @code{custom-group} for a group. + +In addition to the common keywords (@pxref{Common Keywords}), you can +use this keyword in @code{defgroup}: + +@table @code +@item :prefix @var{prefix} +If the name of an item in the group starts with @var{prefix}, then the +tag for that item is constructed (by default) by omitting @var{prefix}. + +One group can have any number of prefixes. +@end table +@end defmac + +@c Doesn't apply to XEmacs +@c +@c The prefix-discarding feature is currently turned off, which means +@c that @code{:prefix} currently has no effect. We did this because we +@c found that discarding the specified prefixes often led to confusing +@c names for options. This happened because the people who wrote the +@c @code{defgroup} definitions for various groups added @code{:prefix} +@c keywords whenever they make logical sense---that is, whenever the +@c variables in the library have a common prefix. + +@c In order to obtain good results with @code{:prefix}, it would be +@c necessary to check the specific effects of discarding a particular +@c prefix, given the specific items in a group and their names and +@c documentation. If the resulting text is not clear, then @code{:prefix} +@c should not be used in that case. + +@c It should be possible to recheck all the customization groups, delete +@c the @code{:prefix} specifications which give unclear results, and then +@c turn this feature back on, if someone would like to do the work. + +@node Variable Definitions +@section Defining Customization Variables + + Use @code{defcustom} to declare user-editable variables. + +@tindex defcustom +@defmac defcustom option default doc [keyword value]... +Declare @var{option} as a customizable user option variable. Do not +quote @var{option}. The argument @var{doc} specifies the documentation +string for the variable. + +If @var{option} is void, @code{defcustom} initializes it to +@var{default}. @var{default} should be an expression to compute the +value; be careful in writing it, because it can be evaluated on more +than one occasion. + +The following additional keywords are defined: + +@table @code +@item :type @var{type} +Use @var{type} as the data type for this option. It specifies which +values are legitimate, and how to display the value. +@xref{Customization Types}, for more information. + +@item :options @var{list} +Specify @var{list} as the list of reasonable values for use in this +option. + +Currently this is meaningful only when the type is @code{hook}. In that +case, the elements of @var{list} should be functions that are useful as +elements of the hook value. The user is not restricted to using only +these functions, but they are offered as convenient alternatives. + +@item :version @var{version} +This option specifies that the variable was first introduced, or its +default value was changed, in Emacs version @var{version}. The value +@var{version} must be a string. For example, + +@example +(defcustom foo-max 34 + "*Maximum number of foo's allowed." + :type 'integer + :group 'foo + :version "20.3") +@end example + +@item :set @var{setfunction} +Specify @var{setfunction} as the way to change the value of this option. +The function @var{setfunction} should take two arguments, a symbol and +the new value, and should do whatever is necessary to update the value +properly for this option (which may not mean simply setting the option +as a Lisp variable). The default for @var{setfunction} is +@code{set-default}. + +@item :get @var{getfunction} +Specify @var{getfunction} as the way to extract the value of this +option. The function @var{getfunction} should take one argument, a +symbol, and should return the ``current value'' for that symbol (which +need not be the symbol's Lisp value). The default is +@code{default-value}. + +@item :initialize @var{function} +@var{function} should be a function used to initialize the variable when +the @code{defcustom} is evaluated. It should take two arguments, the +symbol and value. Here are some predefined functions meant for use in +this way: + +@table @code +@item custom-initialize-set +Use the variable's @code{:set} function to initialize the variable, but +do not reinitialize it if it is already non-void. This is the default +@code{:initialize} function. + +@item custom-initialize-default +Like @code{custom-initialize-set}, but use the function +@code{set-default} to set the variable, instead of the variable's +@code{:set} function. This is the usual choice for a variable whose +@code{:set} function enables or disables a minor mode; with this choice, +defining the variable will not call the minor mode function, but +customizing the variable will do so. + +@item custom-initialize-reset +Always use the @code{:set} function to initialize the variable. If the +variable is already non-void, reset it by calling the @code{:set} +function using the current value (returned by the @code{:get} method). + +@item custom-initialize-changed +Use the @code{:set} function to initialize the variable, if it is +already set or has been customized; otherwise, just use +@code{set-default}. +@end table +@end table +@end defmac + + The @code{:require} option is useful for an option that turns on the +operation of a certain feature. Assuming that the package is coded to +check the value of the option, you still need to arrange for the package +to be loaded. You can do that with @code{:require}. @xref{Common +Keywords}. Here is an example, from the library @file{paren.el}: + +@example +(defcustom show-paren-mode nil + "Toggle Show Paren mode@enddots{}" + :set (lambda (symbol value) + (show-paren-mode (or value 0))) + :initialize 'custom-initialize-default + :type 'boolean + :group 'paren-showing + :require 'paren) +@end example + +@ignore +Use @code{custom-add-option} to specify that a specific function is +useful as an member of a hook. + +@defun custom-add-option symbol option +To the variable @var{symbol} add @var{option}. + +If @var{symbol} is a hook variable, @var{option} should be a hook +member. For other types variables, the effect is undefined." +@end defun +@end ignore + +Internally, @code{defcustom} uses the symbol property +@code{standard-value} to record the expression for the default value, +and @code{saved-value} to record the value saved by the user with the +customization buffer. The @code{saved-value} property is actually a +list whose car is an expression which evaluates to the value. + +@node Customization Types +@section Customization Types + + When you define a user option with @code{defcustom}, you must specify +its @dfn{customization type}. That is a Lisp object which describes (1) +which values are legitimate and (2) how to display the value in the +customization buffer for editing. + + You specify the customization type in @code{defcustom} with the +@code{:type} keyword. The argument of @code{:type} is evaluated; since +types that vary at run time are rarely useful, normally you use a quoted +constant. For example: + +@example +(defcustom diff-command "diff" + "*The command to use to run diff." + :type '(string) + :group 'diff) +@end example + + In general, a customization type is a list whose first element is a +symbol, one of the customization type names defined in the following +sections. After this symbol come a number of arguments, depending on +the symbol. Between the type symbol and its arguments, you can +optionally write keyword-value pairs (@pxref{Type Keywords}). + + Some of the type symbols do not use any arguments; those are called +@dfn{simple types}. For a simple type, if you do not use any +keyword-value pairs, you can omit the parentheses around the type +symbol. For example just @code{string} as a customization type is +equivalent to @code{(string)}. + +@menu +* Simple Types:: +* Composite Types:: +* Splicing into Lists:: +* Type Keywords:: +@end menu + +@node Simple Types +@subsection Simple Types + + This section describes all the simple customization types. + +@table @code +@item sexp +The value may be any Lisp object that can be printed and read back. You +can use @code{sexp} as a fall-back for any option, if you don't want to +take the time to work out a more specific type to use. + +@item integer +The value must be an integer, and is represented textually +in the customization buffer. + +@item number +The value must be a number, and is represented textually in the +customization buffer. + +@item string +The value must be a string, and the customization buffer shows just the +contents, with no delimiting @samp{"} characters and no quoting with +@samp{\}. + +@item regexp +Like @code{string} except that the string must be a valid regular +expression. + +@item character +The value must be a character code. A character code is actually an +integer, but this type shows the value by inserting the character in the +buffer, rather than by showing the number. + +@item file +The value must be a file name, and you can do completion with +@kbd{M-@key{TAB}}. + +@item (file :must-match t) +The value must be a file name for an existing file, and you can do +completion with @kbd{M-@key{TAB}}. + +@item directory +The value must be a directory name, and you can do completion with +@kbd{M-@key{TAB}}. + +@item symbol +The value must be a symbol. It appears in the customization buffer as +the name of the symbol. + +@item function +The value must be either a lambda expression or a function name. When +it is a function name, you can do completion with @kbd{M-@key{TAB}}. + +@item variable +The value must be a variable name, and you can do completion with +@kbd{M-@key{TAB}}. + +@item face +The value must be a symbol which is a face name. + +@item boolean +The value is boolean---either @code{nil} or @code{t}. Note that by +using @code{choice} and @code{const} together (see the next section), +you can specify that the value must be @code{nil} or @code{t}, but also +specify the text to describe each value in a way that fits the specific +meaning of the alternative. +@end table + +@node Composite Types +@subsection Composite Types + + When none of the simple types is appropriate, you can use composite +types, which build new types from other types. Here are several ways of +doing that: + +@table @code +@item (restricted-sexp :match-alternatives @var{criteria}) +The value may be any Lisp object that satisfies one of @var{criteria}. +@var{criteria} should be a list, and each elements should be +one of these possibilities: + +@itemize @bullet +@item +A predicate---that is, a function of one argument that returns non-@code{nil} +if the argument fits a certain type. This means that objects of that type +are acceptable. + +@item +A quoted constant---that is, @code{'@var{object}}. This means that +@var{object} itself is an acceptable value. +@end itemize + +For example, + +@example +(restricted-sexp :match-alternatives (integerp 't 'nil)) +@end example + +@noindent +allows integers, @code{t} and @code{nil} as legitimate values. + +The customization buffer shows all legitimate values using their read +syntax, and the user edits them textually. + +@item (cons @var{car-type} @var{cdr-type}) +The value must be a cons cell, its @sc{car} must fit @var{car-type}, and +its @sc{cdr} must fit @var{cdr-type}. For example, @code{(cons string +symbol)} is a customization type which matches values such as +@code{("foo" . foo)}. + +In the customization buffer, the @sc{car} and the @sc{cdr} are +displayed and edited separately, each according to the type +that you specify for it. + +@item (list @var{element-types}@dots{}) +The value must be a list with exactly as many elements as the +@var{element-types} you have specified; and each element must fit the +corresponding @var{element-type}. + +For example, @code{(list integer string function)} describes a list of +three elements; the first element must be an integer, the second a +string, and the third a function. + +In the customization buffer, the each element is displayed and edited +separately, according to the type specified for it. + +@item (vector @var{element-types}@dots{}) +Like @code{list} except that the value must be a vector instead of a +list. The elements work the same as in @code{list}. + +@item (choice @var{alternative-types}...) +The value must fit at least one of @var{alternative-types}. +For example, @code{(choice integer string)} allows either an +integer or a string. + +In the customization buffer, the user selects one of the alternatives +using a menu, and can then edit the value in the usual way for that +alternative. + +Normally the strings in this menu are determined automatically from the +choices; however, you can specify different strings for the menu by +including the @code{:tag} keyword in the alternatives. For example, if +an integer stands for a number of spaces, while a string is text to use +verbatim, you might write the customization type this way, + +@smallexample +(choice (integer :tag "Number of spaces") + (string :tag "Literal text")) +@end smallexample + +@noindent +so that the menu offers @samp{Number of spaces} and @samp{Literal Text}. + +In any alternative for which @code{nil} is not a valid value, other than +a @code{const}, you should specify a valid default for that alternative +using the @code{:value} keyword. @xref{Type Keywords}. + +@item (const @var{value}) +The value must be @var{value}---nothing else is allowed. + +The main use of @code{const} is inside of @code{choice}. For example, +@code{(choice integer (const nil))} allows either an integer or +@code{nil}. + +@code{:tag} is often used with @code{const}, inside of @code{choice}. +For example, + +@smallexample +(choice (const :tag "Yes" t) + (const :tag "No" nil) + (const :tag "Ask" foo)) +@end smallexample + +@item (function-item @var{function}) +Like @code{const}, but used for values which are functions. This +displays the documentation string as well as the function name. +The documentation string is either the one you specify with +@code{:doc}, or @var{function}'s own documentation string. + +@item (variable-item @var{variable}) +Like @code{const}, but used for values which are variable names. This +displays the documentation string as well as the variable name. The +documentation string is either the one you specify with @code{:doc}, or +@var{variable}'s own documentation string. + +@item (set @var{elements}@dots{}) +The value must be a list and each element of the list must be one of the +@var{elements} specified. This appears in the customization buffer as a +checklist. + +@item (repeat @var{element-type}) +The value must be a list and each element of the list must fit the type +@var{element-type}. This appears in the customization buffer as a +list of elements, with @samp{[INS]} and @samp{[DEL]} buttons for adding +more elements or removing elements. +@end table + +@node Splicing into Lists +@subsection Splicing into Lists + + The @code{:inline} feature lets you splice a variable number of +elements into the middle of a list or vector. You use it in a +@code{set}, @code{choice} or @code{repeat} type which appears among the +element-types of a @code{list} or @code{vector}. + + Normally, each of the element-types in a @code{list} or @code{vector} +describes one and only one element of the list or vector. Thus, if an +element-type is a @code{repeat}, that specifies a list of unspecified +length which appears as one element. + + But when the element-type uses @code{:inline}, the value it matches is +merged directly into the containing sequence. For example, if it +matches a list with three elements, those become three elements of the +overall sequence. This is analogous to using @samp{,@@} in the backquote +construct. + + For example, to specify a list whose first element must be @code{t} +and whose remaining arguments should be zero or more of @code{foo} and +@code{bar}, use this customization type: + +@example +(list (const t) (set :inline t foo bar)) +@end example + +@noindent +This matches values such as @code{(t)}, @code{(t foo)}, @code{(t bar)} +and @code{(t foo bar)}. + + When the element-type is a @code{choice}, you use @code{:inline} not +in the @code{choice} itself, but in (some of) the alternatives of the +@code{choice}. For example, to match a list which must start with a +file name, followed either by the symbol @code{t} or two strings, use +this customization type: + +@example +(list file + (choice (const t) + (list :inline t string string))) +@end example + +@noindent +If the user chooses the first alternative in the choice, then the +overall list has two elements and the second element is @code{t}. If +the user chooses the second alternative, then the overall list has three +elements and the second and third must be strings. + +@node Type Keywords +@subsection Type Keywords + +You can specify keyword-argument pairs in a customization type after the +type name symbol. Here are the keywords you can use, and their +meanings: + +@table @code +@item :value @var{default} +This is used for a type that appears as an alternative inside of +@code{choice}; it specifies the default value to use, at first, if and +when the user selects this alternative with the menu in the +customization buffer. + +Of course, if the actual value of the option fits this alternative, it +will appear showing the actual value, not @var{default}. + +If @code{nil} is not a valid value for the alternative, then it is +essential to specify a valid default with @code{:value}. + +@item :format @var{format-string} +This string will be inserted in the buffer to represent the value +corresponding to the type. The following @samp{%} escapes are available +for use in @var{format-string}: + +@table @samp +@item %[@var{button}%] +Display the text @var{button} marked as a button. The @code{:action} +attribute specifies what the button will do if the user invokes it; +its value is a function which takes two arguments---the widget which +the button appears in, and the event. + +There is no way to specify two different buttons with different +actions. + +@item %@{@var{sample}%@} +Show @var{sample} in a special face specified by @code{:sample-face}. + +@item %v +Substitute the item's value. How the value is represented depends on +the kind of item, and (for variables) on the customization type. + +@item %d +Substitute the item's documentation string. + +@item %h +Like @samp{%d}, but if the documentation string is more than one line, +add an active field to control whether to show all of it or just the +first line. + +@item %t +Substitute the tag here. You specify the tag with the @code{:tag} +keyword. + +@item %% +Display a literal @samp{%}. +@end table + +@item :action @var{action} +Perform @var{action} if the user clicks on a button. + +@item :button-face @var{face} +Use the face @var{face} (a face name or a list of face names) for button +text displayed with @samp{%[@dots{}%]}. + +@item :button-prefix @var{prefix} +@itemx :button-suffix @var{suffix} +These specify the text to display before and after a button. +Each can be: + +@table @asis +@item @code{nil} +No text is inserted. + +@item a string +The string is inserted literally. + +@item a symbol +The symbol's value is used. +@end table + +@item :tag @var{tag} +Use @var{tag} (a string) as the tag for the value (or part of the value) +that corresponds to this type. + +@item :doc @var{doc} +Use @var{doc} as the documentation string for this value (or part of the +value) that corresponds to this type. In order for this to work, you +must specify a value for @code{:format}, and use @samp{%d} or @samp{%h} +in that value. + +The usual reason to specify a documentation string for a type is to +provide more information about the meanings of alternatives inside a +@code{:choice} type or the parts of some other composite type. + +@item :help-echo @var{motion-doc} +When you move to this item with @code{widget-forward} or +@code{widget-backward}, it will display the string @var{motion-doc} +in the echo area. + +@item :match @var{function} +Specify how to decide whether a value matches the type. The +corresponding value, @var{function}, should be a function that accepts +two arguments, a widget and a value; it should return non-@code{nil} if +the value is acceptable. + +@ignore +@item :indent @var{columns} +Indent this item by @var{columns} columns. The indentation is used for +@samp{%n}, and automatically for group names, for checklists and radio +buttons, and for editable lists. It affects the whole of the +item except for the first line. + +@item :offset @var{columns} +An integer indicating how many extra spaces to indent the subitems of +this item. By default, subitems are indented the same as their parent. + +@item :extra-offset +An integer indicating how many extra spaces to add to this item's +indentation, compared to its parent. + +@item :notify +A function called each time the item or a subitem is changed. The +function is called with two or three arguments. The first argument is +the item itself, the second argument is the item that was changed, and +the third argument is the event leading to the change, if any. + +@item :menu-tag +Tag used in the menu when the widget is used as an option in a +@code{menu-choice} widget. + +@item :menu-tag-get +Function used for finding the tag when the widget is used as an option +in a @code{menu-choice} widget. By default, the tag used will be either the +@code{:menu-tag} or @code{:tag} property if present, or the @code{princ} +representation of the @code{:value} property if not. + +@item :validate +A function which takes a widget as an argument, and return nil if the +widgets current value is valid for the widget. Otherwise, it should +return the widget containing the invalid data, and set that widgets +@code{:error} property to a string explaining the error. + +You can use the function @code{widget-children-validate} for this job; +it tests that all children of @var{widget} are valid. + +@item :tab-order +Specify the order in which widgets are traversed with +@code{widget-forward} or @code{widget-backward}. This is only partially +implemented. + +@enumerate a +@item +Widgets with tabbing order @code{-1} are ignored. + +@item +(Unimplemented) When on a widget with tabbing order @var{n}, go to the +next widget in the buffer with tabbing order @var{n+1} or @code{nil}, +whichever comes first. + +@item +When on a widget with no tabbing order specified, go to the next widget +in the buffer with a positive tabbing order, or @code{nil} +@end enumerate + +@item :parent +The parent of a nested widget (e.g. a @code{menu-choice} item or an +element of a @code{editable-list} widget). + +@item :sibling-args +This keyword is only used for members of a @code{radio-button-choice} or +@code{checklist}. The value should be a list of extra keyword +arguments, which will be used when creating the @code{radio-button} or +@code{checkbox} associated with this item. +@end ignore +@end table diff --git a/nt/PROBLEMS b/nt/PROBLEMS new file mode 100644 index 0000000..b1442a4 --- /dev/null +++ b/nt/PROBLEMS @@ -0,0 +1,177 @@ + -*- mode:outline -*- + +This file describes various problems that have been encountered in +running XEmacs on Windows 95, 98 and NT. It has been updated for +XEmacs 21.0. + +This is the first release of XEmacs on Windows. In testing it has +proved to be extremely stable in general use (but see the gnus and +subprocess problems below), but not all features or packages work +correctly yet. + +Use `C-c C-f' to move to the next equal level of outline, and +`C-c C-b' to move to previous equal level. `C-h m' will give more +info about the Outline mode. + +Also, Try finding the things you need using one of the search commands +XEmacs provides (e.g. `C-s'). + +General advice: + Remember your .emacs file! ~\.emacs is your Emacs init file. If + you observe strange problems, invoke XEmacs with the `-q' option + and see if you can repeat the problem. + + +* Problems with running XEmacs +============================== +** Conflicts with FSF NTEmacs + +Depending on how it is installed, FSF NTEmacs may setup various EMACS* +variables in your environment. The presence of these variables may +cause XEmacs to fail at startup, cause you to see corrupted +doc-strings, or cause other random problems. + +You should remove these variables from your environment. These +variables are not required to run FSF NTEmacs if you start it by +running emacs.bat. + +** XEmacs can't find my .emacs file + +XEmacs looks for your .emacs in your "home" directory. XEmacs decides +that your "home" directory is, in order of preference: + +- The value of the HOME environment variable, if the variable exists. +- The value of the HOMEDRIVE and HOMEPATH environment variables, if + these variables both exist. +- The directory that XEmacs was started from. + +** XEmacs can't find any packages + +The directory tree under which XEmacs looks for your packages is set +at compile-time, and defaults to C:\Program Files\XEmacs\Packages. The +variable configure-package-path holds the actual value that was +compiled into your copy of XEmacs. + +The compile-time default location can be overridden by the +EMACSPACKAGEPATH environment variable or by the +SOFTWARE\GNU\XEmacs\EMACSPACKAGEPATH registry entry. You should check +that these variables, if they exist, point to the actual location of +your package tree. + +** XEmacs sometimes crashes when using gnus + +This is a known bug in this release of XEmacs on Windows. + +If you want to use gnus anyway, you should minimize any possible data +loss by saving any modified buffers before you start and ensuring that +you haven't set gnus-use-dribble-file to nil or disabled the normal +XEmacs auto-save mechanism. + +** XEmacs doesn't die when shutting down Windows 95 or 98 + +When shutting down Windows 95 or 98 you may see a dialog that says + "xemacs / You must quit this program before you quit Windows". +It is safe to + "Click OK to quit the program and Windows", +but you won't be offered a chance to save any modified XEmacs buffers. + +* Look and feel +=============== +** Key bindings + +The C-z, C-x, C-c, and C-v keystrokes have traditional uses in both +emacs and Windows programs. XEmacs binds these keys to their +traditional emacs uses, and provides Windows 3.x style bindings for +the Cut, Copy and Paste functions. + + Function XEmacs binding + -------- -------------- + Undo C-_ + Cut C-Insert + Copy C-Insert + Paste Sh-Del + +You can rebind keys to make XEmacs more Windows-compatible; for +example, to bind C-z to undo: + + (global-set-key [(control z)] 'undo) + +Rebindind C-x and C-c is trickier because by default these are prefix +keys in XEmacs. See the "Key Bindings" node in the XEmacs manual. + +** Behaviour of selected regions + +Selected regions behave differently in XEmacs from typical Windows +programs. The pc-select package provides various functions to enable +the standard Windows behaviour for selected regions (eg mark via +shift-arrow, self-inserting deletes region, etc). + +** Limitations on the use of the AltGr key. + +In some locale and OS combinations you can't generate M-AltGr-key or +C-M-AltGr-key sequences at all. + +To generate C-AltGr-key or C-M-AltGr-key sequences you must use the +right-hand Control key and you must press it *after* AltGr. + +These limitations arise from fundamental problems in the way that the +win32 API reports AltGr key events. There isn't anything that XEmacs +can do to work round these problems that it isn't already doing. + +You may want to create alternative bindings if any of the standard +XEmacs bindings require you to use some combination of Control or Meta +and AltGr. + + +* Features not fully supported in this release +============================================== +** Limited support for subprocesses + +Attempting to use call-process to run a 16bit program gives a +"Spawning child process: Exec format error". For example shell-command +fails under Windows 95 and 98 if you use command.com or any other +16bit program as your shell. + +XEmacs may incorrectly quote your call-process command if it contains +double quotes, backslashes or spaces. + +start-process and functions that rely on it are supported under Windows 95, +98 and NT. However, starting a 16bit program that requires keyboard input +may cause XEmacs to hang or crash under Windows 95 and 98, and will leave +the orphaned 16bit program consuming all available CPU time. + +Sending signals to subprocesses started by call-process or by +start-process fails with a "Cannot send signal to process" error under +Windows 95 and 98. As a side effect of this, quitting XEmacs while it +is still running subprocesses causes it to crash under Windows 95 and +98. + +** Changing fonts from the Options menu + +The "Font" and "Size" entries on the Options menu don't work yet. This +will be fixed in a future release. In the meantime, you can either +change face fonts with customize or manually; for example: + + (set-face-font 'default "Lucida Console:Regular:10::Western") + (set-face-font 'modeline "MS Sans Serif:Regular:10::Western") + +Font weight and style and character set must be supplied in English as +above. Common weights and styles are "Regular", "Regular Italic", +"Bold" and "Bold Italic". Common character sets are "Western", +"Central European" and "OEM/DOS". + +Windows 95 only comes with one fixed-width font that is suitable for +use by XEmacs, namely "Courier New". + +** No MULE support + +This release of XEmacs on Windows does not contain MULE support. MULE +support has not been a priority for the XEmacs on Windows developers. + +** Printing + +This release of XEmacs on Windows does not support printing natively. + +You can use the lpr-command and lpr-switches variables to specify an +external print program. + diff --git a/nt/tiff.mak b/nt/tiff.mak new file mode 100644 index 0000000..6fa8c10 --- /dev/null +++ b/nt/tiff.mak @@ -0,0 +1,156 @@ +# +# TIFF makefile for Microsoft nmake +# +!if !defined(DEBUG_XEMACS) +DEBUG_XEMACS=0 +!endif + +!if $(DEBUG_XEMACS) +OPT=-Od -Zi +!else +OPT=-O2 -G5 +!endif + +WARN_CPP_FLAGS = -W3 +CFLAGS=-nologo -DFOR_MSW $(WARN_CPP_FLAGS) $(OPT) -c + +OUTDIR=.\WinRel +OBJDIR=.\WinRel +# the following is because fax3sm.c references "tiff.h" and "tif_fax3.h", +# under the assumption that those header files are in the same directory +# as fax3sm.c But, since we're using a special fax3sm.c file, and we +# can't be sure the user has patch to change "xx" to "..\..\libtiff\xx", +# let's just copy these header files to this directory. (Symbolic links +# would be _so_ nice) +NEED_FOR_COMPILE= tiff.h tif_fax3.h + +CPP=cl.exe +CPP_PROJ= /GX /YX /I "." /I ".." /D "WIN32" /D "NDEBUG" /D\ + "_WINDOWS" /FR$(OBJDIR)/ /Fp$(OUTDIR)/"libtiff.pch" $(CFLAGS) + +BSC32=bscmake.exe +BSC32_FLAGS=/nologo /o$(OUTDIR)/libtiff.bsc + +LIB32=lib.exe +LIB32_FLAGS=/NOLOGO /OUT:$(OUTDIR)\libtiff.lib +DEF_FLAGS= +DEF_FILE= + +BSC32_SBRS= \ + $(OBJDIR)\tif_jpeg.sbr \ + $(OBJDIR)\tif_dirinfo.sbr \ + $(OBJDIR)\tif_win32.sbr \ + $(OBJDIR)\tif_flush.sbr \ + $(OBJDIR)\tif_thunder.sbr \ + $(OBJDIR)\tif_compress.sbr \ + $(OBJDIR)\tif_print.sbr \ + $(OBJDIR)\tif_dirread.sbr \ + $(OBJDIR)\tif_getimage.sbr \ + $(OBJDIR)\tif_fax3.sbr \ + $(OBJDIR)\tif_version.sbr \ + $(OBJDIR)\tif_codec.sbr \ + $(OBJDIR)\tif_dir.sbr \ + $(OBJDIR)\tif_predict.sbr \ + $(OBJDIR)\tif_close.sbr \ + $(OBJDIR)\tif_dumpmode.sbr \ + $(OBJDIR)\tif_aux.sbr \ + $(OBJDIR)\tif_error.sbr \ + $(OBJDIR)\tif_lzw.sbr \ + $(OBJDIR)\tif_zip.sbr \ + $(OBJDIR)\tif_read.sbr \ + $(OBJDIR)\tif_packbits.sbr \ + $(OBJDIR)\tif_swab.sbr \ + $(OBJDIR)\tif_dirwrite.sbr \ + $(OBJDIR)\tif_open.sbr \ + $(OBJDIR)\tif_warning.sbr \ + $(OBJDIR)\tif_tile.sbr \ + $(OBJDIR)\tif_strip.sbr \ + $(OBJDIR)\tif_next.sbr \ + $(OBJDIR)\tif_write.sbr \ + $(OBJDIR)\fax3sm.sbr + +LIB32_OBJS= \ + $(OBJDIR)\tif_jpeg.obj \ + $(OBJDIR)\tif_dirinfo.obj \ + $(OBJDIR)\tif_win32.obj \ + $(OBJDIR)\tif_flush.obj \ + $(OBJDIR)\tif_thunder.obj \ + $(OBJDIR)\tif_compress.obj \ + $(OBJDIR)\tif_print.obj \ + $(OBJDIR)\tif_dirread.obj \ + $(OBJDIR)\tif_getimage.obj \ + $(OBJDIR)\tif_fax3.obj \ + $(OBJDIR)\tif_version.obj \ + $(OBJDIR)\tif_codec.obj \ + $(OBJDIR)\tif_dir.obj \ + $(OBJDIR)\tif_predict.obj \ + $(OBJDIR)\tif_close.obj \ + $(OBJDIR)\tif_dumpmode.obj \ + $(OBJDIR)\tif_aux.obj \ + $(OBJDIR)\tif_error.obj \ + $(OBJDIR)\tif_lzw.obj \ + $(OBJDIR)\tif_zip.obj \ + $(OBJDIR)\tif_read.obj \ + $(OBJDIR)\tif_packbits.obj \ + $(OBJDIR)\tif_swab.obj \ + $(OBJDIR)\tif_dirwrite.obj \ + $(OBJDIR)\tif_open.obj \ + $(OBJDIR)\tif_warning.obj \ + $(OBJDIR)\tif_tile.obj \ + $(OBJDIR)\tif_strip.obj \ + $(OBJDIR)\tif_next.obj \ + $(OBJDIR)\tif_write.obj \ + $(OBJDIR)\fax3sm.obj + +# nmake rule + +.SUFFIXES: +.SUFFIXES: .c .obj + +{..\..\libtiff}.c{$(OBJDIR)}.obj: + $(CPP) $(CPP_PROJ) $< -Fo$@ + + +ALL : $(OUTDIR)/libtiff.lib $(OUTDIR)/libtiff.bsc + +clean : + -del tiff.h + -del tif_fax3.h + -del t4.h + -del tiffcomp.h + -del tiffconf.h + -del tiffio.h + -del ..\..\libtiff\libtiff.lib + -del *.pdb + -del $(OBJDIR)\*.obj + -del $(OBJDIR)\*.sbr + -del $(OUTDIR)\libtiff.lib + -del $(OUTDIR)\libtiff.bsc + -del $(OUTDIR)\libtiff.pch + -rmdir $(OUTDIR) + +tiff.h : + if not exist ./tiff.h copy ..\..\libtiff\tiff.h . +tif_fax3.h : + if not exist ./tif_fax3.h copy ..\..\libtiff\tif_fax3.h . + +$(OUTDIR) : $(NEED_FOR_COMPILE) + if not exist $(OUTDIR)/nul mkdir $(OUTDIR) + +$(OUTDIR)/libtiff.bsc : $(OUTDIR) $(BSC32_SBRS) + $(BSC32) @<< + $(BSC32_FLAGS) $(BSC32_SBRS) +<< + +$(OUTDIR)/libtiff.lib : $(OUTDIR) $(DEF_FILE) $(LIB32_OBJS) + $(LIB32) @<< + $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) +<< + copy $(OUTDIR)\libtiff.lib ..\..\libtiff\libtiff.lib + +DEP_FAX3S=\ + ..\..\libtiff\tiff.h \ + ..\..\libtiff\tif_fax3.h +$(OBJDIR)/fax3sm.obj : $(DEP_FAX3S) $(OBJDIR) + $(CPP) $(CPP_PROJ) .\fax3sm.c -Fo$@ + diff --git a/src/dgif_lib.c b/src/dgif_lib.c new file mode 100644 index 0000000..d56832d --- /dev/null +++ b/src/dgif_lib.c @@ -0,0 +1,965 @@ +/****************************************************************************** +* "Gif-Lib" - Yet another gif library. * +* * +* Written by: Gershon Elber IBM PC Ver 1.1, Aug. 1990 * +******************************************************************************* +* The kernel of the GIF Decoding process can be found here. * +******************************************************************************* +* History: * +* 16 Jun 89 - Version 1.0 by Gershon Elber. * +* 3 Sep 90 - Version 1.1 by Gershon Elber (Support for Gif89, Unique names). * +* 19 Feb 98 - Version 1.2 by Jareth Hein (Support for user specified I/O) * +******************************************************************************/ + +#ifdef __MSDOS__ +#include +#include +#include +#include +#else +#include +#include +#endif /* __MSDOS__ */ + +#include +#include +#include + +#ifdef HAVE_FCNTL_H +#include +#endif + +#include "gifrlib.h" + +#define PROGRAM_NAME "GIFLIB" + + +static void DGifGetWord(GifFileType *GifFile, int *Word); +static void DGifSetupDecompress(GifFileType *GifFile); +static void DGifDecompressLine(GifFileType *GifFile, GifPixelType *Line, + int LineLen); +static int DGifGetPrefixChar(unsigned int *Prefix, int Code, int ClearCode); +static void DGifDecompressInput(GifFileType *GifFile, int *Code); +static void DGifBufferedInput(GifFileType *GifFile, GifByteType *NextByte); + +/****************************************************************************** +* Open a new gif file for read, given by its name. * +* Returns GifFileType pointer dynamically allocated which serves as the gif * +* info record. * +******************************************************************************/ +void DGifOpenFileName(GifFileType *GifFile, const char *FileName) +{ + FILE *f; + + if ((f = fopen(FileName, +#ifdef __MSDOS__ + "rb" +#else + "r" +#endif /* __MSDOS__ */ + )) == NULL) + GifInternError(GifFile, D_GIF_ERR_OPEN_FAILED); + + GifStdIOInit(GifFile, f, -1); + DGifInitRead(GifFile); +} + +/****************************************************************************** +* Update a new gif file, given its file handle. * +* Returns GifFileType pointer dynamically allocated which serves as the gif * +* info record. * +******************************************************************************/ +void DGifOpenFileHandle(GifFileType *GifFile, int FileHandle) +{ + FILE *f; + +#ifdef __MSDOS__ + setmode(FileHandle, O_BINARY); /* Make sure it is in binary mode. */ + f = fdopen(FileHandle, "rb"); /* Make it into a stream: */ + setvbuf(f, NULL, _IOFBF, GIF_FILE_BUFFER_SIZE);/* And inc. stream buffer.*/ +#else + f = fdopen(FileHandle, "r"); /* Make it into a stream: */ +#endif /* __MSDOS__ */ + + GifStdIOInit(GifFile, f, -1); + DGifInitRead(GifFile); +} + +/****************************************************************************** +* Update a new gif file, given its file handle. * +* Returns GifFileType pointer dynamically allocated which serves as the gif * +* info record. _GifError is cleared if succesfull. * +******************************************************************************/ +void DGifInitRead(GifFileType *GifFile) +{ + GifByteType Buf[GIF_STAMP_LEN+1]; + GifFilePrivateType *Private; + + if ((Private = (GifFilePrivateType *) malloc(sizeof(GifFilePrivateType))) + == NULL) { + GifInternError(GifFile, D_GIF_ERR_NOT_ENOUGH_MEM); + } + memset(Private, '\0', sizeof(GifFilePrivateType)); + GifFile->Private = (VoidPtr) Private; + + Private->FileState = 0; /* Make sure bit 0 = 0 (File open for read). */ + + /* Lets see if this is a GIF file: */ + GifRead(Buf, GIF_STAMP_LEN, GifFile); + + /* The GIF Version number is ignored at this time. Maybe we should do */ + /* something more useful with it. */ + Buf[GIF_STAMP_LEN] = 0; + if (strncmp(GIF_STAMP, Buf, GIF_VERSION_POS) != 0) { + GifInternError(GifFile, D_GIF_ERR_NOT_GIF_FILE); + } + + DGifGetScreenDesc(GifFile); +} + +/****************************************************************************** +* This routine should be called before any other DGif calls. Note that * +* this routine is called automatically from DGif file open routines. * +******************************************************************************/ +void DGifGetScreenDesc(GifFileType *GifFile) +{ + int i, BitsPerPixel; + GifByteType Buf[3]; + GifFilePrivateType *Private = (GifFilePrivateType*) GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ + GifInternError(GifFile, D_GIF_ERR_NOT_READABLE); + } + + /* Put the screen descriptor into the file: */ + DGifGetWord(GifFile, &GifFile->SWidth); + DGifGetWord(GifFile, &GifFile->SHeight); + + GifRead(Buf, 3, GifFile); + GifFile->SColorResolution = (((Buf[0] & 0x70) + 1) >> 4) + 1; + BitsPerPixel = (Buf[0] & 0x07) + 1; + GifFile->SBackGroundColor = Buf[1]; + if (Buf[0] & 0x80) { /* Do we have global color map? */ + + GifFile->SColorMap = MakeMapObject(1 << BitsPerPixel, NULL); + + /* Get the global color map: */ + for (i = 0; i < GifFile->SColorMap->ColorCount; i++) { + GifRead(Buf, 3, GifFile); + GifFile->SColorMap->Colors[i].Red = Buf[0]; + GifFile->SColorMap->Colors[i].Green = Buf[1]; + GifFile->SColorMap->Colors[i].Blue = Buf[2]; + } + } else { + /* We should always have a colormap */ + GifFile->SColorMap = MakeMapObject(2, NULL); + GifFile->SColorMap->Colors[0].Red = 0; + GifFile->SColorMap->Colors[0].Green = 0; + GifFile->SColorMap->Colors[0].Blue = 0; + GifFile->SColorMap->Colors[1].Red = 0xff; + GifFile->SColorMap->Colors[1].Green = 0xff; + GifFile->SColorMap->Colors[1].Blue = 0xff; + } +} + +/****************************************************************************** +* This routine should be called before any attemp to read an image. * +******************************************************************************/ +void DGifGetRecordType(GifFileType *GifFile, GifRecordType *Type) +{ + GifByteType Buf; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ + GifInternError(GifFile, D_GIF_ERR_NOT_READABLE); + } + + GifRead(&Buf, 1, GifFile); + + switch (Buf) { + case ',': + *Type = IMAGE_DESC_RECORD_TYPE; + break; + case '!': + *Type = EXTENSION_RECORD_TYPE; + break; + case ';': + *Type = TERMINATE_RECORD_TYPE; + break; + default: + *Type = UNDEFINED_RECORD_TYPE; + GifInternError(GifFile, D_GIF_ERR_WRONG_RECORD); + } +} + +/****************************************************************************** +* This routine should be called before any attemp to read an image. * +* Note it is assumed the Image desc. header (',') has been read. * +******************************************************************************/ +void DGifGetImageDesc(GifFileType *GifFile) +{ + int i, BitsPerPixel; + GifByteType Buf[3]; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ + GifInternError(GifFile, D_GIF_ERR_NOT_READABLE); + } + + DGifGetWord(GifFile, &GifFile->Image.Left); + DGifGetWord(GifFile, &GifFile->Image.Top); + DGifGetWord(GifFile, &GifFile->Image.Width); + DGifGetWord(GifFile, &GifFile->Image.Height); + + GifRead(Buf, 1, GifFile); + BitsPerPixel = (Buf[0] & 0x07) + 1; + GifFile->Image.Interlace = (Buf[0] & 0x40); + if (Buf[0] & 0x80) { /* Does this image have local color map? */ + + if (GifFile->Image.ColorMap && GifFile->SavedImages == NULL) + FreeMapObject(GifFile->Image.ColorMap); + + GifFile->Image.ColorMap = MakeMapObject(1 << BitsPerPixel, NULL); + + /* Get the image local color map: */ + for (i = 0; i < GifFile->Image.ColorMap->ColorCount; i++) { + GifRead(Buf, 3, GifFile); + GifFile->Image.ColorMap->Colors[i].Red = Buf[0]; + GifFile->Image.ColorMap->Colors[i].Green = Buf[1]; + GifFile->Image.ColorMap->Colors[i].Blue = Buf[2]; + } + } + + if (GifFile->SavedImages) { + SavedImage *sp; + + if ((GifFile->SavedImages = (SavedImage *)realloc(GifFile->SavedImages, + sizeof(SavedImage) * (GifFile->ImageCount + 1))) == NULL) { + GifInternError(GifFile, D_GIF_ERR_NOT_ENOUGH_MEM); + } + + sp = &GifFile->SavedImages[GifFile->ImageCount]; + memcpy(&sp->ImageDesc, &GifFile->Image, sizeof(GifImageDesc)); + if (GifFile->Image.ColorMap) + { + sp->ImageDesc.ColorMap = + MakeMapObject (GifFile->Image.ColorMap->ColorCount, + GifFile->Image.ColorMap->Colors); + } + sp->RasterBits = (GifPixelType *)NULL; + sp->ExtensionBlockCount = 0; + sp->ExtensionBlocks = (ExtensionBlock *)NULL; + } + + GifFile->ImageCount++; + + Private->PixelCount = (long) GifFile->Image.Width * + (long) GifFile->Image.Height; + + DGifSetupDecompress(GifFile); /* Reset decompress algorithm parameters. */ +} + +/****************************************************************************** +* Get one full scanned line (Line) of length LineLen from GIF file. * +******************************************************************************/ +void DGifGetLine(GifFileType *GifFile, GifPixelType *Line, int LineLen) +{ + GifByteType *Dummy; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ + GifInternError(GifFile, D_GIF_ERR_NOT_READABLE); + } + + if (!LineLen) LineLen = GifFile->Image.Width; + +#if defined(__MSDOS__) || defined(__GNUC__) + if ((Private->PixelCount -= LineLen) > 0xffff0000UL) +#else + if ((Private->PixelCount -= LineLen) > 0xffff0000) +#endif /* __MSDOS__ */ + { + GifInternError(GifFile, D_GIF_ERR_DATA_TOO_BIG); + } + + DGifDecompressLine(GifFile, Line, LineLen); + if (Private->PixelCount == 0) { + /* We probably would not be called any more, so lets clean */ + /* everything before we return: need to flush out all rest of */ + /* image until empty block (size 0) detected. We use GetCodeNext.*/ + do + DGifGetCodeNext(GifFile, &Dummy); + while (Dummy != NULL); + } +} + +/****************************************************************************** +* Put one pixel (Pixel) into GIF file. * +******************************************************************************/ +void DGifGetPixel(GifFileType *GifFile, GifPixelType Pixel) +{ + GifByteType *Dummy; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ + GifInternError(GifFile, D_GIF_ERR_NOT_READABLE); + } + +#if defined(__MSDOS__) || defined(__GNUC__) + if (--Private->PixelCount > 0xffff0000UL) +#else + if (--Private->PixelCount > 0xffff0000) +#endif /* __MSDOS__ */ + { + GifInternError(GifFile, D_GIF_ERR_DATA_TOO_BIG); + } + + DGifDecompressLine(GifFile, &Pixel, 1); + if (Private->PixelCount == 0) { + /* We probably would not be called any more, so lets clean */ + /* everything before we return: need to flush out all rest of */ + /* image until empty block (size 0) detected. We use GetCodeNext.*/ + do + DGifGetCodeNext(GifFile, &Dummy); + while (Dummy != NULL); + } +} + +/****************************************************************************** +* Get an extension block (see GIF manual) from gif file. This routine only * +* returns the first data block, and DGifGetExtensionNext shouldbe called * +* after this one until NULL extension is returned. * +* The Extension should NOT be freed by the user (not dynamically allocated).* +* Note it is assumed the Extension desc. header ('!') has been read. * +******************************************************************************/ +void DGifGetExtension(GifFileType *GifFile, int *ExtCode, + GifByteType **Extension) +{ + GifByteType Buf; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ + GifInternError(GifFile, D_GIF_ERR_NOT_READABLE); + } + + GifRead(&Buf, 1, GifFile); + *ExtCode = Buf; + + DGifGetExtensionNext(GifFile, Extension); +} + +/****************************************************************************** +* Get a following extension block (see GIF manual) from gif file. This * +* routine sould be called until NULL Extension is returned. * +* The Extension should NOT be freed by the user (not dynamically allocated).* +******************************************************************************/ +void DGifGetExtensionNext(GifFileType *GifFile, GifByteType **Extension) +{ + GifByteType Buf; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + GifRead(&Buf, 1, GifFile); + if (Buf > 0) { + *Extension = Private->Buf; /* Use private unused buffer. */ + (*Extension)[0] = Buf; /* Pascal strings notation (pos. 0 is len.). */ + GifRead(&((*Extension)[1]), Buf, GifFile); + } + else + *Extension = NULL; +} + +/****************************************************************************** +* This routine should be called second to last, to close the GIF file. * +******************************************************************************/ +int DGifCloseFile(GifFileType *GifFile) +{ + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + + if (GifFile == NULL) return -1; + + if (!IS_READABLE(Private)) + { + /* This file was NOT open for reading: */ + GifInternError(GifFile, D_GIF_ERR_NOT_READABLE); + } + + if (GifClose (GifFile)) + { + GifInternError(GifFile, D_GIF_ERR_CLOSE_FAILED); + } + return 0; +} + +/****************************************************************************** +* Get 2 bytes (word) from the given file: * +******************************************************************************/ +static void DGifGetWord(GifFileType *GifFile, int *Word) +{ + unsigned char c[2]; + + GifRead(c, 2, GifFile); + + *Word = (((unsigned int) c[1]) << 8) + c[0]; +} + +/****************************************************************************** +* Get the image code in compressed form. his routine can be called if the * +* information needed to be piped out as is. Obviously this is much faster * +* than decoding and encoding again. This routine should be followed by calls * +* to DGifGetCodeNext, until NULL block is returned. * +* The block should NOT be freed by the user (not dynamically allocated). * +******************************************************************************/ +void DGifGetCode(GifFileType *GifFile, int *CodeSize, GifByteType **CodeBlock) +{ + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ + GifInternError(GifFile, D_GIF_ERR_NOT_READABLE); + } + + *CodeSize = Private->BitsPerPixel; + + DGifGetCodeNext(GifFile, CodeBlock); +} + +/****************************************************************************** +* Continue to get the image code in compressed form. This routine should be * +* called until NULL block is returned. * +* The block should NOT be freed by the user (not dynamically allocated). * +******************************************************************************/ +void DGifGetCodeNext(GifFileType *GifFile, GifByteType **CodeBlock) +{ + GifByteType Buf; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + GifRead(&Buf, 1, GifFile); + + if (Buf > 0) { + *CodeBlock = Private->Buf; /* Use private unused buffer. */ + (*CodeBlock)[0] = Buf; /* Pascal strings notation (pos. 0 is len.). */ + GifRead(&((*CodeBlock)[1]), Buf, GifFile); + } + else { + *CodeBlock = NULL; + Private->Buf[0] = 0; /* Make sure the buffer is empty! */ + Private->PixelCount = 0; /* And local info. indicate image read. */ + } + +} + +/****************************************************************************** +* Setup the LZ decompression for this image: * +******************************************************************************/ +static void DGifSetupDecompress(GifFileType *GifFile) +{ + int i, BitsPerPixel; + GifByteType CodeSize; + unsigned int *Prefix; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + GifRead(&CodeSize, 1, GifFile); /* Read Code size from file. */ + BitsPerPixel = CodeSize; + + Private->Buf[0] = 0; /* Input Buffer empty. */ + Private->BitsPerPixel = BitsPerPixel; + Private->ClearCode = (1 << BitsPerPixel); + Private->EOFCode = Private->ClearCode + 1; + Private->RunningCode = Private->EOFCode + 1; + Private->RunningBits = BitsPerPixel + 1; /* Number of bits per code. */ + Private->MaxCode1 = 1 << Private->RunningBits; /* Max. code + 1. */ + Private->StackPtr = 0; /* No pixels on the pixel stack. */ + Private->LastCode = NO_SUCH_CODE; + Private->CrntShiftState = 0; /* No information in CrntShiftDWord. */ + Private->CrntShiftDWord = 0; + + Prefix = Private->Prefix; + for (i = 0; i <= LZ_MAX_CODE; i++) Prefix[i] = NO_SUCH_CODE; +} + +/****************************************************************************** +* The LZ decompression routine: * +* This version decompress the given gif file into Line of length LineLen. * +* This routine can be called few times (one per scan line, for example), in * +* order the complete the whole image. * +******************************************************************************/ +static void DGifDecompressLine(GifFileType *GifFile, GifPixelType *Line, + int LineLen) +{ + int i = 0, j, CrntCode, EOFCode, ClearCode, CrntPrefix, LastCode, StackPtr; + GifByteType *Stack, *Suffix; + unsigned int *Prefix; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + StackPtr = Private->StackPtr; + Prefix = Private->Prefix; + Suffix = Private->Suffix; + Stack = Private->Stack; + EOFCode = Private->EOFCode; + ClearCode = Private->ClearCode; + LastCode = Private->LastCode; + + CrntPrefix = 0; + if (StackPtr != 0) { + /* Let pop the stack off before continueing to read the gif file: */ + while (StackPtr != 0 && i < LineLen) Line[i++] = Stack[--StackPtr]; + } + + while (i < LineLen) { /* Decode LineLen items. */ + DGifDecompressInput(GifFile, &CrntCode); + + if (CrntCode == EOFCode) { + /* Note however that usually we will not be here as we will stop */ + /* decoding as soon as we got all the pixel, or EOF code will */ + /* not be read at all, and DGifGetLine/Pixel clean everything. */ + if (i != LineLen - 1 || Private->PixelCount != 0) { + GifInternError(GifFile, D_GIF_ERR_EOF_TOO_SOON); + } + i++; + } + else if (CrntCode == ClearCode) { + /* We need to start over again: */ + for (j = 0; j <= LZ_MAX_CODE; j++) Prefix[j] = NO_SUCH_CODE; + Private->RunningCode = Private->EOFCode + 1; + Private->RunningBits = Private->BitsPerPixel + 1; + Private->MaxCode1 = 1 << Private->RunningBits; + LastCode = Private->LastCode = NO_SUCH_CODE; + } + else { + /* Its regular code - if in pixel range simply add it to output */ + /* stream, otherwise trace to codes linked list until the prefix */ + /* is in pixel range: */ + if (CrntCode < ClearCode) { + /* This is simple - its pixel scalar, so add it to output: */ + Line[i++] = CrntCode; + } + else { + /* Its a code to needed to be traced: trace the linked list */ + /* until the prefix is a pixel, while pushing the suffix */ + /* pixels on our stack. If we done, pop the stack in reverse */ + /* (thats what stack is good for!) order to output. */ + if (Prefix[CrntCode] == NO_SUCH_CODE) { + /* Only allowed if CrntCode is exactly the running code: */ + /* In that case CrntCode = XXXCode, CrntCode or the */ + /* prefix code is last code and the suffix char is */ + /* exactly the prefix of last code! */ + if (CrntCode == Private->RunningCode - 2) { + CrntPrefix = LastCode; + Suffix[Private->RunningCode - 2] = + Stack[StackPtr++] = DGifGetPrefixChar(Prefix, + LastCode, ClearCode); + } + else { + GifInternError(GifFile, D_GIF_ERR_IMAGE_DEFECT); + } + } + else + CrntPrefix = CrntCode; + + /* Now (if image is O.K.) we should not get an NO_SUCH_CODE */ + /* During the trace. As we might loop forever, in case of */ + /* defective image, we count the number of loops we trace */ + /* and stop if we got LZ_MAX_CODE. obviously we can not */ + /* loop more than that. */ + j = 0; + while (j++ <= LZ_MAX_CODE && + CrntPrefix > ClearCode && + CrntPrefix <= LZ_MAX_CODE) { + Stack[StackPtr++] = Suffix[CrntPrefix]; + CrntPrefix = Prefix[CrntPrefix]; + } + if (j >= LZ_MAX_CODE || CrntPrefix > LZ_MAX_CODE) { + GifInternError(GifFile, D_GIF_ERR_IMAGE_DEFECT); + } + /* Push the last character on stack: */ + Stack[StackPtr++] = CrntPrefix; + + /* Now lets pop all the stack into output: */ + while (StackPtr != 0 && i < LineLen) + Line[i++] = Stack[--StackPtr]; + } + if (LastCode != NO_SUCH_CODE) { + Prefix[Private->RunningCode - 2] = LastCode; + + if (CrntCode == Private->RunningCode - 2) { + /* Only allowed if CrntCode is exactly the running code: */ + /* In that case CrntCode = XXXCode, CrntCode or the */ + /* prefix code is last code and the suffix char is */ + /* exactly the prefix of last code! */ + Suffix[Private->RunningCode - 2] = + DGifGetPrefixChar(Prefix, LastCode, ClearCode); + } + else { + Suffix[Private->RunningCode - 2] = + DGifGetPrefixChar(Prefix, CrntCode, ClearCode); + } + } + LastCode = CrntCode; + } + } + + Private->LastCode = LastCode; + Private->StackPtr = StackPtr; +} + +/****************************************************************************** +* Routine to trace the Prefixes linked list until we get a prefix which is * +* not code, but a pixel value (less than ClearCode). Returns that pixel value.* +* If image is defective, we might loop here forever, so we limit the loops to * +* the maximum possible if image O.k. - LZ_MAX_CODE times. * +******************************************************************************/ +static int DGifGetPrefixChar(unsigned int *Prefix, int Code, int ClearCode) +{ + int i = 0; + + while (Code > ClearCode && i++ <= LZ_MAX_CODE) Code = Prefix[Code]; + return Code; +} + +/****************************************************************************** +* Interface for accessing the LZ codes directly. Set Code to the real code * +* (12bits), or to -1 if EOF code is returned. * +******************************************************************************/ +void DGifGetLZCodes(GifFileType *GifFile, int *Code) +{ + GifByteType *CodeBlock; + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ + GifInternError(GifFile, D_GIF_ERR_NOT_READABLE); + } + + DGifDecompressInput(GifFile, Code); + + if (*Code == Private->EOFCode) { + /* Skip rest of codes (hopefully only NULL terminating block): */ + do + DGifGetCodeNext(GifFile, &CodeBlock); + while (CodeBlock != NULL); + + *Code = -1; + } + else if (*Code == Private->ClearCode) { + /* We need to start over again: */ + Private->RunningCode = Private->EOFCode + 1; + Private->RunningBits = Private->BitsPerPixel + 1; + Private->MaxCode1 = 1 << Private->RunningBits; + } +} + +/****************************************************************************** +* The LZ decompression input routine: * +* This routine is responsable for the decompression of the bit stream from * +* 8 bits (bytes) packets, into the real codes. * +* Returns GIF_OK if read succesfully. * +******************************************************************************/ +static void DGifDecompressInput(GifFileType *GifFile, int *Code) +{ + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + GifByteType NextByte; + static unsigned int CodeMasks[] = { + 0x0000, 0x0001, 0x0003, 0x0007, + 0x000f, 0x001f, 0x003f, 0x007f, + 0x00ff, 0x01ff, 0x03ff, 0x07ff, + 0x0fff + }; + + while (Private->CrntShiftState < Private->RunningBits) { + /* Needs to get more bytes from input stream for next code: */ + DGifBufferedInput(GifFile, &NextByte); + Private->CrntShiftDWord |= + ((unsigned long) NextByte) << Private->CrntShiftState; + Private->CrntShiftState += 8; + } + *Code = Private->CrntShiftDWord & CodeMasks[Private->RunningBits]; + + Private->CrntShiftDWord >>= Private->RunningBits; + Private->CrntShiftState -= Private->RunningBits; + + /* If code cannt fit into RunningBits bits, must raise its size. Note */ + /* however that codes above 4095 are used for special signaling. */ + if (++Private->RunningCode > Private->MaxCode1 && + Private->RunningBits < LZ_BITS) { + Private->MaxCode1 <<= 1; + Private->RunningBits++; + } +} + +/****************************************************************************** +* This routines read one gif data block at a time and buffers it internally * +* so that the decompression routine could access it. * +* The routine returns the next byte from its internal buffer (or read next * +* block in if buffer empty) * +******************************************************************************/ +static void DGifBufferedInput(GifFileType *GifFile, GifByteType *NextByte) +{ + GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; + GifByteType *Buf = Private->Buf; + + if (Buf[0] == 0) { + /* Needs to read the next buffer - this one is empty: */ + GifRead(Buf, 1, GifFile); + GifRead((Buf + 1), Buf[0], GifFile); + *NextByte = Buf[1]; + Buf[1] = 2; /* We use now the second place as last char read! */ + Buf[0]--; + } + else { + *NextByte = Buf[Buf[1]++]; + Buf[0]--; + } +} + +/****************************************************************************** +* This routine reads an entire GIF into core, hanging all its state info off * +* the GifFileType pointer. Call DGifOpenFileName() or DGifOpenFileHandle() * +* first to initialize I/O. Its inverse is EGifSpew(). * +******************************************************************************/ +void DGifSlurp(GifFileType *GifFile) +{ + int ImageSize; + GifRecordType RecordType; + SavedImage *sp; + GifByteType *ExtData; + + /* Some versions of malloc dislike 0-length requests */ + GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage)); + memset(GifFile->SavedImages, 0, sizeof(SavedImage)); + sp = &GifFile->SavedImages[0]; + + do { + DGifGetRecordType(GifFile, &RecordType); + + switch (RecordType) { + case IMAGE_DESC_RECORD_TYPE: + DGifGetImageDesc(GifFile); + + sp = &GifFile->SavedImages[GifFile->ImageCount-1]; + ImageSize = sp->ImageDesc.Width * sp->ImageDesc.Height; + + sp->RasterBits + = (GifPixelType*) malloc(ImageSize * sizeof(GifPixelType)); + + DGifGetLine(GifFile, sp->RasterBits, ImageSize); + break; + + case EXTENSION_RECORD_TYPE: + DGifGetExtension(GifFile,&sp->Function,&ExtData); + + do { + 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: + break; + + default: /* Should be trapped by DGifGetRecordType */ + break; + } + } while (RecordType != TERMINATE_RECORD_TYPE); +} + +/****************************************************************************** +* Extension record functions * +******************************************************************************/ + +void MakeExtension(SavedImage *New, int Function) +{ + New->Function = Function; + /* + * Someday we might have to deal with multiple extensions. + */ +} + +int AddExtensionBlock(SavedImage *New, int Len, GifByteType *data) +{ + int size; + ExtensionBlock *ep; + + if (New->ExtensionBlocks == NULL) + New->ExtensionBlocks = (ExtensionBlock *)malloc(sizeof(ExtensionBlock)); + else + New->ExtensionBlocks = + (ExtensionBlock *)realloc(New->ExtensionBlocks, + sizeof(ExtensionBlock) * (New->ExtensionBlockCount + 1)); + + if (New->ExtensionBlocks == NULL) + return(GIF_ERROR); + + ep = &New->ExtensionBlocks[New->ExtensionBlockCount++]; + ep->ByteCount = Len; + size = Len * sizeof(GifByteType); + ep->Bytes = (GifByteType *)malloc(size); + memcpy(ep->Bytes, data, size); + return(GIF_OK); +} + +void FreeExtension(SavedImage *Image) +{ + ExtensionBlock *ep; + + for (ep = Image->ExtensionBlocks; + ep < Image->ExtensionBlocks + Image->ExtensionBlockCount; + ep++) + (void) free((char *)ep->Bytes); + free((char *)Image->ExtensionBlocks); + Image->ExtensionBlocks = NULL; +} + +/****************************************************************************** +* Image block allocation functions * +******************************************************************************/ +SavedImage *MakeSavedImage(GifFileType *GifFile, SavedImage *CopyFrom) +/* + * Append an image block to the SavedImages array + */ +{ + SavedImage *sp; + + if (GifFile->SavedImages == NULL) + GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage)); + else + GifFile->SavedImages = (SavedImage *)realloc(GifFile->SavedImages, + sizeof(SavedImage) * (GifFile->ImageCount+1)); + + if (GifFile->SavedImages == NULL) + return((SavedImage *)NULL); + else + { + sp = &GifFile->SavedImages[GifFile->ImageCount++]; + memset((char *)sp, '\0', sizeof(SavedImage)); + + if (CopyFrom) + { + memcpy((char *)sp, CopyFrom, sizeof(SavedImage)); + + /* + * Make our own allocated copies of the heap fields in the + * copied record. This guards against potential aliasing + * problems. + */ + + /* first, the local color map */ + if (sp->ImageDesc.ColorMap) + sp->ImageDesc.ColorMap = + MakeMapObject(CopyFrom->ImageDesc.ColorMap->ColorCount, + CopyFrom->ImageDesc.ColorMap->Colors); + + /* next, the raster */ + sp->RasterBits = (char *)malloc(sizeof(GifPixelType) + * CopyFrom->ImageDesc.Height + * CopyFrom->ImageDesc.Width); + memcpy(sp->RasterBits, + CopyFrom->RasterBits, + sizeof(GifPixelType) + * CopyFrom->ImageDesc.Height + * CopyFrom->ImageDesc.Width); + + /* finally, the extension blocks */ + if (sp->ExtensionBlocks) + { + sp->ExtensionBlocks + = (ExtensionBlock*)malloc(sizeof(ExtensionBlock) + * CopyFrom->ExtensionBlockCount); + memcpy(sp->ExtensionBlocks, + CopyFrom->ExtensionBlocks, + sizeof(ExtensionBlock) + * CopyFrom->ExtensionBlockCount); + + /* + * For the moment, the actual blocks can take their + * chances with free(). We'll fix this later. + */ + } + } + + return(sp); + } +} + +void FreeSavedImages(GifFileType *GifFile) +{ + SavedImage *sp; + + for (sp = GifFile->SavedImages; + sp < GifFile->SavedImages + GifFile->ImageCount; + sp++) + { + if (sp->ImageDesc.ColorMap) + FreeMapObject(sp->ImageDesc.ColorMap); + + if (sp->RasterBits) + free((char *)sp->RasterBits); + + if (sp->ExtensionBlocks) + FreeExtension(sp); + } + free((char *) GifFile->SavedImages); +} + +/****************************************************************************** +* Miscellaneous utility functions * +******************************************************************************/ + +int BitSize(int n) +/* return smallest bitfield size n will fit in */ +{ + register int i; + + for (i = 1; i <= 8; i++) + if ((1 << i) >= n) + break; + return(i); +} + +/****************************************************************************** +* Color map object functions * +******************************************************************************/ + +ColorMapObject *MakeMapObject(int ColorCount, GifColorType *ColorMap) +/* + * Allocate a color map of given size; initialize with contents of + * ColorMap if that pointer is non-NULL. + */ +{ + ColorMapObject *Object; + + if (ColorCount != (1 << BitSize(ColorCount))) + return((ColorMapObject *)NULL); + + Object = (ColorMapObject *)malloc(sizeof(ColorMapObject)); + if (Object == (ColorMapObject *)NULL) + return((ColorMapObject *)NULL); + + Object->Colors = (GifColorType *)calloc(ColorCount, sizeof(GifColorType)); + if (Object->Colors == (GifColorType *)NULL) + return((ColorMapObject *)NULL); + + Object->ColorCount = ColorCount; + Object->BitsPerPixel = BitSize(ColorCount); + + if (ColorMap) + memcpy((char *)Object->Colors, + (char *)ColorMap, ColorCount * sizeof(GifColorType)); + + return(Object); +} + +void FreeMapObject(ColorMapObject *Object) +/* + * Free a color map object + */ +{ + free(Object->Colors); + free(Object); +} diff --git a/version.sh b/version.sh index 5778428..427ce47 100644 --- a/version.sh +++ b/version.sh @@ -1,8 +1,8 @@ #!/bin/sh emacs_major_version=21 emacs_minor_version=2 -emacs_beta_version=1 -xemacs_codename="Aeolus" +emacs_beta_version=2 +xemacs_codename="Aether" infodock_major_version=4 infodock_minor_version=0 infodock_build_version=1