ftp://ftp.linux.ncsu.edu/mirror/ftp.redhat.com/pub/redhat/linux/enterprise/4/en/os...
authorZygo Blaxell <zblaxell@hungrycats.org>
Mon, 2 Mar 2009 05:43:22 +0000 (00:43 -0500)
committerZygo Blaxell <zblaxell@faye.furryterror.org>
Fri, 8 Feb 2013 17:54:15 +0000 (12:54 -0500)
-rw-r--r-- 1 zblaxell zblaxell 4271312 Feb 27 12:21 xscreensaver-4.18-5.rhel4.2.src.rpm
9f48ac2504ac26a64982fb46c395b7634014b727  xscreensaver-4.18-5.rhel4.2.src.rpm

xscreensaver-4.18.tar.gz
-rw-rw-r-- 2 zblaxell zblaxell 4252004 Aug 31  2004 xscreensaver-4.18.tar.gz
8f7fdf53dbcc3cc96c5d9d4165c66289859d80c5  xscreensaver-4.18.tar.gz

179 files changed:
Makefile.in
README
configure
configure.in
driver/Makefile.in
driver/XScreenSaver.ad.in
driver/XScreenSaver_ad.h
driver/demo-Gtk.c
driver/lock.c
driver/remote.c
driver/test-randr.c
driver/test-vp.c
driver/timers.c
driver/windows.c
driver/xscreensaver-command.c
driver/xscreensaver-command.man
driver/xscreensaver-demo.glade2
driver/xscreensaver-demo.man
driver/xscreensaver-getimage-file
driver/xscreensaver-getimage-file.man
driver/xscreensaver-getimage-video.man
driver/xscreensaver-getimage.c
driver/xscreensaver-getimage.man
driver/xscreensaver.c
driver/xscreensaver.h
driver/xscreensaver.man
driver/xset.c
hacks/Makefile.in
hacks/analogtv.c
hacks/anemotaxis.c [new file with mode: 0644]
hacks/anemotaxis.man [new file with mode: 0644]
hacks/ant.c
hacks/apollonian.c
hacks/apple2.c
hacks/barcode.c
hacks/compile_axp.com
hacks/compile_decc.com
hacks/config/README
hacks/config/anemotaxis.xml [new file with mode: 0644]
hacks/config/attraction.xml
hacks/config/blinkbox.xml
hacks/config/bouncingcow.xml
hacks/config/boxed.xml
hacks/config/bubble3d.xml
hacks/config/cosmos.xml
hacks/config/cubenetic.xml
hacks/config/engine.xml
hacks/config/flow.xml
hacks/config/fuzzyflakes.xml
hacks/config/glforestfire.xml
hacks/config/glplanet.xml
hacks/config/gltext.xml
hacks/config/goop.xml
hacks/config/lament.xml
hacks/config/lavalite.xml
hacks/config/memscroller.xml [new file with mode: 0644]
hacks/config/sballs.xml
hacks/crystal.c
hacks/demon.c
hacks/drift.c
hacks/euler2d.c
hacks/flow.man
hacks/fuzzyflakes.c
hacks/fuzzyflakes.man
hacks/galaxy.c
hacks/glx/Makefile.in
hacks/glx/antinspect.c
hacks/glx/atlantis.c
hacks/glx/atlantis.h
hacks/glx/atunnel.c
hacks/glx/atunnel.man
hacks/glx/b_lockglue.c
hacks/glx/blinkbox.c
hacks/glx/blocktube.c
hacks/glx/bouncingcow.c
hacks/glx/boxed.c
hacks/glx/bubble3d.h
hacks/glx/bubble3d.man
hacks/glx/cage.c
hacks/glx/circuit.c
hacks/glx/cubenetic.c
hacks/glx/dangerball.c
hacks/glx/endgame.c
hacks/glx/engine.c
hacks/glx/extrusion.c
hacks/glx/flipflop.c
hacks/glx/flipscreen3d.c
hacks/glx/flurry.c
hacks/glx/flyingtoasters.c
hacks/glx/gears.c
hacks/glx/gflux.c
hacks/glx/gleidescope.c
hacks/glx/glforestfire.c
hacks/glx/glplanet.c
hacks/glx/glslideshow.c
hacks/glx/glsnake.c
hacks/glx/gltext.c
hacks/glx/glut_stroke.c
hacks/glx/glut_swidth.c
hacks/glx/grab-ximage.c
hacks/glx/grab-ximage.h
hacks/glx/hypertorus.c
hacks/glx/jigglypuff.c
hacks/glx/klein.c
hacks/glx/lament.c
hacks/glx/lament.man
hacks/glx/lavalite.c
hacks/glx/lavalite.man
hacks/glx/menger.c
hacks/glx/mirrorblob.c
hacks/glx/moebius.c
hacks/glx/molecule.c
hacks/glx/morph3d.c
hacks/glx/pipes.c
hacks/glx/polyhedra-gl.c
hacks/glx/polyhedra.c
hacks/glx/polytopes.c
hacks/glx/providence.c
hacks/glx/pulsar.c
hacks/glx/queens.c
hacks/glx/rubik.c
hacks/glx/sballs.c
hacks/glx/sballs.man
hacks/glx/shark.c
hacks/glx/sierpinski3d.c
hacks/glx/starwars.c
hacks/glx/superquadrics.c
hacks/glx/swim.c
hacks/glx/tunnel_draw.c
hacks/glx/tunnel_draw.h
hacks/glx/whale.c
hacks/glx/xpm-ximage.c
hacks/grav.c
hacks/hopalong.c
hacks/images/pacman/ghost-d1.xpm [new file with mode: 0644]
hacks/images/pacman/ghost-d2.xpm [new file with mode: 0644]
hacks/images/pacman/ghost-l1.xpm [new file with mode: 0644]
hacks/images/pacman/ghost-l2.xpm [new file with mode: 0644]
hacks/images/pacman/ghost-mask.xpm [new file with mode: 0644]
hacks/images/pacman/ghost-r1.xpm [new file with mode: 0644]
hacks/images/pacman/ghost-r2.xpm [new file with mode: 0644]
hacks/images/pacman/ghost-u1.xpm [new file with mode: 0644]
hacks/images/pacman/ghost-u2.xpm [new file with mode: 0644]
hacks/images/tunnel3.xpm [new file with mode: 0644]
hacks/images/tunnel4.xpm [new file with mode: 0644]
hacks/images/tunnel5.xpm [new file with mode: 0644]
hacks/juggle.c
hacks/julia.c
hacks/lisa.c
hacks/loop.c
hacks/memscroller.c [new file with mode: 0644]
hacks/memscroller.man [new file with mode: 0644]
hacks/pacman.c
hacks/pacman.h
hacks/pacman_ai.c [new file with mode: 0644]
hacks/pacman_ai.h
hacks/pacman_level.c [new file with mode: 0644]
hacks/pacman_level.h
hacks/penrose.c
hacks/polyominoes.c
hacks/screenhack.c
hacks/spotlight.c
hacks/vidwhacker
hacks/webcollage
hacks/webcollage-helper.c
hacks/xlockmore.c
po/Makefile.in.in
po/POTFILES.in
po/fr.po
setup.com
utils/grabclient.c
utils/grabscreen.c
utils/grabscreen.h
utils/overlay.c
utils/version.h
utils/vroot.h
utils/xmu.c
xscreensaver.lsm
xscreensaver.spec

index 58bf11dbb076cc72d611ac4af02d894b65379480..e085de53a6fd9cefb244db1a1ad7aa3cc1a14480 100644 (file)
@@ -283,7 +283,7 @@ www::
   TMP=/tmp/xd.$$$$ ;                                                       \
   sed "s/xscreensaver-[0-9]\.[0-9][0-9]*/$$HEAD/g" download.html > $$TMP ;  \
   echo '' ;                                                                \
   TMP=/tmp/xd.$$$$ ;                                                       \
   sed "s/xscreensaver-[0-9]\.[0-9][0-9]*/$$HEAD/g" download.html > $$TMP ;  \
   echo '' ;                                                                \
-  diff -u0 download.html $$TMP ;                                           \
+  diff -U0 download.html $$TMP ;                                           \
   echo '' ;                                                                \
                                                                            \
   OLDEST=`ls xscreensaver*.tar.gz | head -1` ;                             \
   echo '' ;                                                                \
                                                                            \
   OLDEST=`ls xscreensaver*.tar.gz | head -1` ;                             \
@@ -301,7 +301,7 @@ www::
   rm -f $$TMP ;                                                                    \
                                                                            \
   (cd ..; $(MAKE) xscreensaver/changelog.html );                           \
   rm -f $$TMP ;                                                                    \
                                                                            \
   (cd ..; $(MAKE) xscreensaver/changelog.html );                           \
-  cvs diff -u0 changelog.html ;                                                    \
+  cvs diff -U0 changelog.html ;                                                    \
   set +x ;                                                                 \
                                                                            \
   echo -n "Ok? ";                                                          \
   set +x ;                                                                 \
                                                                            \
   echo -n "Ok? ";                                                          \
diff --git a/README b/README
index b13f1b74b3a831caca7c79f65e297d7c185ca174..699f29ca41132ef7b29e40a6170b416313c2c8d7 100644 (file)
--- a/README
+++ b/README
@@ -76,6 +76,25 @@ the XScreenSaver FAQ about that: http://www.jwz.org/xscreensaver/faq.html
 
                               ============
 
 
                               ============
 
+Changes since 4.17:   * Oops, pay no attention to the man behind the curtain.
+Changes since 4.16:   * New hacks, `anemotaxis' and `memscroller'.
+                      * Fixed a bad bug that caused `vidwhacker' to never die.
+                      * Fixed normals and lighting in `polyhedra'.
+                      * Don't reuse the window when changing hacks (to work
+                        around bugs in some GL implementations.)
+                      * Made `xscreensaver-getimage-file' skip thumbnail-sized
+                        images.
+                      * Fixed endian problem in `barcode' on non-x86.
+                      * Updates to `webcollage', `apple2', `fuzzyflakes',
+                        `atunnel', and `pacman'.
+                      * Timing tweaks to `bubble3d', `bouncingcow', `engine',
+                        `gltext', `lavalite', `molecule', `spotlight', 
+                        `sballs', `boxed', `blinkbox', and `circuit'.
+                      * Configure updates for Fedora core 2 / xorg 6.7.0.
+                      * Compile without warnings under gcc 3.3.3.
+                      * I give up: don't blank or lock the screen if we can't
+                        get a keyboard grab.  In that case, both choices are
+                        bad.
 Changes since 4.15:   * New hacks, `polyhedra', `fuzzyflakes', `antinspect',
                         and `providence'.
                       * Minor updates to `webcollage', `bsod', `endgame',
 Changes since 4.15:   * New hacks, `polyhedra', `fuzzyflakes', `antinspect',
                         and `providence'.
                       * Minor updates to `webcollage', `bsod', `endgame',
index c62fcae96235ff6b48fcdb73c689352c117785cd..ea00c0dde750fe22f2cc24a4af97e5b579fdad96 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,9 +1,8 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.57.
+# Generated by GNU Autoconf 2.59.
 #
 #
-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-# Free Software Foundation, Inc.
+# Copyright (C) 2003 Free Software Foundation, Inc.
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
 ## --------------------- ##
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
 ## --------------------- ##
@@ -20,9 +19,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
 elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
   set -o posix
 fi
 elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
   set -o posix
 fi
+DUALCASE=1; export DUALCASE # for MKS sh
 
 # Support unset when possible.
 
 # Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
   as_unset=unset
 else
   as_unset=false
   as_unset=unset
 else
   as_unset=false
@@ -41,7 +41,7 @@ for as_var in \
   LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
   LC_TELEPHONE LC_TIME
 do
   LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
   LC_TELEPHONE LC_TIME
 do
-  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
     eval $as_var=C; export $as_var
   else
     $as_unset $as_var
     eval $as_var=C; export $as_var
   else
     $as_unset $as_var
@@ -218,16 +218,17 @@ rm -f conf$$ conf$$.exe conf$$.file
 if mkdir -p . 2>/dev/null; then
   as_mkdir_p=:
 else
 if mkdir -p . 2>/dev/null; then
   as_mkdir_p=:
 else
+  test -d ./-p && rmdir ./-p
   as_mkdir_p=false
 fi
 
 as_executable_p="test -f"
 
 # Sed expression to map a string onto a valid CPP name.
   as_mkdir_p=false
 fi
 
 as_executable_p="test -f"
 
 # Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 
 # Sed expression to map a string onto a valid variable name.
 
 # Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 # IFS
 
 
 # IFS
@@ -667,7 +668,7 @@ done
 
 # Be sure to have absolute paths.
 for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
 
 # Be sure to have absolute paths.
 for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-              localstatedir libdir includedir oldincludedir infodir mandir
+             localstatedir libdir includedir oldincludedir infodir mandir
 do
   eval ac_val=$`echo $ac_var`
   case $ac_val in
 do
   eval ac_val=$`echo $ac_var`
   case $ac_val in
@@ -707,10 +708,10 @@ if test -z "$srcdir"; then
   # Try the directory containing this script, then its parent.
   ac_confdir=`(dirname "$0") 2>/dev/null ||
 $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
   # Try the directory containing this script, then its parent.
   ac_confdir=`(dirname "$0") 2>/dev/null ||
 $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$0" : 'X\(//\)[^/]' \| \
-         X"$0" : 'X\(//\)$' \| \
-         X"$0" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
+        X"$0" : 'X\(//\)[^/]' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| \
+        .     : '\(.\)' 2>/dev/null ||
 echo X"$0" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
 echo X"$0" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -804,9 +805,9 @@ _ACEOF
   cat <<_ACEOF
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
   cat <<_ACEOF
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
+                         [$ac_default_prefix]
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
+                         [PREFIX]
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -974,12 +975,45 @@ case $srcdir in
     ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
     ac_top_srcdir=$ac_top_builddir$srcdir ;;
 esac
     ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
     ac_top_srcdir=$ac_top_builddir$srcdir ;;
 esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
 
     cd $ac_dir
     # Check for guested configure; otherwise get Cygnus style configure.
 
     cd $ac_dir
     # Check for guested configure; otherwise get Cygnus style configure.
@@ -990,7 +1024,7 @@ ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
       echo
       $SHELL $ac_srcdir/configure  --help=recursive
     elif test -f $ac_srcdir/configure.ac ||
       echo
       $SHELL $ac_srcdir/configure  --help=recursive
     elif test -f $ac_srcdir/configure.ac ||
-           test -f $ac_srcdir/configure.in; then
+          test -f $ac_srcdir/configure.in; then
       echo
       $ac_configure --help
     else
       echo
       $ac_configure --help
     else
@@ -1004,8 +1038,7 @@ test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
 
 if $ac_init_version; then
   cat <<\_ACEOF
 
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-Free Software Foundation, Inc.
+Copyright (C) 2003 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1017,7 +1050,7 @@ This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
-generated by GNU Autoconf 2.57.  Invocation command line was
+generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
 
 
   $ $0 $@
 
@@ -1094,19 +1127,19 @@ do
     2)
       ac_configure_args1="$ac_configure_args1 '$ac_arg'"
       if test $ac_must_keep_next = true; then
     2)
       ac_configure_args1="$ac_configure_args1 '$ac_arg'"
       if test $ac_must_keep_next = true; then
-        ac_must_keep_next=false # Got value, back to normal.
+       ac_must_keep_next=false # Got value, back to normal.
       else
       else
-        case $ac_arg in
-          *=* | --config-cache | -C | -disable-* | --disable-* \
-          | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-          | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-          | -with-* | --with-* | -without-* | --without-* | --x)
-            case "$ac_configure_args0 " in
-              "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-            esac
-            ;;
-          -* ) ac_must_keep_next=true ;;
-        esac
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
       fi
       ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
       # Get rid of the leading space.
       fi
       ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
       # Get rid of the leading space.
@@ -1140,12 +1173,12 @@ _ASBOX
     case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
     *ac_space=\ *)
       sed -n \
     case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
     *ac_space=\ *)
       sed -n \
-        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+       "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
       ;;
     *)
       sed -n \
       ;;
     *)
       sed -n \
-        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+       "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
       ;;
     esac;
 }
       ;;
     esac;
 }
@@ -1174,7 +1207,7 @@ _ASBOX
       for ac_var in $ac_subst_files
       do
        eval ac_val=$`echo $ac_var`
       for ac_var in $ac_subst_files
       do
        eval ac_val=$`echo $ac_var`
-        echo "$ac_var='"'"'$ac_val'"'"'"
+       echo "$ac_var='"'"'$ac_val'"'"'"
       done | sort
       echo
     fi
       done | sort
       echo
     fi
@@ -1193,7 +1226,7 @@ _ASBOX
       echo "$as_me: caught signal $ac_signal"
     echo "$as_me: exit $exit_status"
   } >&5
       echo "$as_me: caught signal $ac_signal"
     echo "$as_me: exit $exit_status"
   } >&5
-  rm -f core core.* *.core &&
+  rm -f core *.core &&
   rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
     exit $exit_status
      ' 0
   rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
     exit $exit_status
      ' 0
@@ -1273,7 +1306,7 @@ fi
 # value.
 ac_cache_corrupted=false
 for ac_var in `(set) 2>&1 |
 # value.
 ac_cache_corrupted=false
 for ac_var in `(set) 2>&1 |
-               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+              sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
   eval ac_old_set=\$ac_cv_env_${ac_var}_set
   eval ac_new_set=\$ac_env_${ac_var}_set
   eval ac_old_val="\$ac_cv_env_${ac_var}_value"
   eval ac_old_set=\$ac_cv_env_${ac_var}_set
   eval ac_new_set=\$ac_env_${ac_var}_set
   eval ac_old_val="\$ac_cv_env_${ac_var}_value"
@@ -1290,13 +1323,13 @@ echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
-        { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+       { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-        { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+       { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
 echo "$as_me:   former value:  $ac_old_val" >&2;}
 echo "$as_me:   former value:  $ac_old_val" >&2;}
-        { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+       { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
 echo "$as_me:   current value: $ac_new_val" >&2;}
 echo "$as_me:   current value: $ac_new_val" >&2;}
-        ac_cache_corrupted=:
+       ac_cache_corrupted=:
       fi;;
   esac
   # Pass precious variables to config.status.
       fi;;
   esac
   # Pass precious variables to config.status.
@@ -1965,7 +1998,6 @@ ac_compiler=`set X $ac_compile; echo $2`
   (exit $ac_status); }
 
 cat >conftest.$ac_ext <<_ACEOF
   (exit $ac_status); }
 
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -1985,8 +2017,8 @@ ac_clean_files="$ac_clean_files a.out a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-echo "$as_me:$LINENO: checking for C compiler default output" >&5
-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
   (eval $ac_link_default) 2>&5
 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
   (eval $ac_link_default) 2>&5
@@ -2006,23 +2038,23 @@ do
   test -f "$ac_file" || continue
   case $ac_file in
     *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
   test -f "$ac_file" || continue
   case $ac_file in
     *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
-        ;;
+       ;;
     conftest.$ac_ext )
     conftest.$ac_ext )
-        # This is the source file.
-        ;;
+       # This is the source file.
+       ;;
     [ab].out )
     [ab].out )
-        # We found the default executable, but exeext='' is most
-        # certainly right.
-        break;;
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
     *.* )
     *.* )
-        ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-        # FIXME: I believe we export ac_cv_exeext for Libtool,
-        # but it would be cool to find out if it's true.  Does anybody
-        # maintain Libtool? --akim.
-        export ac_cv_exeext
-        break;;
+       ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       # FIXME: I believe we export ac_cv_exeext for Libtool,
+       # but it would be cool to find out if it's true.  Does anybody
+       # maintain Libtool? --akim.
+       export ac_cv_exeext
+       break;;
     * )
     * )
-        break;;
+       break;;
   esac
 done
 else
   esac
 done
 else
@@ -2096,8 +2128,8 @@ for ac_file in conftest.exe conftest conftest.*; do
   case $ac_file in
     *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
     *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
   case $ac_file in
     *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
     *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-          export ac_cv_exeext
-          break;;
+         export ac_cv_exeext
+         break;;
     * ) break;;
   esac
 done
     * ) break;;
   esac
 done
@@ -2122,7 +2154,6 @@ if test "${ac_cv_objext+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2173,7 +2204,6 @@ if test "${ac_cv_c_compiler_gnu+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2193,11 +2223,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2210,7 +2250,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_compiler_gnu=no
 fi
 
 ac_compiler_gnu=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
@@ -2226,7 +2266,6 @@ if test "${ac_cv_prog_cc_g+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2243,11 +2282,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2260,7 +2309,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_prog_cc_g=no
 fi
 
 ac_cv_prog_cc_g=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
@@ -2287,7 +2336,6 @@ else
   ac_cv_prog_cc_stdc=no
 ac_save_CC=$CC
 cat >conftest.$ac_ext <<_ACEOF
   ac_cv_prog_cc_stdc=no
 ac_save_CC=$CC
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2315,6 +2363,16 @@ static char *f (char * (*g) (char **, int), char **p, ...)
   va_end (v);
   return s;
 }
   va_end (v);
   return s;
 }
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std1 is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std1.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
 int test (int i, double x);
 struct s1 {int (*f) (int a);};
 struct s2 {int (*f) (double a);};
 int test (int i, double x);
 struct s1 {int (*f) (int a);};
 struct s2 {int (*f) (double a);};
@@ -2341,11 +2399,21 @@ do
   CC="$ac_save_CC $ac_arg"
   rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   CC="$ac_save_CC $ac_arg"
   rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2358,7 +2426,7 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
-rm -f conftest.$ac_objext
+rm -f conftest.err conftest.$ac_objext
 done
 rm -f conftest.$ac_ext conftest.$ac_objext
 CC=$ac_save_CC
 done
 rm -f conftest.$ac_ext conftest.$ac_objext
 CC=$ac_save_CC
@@ -2386,19 +2454,28 @@ cat >conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   for ac_declaration in \
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   for ac_declaration in \
-   ''\
-   '#include <stdlib.h>' \
+   '' \
    'extern "C" void std::exit (int) throw (); using std::exit;' \
    'extern "C" void std::exit (int); using std::exit;' \
    'extern "C" void exit (int) throw ();' \
    'extern "C" void std::exit (int) throw (); using std::exit;' \
    'extern "C" void std::exit (int); using std::exit;' \
    'extern "C" void exit (int) throw ();' \
@@ -2406,14 +2483,13 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
    'void exit (int);'
 do
   cat >conftest.$ac_ext <<_ACEOF
    'void exit (int);'
 do
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <stdlib.h>
 $ac_declaration
 $ac_declaration
+#include <stdlib.h>
 int
 main ()
 {
 int
 main ()
 {
@@ -2424,11 +2500,21 @@ exit (42);
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2441,9 +2527,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 continue
 fi
 
 continue
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   cat >conftest.$ac_ext <<_ACEOF
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2460,11 +2545,21 @@ exit (42);
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2476,7 +2571,7 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 done
 rm -f conftest*
 if test -n "$ac_declaration"; then
 done
 rm -f conftest*
 if test -n "$ac_declaration"; then
@@ -2490,7 +2585,7 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -2536,7 +2631,6 @@ echo "$as_me: error: Couldn't build even a trivial ANSI C program: check CC." >&
    { (exit 1); exit 1; }; }
 else
   cat >conftest.$ac_ext <<_ACEOF
    { (exit 1); exit 1; }; }
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2569,7 +2663,7 @@ echo "${ECHO_T}no" >&6
 echo "$as_me: error: Couldn't build even a trivial ANSI C program: check CC." >&2;}
    { (exit 1); exit 1; }; }
 fi
 echo "$as_me: error: Couldn't build even a trivial ANSI C program: check CC." >&2;}
    { (exit 1); exit 1; }; }
 fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 
   if test -n "$GCC"; then
 fi
 
   if test -n "$GCC"; then
@@ -2696,7 +2790,6 @@ do
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >conftest.$ac_ext <<_ACEOF
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2707,7 +2800,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 #else
 # include <assert.h>
 #endif
 #else
 # include <assert.h>
 #endif
-                     Syntax error
+                    Syntax error
 _ACEOF
 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
 _ACEOF
 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
@@ -2719,6 +2812,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -2739,7 +2833,6 @@ rm -f conftest.err conftest.$ac_ext
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >conftest.$ac_ext <<_ACEOF
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2757,6 +2850,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -2803,7 +2897,6 @@ do
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >conftest.$ac_ext <<_ACEOF
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2814,7 +2907,7 @@ cat >>conftest.$ac_ext <<_ACEOF
 #else
 # include <assert.h>
 #endif
 #else
 # include <assert.h>
 #endif
-                     Syntax error
+                    Syntax error
 _ACEOF
 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
 _ACEOF
 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
@@ -2826,6 +2919,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -2846,7 +2940,6 @@ rm -f conftest.err conftest.$ac_ext
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >conftest.$ac_ext <<_ACEOF
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2864,6 +2957,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -2908,7 +3002,6 @@ if test "${ac_cv_c_const+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2971,11 +3064,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -2988,7 +3091,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_c_const=no
 fi
 
 ac_cv_c_const=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
 echo "${ECHO_T}$ac_cv_c_const" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
 echo "${ECHO_T}$ac_cv_c_const" >&6
@@ -3008,7 +3111,6 @@ else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat >conftest.$ac_ext <<_ACEOF
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3023,11 +3125,21 @@ $ac_kw foo_t foo () {return 0; }
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3039,23 +3151,27 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 done
 
 fi
 echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
 echo "${ECHO_T}$ac_cv_c_inline" >&6
 done
 
 fi
 echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
 echo "${ECHO_T}$ac_cv_c_inline" >&6
+
+
 case $ac_cv_c_inline in
   inline | yes) ;;
 case $ac_cv_c_inline in
   inline | yes) ;;
-  no)
-cat >>confdefs.h <<\_ACEOF
-#define inline
-_ACEOF
- ;;
-  *)  cat >>confdefs.h <<_ACEOF
-#define inline $ac_cv_c_inline
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
 _ACEOF
 _ACEOF
- ;;
   ;;
 esac
 
 
 esac
 
 
@@ -3091,6 +3207,7 @@ echo "$as_me: error: Your system doesn't have \"bc\", which has been a standard
 # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
 # ./install, which can be erroneously created by make from ./install.sh.
 echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
 # ./install, which can be erroneously created by make from ./install.sh.
 echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
@@ -3107,6 +3224,7 @@ do
 case $as_dir/ in
   ./ | .// | /cC/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
 case $as_dir/ in
   ./ | .// | /cC/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
   /usr/ucb/* ) ;;
   *)
     # OSF1 and SCO ODT 3.0 have their own names for install.
   /usr/ucb/* ) ;;
   *)
     # OSF1 and SCO ODT 3.0 have their own names for install.
@@ -3114,20 +3232,20 @@ case $as_dir/ in
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-        if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-          if test $ac_prog = install &&
-            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-            # AIX install.  It has an incompatible calling convention.
-            :
-          elif test $ac_prog = install &&
-            grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-            # program-specific install script used by HP pwplus--don't use.
-            :
-          else
-            ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-            break 3
-          fi
-        fi
+       if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+         if test $ac_prog = install &&
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+           break 3
+         fi
+       fi
       done
     done
     ;;
       done
     done
     ;;
@@ -3212,7 +3330,7 @@ echo "${ECHO_T}$ac_cv_mkdir_p_creates_dirs" >&6
 
 echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
 
 echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
 if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
@@ -3270,7 +3388,6 @@ if test "${ac_cv_header_stdc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3291,11 +3408,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3308,12 +3435,11 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_stdc=no
 fi
 
 ac_cv_header_stdc=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
   cat >conftest.$ac_ext <<_ACEOF
 
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3335,7 +3461,6 @@ 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 <<_ACEOF
 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 <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3360,7 +3485,6 @@ if test $ac_cv_header_stdc = yes; then
   :
 else
   cat >conftest.$ac_ext <<_ACEOF
   :
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3372,9 +3496,9 @@ cat >>conftest.$ac_ext <<_ACEOF
 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
 #else
 # define ISLOWER(c) \
 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
 #else
 # define ISLOWER(c) \
-                   (('a' <= (c) && (c) <= 'i') \
-                     || ('j' <= (c) && (c) <= 'r') \
-                     || ('s' <= (c) && (c) <= 'z'))
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
 # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
 #endif
 
 # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
 #endif
 
@@ -3385,7 +3509,7 @@ main ()
   int i;
   for (i = 0; i < 256; i++)
     if (XOR (islower (i), ISLOWER (i))
   int i;
   for (i = 0; i < 256; i++)
     if (XOR (islower (i), ISLOWER (i))
-        || toupper (i) != TOUPPER (i))
+       || toupper (i) != TOUPPER (i))
       exit(2);
   exit (0);
 }
       exit(2);
   exit (0);
 }
@@ -3410,7 +3534,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 ( exit $ac_status )
 ac_cv_header_stdc=no
 fi
 ( exit $ac_status )
 ac_cv_header_stdc=no
 fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 fi
 fi
 fi
 fi
 fi
@@ -3435,7 +3559,7 @@ fi
 
 
 for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
 
 
 for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                  inttypes.h stdint.h unistd.h
+                 inttypes.h stdint.h unistd.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_header" >&5
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_header" >&5
@@ -3444,7 +3568,6 @@ if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3456,11 +3579,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3473,7 +3606,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_Header=no"
 fi
 
 eval "$as_ac_Header=no"
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -3504,7 +3637,6 @@ else
 echo "$as_me:$LINENO: checking $ac_header usability" >&5
 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking $ac_header usability" >&5
 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3515,11 +3647,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3532,7 +3674,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -3540,7 +3682,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking $ac_header presence" >&5
 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking $ac_header presence" >&5
 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3558,6 +3699,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -3577,33 +3719,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -3614,7 +3755,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  eval "$as_ac_Header=$ac_header_preproc"
+  eval "$as_ac_Header=\$ac_header_preproc"
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -3635,7 +3776,6 @@ if test "${ac_cv_type_mode_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3655,11 +3795,21 @@ if (sizeof (mode_t))
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3672,7 +3822,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_type_mode_t=no
 fi
 
 ac_cv_type_mode_t=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
 echo "${ECHO_T}$ac_cv_type_mode_t" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
 echo "${ECHO_T}$ac_cv_type_mode_t" >&6
@@ -3692,7 +3842,6 @@ if test "${ac_cv_type_pid_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3712,11 +3861,21 @@ if (sizeof (pid_t))
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3729,7 +3888,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_type_pid_t=no
 fi
 
 ac_cv_type_pid_t=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
 echo "${ECHO_T}$ac_cv_type_pid_t" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
 echo "${ECHO_T}$ac_cv_type_pid_t" >&6
@@ -3749,7 +3908,6 @@ if test "${ac_cv_type_size_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3769,11 +3927,21 @@ if (sizeof (size_t))
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3786,7 +3954,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_type_size_t=no
 fi
 
 ac_cv_type_size_t=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
 echo "${ECHO_T}$ac_cv_type_size_t" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
 echo "${ECHO_T}$ac_cv_type_size_t" >&6
@@ -3806,7 +3974,6 @@ if test "${ac_cv_type_signal+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3833,11 +4000,21 @@ int i;
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3850,7 +4027,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_type_signal=int
 fi
 
 ac_cv_type_signal=int
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
 echo "${ECHO_T}$ac_cv_type_signal" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
 echo "${ECHO_T}$ac_cv_type_signal" >&6
@@ -3866,7 +4043,6 @@ if test "${ac_cv_header_time+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3887,11 +4063,21 @@ return 0;
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3904,7 +4090,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_time=no
 fi
 
 ac_cv_header_time=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
 echo "${ECHO_T}$ac_cv_header_time" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
 echo "${ECHO_T}$ac_cv_header_time" >&6
@@ -3922,7 +4108,6 @@ if test "${ac_cv_header_sys_wait_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -3949,11 +4134,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -3966,7 +4161,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_sys_wait_h=no
 fi
 
 ac_cv_header_sys_wait_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
 echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
 echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6
@@ -3992,7 +4187,6 @@ if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4012,11 +4206,21 @@ return 0;
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4029,7 +4233,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_Header=no"
 fi
 
 eval "$as_ac_Header=no"
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -4052,7 +4256,6 @@ else
   ac_func_search_save_LIBS=$LIBS
 ac_cv_search_opendir=no
 cat >conftest.$ac_ext <<_ACEOF
   ac_func_search_save_LIBS=$LIBS
 ac_cv_search_opendir=no
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4076,11 +4279,21 @@ opendir ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4092,12 +4305,12 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 if test "$ac_cv_search_opendir" = no; then
   for ac_lib in dir; do
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
     cat >conftest.$ac_ext <<_ACEOF
 if test "$ac_cv_search_opendir" = no; then
   for ac_lib in dir; do
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
     cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4121,11 +4334,21 @@ opendir ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4138,7 +4361,8 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
   done
 fi
 LIBS=$ac_func_search_save_LIBS
   done
 fi
 LIBS=$ac_func_search_save_LIBS
@@ -4159,7 +4383,6 @@ else
   ac_func_search_save_LIBS=$LIBS
 ac_cv_search_opendir=no
 cat >conftest.$ac_ext <<_ACEOF
   ac_func_search_save_LIBS=$LIBS
 ac_cv_search_opendir=no
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4183,11 +4406,21 @@ opendir ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4199,12 +4432,12 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 if test "$ac_cv_search_opendir" = no; then
   for ac_lib in x; do
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
     cat >conftest.$ac_ext <<_ACEOF
 if test "$ac_cv_search_opendir" = no; then
   for ac_lib in x; do
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
     cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4228,11 +4461,21 @@ opendir ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4245,7 +4488,8 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
 sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
   done
 fi
 LIBS=$ac_func_search_save_LIBS
   done
 fi
 LIBS=$ac_func_search_save_LIBS
@@ -4265,7 +4509,6 @@ echo $ECHO_N "checking how to call gettimeofday... $ECHO_C" >&6
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4284,11 +4527,21 @@ struct timeval tv; struct timezone tzp;
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4300,7 +4553,6 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 cat >conftest.$ac_ext <<_ACEOF
 sed 's/^/| /' conftest.$ac_ext >&5
 
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4318,11 +4570,21 @@ struct timeval tv; gettimeofday(&tv);
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4335,9 +4597,9 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_gettimeofday_args=0
 fi
 
 ac_gettimeofday_args=0
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
     ac_cv_gettimeofday_args=$ac_gettimeofday_args
 fi
 
     ac_cv_gettimeofday_args=$ac_gettimeofday_args
 fi
 
@@ -4383,21 +4645,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef $ac_func
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -4428,11 +4697,21 @@ return f != $ac_func;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4445,7 +4724,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_var=no"
 fi
 
 eval "$as_ac_var=no"
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -4470,21 +4750,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef $ac_func
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -4515,11 +4802,21 @@ return f != $ac_func;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4532,7 +4829,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_var=no"
 fi
 
 eval "$as_ac_var=no"
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -4550,7 +4848,6 @@ if test "${ac_cv_have_icmp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4600,11 +4897,21 @@ struct icmp i;
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4617,7 +4924,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_have_icmp=no
 fi
 
 ac_cv_have_icmp=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_have_icmp" >&5
 echo "${ECHO_T}$ac_cv_have_icmp" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_have_icmp" >&5
 echo "${ECHO_T}$ac_cv_have_icmp" >&6
@@ -4633,7 +4940,6 @@ if test "${ac_cv_have_icmphdr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4678,11 +4984,21 @@ struct icmphdr i;
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4695,7 +5011,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_have_icmphdr=no
 fi
 
 ac_cv_have_icmphdr=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_have_icmphdr" >&5
 echo "${ECHO_T}$ac_cv_have_icmphdr" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_have_icmphdr" >&5
 echo "${ECHO_T}$ac_cv_have_icmphdr" >&6
@@ -4723,7 +5039,6 @@ else
 echo "$as_me:$LINENO: checking $ac_header usability" >&5
 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking $ac_header usability" >&5
 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4734,11 +5049,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -4751,7 +5076,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -4759,7 +5084,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking $ac_header presence" >&5
 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking $ac_header presence" >&5
 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -4777,6 +5101,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -4796,33 +5121,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -4833,7 +5157,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  eval "$as_ac_Header=$ac_header_preproc"
+  eval "$as_ac_Header=\$ac_header_preproc"
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -4950,8 +5274,8 @@ _ACEOF
     # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
     for ac_extension in a so sl; do
       if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&
     # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
     for ac_extension in a so sl; do
       if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&
-         test -f $ac_im_libdir/libX11.$ac_extension; then
-        ac_im_usrlibdir=$ac_im_libdir; break
+        test -f $ac_im_libdir/libX11.$ac_extension; then
+       ac_im_usrlibdir=$ac_im_libdir; break
       fi
     done
     # Screen out bogus values from the imake configuration.  They are
       fi
     done
     # Screen out bogus values from the imake configuration.  They are
@@ -5011,7 +5335,6 @@ if test "$ac_x_includes" = no; then
   # Guess where to find include files, by looking for Intrinsic.h.
   # First, try using that file with no special directory specified.
   cat >conftest.$ac_ext <<_ACEOF
   # Guess where to find include files, by looking for Intrinsic.h.
   # First, try using that file with no special directory specified.
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5029,6 +5352,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -5059,7 +5383,6 @@ if test "$ac_x_libraries" = no; then
   ac_save_LIBS=$LIBS
   LIBS="-lXt $LIBS"
   cat >conftest.$ac_ext <<_ACEOF
   ac_save_LIBS=$LIBS
   LIBS="-lXt $LIBS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5076,11 +5399,21 @@ XtMalloc (0)
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5105,7 +5438,8 @@ do
   done
 done
 fi
   done
 done
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi # $ac_x_libraries = no
 
 if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then
 fi # $ac_x_libraries = no
 
 if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then
@@ -5114,7 +5448,7 @@ if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then
 else
   # Record where we found X for the cache.
   ac_cv_have_x="have_x=yes \
 else
   # Record where we found X for the cache.
   ac_cv_have_x="have_x=yes \
-               ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"
+               ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"
 fi
 fi
 
 fi
 fi
 
@@ -5161,7 +5495,6 @@ else
 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6
       ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
       cat >conftest.$ac_ext <<_ACEOF
 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6
       ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
       cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5178,11 +5511,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5195,7 +5538,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_R_nospace=no
 fi
 
 ac_R_nospace=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
       if test $ac_R_nospace = yes; then
        echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
       if test $ac_R_nospace = yes; then
        echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
@@ -5203,7 +5547,6 @@ echo "${ECHO_T}no" >&6
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat >conftest.$ac_ext <<_ACEOF
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5220,11 +5563,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5237,7 +5590,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_R_space=no
 fi
 
 ac_R_space=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
        if test $ac_R_space = yes; then
          echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6
        if test $ac_R_space = yes; then
          echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6
@@ -5263,7 +5617,6 @@ echo "${ECHO_T}neither works" >&6
     # the Alpha needs dnet_stub (dnet does not exist).
     ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
     cat >conftest.$ac_ext <<_ACEOF
     # the Alpha needs dnet_stub (dnet does not exist).
     ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
     cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5287,11 +5640,21 @@ XOpenDisplay ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5310,7 +5673,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5334,11 +5696,21 @@ dnet_ntoa ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5351,7 +5723,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_dnet_dnet_ntoa=no
 fi
 
 ac_cv_lib_dnet_dnet_ntoa=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
@@ -5369,7 +5742,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet_stub  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet_stub  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5393,11 +5765,21 @@ dnet_ntoa ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5410,7 +5792,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_dnet_stub_dnet_ntoa=no
 fi
 
 ac_cv_lib_dnet_stub_dnet_ntoa=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
@@ -5421,7 +5804,8 @@ fi
 
     fi
 fi
 
     fi
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
     LIBS="$ac_xsave_LIBS"
 
     # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
     LIBS="$ac_xsave_LIBS"
 
     # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
@@ -5438,21 +5822,28 @@ if test "${ac_cv_func_gethostbyname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define gethostbyname innocuous_gethostbyname
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef gethostbyname
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -5483,11 +5874,21 @@ return f != gethostbyname;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5500,7 +5901,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_func_gethostbyname=no
 fi
 
 ac_cv_func_gethostbyname=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
@@ -5514,7 +5916,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5538,11 +5939,21 @@ gethostbyname ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5555,7 +5966,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_nsl_gethostbyname=no
 fi
 
 ac_cv_lib_nsl_gethostbyname=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
@@ -5565,7 +5977,7 @@ if test $ac_cv_lib_nsl_gethostbyname = yes; then
 fi
 
       if test $ac_cv_lib_nsl_gethostbyname = no; then
 fi
 
       if test $ac_cv_lib_nsl_gethostbyname = no; then
-        echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
+       echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6
 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6
 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5573,7 +5985,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5597,11 +6008,21 @@ gethostbyname ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5614,7 +6035,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_bsd_gethostbyname=no
 fi
 
 ac_cv_lib_bsd_gethostbyname=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
@@ -5639,21 +6061,28 @@ if test "${ac_cv_func_connect+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define connect to an innocuous variant, in case <limits.h> declares connect.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define connect innocuous_connect
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef connect
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -5684,11 +6113,21 @@ return f != connect;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5701,7 +6140,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_func_connect=no
 fi
 
 ac_cv_func_connect=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
 echo "${ECHO_T}$ac_cv_func_connect" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
 echo "${ECHO_T}$ac_cv_func_connect" >&6
@@ -5715,7 +6155,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5739,11 +6178,21 @@ connect ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5756,7 +6205,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_socket_connect=no
 fi
 
 ac_cv_lib_socket_connect=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
@@ -5774,21 +6224,28 @@ if test "${ac_cv_func_remove+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define remove to an innocuous variant, in case <limits.h> declares remove.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define remove innocuous_remove
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef remove
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -5819,11 +6276,21 @@ return f != remove;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5836,7 +6303,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_func_remove=no
 fi
 
 ac_cv_func_remove=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
 echo "${ECHO_T}$ac_cv_func_remove" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
 echo "${ECHO_T}$ac_cv_func_remove" >&6
@@ -5850,7 +6318,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lposix  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lposix  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -5874,11 +6341,21 @@ remove ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5891,7 +6368,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_posix_remove=no
 fi
 
 ac_cv_lib_posix_remove=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
@@ -5909,21 +6387,28 @@ if test "${ac_cv_func_shmat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define shmat to an innocuous variant, in case <limits.h> declares shmat.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shmat innocuous_shmat
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef shmat
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -5954,11 +6439,21 @@ return f != shmat;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -5971,7 +6466,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_func_shmat=no
 fi
 
 ac_cv_func_shmat=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
 echo "${ECHO_T}$ac_cv_func_shmat" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
 echo "${ECHO_T}$ac_cv_func_shmat" >&6
@@ -5985,7 +6481,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lipc  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lipc  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -6009,11 +6504,21 @@ shmat ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6026,7 +6531,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_ipc_shmat=no
 fi
 
 ac_cv_lib_ipc_shmat=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
@@ -6055,7 +6561,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -6079,11 +6584,21 @@ IceConnectionNumber ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6096,7 +6611,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_ICE_IceConnectionNumber=no
 fi
 
 ac_cv_lib_ICE_IceConnectionNumber=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
@@ -6332,7 +6848,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgen  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgen  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -6356,11 +6871,21 @@ regcmp ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6373,7 +6898,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_gen_regcmp=no
 fi
 
 ac_cv_lib_gen_regcmp=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_gen_regcmp" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_gen_regcmp" >&5
@@ -6407,7 +6933,6 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -6424,11 +6949,21 @@ XPointer foo = (XPointer) 0;
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6441,7 +6976,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_xpointer=no
 fi
 
 ac_cv_xpointer=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_xpointer" >&5
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_xpointer" >&5
@@ -6690,7 +7225,6 @@ if test "${ac_cv_type_off_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -6710,11 +7244,21 @@ if (sizeof (off_t))
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6727,7 +7271,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_type_off_t=no
 fi
 
 ac_cv_type_off_t=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
 echo "${ECHO_T}$ac_cv_type_off_t" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
 echo "${ECHO_T}$ac_cv_type_off_t" >&6
@@ -6749,7 +7293,6 @@ if test "${ac_cv_working_alloca_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -6766,11 +7309,21 @@ char *p = (char *) alloca (2 * sizeof (int));
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6783,7 +7336,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_working_alloca_h=no
 fi
 
 ac_cv_working_alloca_h=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
 echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
 echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
@@ -6801,7 +7355,6 @@ if test "${ac_cv_func_alloca_works+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -6838,11 +7391,21 @@ char *p = (char *) alloca (1);
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6855,7 +7418,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_func_alloca_works=no
 fi
 
 ac_cv_func_alloca_works=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
 echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
 echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
@@ -6885,7 +7449,6 @@ if test "${ac_cv_os_cray+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -6918,21 +7481,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef $ac_func
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -6963,11 +7533,21 @@ return f != $ac_func;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -6980,7 +7560,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_var=no"
 fi
 
 eval "$as_ac_var=no"
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -7005,7 +7586,6 @@ else
   ac_cv_c_stack_direction=0
 else
   cat >conftest.$ac_ext <<_ACEOF
   ac_cv_c_stack_direction=0
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7051,7 +7631,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 ( exit $ac_status )
 ac_cv_c_stack_direction=-1
 fi
 ( exit $ac_status )
 ac_cv_c_stack_direction=-1
 fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 fi
 echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
 fi
 fi
 echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
@@ -7082,7 +7662,6 @@ else
 echo "$as_me:$LINENO: checking $ac_header usability" >&5
 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking $ac_header usability" >&5
 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7093,11 +7672,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7110,7 +7699,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -7118,7 +7707,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking $ac_header presence" >&5
 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking $ac_header presence" >&5
 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7136,6 +7724,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -7155,33 +7744,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -7192,7 +7780,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  eval "$as_ac_Header=$ac_header_preproc"
+  eval "$as_ac_Header=\$ac_header_preproc"
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -7217,21 +7805,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef $ac_func
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -7262,11 +7857,21 @@ return f != $ac_func;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7279,7 +7884,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_var=no"
 fi
 
 eval "$as_ac_var=no"
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -7300,7 +7906,6 @@ else
   ac_cv_func_mmap_fixed_mapped=no
 else
   cat >conftest.$ac_ext <<_ACEOF
   ac_cv_func_mmap_fixed_mapped=no
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7408,9 +8013,9 @@ main ()
   data2 = (char *) malloc (2 * pagesize);
   if (!data2)
     exit (1);
   data2 = (char *) malloc (2 * pagesize);
   if (!data2)
     exit (1);
-  data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
+  data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
   if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
   if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
-                     MAP_PRIVATE | MAP_FIXED, fd, 0L))
+                    MAP_PRIVATE | MAP_FIXED, fd, 0L))
     exit (1);
   for (i = 0; i < pagesize; ++i)
     if (*(data + i) != *(data2 + i))
     exit (1);
   for (i = 0; i < pagesize; ++i)
     if (*(data + i) != *(data2 + i))
@@ -7453,7 +8058,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 ( exit $ac_status )
 ac_cv_func_mmap_fixed_mapped=no
 fi
 ( exit $ac_status )
 ac_cv_func_mmap_fixed_mapped=no
 fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
 fi
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
@@ -7493,7 +8098,6 @@ else
 echo "$as_me:$LINENO: checking $ac_header usability" >&5
 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking $ac_header usability" >&5
 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7504,11 +8108,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7521,7 +8135,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -7529,7 +8143,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking $ac_header presence" >&5
 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking $ac_header presence" >&5
 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7547,6 +8160,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -7566,33 +8180,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -7603,7 +8216,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  eval "$as_ac_Header=$ac_header_preproc"
+  eval "$as_ac_Header=\$ac_header_preproc"
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -7639,21 +8252,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef $ac_func
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -7684,11 +8304,21 @@ return f != $ac_func;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7701,7 +8331,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_var=no"
 fi
 
 eval "$as_ac_var=no"
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -7721,7 +8352,6 @@ if test "${am_cv_val_LC_MESSAGES+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7738,11 +8368,21 @@ return LC_MESSAGES
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7755,7 +8395,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 am_cv_val_LC_MESSAGES=no
 fi
 
 am_cv_val_LC_MESSAGES=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
 echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
 fi
 echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
 echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
@@ -7791,7 +8432,6 @@ else
 echo "$as_me:$LINENO: checking libintl.h usability" >&5
 echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking libintl.h usability" >&5
 echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7802,11 +8442,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7819,7 +8469,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -7827,7 +8477,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking libintl.h presence" >&5
 echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking libintl.h presence" >&5
 echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7845,6 +8494,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -7864,33 +8514,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: libintl.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: libintl.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: libintl.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: libintl.h:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -7914,7 +8563,6 @@ if test "${gt_cv_func_dgettext_libc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7931,11 +8579,21 @@ return (int) dgettext ("","")
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -7948,7 +8606,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 gt_cv_func_dgettext_libc=no
 fi
 
 gt_cv_func_dgettext_libc=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5
 echo "${ECHO_T}$gt_cv_func_dgettext_libc" >&6
 fi
 echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5
 echo "${ECHO_T}$gt_cv_func_dgettext_libc" >&6
@@ -7962,7 +8621,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lintl  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lintl  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -7986,11 +8644,21 @@ bindtextdomain ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8003,7 +8671,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_intl_bindtextdomain=no
 fi
 
 ac_cv_lib_intl_bindtextdomain=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
@@ -8022,7 +8691,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lintl  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lintl  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -8046,11 +8714,21 @@ dgettext ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8063,7 +8741,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_intl_dgettext=no
 fi
 
 ac_cv_lib_intl_dgettext=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5
@@ -8138,21 +8817,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef $ac_func
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -8183,11 +8869,21 @@ return f != $ac_func;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8200,7 +8896,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_var=no"
 fi
 
 eval "$as_ac_var=no"
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -8289,7 +8986,6 @@ echo "${ECHO_T}no" >&6
 fi
 
              cat >conftest.$ac_ext <<_ACEOF
 fi
 
              cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -8307,11 +9003,21 @@ extern int _nl_msg_cat_cntr;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8326,7 +9032,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 CATOBJEXT=.mo
                 DATADIRNAME=lib
 fi
 CATOBJEXT=.mo
                 DATADIRNAME=lib
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
              INSTOBJEXT=.mo
            fi
          fi
              INSTOBJEXT=.mo
            fi
          fi
@@ -8427,7 +9134,6 @@ else
 echo "$as_me:$LINENO: checking linux/version.h usability" >&5
 echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking linux/version.h usability" >&5
 echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -8438,11 +9144,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8455,7 +9171,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -8463,7 +9179,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking linux/version.h presence" >&5
 echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking linux/version.h presence" >&5
 echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -8481,6 +9196,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -8500,33 +9216,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: linux/version.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: linux/version.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: linux/version.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: linux/version.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/version.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: linux/version.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: linux/version.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: linux/version.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: linux/version.h: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: linux/version.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: linux/version.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/version.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: linux/version.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: linux/version.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: linux/version.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: linux/version.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: linux/version.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: linux/version.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: linux/version.h:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: linux/version.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: linux/version.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: linux/version.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: linux/version.h: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -8609,7 +9324,6 @@ if test "${ac_cv_header_X11_Xmu_Error_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -8623,11 +9337,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8640,7 +9364,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_Xmu_Error_h=no
 fi
 
 ac_cv_header_X11_Xmu_Error_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xmu_Error_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_Xmu_Error_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xmu_Error_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_Xmu_Error_h" >&6
@@ -8690,7 +9414,6 @@ else
                     # with X libraries because we know it's SunOS.
                     LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
                     cat >conftest.$ac_ext <<_ACEOF
                     # with X libraries because we know it's SunOS.
                     LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
                     cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -8707,11 +9430,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8724,7 +9457,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_sunos_xmu_bug=yes
 fi
 
 ac_cv_sunos_xmu_bug=yes
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
                     LDFLAGS="$ac_save_LDFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_sunos_xmu_bug" >&5
                     LDFLAGS="$ac_save_LDFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_sunos_xmu_bug" >&5
@@ -8738,7 +9472,6 @@ else
   ac_save_LDFLAGS="$LDFLAGS"
                       LDFLAGS="$LDFLAGS -static"
                       cat >conftest.$ac_ext <<_ACEOF
   ac_save_LDFLAGS="$LDFLAGS"
                       LDFLAGS="$LDFLAGS -static"
                       cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -8755,11 +9488,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8772,7 +9515,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_ld_static=no
 fi
 
 ac_cv_ld_static=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
                     LDFLAGS="$ac_save_LDFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_ld_static" >&5
                     LDFLAGS="$ac_save_LDFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_ld_static" >&5
@@ -8952,7 +9696,6 @@ if test "${ac_cv_header_X11_extensions_XScreenSaver_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -8964,11 +9707,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -8981,7 +9734,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_XScreenSaver_h=no
 fi
 
 ac_cv_header_X11_extensions_XScreenSaver_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_XScreenSaver_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_XScreenSaver_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_XScreenSaver_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_XScreenSaver_h" >&6
@@ -9077,7 +9830,6 @@ if test "${ac_cv_header_X11_extensions_scrnsaver_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -9089,11 +9841,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9106,7 +9868,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_scrnsaver_h=no
 fi
 
 ac_cv_header_X11_extensions_scrnsaver_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_scrnsaver_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_scrnsaver_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_scrnsaver_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_scrnsaver_h" >&6
@@ -9146,7 +9908,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -9170,11 +9931,21 @@ XScreenSaverRegister ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9187,7 +9958,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xext_XScreenSaverRegister=no
 fi
 
 ac_cv_lib_Xext_XScreenSaverRegister=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XScreenSaverRegister" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XScreenSaverRegister" >&5
@@ -9231,7 +10003,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXExExt -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXExExt -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -9255,11 +10026,21 @@ XScreenSaverRegister ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9272,7 +10053,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_XExExt_XScreenSaverRegister=no
 fi
 
 ac_cv_lib_XExExt_XScreenSaverRegister=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_XExExt_XScreenSaverRegister" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_XExExt_XScreenSaverRegister" >&5
@@ -9319,7 +10101,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXss -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXss -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -9343,11 +10124,21 @@ XScreenSaverRegister ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9360,7 +10151,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xss_XScreenSaverRegister=no
 fi
 
 ac_cv_lib_Xss_XScreenSaverRegister=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xss_XScreenSaverRegister" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xss_XScreenSaverRegister" >&5
@@ -9467,7 +10259,6 @@ if test "${ac_cv_header_X11_extensions_xidle_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -9479,11 +10270,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9496,7 +10297,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_xidle_h=no
 fi
 
 ac_cv_header_X11_extensions_xidle_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_xidle_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_xidle_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_xidle_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_xidle_h" >&6
@@ -9593,7 +10394,6 @@ if test "${ac_cv_header_X11_extensions_XSGIvc_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -9605,11 +10405,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9622,7 +10432,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_XSGIvc_h=no
 fi
 
 ac_cv_header_X11_extensions_XSGIvc_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_XSGIvc_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_XSGIvc_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_XSGIvc_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_XSGIvc_h" >&6
@@ -9661,7 +10471,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXsgivc -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXsgivc -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -9685,11 +10494,21 @@ XSGIvcQueryGammaMap ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9702,7 +10521,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xsgivc_XSGIvcQueryGammaMap=no
 fi
 
 ac_cv_lib_Xsgivc_XSGIvcQueryGammaMap=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xsgivc_XSGIvcQueryGammaMap" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xsgivc_XSGIvcQueryGammaMap" >&5
@@ -9810,7 +10630,6 @@ if test "${ac_cv_header_X11_extensions_dpms_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -9823,11 +10642,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9840,7 +10669,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_dpms_h=no
 fi
 
 ac_cv_header_X11_extensions_dpms_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_dpms_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_dpms_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_dpms_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_dpms_h" >&6
@@ -9881,7 +10710,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXext -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXext -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -9905,11 +10733,21 @@ DPMSInfo ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -9922,7 +10760,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xext_DPMSInfo=no
 fi
 
 ac_cv_lib_Xext_DPMSInfo=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_DPMSInfo" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_DPMSInfo" >&5
@@ -9965,7 +10804,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXdpms -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXdpms -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -9989,11 +10827,21 @@ DPMSInfo ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10006,7 +10854,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xdpms_DPMSInfo=no
 fi
 
 ac_cv_lib_Xdpms_DPMSInfo=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xdpms_DPMSInfo" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xdpms_DPMSInfo" >&5
@@ -10116,7 +10965,6 @@ if test "${ac_cv_header_X11_extensions_Xinerama_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -10128,11 +10976,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10145,7 +11003,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_Xinerama_h=no
 fi
 
 ac_cv_header_X11_extensions_Xinerama_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_Xinerama_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_Xinerama_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_Xinerama_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_Xinerama_h" >&6
@@ -10186,7 +11044,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXext -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXext -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -10210,11 +11067,21 @@ XineramaQueryScreens ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10227,7 +11094,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xext_XineramaQueryScreens=no
 fi
 
 ac_cv_lib_Xext_XineramaQueryScreens=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XineramaQueryScreens" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XineramaQueryScreens" >&5
@@ -10270,7 +11138,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXinerama -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXinerama -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -10294,11 +11161,21 @@ XineramaQueryScreens ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10311,7 +11188,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xinerama_XineramaQueryScreens=no
 fi
 
 ac_cv_lib_Xinerama_XineramaQueryScreens=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xinerama_XineramaQueryScreens" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xinerama_XineramaQueryScreens" >&5
@@ -10405,6 +11283,8 @@ echo "${ECHO_T}not found ($d: no such directory)" >&6
    esac
 
 
    esac
 
 
+VIDMODE_LIBS=""
+
 if test "$with_xf86vmode" = yes; then
 
   # first check for xf86vmode.h
 if test "$with_xf86vmode" = yes; then
 
   # first check for xf86vmode.h
@@ -10420,7 +11300,6 @@ if test "${ac_cv_header_X11_extensions_xf86vmode_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -10432,11 +11311,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10449,7 +11338,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_xf86vmode_h=no
 fi
 
 ac_cv_header_X11_extensions_xf86vmode_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_xf86vmode_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_xf86vmode_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_xf86vmode_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_xf86vmode_h" >&6
@@ -10488,7 +11377,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXxf86vm -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXxf86vm -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -10512,11 +11400,21 @@ XF86VidModeGetViewPort ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10529,13 +11427,16 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xxf86vm_XF86VidModeGetViewPort=no
 fi
 
 ac_cv_lib_Xxf86vm_XF86VidModeGetViewPort=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeGetViewPort" >&5
 echo "${ECHO_T}$ac_cv_lib_Xxf86vm_XF86VidModeGetViewPort" >&6
 if test $ac_cv_lib_Xxf86vm_XF86VidModeGetViewPort = yes; then
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeGetViewPort" >&5
 echo "${ECHO_T}$ac_cv_lib_Xxf86vm_XF86VidModeGetViewPort" >&6
 if test $ac_cv_lib_Xxf86vm_XF86VidModeGetViewPort = yes; then
-  have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
+  have_xf86vmode=yes;
+                   VIDMODE_LIBS="-lXxf86vm";
+                   SAVER_LIBS="$SAVER_LIBS $VIDMODE_LIBS"
 else
   true
 fi
 else
   true
 fi
@@ -10641,7 +11542,6 @@ if test "${ac_cv_header_X11_extensions_xf86vmode_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -10653,11 +11553,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10670,7 +11580,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_xf86vmode_h=no
 fi
 
 ac_cv_header_X11_extensions_xf86vmode_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_xf86vmode_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_xf86vmode_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_xf86vmode_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_xf86vmode_h" >&6
@@ -10710,7 +11620,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXxf86vm -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXxf86vm -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -10734,11 +11643,21 @@ XF86VidModeSetGamma ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10751,7 +11670,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xxf86vm_XF86VidModeSetGamma=no
 fi
 
 ac_cv_lib_Xxf86vm_XF86VidModeSetGamma=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeSetGamma" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeSetGamma" >&5
@@ -10796,7 +11716,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXxf86vm -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXxf86vm -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -10820,11 +11739,21 @@ XF86VidModeSetGammaRamp ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10837,7 +11766,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xxf86vm_XF86VidModeSetGammaRamp=no
 fi
 
 ac_cv_lib_Xxf86vm_XF86VidModeSetGammaRamp=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeSetGammaRamp" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeSetGammaRamp" >&5
@@ -10961,7 +11891,6 @@ if test "${ac_cv_header_X11_extensions_Xrandr_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -10973,11 +11902,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -10990,7 +11929,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_Xrandr_h=no
 fi
 
 ac_cv_header_X11_extensions_Xrandr_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_Xrandr_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_Xrandr_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_Xrandr_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_Xrandr_h" >&6
@@ -11031,7 +11970,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXrender -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXrender -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11055,11 +11993,21 @@ XRenderSetSubpixelOrder ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11072,7 +12020,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xrender_XRenderSetSubpixelOrder=no
 fi
 
 ac_cv_lib_Xrender_XRenderSetSubpixelOrder=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xrender_XRenderSetSubpixelOrder" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xrender_XRenderSetSubpixelOrder" >&5
@@ -11115,7 +12064,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXext $xrender_libs -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXext $xrender_libs -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11139,11 +12087,21 @@ XRRGetScreenInfo ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11156,7 +12114,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xext_XRRGetScreenInfo=no
 fi
 
 ac_cv_lib_Xext_XRRGetScreenInfo=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XRRGetScreenInfo" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XRRGetScreenInfo" >&5
@@ -11199,7 +12158,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXrandr $xrender_libs -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXrandr $xrender_libs -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11223,11 +12181,21 @@ XRRGetScreenInfo ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11240,7 +12208,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xrandr_XRRGetScreenInfo=no
 fi
 
 ac_cv_lib_Xrandr_XRRGetScreenInfo=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xrandr_XRRGetScreenInfo" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xrandr_XRRGetScreenInfo" >&5
@@ -11306,7 +12275,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXxf86misc -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXxf86misc -lXext -lX11 $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11330,11 +12298,21 @@ XF86MiscSetGrabKeysState ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11347,7 +12325,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xxf86misc_XF86MiscSetGrabKeysState=no
 fi
 
 ac_cv_lib_Xxf86misc_XF86MiscSetGrabKeysState=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86misc_XF86MiscSetGrabKeysState" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86misc_XF86MiscSetGrabKeysState" >&5
@@ -11387,7 +12366,6 @@ echo $ECHO_N "checking for XHPDisableReset in X11/XHPlib.h... $ECHO_C" >&6
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11629,7 +12607,6 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11646,11 +12623,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11663,7 +12650,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_pam=no
 fi
 
 ac_cv_pam=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_pam" >&5
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_pam" >&5
@@ -11686,7 +12673,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11710,11 +12696,21 @@ dlopen ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11727,7 +12723,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_dl_dlopen=no
 fi
 
 ac_cv_lib_dl_dlopen=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
@@ -11747,7 +12744,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11771,11 +12767,21 @@ sigtimedwait ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11788,7 +12794,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_c_sigtimedwait=no
 fi
 
 ac_cv_lib_c_sigtimedwait=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_sigtimedwait" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_sigtimedwait" >&5
@@ -11806,7 +12813,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lrt  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lrt  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11830,11 +12836,21 @@ sigtimedwait ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11847,7 +12863,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_rt_sigtimedwait=no
 fi
 
 ac_cv_lib_rt_sigtimedwait=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_rt_sigtimedwait" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_rt_sigtimedwait" >&5
@@ -11864,7 +12881,6 @@ echo $ECHO_N "checking how to call pam_strerror... $ECHO_C" >&6
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11884,11 +12900,21 @@ pam_handle_t *pamh = 0;
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11900,7 +12926,6 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 cat >conftest.$ac_ext <<_ACEOF
 sed 's/^/| /' conftest.$ac_ext >&5
 
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11920,11 +12945,21 @@ char *s =
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -11937,9 +12972,9 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_pam_strerror_args=0
 fi
 
 ac_pam_strerror_args=0
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
       ac_cv_pam_strerror_args=$ac_pam_strerror_args
 fi
 
       ac_cv_pam_strerror_args=$ac_pam_strerror_args
 fi
 
@@ -12039,7 +13074,6 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12056,11 +13090,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12073,7 +13117,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_kerberos=no
 fi
 
 ac_cv_kerberos=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_kerberos" >&5
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_kerberos" >&5
@@ -12090,7 +13134,6 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12107,11 +13150,21 @@ main ()
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12124,7 +13177,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_kerberos5=no
 fi
 
 ac_cv_kerberos5=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_kerberos5" >&5
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_kerberos5" >&5
@@ -12175,7 +13228,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lkrb4  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lkrb4  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12199,11 +13251,21 @@ krb_get_tf_realm ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12216,7 +13278,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_krb4_krb_get_tf_realm=no
 fi
 
 ac_cv_lib_krb4_krb_get_tf_realm=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_krb4_krb_get_tf_realm" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_krb4_krb_get_tf_realm" >&5
@@ -12281,7 +13344,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lcrypt  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lcrypt  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12305,11 +13367,21 @@ crypt ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12322,7 +13394,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_crypt_crypt=no
 fi
 
 ac_cv_lib_crypt_crypt=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5
@@ -12348,21 +13421,28 @@ if test "${ac_cv_func_res_search+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
+/* Define res_search to an innocuous variant, in case <limits.h> declares res_search.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define res_search innocuous_res_search
+
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char res_search (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char res_search (); below.
     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
     <limits.h> exists even on freestanding compilers.  */
+
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
 #ifdef __STDC__
 # include <limits.h>
 #else
 # include <assert.h>
 #endif
+
+#undef res_search
+
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
 extern "C"
@@ -12393,11 +13473,21 @@ return f != res_search;
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12410,7 +13500,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_func_res_search=no
 fi
 
 ac_cv_func_res_search=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_res_search" >&5
 echo "${ECHO_T}$ac_cv_func_res_search" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_func_res_search" >&5
 echo "${ECHO_T}$ac_cv_func_res_search" >&6
@@ -12425,7 +13516,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lresolv  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lresolv  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12449,11 +13539,21 @@ res_search ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12466,7 +13566,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_resolv_res_search=no
 fi
 
 ac_cv_lib_resolv_res_search=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_res_search" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_res_search" >&5
@@ -12575,7 +13676,6 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12598,11 +13698,21 @@ struct passwd_adjunct *p = getpwanam("nobody");
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12615,7 +13725,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_sun_adjunct=no
 fi
 
 ac_cv_sun_adjunct=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_sun_adjunct" >&5
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_sun_adjunct" >&5
@@ -12647,7 +13757,6 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12674,11 +13783,21 @@ struct pr_passwd *p;
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12691,7 +13810,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_enhanced_passwd=no
 fi
 
 ac_cv_enhanced_passwd=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_enhanced_passwd" >&5
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_enhanced_passwd" >&5
@@ -12713,7 +13832,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lprot -lx $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lprot -lx $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12737,11 +13855,21 @@ getprpwnam ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12754,7 +13882,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_prot_getprpwnam=no
 fi
 
 ac_cv_lib_prot_getprpwnam=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_prot_getprpwnam" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_prot_getprpwnam" >&5
@@ -12770,7 +13899,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsecurity  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsecurity  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12794,11 +13922,21 @@ getprpwnam ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12811,7 +13949,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_security_getprpwnam=no
 fi
 
 ac_cv_lib_security_getprpwnam=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_security_getprpwnam" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_security_getprpwnam" >&5
@@ -12844,7 +13983,6 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12867,11 +14005,21 @@ struct s_passwd *p = getspwnam("nobody");
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12884,7 +14032,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_hpux_passwd=no
 fi
 
 ac_cv_hpux_passwd=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_hpux_passwd" >&5
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_hpux_passwd" >&5
@@ -12903,7 +14051,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsec  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsec  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -12927,11 +14074,21 @@ bigcrypt ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -12944,7 +14101,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_sec_bigcrypt=no
 fi
 
 ac_cv_lib_sec_bigcrypt=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_sec_bigcrypt" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_sec_bigcrypt" >&5
@@ -13008,7 +14166,6 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -13030,11 +14187,21 @@ struct spwd *p = getspnam("nobody");
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13047,7 +14214,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_shadow=no
 fi
 
 ac_cv_shadow=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_shadow" >&5
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_shadow" >&5
@@ -13066,7 +14233,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -13090,11 +14256,21 @@ getspnam ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13107,7 +14283,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_c_getspnam=no
 fi
 
 ac_cv_lib_c_getspnam=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_getspnam" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_getspnam" >&5
@@ -13125,7 +14302,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgen  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgen  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -13149,11 +14325,21 @@ getspnam ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13166,7 +14352,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_gen_getspnam=no
 fi
 
 ac_cv_lib_gen_getspnam=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_gen_getspnam" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_gen_getspnam" >&5
@@ -13198,7 +14385,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -13222,11 +14408,21 @@ crypt ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13239,7 +14435,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_c_crypt=no
 fi
 
 ac_cv_lib_c_crypt=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_crypt" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_crypt" >&5
@@ -13257,7 +14454,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lcrypt  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lcrypt  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -13281,11 +14477,21 @@ crypt ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13298,7 +14504,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_crypt_crypt=no
 fi
 
 ac_cv_lib_crypt_crypt=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5
@@ -13473,7 +14680,6 @@ if test "${ac_cv_header_Xm_Xm_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -13487,11 +14693,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13504,7 +14720,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_Xm_Xm_h=no
 fi
 
 ac_cv_header_Xm_Xm_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_Xm_Xm_h" >&5
 echo "${ECHO_T}$ac_cv_header_Xm_Xm_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_Xm_Xm_h" >&5
 echo "${ECHO_T}$ac_cv_header_Xm_Xm_h" >&6
@@ -13535,7 +14751,6 @@ if test "${ac_cv_header_Xm_ComboBox_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -13549,11 +14764,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -13566,7 +14791,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_Xm_ComboBox_h=no
 fi
 
 ac_cv_header_Xm_ComboBox_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_Xm_ComboBox_h" >&5
 echo "${ECHO_T}$ac_cv_header_Xm_ComboBox_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_Xm_ComboBox_h" >&5
 echo "${ECHO_T}$ac_cv_header_Xm_ComboBox_h" >&6
@@ -14238,7 +15463,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lcapplet $ac_gnome_config_libs $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lcapplet $ac_gnome_config_libs $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -14262,11 +15486,21 @@ capplet_widget_changes_are_immediate ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -14279,7 +15513,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_capplet_capplet_widget_changes_are_immediate=no
 fi
 
 ac_cv_lib_capplet_capplet_widget_changes_are_immediate=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_capplet_capplet_widget_changes_are_immediate" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_capplet_capplet_widget_changes_are_immediate" >&5
@@ -14632,7 +15867,6 @@ if test "${ac_cv_header_libxml_xmlIO_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -14644,11 +15878,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -14661,7 +15905,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_libxml_xmlIO_h=no
 fi
 
 ac_cv_header_libxml_xmlIO_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_libxml_xmlIO_h" >&5
 echo "${ECHO_T}$ac_cv_header_libxml_xmlIO_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_libxml_xmlIO_h" >&5
 echo "${ECHO_T}$ac_cv_header_libxml_xmlIO_h" >&6
@@ -14687,7 +15931,6 @@ if test "${ac_cv_header_xmlIO_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -14699,11 +15942,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -14716,7 +15969,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_xmlIO_h=no
 fi
 
 ac_cv_header_xmlIO_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_xmlIO_h" >&5
 echo "${ECHO_T}$ac_cv_header_xmlIO_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_xmlIO_h" >&5
 echo "${ECHO_T}$ac_cv_header_xmlIO_h" >&6
@@ -14762,7 +16015,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lz  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lz  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -14786,11 +16038,21 @@ zlibVersion ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -14803,7 +16065,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_z_zlibVersion=no
 fi
 
 ac_cv_lib_z_zlibVersion=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_z_zlibVersion" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_z_zlibVersion" >&5
@@ -14851,7 +16114,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc $ac_xml_config_libs $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc $ac_xml_config_libs $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -14875,11 +16137,21 @@ xmlParseChunk ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -14892,7 +16164,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_c_xmlParseChunk=no
 fi
 
 ac_cv_lib_c_xmlParseChunk=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_xmlParseChunk" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_xmlParseChunk" >&5
@@ -14953,7 +16226,6 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -14970,11 +16242,21 @@ long vers = LesstifVersion;
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -14987,7 +16269,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_have_lesstif=no
 fi
 
 ac_cv_have_lesstif=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_have_lesstif" >&5
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 echo "$as_me:$LINENO: result: $ac_cv_have_lesstif" >&5
@@ -15018,7 +16300,6 @@ else
                      ac_cv_lesstif_version_string=unknown
 else
   cat >conftest.$ac_ext <<_ACEOF
                      ac_cv_lesstif_version_string=unknown
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15058,7 +16339,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 ac_cv_lesstif_version=unknown
                      ac_cv_lesstif_version_string=unknown
 fi
 ac_cv_lesstif_version=unknown
                      ac_cv_lesstif_version_string=unknown
 fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 fi
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
@@ -15090,7 +16371,6 @@ else
                      ac_cv_motif_version_string=unknown
 else
   cat >conftest.$ac_ext <<_ACEOF
                      ac_cv_motif_version_string=unknown
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15130,7 +16410,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 ac_cv_motif_version=unknown
                      ac_cv_motif_version_string=unknown
 fi
 ac_cv_motif_version=unknown
                      ac_cv_motif_version_string=unknown
 fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 fi
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
@@ -15212,7 +16492,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXp -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXp -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15236,11 +16515,21 @@ XpQueryExtension ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -15253,7 +16542,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xp_XpQueryExtension=no
 fi
 
 ac_cv_lib_Xp_XpQueryExtension=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xp_XpQueryExtension" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xp_XpQueryExtension" >&5
@@ -15304,7 +16594,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXintl -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXintl -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15328,11 +16617,21 @@ _Xsetlocale ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -15345,7 +16644,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_Xintl__Xsetlocale=no
 fi
 
 ac_cv_lib_Xintl__Xsetlocale=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xintl__Xsetlocale" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_Xintl__Xsetlocale" >&5
@@ -15453,7 +16753,6 @@ else
 echo "$as_me:$LINENO: checking GL/gl.h usability" >&5
 echo $ECHO_N "checking GL/gl.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking GL/gl.h usability" >&5
 echo $ECHO_N "checking GL/gl.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15464,11 +16763,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -15481,7 +16790,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -15489,7 +16798,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking GL/gl.h presence" >&5
 echo $ECHO_N "checking GL/gl.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking GL/gl.h presence" >&5
 echo $ECHO_N "checking GL/gl.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15507,6 +16815,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -15526,33 +16835,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: GL/gl.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: GL/gl.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: GL/gl.h: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: GL/gl.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: GL/gl.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: GL/gl.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: GL/gl.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: GL/gl.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: GL/gl.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: GL/gl.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: GL/gl.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: GL/gl.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: GL/gl.h:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: GL/gl.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: GL/gl.h: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -15590,7 +16898,6 @@ if test "${ac_cv_header_GL_glx_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15602,11 +16909,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -15619,7 +16936,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_GL_glx_h=no
 fi
 
 ac_cv_header_GL_glx_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_GL_glx_h" >&5
 echo "${ECHO_T}$ac_cv_header_GL_glx_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_GL_glx_h" >&5
 echo "${ECHO_T}$ac_cv_header_GL_glx_h" >&6
@@ -15653,7 +16970,6 @@ else
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
   fi
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15693,7 +17009,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lpthread  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lpthread  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15717,11 +17032,21 @@ pthread_create ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -15734,7 +17059,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_pthread_pthread_create=no
 fi
 
 ac_cv_lib_pthread_pthread_create=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
@@ -15775,9 +17101,8 @@ if test "${ac_cv_lib_MesaGL_glXCreateContext+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   ac_check_lib_save_LIBS=$LIBS
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lMesaGL -lMesaGLU $GL_LIBS -lX11 -lXext -lm $LIBS"
+LIBS="-lMesaGL -lMesaGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15801,11 +17126,21 @@ glXCreateContext ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -15818,14 +17153,15 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_MesaGL_glXCreateContext=no
 fi
 
 ac_cv_lib_MesaGL_glXCreateContext=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_MesaGL_glXCreateContext" >&5
 echo "${ECHO_T}$ac_cv_lib_MesaGL_glXCreateContext" >&6
 if test $ac_cv_lib_MesaGL_glXCreateContext = yes; then
   gl_lib_1="MesaGL"
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_MesaGL_glXCreateContext" >&5
 echo "${ECHO_T}$ac_cv_lib_MesaGL_glXCreateContext" >&6
 if test $ac_cv_lib_MesaGL_glXCreateContext = yes; then
   gl_lib_1="MesaGL"
-                      GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"
+                      GL_LIBS="-lMesaGL -lMesaGLU $VIDMODE_LIBS $GL_LIBS"
 fi
 
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 
   CPPFLAGS="$ac_save_CPPFLAGS"
@@ -15858,9 +17194,8 @@ if test "${ac_cv_lib_GL_glXCreateContext+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   ac_check_lib_save_LIBS=$LIBS
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lGL -lGLU $GL_LIBS -lX11 -lXext -lm $LIBS"
+LIBS="-lGL -lGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -15884,11 +17219,21 @@ glXCreateContext ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -15901,14 +17246,15 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_GL_glXCreateContext=no
 fi
 
 ac_cv_lib_GL_glXCreateContext=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glXCreateContext" >&5
 echo "${ECHO_T}$ac_cv_lib_GL_glXCreateContext" >&6
 if test $ac_cv_lib_GL_glXCreateContext = yes; then
   gl_lib_1="GL"
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glXCreateContext" >&5
 echo "${ECHO_T}$ac_cv_lib_GL_glXCreateContext" >&6
 if test $ac_cv_lib_GL_glXCreateContext = yes; then
   gl_lib_1="GL"
-                      GL_LIBS="-lGL -lGLU $GL_LIBS"
+                      GL_LIBS="-lGL -lGLU $VIDMODE_LIBS $GL_LIBS"
 fi
 
   CPPFLAGS="$ac_save_CPPFLAGS"
 fi
 
   CPPFLAGS="$ac_save_CPPFLAGS"
@@ -15953,7 +17299,7 @@ if test "${ac_cv_mesagl_version_string+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat > conftest.$ac_ext <<EOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15962 "configure"
+#line 17308 "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
 #include "confdefs.h"
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
@@ -16058,7 +17404,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-l$gl_lib_1 $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-l$gl_lib_1 $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -16082,11 +17427,21 @@ glBindTexture ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -16099,7 +17454,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 eval "$as_ac_Lib=no"
 fi
 
 eval "$as_ac_Lib=no"
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5
@@ -16206,7 +17562,6 @@ if test "${ac_cv_header_GL_gle_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -16218,11 +17573,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -16235,7 +17600,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_GL_gle_h=no
 fi
 
 ac_cv_header_GL_gle_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_GL_gle_h" >&5
 echo "${ECHO_T}$ac_cv_header_GL_gle_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_GL_gle_h" >&5
 echo "${ECHO_T}$ac_cv_header_GL_gle_h" >&6
@@ -16262,7 +17627,6 @@ if test "${ac_cv_header_GL_gutil_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -16274,11 +17638,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -16291,7 +17665,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_GL_gutil_h=no
 fi
 
 ac_cv_header_GL_gutil_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_GL_gutil_h" >&5
 echo "${ECHO_T}$ac_cv_header_GL_gutil_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_GL_gutil_h" >&5
 echo "${ECHO_T}$ac_cv_header_GL_gutil_h" >&6
@@ -16316,7 +17690,6 @@ if test "${ac_cv_header_GL_tube_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -16328,11 +17701,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -16345,7 +17728,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_GL_tube_h=no
 fi
 
 ac_cv_header_GL_tube_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_GL_tube_h" >&5
 echo "${ECHO_T}$ac_cv_header_GL_tube_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_GL_tube_h" >&5
 echo "${ECHO_T}$ac_cv_header_GL_tube_h" >&6
@@ -16388,7 +17771,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -16412,11 +17794,21 @@ gleCreateGC ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -16429,7 +17821,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_gle_gleCreateGC=no
 fi
 
 ac_cv_lib_gle_gleCreateGC=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_gle_gleCreateGC" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_gle_gleCreateGC" >&5
@@ -16485,7 +17878,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -16509,11 +17901,21 @@ uview_direction ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -16526,7 +17928,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_gle_uview_direction=no
 fi
 
 ac_cv_lib_gle_uview_direction=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_gle_uview_direction" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_gle_uview_direction" >&5
@@ -16567,7 +17970,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmatrix $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmatrix $GL_LIBS -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -16591,11 +17993,21 @@ uview_direction_d ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -16608,7 +18020,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_matrix_uview_direction_d=no
 fi
 
 ac_cv_lib_matrix_uview_direction_d=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_matrix_uview_direction_d" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_matrix_uview_direction_d" >&5
@@ -16721,7 +18134,6 @@ if test "${ac_cv_header_X11_xpm_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -16733,11 +18145,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -16750,7 +18172,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_xpm_h=no
 fi
 
 ac_cv_header_X11_xpm_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_xpm_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_xpm_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_xpm_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_xpm_h" >&6
@@ -17067,7 +18489,6 @@ else
 echo "$as_me:$LINENO: checking gdk-pixbuf/gdk-pixbuf.h usability" >&5
 echo $ECHO_N "checking gdk-pixbuf/gdk-pixbuf.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking gdk-pixbuf/gdk-pixbuf.h usability" >&5
 echo $ECHO_N "checking gdk-pixbuf/gdk-pixbuf.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17078,11 +18499,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -17095,7 +18526,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -17103,7 +18534,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking gdk-pixbuf/gdk-pixbuf.h presence" >&5
 echo $ECHO_N "checking gdk-pixbuf/gdk-pixbuf.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking gdk-pixbuf/gdk-pixbuf.h presence" >&5
 echo $ECHO_N "checking gdk-pixbuf/gdk-pixbuf.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17121,6 +18551,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -17140,33 +18571,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf.h: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -17213,7 +18643,6 @@ else
 echo "$as_me:$LINENO: checking gdk-pixbuf/gdk-pixbuf-xlib.h usability" >&5
 echo $ECHO_N "checking gdk-pixbuf/gdk-pixbuf-xlib.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking gdk-pixbuf/gdk-pixbuf-xlib.h usability" >&5
 echo $ECHO_N "checking gdk-pixbuf/gdk-pixbuf-xlib.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17224,11 +18653,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -17241,7 +18680,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -17249,7 +18688,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking gdk-pixbuf/gdk-pixbuf-xlib.h presence" >&5
 echo $ECHO_N "checking gdk-pixbuf/gdk-pixbuf-xlib.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking gdk-pixbuf/gdk-pixbuf-xlib.h presence" >&5
 echo $ECHO_N "checking gdk-pixbuf/gdk-pixbuf-xlib.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17267,6 +18705,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -17286,33 +18725,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: gdk-pixbuf/gdk-pixbuf-xlib.h: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -17360,7 +18798,6 @@ else
 echo "$as_me:$LINENO: checking gdk-pixbuf-xlib/gdk-pixbuf-xlib.h usability" >&5
 echo $ECHO_N "checking gdk-pixbuf-xlib/gdk-pixbuf-xlib.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking gdk-pixbuf-xlib/gdk-pixbuf-xlib.h usability" >&5
 echo $ECHO_N "checking gdk-pixbuf-xlib/gdk-pixbuf-xlib.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17371,11 +18808,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -17388,7 +18835,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -17396,7 +18843,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking gdk-pixbuf-xlib/gdk-pixbuf-xlib.h presence" >&5
 echo $ECHO_N "checking gdk-pixbuf-xlib/gdk-pixbuf-xlib.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking gdk-pixbuf-xlib/gdk-pixbuf-xlib.h presence" >&5
 echo $ECHO_N "checking gdk-pixbuf-xlib/gdk-pixbuf-xlib.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17414,6 +18860,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -17433,33 +18880,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: gdk-pixbuf-xlib/gdk-pixbuf-xlib.h: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -17520,7 +18966,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17544,11 +18989,21 @@ gdk_pixbuf_new_from_file ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -17561,7 +19016,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_c_gdk_pixbuf_new_from_file=no
 fi
 
 ac_cv_lib_c_gdk_pixbuf_new_from_file=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_gdk_pixbuf_new_from_file" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_gdk_pixbuf_new_from_file" >&5
@@ -17602,7 +19058,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lc $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17626,11 +19081,21 @@ gdk_pixbuf_xlib_init ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -17643,7 +19108,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_c_gdk_pixbuf_xlib_init=no
 fi
 
 ac_cv_lib_c_gdk_pixbuf_xlib_init=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_gdk_pixbuf_xlib_init" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_c_gdk_pixbuf_xlib_init" >&5
@@ -17763,7 +19229,6 @@ else
 echo "$as_me:$LINENO: checking jpeglib.h usability" >&5
 echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking jpeglib.h usability" >&5
 echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17774,11 +19239,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -17791,7 +19266,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -17799,7 +19274,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking jpeglib.h presence" >&5
 echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking jpeglib.h presence" >&5
 echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17817,6 +19291,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -17836,33 +19311,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: jpeglib.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: jpeglib.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: jpeglib.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: jpeglib.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: jpeglib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -17915,7 +19389,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ljpeg  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ljpeg  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -17939,11 +19412,21 @@ jpeg_start_compress ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -17956,7 +19439,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_jpeg_jpeg_start_compress=no
 fi
 
 ac_cv_lib_jpeg_jpeg_start_compress=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_start_compress" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_start_compress" >&5
@@ -18004,7 +19488,6 @@ else
 echo "$as_me:$LINENO: checking $ac_header usability" >&5
 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking $ac_header usability" >&5
 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18015,11 +19498,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -18032,7 +19525,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -18040,7 +19533,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking $ac_header presence" >&5
 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking $ac_header presence" >&5
 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18058,6 +19550,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -18077,33 +19570,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -18114,7 +19606,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  eval "$as_ac_Header=$ac_header_preproc"
+  eval "$as_ac_Header=\$ac_header_preproc"
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 fi
 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -18154,7 +19646,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lutil  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lutil  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18178,11 +19669,21 @@ forkpty ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -18195,7 +19696,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_util_forkpty=no
 fi
 
 ac_cv_lib_util_forkpty=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_util_forkpty" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_util_forkpty" >&5
@@ -18291,7 +19793,6 @@ if test "${ac_cv_header_X11_extensions_XShm_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18303,11 +19804,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -18320,7 +19831,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_XShm_h=no
 fi
 
 ac_cv_header_X11_extensions_XShm_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_XShm_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_XShm_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_XShm_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_XShm_h" >&6
@@ -18353,7 +19864,6 @@ else
 echo "$as_me:$LINENO: checking sys/ipc.h usability" >&5
 echo $ECHO_N "checking sys/ipc.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking sys/ipc.h usability" >&5
 echo $ECHO_N "checking sys/ipc.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18364,11 +19874,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -18381,7 +19901,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -18389,7 +19909,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking sys/ipc.h presence" >&5
 echo $ECHO_N "checking sys/ipc.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking sys/ipc.h presence" >&5
 echo $ECHO_N "checking sys/ipc.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18407,6 +19926,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -18426,33 +19946,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: sys/ipc.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: sys/ipc.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: sys/ipc.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: sys/ipc.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/ipc.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: sys/ipc.h: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: sys/ipc.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: sys/ipc.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: sys/ipc.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: sys/ipc.h: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: sys/ipc.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: sys/ipc.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/ipc.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: sys/ipc.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/ipc.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: sys/ipc.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/ipc.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: sys/ipc.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/ipc.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: sys/ipc.h:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: sys/ipc.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: sys/ipc.h: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: sys/ipc.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: sys/ipc.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/ipc.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: sys/ipc.h: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -18499,7 +20018,6 @@ else
 echo "$as_me:$LINENO: checking sys/shm.h usability" >&5
 echo $ECHO_N "checking sys/shm.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking sys/shm.h usability" >&5
 echo $ECHO_N "checking sys/shm.h usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18510,11 +20028,21 @@ $ac_includes_default
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -18527,7 +20055,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_header_compiler=no
 fi
 
 ac_header_compiler=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
@@ -18535,7 +20063,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
 echo "$as_me:$LINENO: checking sys/shm.h presence" >&5
 echo $ECHO_N "checking sys/shm.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 echo "$as_me:$LINENO: checking sys/shm.h presence" >&5
 echo $ECHO_N "checking sys/shm.h presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18553,6 +20080,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
   else
     ac_cpp_err=
   fi
@@ -18572,33 +20100,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
     { echo "$as_me:$LINENO: WARNING: sys/shm.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: sys/shm.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
     { echo "$as_me:$LINENO: WARNING: sys/shm.h: accepted by the compiler, rejected by the preprocessor!" >&5
 echo "$as_me: WARNING: sys/shm.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/shm.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: sys/shm.h: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
+    { echo "$as_me:$LINENO: WARNING: sys/shm.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: sys/shm.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
     ;;
     ;;
-  no:yes )
+  no:yes:* )
     { echo "$as_me:$LINENO: WARNING: sys/shm.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: sys/shm.h: present but cannot be compiled" >&2;}
     { echo "$as_me:$LINENO: WARNING: sys/shm.h: present but cannot be compiled" >&5
 echo "$as_me: WARNING: sys/shm.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sys/shm.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: sys/shm.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/shm.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: sys/shm.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/shm.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: sys/shm.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/shm.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: sys/shm.h:     section \"Present But Cannot Be Compiled\"" >&2;}
     { echo "$as_me:$LINENO: WARNING: sys/shm.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: sys/shm.h: proceeding with the preprocessor's result" >&2;}
     { echo "$as_me:$LINENO: WARNING: sys/shm.h: proceeding with the preprocessor's result" >&5
 echo "$as_me: WARNING: sys/shm.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/shm.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: sys/shm.h: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
     (
       cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists.  ##
+## ------------------------------------------ ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -18658,7 +20185,6 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXextSam -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXextSam -lX11 -lXext -lm $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18682,11 +20208,21 @@ XShmQueryExtension ();
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -18699,7 +20235,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_lib_XextSam_XShmQueryExtension=no
 fi
 
 ac_cv_lib_XextSam_XShmQueryExtension=no
 fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_XextSam_XShmQueryExtension" >&5
 LIBS=$ac_check_lib_save_LIBS
 fi
 echo "$as_me:$LINENO: result: $ac_cv_lib_XextSam_XShmQueryExtension" >&5
@@ -18808,7 +20345,6 @@ if test "${ac_cv_header_X11_extensions_Xdbe_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18820,11 +20356,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -18837,7 +20383,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_Xdbe_h=no
 fi
 
 ac_cv_header_X11_extensions_Xdbe_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_Xdbe_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_Xdbe_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_Xdbe_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_Xdbe_h" >&6
@@ -18939,7 +20485,6 @@ if test "${ac_cv_header_X11_extensions_readdisplay_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -18951,11 +20496,21 @@ cat >>conftest.$ac_ext <<_ACEOF
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -18968,7 +20523,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
 ac_cv_header_X11_extensions_readdisplay_h=no
 fi
 
 ac_cv_header_X11_extensions_readdisplay_h=no
 fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_readdisplay_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_readdisplay_h" >&6
 fi
 echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_readdisplay_h" >&5
 echo "${ECHO_T}$ac_cv_header_X11_extensions_readdisplay_h" >&6
@@ -19588,13 +21143,13 @@ _ACEOF
       # `set' does not quote correctly, so add quotes (double-quote
       # substitution turns \\\\ into \\, and sed turns \\ into \).
       sed -n \
       # `set' does not quote correctly, so add quotes (double-quote
       # substitution turns \\\\ into \\, and sed turns \\ into \).
       sed -n \
-        "s/'/'\\\\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
       ;;
     *)
       # `set' quotes correctly as required by POSIX, so do not add quotes.
       sed -n \
       ;;
     *)
       # `set' quotes correctly as required by POSIX, so do not add quotes.
       sed -n \
-        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+       "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
       ;;
     esac;
 } |
       ;;
     esac;
 } |
@@ -19624,13 +21179,13 @@ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=/{
+  ac_vpsub='/^[         ]*VPATH[        ]*=/{
 s/:*\$(srcdir):*/:/;
 s/:*\${srcdir}:*/:/;
 s/:*@srcdir@:*/:/;
 s/:*\$(srcdir):*/:/;
 s/:*\${srcdir}:*/:/;
 s/:*@srcdir@:*/:/;
-s/^\([^=]*=[   ]*\):*/\1/;
+s/^\([^=]*=[    ]*\):*/\1/;
 s/:*$//;
 s/:*$//;
-s/^[^=]*=[     ]*$//;
+s/^[^=]*=[      ]*$//;
 }'
 fi
 
 }'
 fi
 
@@ -19641,7 +21196,7 @@ ac_ltlibobjs=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_i=`echo "$ac_i" |
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_i=`echo "$ac_i" |
-         sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+        sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
   # 2. Add them.
   ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
   ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
   # 2. Add them.
   ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
   ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
@@ -19692,9 +21247,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
 elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
   set -o posix
 fi
 elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
   set -o posix
 fi
+DUALCASE=1; export DUALCASE # for MKS sh
 
 # Support unset when possible.
 
 # Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
   as_unset=unset
 else
   as_unset=false
   as_unset=unset
 else
   as_unset=false
@@ -19713,7 +21269,7 @@ for as_var in \
   LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
   LC_TELEPHONE LC_TIME
 do
   LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
   LC_TELEPHONE LC_TIME
 do
-  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
     eval $as_var=C; export $as_var
   else
     $as_unset $as_var
     eval $as_var=C; export $as_var
   else
     $as_unset $as_var
@@ -19892,16 +21448,17 @@ rm -f conf$$ conf$$.exe conf$$.file
 if mkdir -p . 2>/dev/null; then
   as_mkdir_p=:
 else
 if mkdir -p . 2>/dev/null; then
   as_mkdir_p=:
 else
+  test -d ./-p && rmdir ./-p
   as_mkdir_p=false
 fi
 
 as_executable_p="test -f"
 
 # Sed expression to map a string onto a valid CPP name.
   as_mkdir_p=false
 fi
 
 as_executable_p="test -f"
 
 # Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 
 # Sed expression to map a string onto a valid variable name.
 
 # Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 # IFS
 
 
 # IFS
@@ -19928,7 +21485,7 @@ _ASBOX
 cat >&5 <<_CSEOF
 
 This file was extended by $as_me, which was
 cat >&5 <<_CSEOF
 
 This file was extended by $as_me, which was
-generated by GNU Autoconf 2.57.  Invocation command line was
+generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -19972,9 +21529,9 @@ Usage: $0 [OPTIONS] [FILE]...
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
   --file=FILE[:TEMPLATE]
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
   --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
+                  instantiate the configuration file FILE
   --header=FILE[:TEMPLATE]
   --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
+                  instantiate the configuration header FILE
 
 Configuration files:
 $config_files
 
 Configuration files:
 $config_files
@@ -19991,11 +21548,10 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
 config.status
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
 config.status
-configured by $0, generated by GNU Autoconf 2.57,
+configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
+Copyright (C) 2003 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 srcdir=$srcdir
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 srcdir=$srcdir
@@ -20351,9 +21907,9 @@ _ACEOF
       (echo ':t
   /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
       if test -z "$ac_sed_cmds"; then
       (echo ':t
   /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
       if test -z "$ac_sed_cmds"; then
-       ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+       ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
       else
       else
-       ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+       ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
       fi
       ac_sed_frag=`expr $ac_sed_frag + 1`
       ac_beg=$ac_end
       fi
       ac_sed_frag=`expr $ac_sed_frag + 1`
       ac_beg=$ac_end
@@ -20371,21 +21927,21 @@ for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
   # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
   case $ac_file in
   - | *:- | *:-:* ) # input from stdin
   # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
   case $ac_file in
   - | *:- | *:-:* ) # input from stdin
-        cat >$tmp/stdin
-        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+       cat >$tmp/stdin
+       ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
   *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
   *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
   * )   ac_file_in=$ac_file.in ;;
   esac
 
   # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
   ac_dir=`(dirname "$ac_file") 2>/dev/null ||
 $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
   * )   ac_file_in=$ac_file.in ;;
   esac
 
   # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
   ac_dir=`(dirname "$ac_file") 2>/dev/null ||
 $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$ac_file" : 'X\(//\)[^/]' \| \
-         X"$ac_file" : 'X\(//\)$' \| \
-         X"$ac_file" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| \
+        .     : '\(.\)' 2>/dev/null ||
 echo X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
 echo X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -20401,10 +21957,10 @@ echo X"$ac_file" |
       as_dirs="$as_dir $as_dirs"
       as_dir=`(dirname "$as_dir") 2>/dev/null ||
 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
       as_dirs="$as_dir $as_dirs"
       as_dir=`(dirname "$as_dir") 2>/dev/null ||
 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$as_dir" : 'X\(//\)[^/]' \| \
-         X"$as_dir" : 'X\(//\)$' \| \
-         X"$as_dir" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| \
+        .     : '\(.\)' 2>/dev/null ||
 echo X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
 echo X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -20442,12 +21998,45 @@ case $srcdir in
     ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
     ac_top_srcdir=$ac_top_builddir$srcdir ;;
 esac
     ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
     ac_top_srcdir=$ac_top_builddir$srcdir ;;
 esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
 
 
   case $INSTALL in
 
 
   case $INSTALL in
@@ -20469,7 +22058,7 @@ echo "$as_me: creating $ac_file" >&6;}
     configure_input="$ac_file.  "
   fi
   configure_input=$configure_input"Generated from `echo $ac_file_in |
     configure_input="$ac_file.  "
   fi
   configure_input=$configure_input"Generated from `echo $ac_file_in |
-                                     sed 's,.*/,,'` by configure."
+                                    sed 's,.*/,,'` by configure."
 
   # First look for the input files in the build tree, otherwise in the
   # src tree.
 
   # First look for the input files in the build tree, otherwise in the
   # src tree.
@@ -20478,24 +22067,24 @@ echo "$as_me: creating $ac_file" >&6;}
       case $f in
       -) echo $tmp/stdin ;;
       [\\/$]*)
       case $f in
       -) echo $tmp/stdin ;;
       [\\/$]*)
-         # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+        # Absolute (can't be DOS-style, as IFS=:)
+        test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
-         echo $f;;
+        echo "$f";;
       *) # Relative
       *) # Relative
-         if test -f "$f"; then
-           # Build tree
-           echo $f
-         elif test -f "$srcdir/$f"; then
-           # Source tree
-           echo $srcdir/$f
-         else
-           # /dev/null tree
-           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+        if test -f "$f"; then
+          # Build tree
+          echo "$f"
+        elif test -f "$srcdir/$f"; then
+          # Source tree
+          echo "$srcdir/$f"
+        else
+          # /dev/null tree
+          { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
-         fi;;
+        fi;;
       esac
     done` || { (exit 1); exit 1; }
 _ACEOF
       esac
     done` || { (exit 1); exit 1; }
 _ACEOF
@@ -20537,12 +22126,12 @@ cat >>$CONFIG_STATUS <<\_ACEOF
 # NAME is the cpp macro being defined and VALUE is the value it is being given.
 #
 # ac_d sets the value in "#define NAME VALUE" lines.
 # NAME is the cpp macro being defined and VALUE is the value it is being given.
 #
 # ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([  ]*\)#\([        ]*define[       ][      ]*\)'
-ac_dB='[       ].*$,\1#\2'
+ac_dA='s,^\([   ]*\)#\([        ]*define[       ][      ]*\)'
+ac_dB='[        ].*$,\1#\2'
 ac_dC=' '
 ac_dD=',;t'
 # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
 ac_dC=' '
 ac_dD=',;t'
 # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_uA='s,^\([   ]*\)#\([        ]*\)undef\([    ][      ]*\)'
 ac_uB='$,\1#\2define\3'
 ac_uC=' '
 ac_uD=',;t'
 ac_uB='$,\1#\2define\3'
 ac_uC=' '
 ac_uD=',;t'
@@ -20551,11 +22140,11 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
   # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
   case $ac_file in
   - | *:- | *:-:* ) # input from stdin
   # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
   case $ac_file in
   - | *:- | *:-:* ) # input from stdin
-        cat >$tmp/stdin
-        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+       cat >$tmp/stdin
+       ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
   *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
   *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+       ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
   * )   ac_file_in=$ac_file.in ;;
   esac
 
   * )   ac_file_in=$ac_file.in ;;
   esac
 
@@ -20569,28 +22158,29 @@ echo "$as_me: creating $ac_file" >&6;}
       case $f in
       -) echo $tmp/stdin ;;
       [\\/$]*)
       case $f in
       -) echo $tmp/stdin ;;
       [\\/$]*)
-         # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+        # Absolute (can't be DOS-style, as IFS=:)
+        test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
-         echo $f;;
+        # Do quote $f, to prevent DOS paths from being IFS'd.
+        echo "$f";;
       *) # Relative
       *) # Relative
-         if test -f "$f"; then
-           # Build tree
-           echo $f
-         elif test -f "$srcdir/$f"; then
-           # Source tree
-           echo $srcdir/$f
-         else
-           # /dev/null tree
-           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+        if test -f "$f"; then
+          # Build tree
+          echo "$f"
+        elif test -f "$srcdir/$f"; then
+          # Source tree
+          echo "$srcdir/$f"
+        else
+          # /dev/null tree
+          { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
-         fi;;
+        fi;;
       esac
     done` || { (exit 1); exit 1; }
   # Remove the trailing spaces.
       esac
     done` || { (exit 1); exit 1; }
   # Remove the trailing spaces.
-  sed 's/[     ]*$//' $ac_file_inputs >$tmp/in
+  sed 's/[      ]*$//' $ac_file_inputs >$tmp/in
 
 _ACEOF
 
 
 _ACEOF
 
@@ -20613,9 +22203,9 @@ s/[\\&,]/\\&/g
 s,[\\$`],\\&,g
 t clear
 : clear
 s,[\\$`],\\&,g
 t clear
 : clear
-s,^[   ]*#[    ]*define[       ][      ]*\([^  (][^    (]*\)\(([^)]*)\)[       ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+s,^[    ]*#[    ]*define[       ][      ]*\([^  (][^    (]*\)\(([^)]*)\)[       ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
 t end
 t end
-s,^[   ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+s,^[    ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
 : end
 _ACEOF
 # If some macros were called several times there might be several times
 : end
 _ACEOF
 # If some macros were called several times there might be several times
@@ -20629,13 +22219,13 @@ rm -f confdef2sed.sed
 # example, in the case of _POSIX_SOURCE, which is predefined and required
 # on some systems where configure will not decide to define it.
 cat >>conftest.undefs <<\_ACEOF
 # example, in the case of _POSIX_SOURCE, which is predefined and required
 # on some systems where configure will not decide to define it.
 cat >>conftest.undefs <<\_ACEOF
-s,^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+s,^[    ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
 _ACEOF
 
 # Break up conftest.defines because some shells have a limit on the size
 # of here documents, and old seds have small limits too (100 cmds).
 echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
 _ACEOF
 
 # Break up conftest.defines because some shells have a limit on the size
 # of here documents, and old seds have small limits too (100 cmds).
 echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-echo '  if grep "^[    ]*#[    ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  if grep "^[     ]*#[    ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
 echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
 echo '  :' >>$CONFIG_STATUS
 rm -f conftest.tail
 echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
 echo '  :' >>$CONFIG_STATUS
 rm -f conftest.tail
@@ -20644,7 +22234,7 @@ do
   # Write a limited-size here document to $tmp/defines.sed.
   echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
   # Speed up: don't consider the non `#define' lines.
   # Write a limited-size here document to $tmp/defines.sed.
   echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
   # Speed up: don't consider the non `#define' lines.
-  echo '/^[    ]*#[    ]*define/!b' >>$CONFIG_STATUS
+  echo '/^[     ]*#[    ]*define/!b' >>$CONFIG_STATUS
   # Work around the forget-to-reset-the-flag bug.
   echo 't clr' >>$CONFIG_STATUS
   echo ': clr' >>$CONFIG_STATUS
   # Work around the forget-to-reset-the-flag bug.
   echo 't clr' >>$CONFIG_STATUS
   echo ': clr' >>$CONFIG_STATUS
@@ -20671,7 +22261,7 @@ do
   # Write a limited-size here document to $tmp/undefs.sed.
   echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
   # Speed up: don't consider the non `#undef'
   # Write a limited-size here document to $tmp/undefs.sed.
   echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
   # Speed up: don't consider the non `#undef'
-  echo '/^[    ]*#[    ]*undef/!b' >>$CONFIG_STATUS
+  echo '/^[     ]*#[    ]*undef/!b' >>$CONFIG_STATUS
   # Work around the forget-to-reset-the-flag bug.
   echo 't clr' >>$CONFIG_STATUS
   echo ': clr' >>$CONFIG_STATUS
   # Work around the forget-to-reset-the-flag bug.
   echo 't clr' >>$CONFIG_STATUS
   echo ': clr' >>$CONFIG_STATUS
@@ -20705,10 +22295,10 @@ echo "$as_me: $ac_file is unchanged" >&6;}
     else
       ac_dir=`(dirname "$ac_file") 2>/dev/null ||
 $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
     else
       ac_dir=`(dirname "$ac_file") 2>/dev/null ||
 $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$ac_file" : 'X\(//\)[^/]' \| \
-         X"$ac_file" : 'X\(//\)$' \| \
-         X"$ac_file" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| \
+        .     : '\(.\)' 2>/dev/null ||
 echo X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
 echo X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -20724,10 +22314,10 @@ echo X"$ac_file" |
       as_dirs="$as_dir $as_dirs"
       as_dir=`(dirname "$as_dir") 2>/dev/null ||
 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
       as_dirs="$as_dir $as_dirs"
       as_dir=`(dirname "$as_dir") 2>/dev/null ||
 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$as_dir" : 'X\(//\)[^/]' \| \
-         X"$as_dir" : 'X\(//\)$' \| \
-         X"$as_dir" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| \
+        .     : '\(.\)' 2>/dev/null ||
 echo X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
 echo X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -20759,16 +22349,41 @@ for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
   ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
   ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
 $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
   ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
   ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
 $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$ac_dest" : 'X\(//\)[^/]' \| \
-         X"$ac_dest" : 'X\(//\)$' \| \
-         X"$ac_dest" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
+        X"$ac_dest" : 'X\(//\)[^/]' \| \
+        X"$ac_dest" : 'X\(//\)$' \| \
+        X"$ac_dest" : 'X\(/\)' \| \
+        .     : '\(.\)' 2>/dev/null ||
 echo X"$ac_dest" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
          /^X\(\/\/\)$/{ s//\1/; q; }
          /^X\(\/\).*/{ s//\1/; q; }
          s/.*/./; q'`
 echo X"$ac_dest" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
          /^X\(\/\/\)[^/].*/{ s//\1/; q; }
          /^X\(\/\/\)$/{ s//\1/; q; }
          /^X\(\/\).*/{ s//\1/; q; }
          s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| \
+        .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
   ac_builddir=.
 
 if test "$ac_dir" != .; then
   ac_builddir=.
 
 if test "$ac_dir" != .; then
@@ -20794,12 +22409,45 @@ case $srcdir in
     ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
     ac_top_srcdir=$ac_top_builddir$srcdir ;;
 esac
     ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
     ac_top_srcdir=$ac_top_builddir$srcdir ;;
 esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
 
 
   { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
 
 
   { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
index a43ce463f58c6368e451e6afc0b229e6e126b530..740cd97f27eafe5969b79babbcf5bb12b607ee2d 100644 (file)
@@ -1296,6 +1296,8 @@ AC_ARG_WITH(xf86vmode-ext,
 
 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
 
 
 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
 
+VIDMODE_LIBS=""
+
 if test "$with_xf86vmode" = yes; then
 
   # first check for xf86vmode.h
 if test "$with_xf86vmode" = yes; then
 
   # first check for xf86vmode.h
@@ -1306,7 +1308,9 @@ if test "$with_xf86vmode" = yes; then
   if test "$have_xf86vmode" = yes; then
     have_xf86vmode=no
     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
   if test "$have_xf86vmode" = yes; then
     have_xf86vmode=no
     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
-                  [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"],
+                  [have_xf86vmode=yes;
+                   VIDMODE_LIBS="-lXxf86vm";
+                   SAVER_LIBS="$SAVER_LIBS $VIDMODE_LIBS"],
                    [true], -lXext -lX11)
   fi
 
                    [true], -lXext -lX11)
   fi
 
@@ -2755,15 +2759,15 @@ if test "$with_gl" = yes; then
     if test "$ac_have_mesa_gl" = yes ; then
       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
                      [gl_lib_1="MesaGL"
     if test "$ac_have_mesa_gl" = yes ; then
       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
                      [gl_lib_1="MesaGL"
-                      GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
-                     [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
+                      GL_LIBS="-lMesaGL -lMesaGLU $VIDMODE_LIBS $GL_LIBS"],
+                     [], -lMesaGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm)
     fi
 
     if test "$gl_lib_1" = "" ; then
       AC_CHECK_X_LIB(GL, glXCreateContext, 
                      [gl_lib_1="GL"
     fi
 
     if test "$gl_lib_1" = "" ; then
       AC_CHECK_X_LIB(GL, glXCreateContext, 
                      [gl_lib_1="GL"
-                      GL_LIBS="-lGL -lGLU $GL_LIBS"],
-                     [], -lGLU $GL_LIBS -lX11 -lXext -lm)
+                      GL_LIBS="-lGL -lGLU $VIDMODE_LIBS $GL_LIBS"],
+                     [], -lGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm)
     fi
 
     if test "$gl_lib_1" = "" ; then
     fi
 
     if test "$gl_lib_1" = "" ; then
index 1aee1744bb08b2467c4549a0131b00eee08261d9..2830471053e7c9ffa7692d9def6bf4c68f6bbc3e 100644 (file)
@@ -897,8 +897,8 @@ xscreensaver-demo-Xm: $(DEMO_OBJS) $(MOTIF_OBJS)
 
 xscreensaver-demo-Gtk: $(DEMO_OBJS) $(GTK_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(DEMO_OBJS) $(GTK_OBJS) $(LIBS) $(X_LIBS) \
 
 xscreensaver-demo-Gtk: $(DEMO_OBJS) $(GTK_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(DEMO_OBJS) $(GTK_OBJS) $(LIBS) $(X_LIBS) \
-       $(GTK_LIBS) $(XML_LIBS) $(INTL_LIBS) $(X_PRE_LIBS) -lXt -lX11 \
-       $(XDPMS_LIBS) -lXext $(X_EXTRA_LIBS)
+       $(GTK_LIBS) $(XPM_LIBS) $(XML_LIBS) $(INTL_LIBS) $(X_PRE_LIBS) \
+       -lXt -lX11 $(XDPMS_LIBS) -lXext $(X_EXTRA_LIBS)
 
 xscreensaver-getimage: $(GETIMG_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(GETIMG_OBJS) $(GETIMG_LIBS) -lm
 
 xscreensaver-getimage: $(GETIMG_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(GETIMG_OBJS) $(GETIMG_LIBS) -lm
index 65eccd0aa3843314cc1b876bf94377da657efa06..23d7af21fb60961042b6d456f1c315589f9e232a 100644 (file)
@@ -4,8 +4,8 @@
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
-!                              version 4.16
-!                              12-May-2004
+!                              version 4.18
+!                              14-Aug-2004
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at http://www.jwz.org/xscreensaver/
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at http://www.jwz.org/xscreensaver/
@@ -160,13 +160,13 @@ GetViewPortIsFullOfLies: False
                                maze -root                                  \n\
                                noseguy -root                               \n\
                                flame -root                                 \n\
                                maze -root                                  \n\
                                noseguy -root                               \n\
                                flame -root                                 \n\
-                               lmorph -root                                \n\
+-                              lmorph -root                                \n\
                                deco -root                                  \n\
                                moire -root                                 \n\
                                moire2 -root                                \n\
                                lightning -root                             \n\
                                strange -root                               \n\
                                deco -root                                  \n\
                                moire -root                                 \n\
                                moire2 -root                                \n\
                                lightning -root                             \n\
                                strange -root                               \n\
-                               spiral -root                                \n\
+-                              spiral -root                                \n\
                                laser -root                                 \n\
                                grav -root                                  \n\
               "Grav (trails)"  grav -root -trail -decay                    \n\
                                laser -root                                 \n\
                                grav -root                                  \n\
               "Grav (trails)"  grav -root -trail -decay                    \n\
@@ -174,7 +174,7 @@ GetViewPortIsFullOfLies: False
                                ifs -root                                   \n\
                                julia -root                                 \n\
                                penrose -root                               \n\
                                ifs -root                                   \n\
                                julia -root                                 \n\
                                penrose -root                               \n\
-                               sierpinski -root                            \n\
+-                              sierpinski -root                            \n\
                                braid -root                                 \n\
                                galaxy -root                                \n\
                                bouboule -root                              \n\
                                braid -root                                 \n\
                                galaxy -root                                \n\
                                bouboule -root                              \n\
@@ -182,8 +182,8 @@ GetViewPortIsFullOfLies: False
                                flag -root                                  \n\
                                sphere -root                                \n\
                                forest -root                                \n\
                                flag -root                                  \n\
                                sphere -root                                \n\
                                forest -root                                \n\
-                               lisa -root                                  \n\
-                               lissie -root                                \n\
+-                              lisa -root                                  \n\
+-                              lissie -root                                \n\
                                goop -root -max-velocity 0.5 -elasticity      \
                                  0.9                                       \n\
                                starfish -root                              \n\
                                goop -root -max-velocity 0.5 -elasticity      \
                                  0.9                                       \n\
                                starfish -root                              \n\
@@ -194,12 +194,12 @@ GetViewPortIsFullOfLies: False
                                coral -root -delay 0                        \n\
                                mountain -root                              \n\
                                triangle -root -delay 1                     \n\
                                coral -root -delay 0                        \n\
                                mountain -root                              \n\
                                triangle -root -delay 1                     \n\
-                               worm -root                                  \n\
-                               rotor -root                                 \n\
-                               ant -root                                   \n\
-                               demon -root                                 \n\
-                               loop -root                                  \n\
-                               vines -root                                 \n\
+-                              worm -root                                  \n\
+-                              rotor -root                                 \n\
+-                              ant -root                                   \n\
+-                              demon -root                                 \n\
+-                              loop -root                                  \n\
+-                              vines -root                                 \n\
                                kaleidescope -root                          \n\
                                xjack -root                                 \n\
                                xlyap -root -randomize                      \n\
                                kaleidescope -root                          \n\
                                xjack -root                                 \n\
                                xlyap -root -randomize                      \n\
@@ -224,7 +224,7 @@ GetViewPortIsFullOfLies: False
                                wander -root                                \n\
              "Wander (spots)"  wander -root -advance 0 -size 10 -circles     \
                                  -length 10000 -reset 100000               \n\
                                wander -root                                \n\
              "Wander (spots)"  wander -root -advance 0 -size 10 -circles     \
                                  -length 10000 -reset 100000               \n\
-                               critical -root                              \n\
+-                              critical -root                              \n\
                                phosphor -root                              \n\
                                xmatrix -root                               \n\
                                petri -root -size 2 -count 20               \n\
                                phosphor -root                              \n\
                                xmatrix -root                               \n\
                                petri -root -size 2 -count 20               \n\
@@ -279,6 +279,8 @@ GetViewPortIsFullOfLies: False
                                wormhole -root                              \n\
                                pacman -root                                \n\
                                fuzzyflakes -root                           \n\
                                wormhole -root                              \n\
                                pacman -root                                \n\
                                fuzzyflakes -root                           \n\
+                               anemotaxis -root                            \n\
+                               memscroller -root                           \n\
 - default-n:                   webcollage -root                            \n\
 - default-n:  "WebCollage (whacked)"                                         \
                                webcollage -root -filter                      \
 - default-n:                   webcollage -root                            \n\
 - default-n:  "WebCollage (whacked)"                                         \
                                webcollage -root -filter                      \
@@ -295,7 +297,7 @@ GetViewPortIsFullOfLies: False
 @GL_KLUDGE@ GL:                        pipes -root                                 \n\
 @GL_KLUDGE@ GL:                        sproingies -root                            \n\
 @GL_KLUDGE@ GL:                        rubik -root                                 \n\
 @GL_KLUDGE@ GL:                        pipes -root                                 \n\
 @GL_KLUDGE@ GL:                        sproingies -root                            \n\
 @GL_KLUDGE@ GL:                        rubik -root                                 \n\
-@GL_KLUDGE@ GL:                        atlantis -root                              \n\
+@GL_KLUDGE@ GL:                        atlantis -root -gradient                    \n\
 @GL_KLUDGE@ GL:                        lament -root                                \n\
 @GL_KLUDGE@ GL:                        bubble3d -root                              \n\
 @GL_KLUDGE@ GL:                        glplanet -root                              \n\
 @GL_KLUDGE@ GL:                        lament -root                                \n\
 @GL_KLUDGE@ GL:                        bubble3d -root                              \n\
 @GL_KLUDGE@ GL:                        glplanet -root                              \n\
@@ -321,9 +323,9 @@ GetViewPortIsFullOfLies: False
 @GL_KLUDGE@ GL:                        flipscreen3d -root                          \n\
 @GL_KLUDGE@ GL:                        glsnake -root                               \n\
 @GL_KLUDGE@ GL:                        boxed -root                                 \n\
 @GL_KLUDGE@ GL:                        flipscreen3d -root                          \n\
 @GL_KLUDGE@ GL:                        glsnake -root                               \n\
 @GL_KLUDGE@ GL:                        boxed -root                                 \n\
-@GL_KLUDGE@ GL:        "GLForestFire"          glforestfire -root                  \n\
+-         GL:  "GLForestFire"          glforestfire -root                  \n\
 -         GL:  "GLForestFire (rain)"   glforestfire -root -count 0         \n\
 -         GL:  "GLForestFire (rain)"   glforestfire -root -count 0         \n\
-@GL_KLUDGE@ GL:                        sballs -root                                \n\
+-         GL:                  sballs -root                                \n\
 @GL_KLUDGE@ GL:                        cubenetic -root                             \n\
 @GL_KLUDGE@ GL:                        spheremonics -root                          \n\
 @GL_KLUDGE@ GL:                        lavalite -root                              \n\
 @GL_KLUDGE@ GL:                        cubenetic -root                             \n\
 @GL_KLUDGE@ GL:                        spheremonics -root                          \n\
 @GL_KLUDGE@ GL:                        lavalite -root                              \n\
@@ -616,6 +618,7 @@ XScreenSaver*doc.fontList:       *-helvetica-medium-r-*-*-*-100-*-*-*-iso8859-1
 *hacks.mirrorblob.name:     MirrorBlob
 *hacks.blinkbox.name:       BlinkBox
 *hacks.fuzzyflakes.name:    FuzzyFlakes
 *hacks.mirrorblob.name:     MirrorBlob
 *hacks.blinkbox.name:       BlinkBox
 *hacks.fuzzyflakes.name:    FuzzyFlakes
+*hacks.memscroller.name:    MemScroller
 
 ! obsolete, but still used by xscreensaver-demo-Xm.
 *hacks.documentation.isInstalled: True
 
 ! obsolete, but still used by xscreensaver-demo-Xm.
 *hacks.documentation.isInstalled: True
index 41314222166927ee973736c8ebc7360b4e1648be..aeccfc941d12abbc67c13d0002936ad942de3ca7 100644 (file)
                                maze -root                                  \\n\
                                noseguy -root                               \\n\
                                flame -root                                 \\n\
                                maze -root                                  \\n\
                                noseguy -root                               \\n\
                                flame -root                                 \\n\
-                               lmorph -root                                \\n\
+-                              lmorph -root                                \\n\
                                deco -root                                  \\n\
                                moire -root                                 \\n\
                                moire2 -root                                \\n\
                                lightning -root                             \\n\
                                strange -root                               \\n\
                                deco -root                                  \\n\
                                moire -root                                 \\n\
                                moire2 -root                                \\n\
                                lightning -root                             \\n\
                                strange -root                               \\n\
-                               spiral -root                                \\n\
+-                              spiral -root                                \\n\
                                laser -root                                 \\n\
                                grav -root                                  \\n\
               \"Grav (trails)\"        grav -root -trail -decay                    \\n\
                                laser -root                                 \\n\
                                grav -root                                  \\n\
               \"Grav (trails)\"        grav -root -trail -decay                    \\n\
@@ -99,7 +99,7 @@
                                ifs -root                                   \\n\
                                julia -root                                 \\n\
                                penrose -root                               \\n\
                                ifs -root                                   \\n\
                                julia -root                                 \\n\
                                penrose -root                               \\n\
-                               sierpinski -root                            \\n\
+-                              sierpinski -root                            \\n\
                                braid -root                                 \\n\
                                galaxy -root                                \\n\
                                bouboule -root                              \\n\
                                braid -root                                 \\n\
                                galaxy -root                                \\n\
                                bouboule -root                              \\n\
                                flag -root                                  \\n\
                                sphere -root                                \\n\
                                forest -root                                \\n\
                                flag -root                                  \\n\
                                sphere -root                                \\n\
                                forest -root                                \\n\
-                               lisa -root                                  \\n\
-                               lissie -root                                \\n\
+-                              lisa -root                                  \\n\
+-                              lissie -root                                \\n\
                                goop -root -max-velocity 0.5 -elasticity      \
                                  0.9                                       \\n\
                                starfish -root                              \\n\
                                goop -root -max-velocity 0.5 -elasticity      \
                                  0.9                                       \\n\
                                starfish -root                              \\n\
                                coral -root -delay 0                        \\n\
                                mountain -root                              \\n\
                                triangle -root -delay 1                     \\n\
                                coral -root -delay 0                        \\n\
                                mountain -root                              \\n\
                                triangle -root -delay 1                     \\n\
-                               worm -root                                  \\n\
-                               rotor -root                                 \\n\
-                               ant -root                                   \\n\
-                               demon -root                                 \\n\
-                               loop -root                                  \\n\
-                               vines -root                                 \\n\
+-                              worm -root                                  \\n\
+-                              rotor -root                                 \\n\
+-                              ant -root                                   \\n\
+-                              demon -root                                 \\n\
+-                              loop -root                                  \\n\
+-                              vines -root                                 \\n\
                                kaleidescope -root                          \\n\
                                xjack -root                                 \\n\
                                xlyap -root -randomize                      \\n\
                                kaleidescope -root                          \\n\
                                xjack -root                                 \\n\
                                xlyap -root -randomize                      \\n\
                                wander -root                                \\n\
              \"Wander (spots)\"        wander -root -advance 0 -size 10 -circles     \
                                  -length 10000 -reset 100000               \\n\
                                wander -root                                \\n\
              \"Wander (spots)\"        wander -root -advance 0 -size 10 -circles     \
                                  -length 10000 -reset 100000               \\n\
-                               critical -root                              \\n\
+-                              critical -root                              \\n\
                                phosphor -root                              \\n\
                                xmatrix -root                               \\n\
                                petri -root -size 2 -count 20               \\n\
                                phosphor -root                              \\n\
                                xmatrix -root                               \\n\
                                petri -root -size 2 -count 20               \\n\
                                wormhole -root                              \\n\
                                pacman -root                                \\n\
                                fuzzyflakes -root                           \\n\
                                wormhole -root                              \\n\
                                pacman -root                                \\n\
                                fuzzyflakes -root                           \\n\
+                               anemotaxis -root                            \\n\
+                               memscroller -root                           \\n\
 - default-n:                   webcollage -root                            \\n\
 - default-n:  \"WebCollage (whacked)\"                                       \
                                webcollage -root -filter                      \
 - default-n:                   webcollage -root                            \\n\
 - default-n:  \"WebCollage (whacked)\"                                       \
                                webcollage -root -filter                      \
           GL:                  pipes -root                                 \\n\
           GL:                  sproingies -root                            \\n\
           GL:                  rubik -root                                 \\n\
           GL:                  pipes -root                                 \\n\
           GL:                  sproingies -root                            \\n\
           GL:                  rubik -root                                 \\n\
-          GL:                  atlantis -root                              \\n\
+          GL:                  atlantis -root -gradient                    \\n\
           GL:                  lament -root                                \\n\
           GL:                  bubble3d -root                              \\n\
           GL:                  glplanet -root                              \\n\
           GL:                  lament -root                                \\n\
           GL:                  bubble3d -root                              \\n\
           GL:                  glplanet -root                              \\n\
           GL:                  flipscreen3d -root                          \\n\
           GL:                  glsnake -root                               \\n\
           GL:                  boxed -root                                 \\n\
           GL:                  flipscreen3d -root                          \\n\
           GL:                  glsnake -root                               \\n\
           GL:                  boxed -root                                 \\n\
-          GL:  \"GLForestFire\"                glforestfire -root                  \\n\
+-         GL:  \"GLForestFire\"                glforestfire -root                  \\n\
 -         GL:  \"GLForestFire (rain)\" glforestfire -root -count 0         \\n\
 -         GL:  \"GLForestFire (rain)\" glforestfire -root -count 0         \\n\
-          GL:                  sballs -root                                \\n\
+-         GL:                  sballs -root                                \\n\
           GL:                  cubenetic -root                             \\n\
           GL:                  spheremonics -root                          \\n\
           GL:                  lavalite -root                              \\n\
           GL:                  cubenetic -root                             \\n\
           GL:                  spheremonics -root                          \\n\
           GL:                  lavalite -root                              \\n\
 "*hacks.mirrorblob.name:     MirrorBlob",
 "*hacks.blinkbox.name:       BlinkBox",
 "*hacks.fuzzyflakes.name:    FuzzyFlakes",
 "*hacks.mirrorblob.name:     MirrorBlob",
 "*hacks.blinkbox.name:       BlinkBox",
 "*hacks.fuzzyflakes.name:    FuzzyFlakes",
+"*hacks.memscroller.name:    MemScroller",
 "*hacks.documentation.isInstalled: True",
 "*hacks.documentation.isInstalled: True",
index f220ab0dd558268b70cade6add9e7ba37df02b9f..298860a7e130a07dfb0cd4f4c0a9cd5435e8b27c 100644 (file)
@@ -216,7 +216,7 @@ static int maybe_reload_init_file (state *);
 static void await_xscreensaver (state *);
 
 static void schedule_preview (state *, const char *cmd);
 static void await_xscreensaver (state *);
 
 static void schedule_preview (state *, const char *cmd);
-static void kill_preview_subproc (state *);
+static void kill_preview_subproc (state *, Bool reset_p);
 static void schedule_preview_check (state *);
 
 
 static void schedule_preview_check (state *);
 
 
@@ -577,6 +577,11 @@ run_cmd (state *s, Atom command, int arg)
 
   flush_dialog_changes_and_save (s);
   status = xscreensaver_command (GDK_DISPLAY(), command, arg, False, &err);
 
   flush_dialog_changes_and_save (s);
   status = xscreensaver_command (GDK_DISPLAY(), command, arg, False, &err);
+
+  /* Kludge: ignore the spurious "window unexpectedly deleted" errors... */
+  if (status < 0 && err && strstr (err, "unexpectedly deleted"))
+    status = 0;
+
   if (status < 0)
     {
       char buf [255];
   if (status < 0)
     {
       char buf [255];
@@ -620,7 +625,7 @@ exit_menu_cb (GtkMenuItem *menuitem, gpointer user_data)
 {
   state *s = global_state_kludge;  /* I hate C so much... */
   flush_dialog_changes_and_save (s);
 {
   state *s = global_state_kludge;  /* I hate C so much... */
   flush_dialog_changes_and_save (s);
-  kill_preview_subproc (s);
+  kill_preview_subproc (s, False);
   gtk_main_quit ();
 }
 
   gtk_main_quit ();
 }
 
@@ -2009,7 +2014,7 @@ server_current_hack (void)
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
-  CARD32 *data = 0;
+  unsigned char *dataP = 0;
   Display *dpy = GDK_DISPLAY();
   int hack_number = -1;
 
   Display *dpy = GDK_DISPLAY();
   int hack_number = -1;
 
@@ -2017,14 +2022,17 @@ server_current_hack (void)
                           XA_SCREENSAVER_STATUS,
                           0, 3, False, XA_INTEGER,
                           &type, &format, &nitems, &bytesafter,
                           XA_SCREENSAVER_STATUS,
                           0, 3, False, XA_INTEGER,
                           &type, &format, &nitems, &bytesafter,
-                          (unsigned char **) &data)
+                          &dataP)
       == Success
       && type == XA_INTEGER
       && nitems >= 3
       == Success
       && type == XA_INTEGER
       && nitems >= 3
-      && data)
-    hack_number = (int) data[2] - 1;
+      && dataP)
+    {
+      CARD32 *data = (CARD32 *) dataP;
+      hack_number = (int) data[2] - 1;
+    }
 
 
-  if (data) free (data);
+  if (dataP) XFree (dataP);
 
   return hack_number;
 }
 
   return hack_number;
 }
@@ -3110,6 +3118,32 @@ clear_preview_window (state *s)
 }
 
 
 }
 
 
+static void
+reset_preview_window (state *s)
+{
+  /* On some systems (most recently, MacOS X) OpenGL programs get confused
+     when you kill one and re-start another on the same window.  So maybe
+     it's best to just always destroy and recreate the preview window
+     when changing hacks, instead of always trying to reuse the same one?
+   */
+  GtkWidget *pr = name_to_widget (s, "preview");
+  if (GTK_WIDGET_REALIZED (pr))
+    {
+      Window oid = (pr->window ? GDK_WINDOW_XWINDOW (pr->window) : 0);
+      Window id;
+      gtk_widget_hide (pr);
+      gtk_widget_unrealize (pr);
+      gtk_widget_realize (pr);
+      gtk_widget_show (pr);
+      id = (pr->window ? GDK_WINDOW_XWINDOW (pr->window) : 0);
+      if (s->debug_p)
+        fprintf (stderr, "%s: window id 0x%X -> 0x%X\n", blurb(),
+                 (unsigned int) oid,
+                 (unsigned int) id);
+    }
+}
+
+
 static void
 fix_preview_visual (state *s)
 {
 static void
 fix_preview_visual (state *s)
 {
@@ -3324,7 +3358,7 @@ get_best_gl_visual (state *s)
 
 
 static void
 
 
 static void
-kill_preview_subproc (state *s)
+kill_preview_subproc (state *s, Bool reset_p)
 {
   s->running_preview_error_p = False;
 
 {
   s->running_preview_error_p = False;
 
@@ -3370,6 +3404,12 @@ kill_preview_subproc (state *s)
     }
 
   reap_zombies (s);
     }
 
   reap_zombies (s);
+
+  if (reset_p)
+    {
+      reset_preview_window (s);
+      clear_preview_window (s);
+    }
 }
 
 
 }
 
 
@@ -3386,13 +3426,17 @@ launch_preview_subproc (state *s)
   const char *cmd = s->desired_preview_cmd;
 
   GtkWidget *pr = name_to_widget (s, "preview");
   const char *cmd = s->desired_preview_cmd;
 
   GtkWidget *pr = name_to_widget (s, "preview");
-  GdkWindow *window = pr->window;
+  GdkWindow *window;
+
+  reset_preview_window (s);
+
+  window = pr->window;
 
   s->running_preview_error_p = False;
 
   if (s->preview_suppressed_p)
     {
 
   s->running_preview_error_p = False;
 
   if (s->preview_suppressed_p)
     {
-      kill_preview_subproc (s);
+      kill_preview_subproc (s, False);
       goto DONE;
     }
 
       goto DONE;
     }
 
@@ -3412,7 +3456,7 @@ launch_preview_subproc (state *s)
                (unsigned int) id);
     }
 
                (unsigned int) id);
     }
 
-  kill_preview_subproc (s);
+  kill_preview_subproc (s, False);
   if (! new_cmd)
     {
       s->running_preview_error_p = True;
   if (! new_cmd)
     {
       s->running_preview_error_p = True;
@@ -3559,7 +3603,7 @@ update_subproc_timer (gpointer data)
 {
   state *s = (state *) data;
   if (! s->desired_preview_cmd)
 {
   state *s = (state *) data;
   if (! s->desired_preview_cmd)
-    kill_preview_subproc (s);
+    kill_preview_subproc (s, True);
   else if (!s->running_preview_cmd ||
            !!strcmp (s->desired_preview_cmd, s->running_preview_cmd))
     launch_preview_subproc (s);
   else if (!s->running_preview_cmd ||
            !!strcmp (s->desired_preview_cmd, s->running_preview_cmd))
     launch_preview_subproc (s);
@@ -3682,7 +3726,7 @@ screen_blanked_p (void)
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
-  CARD32 *data = 0;
+  unsigned char *dataP = 0;
   Display *dpy = GDK_DISPLAY();
   Bool blanked_p = False;
 
   Display *dpy = GDK_DISPLAY();
   Bool blanked_p = False;
 
@@ -3690,14 +3734,17 @@ screen_blanked_p (void)
                           XA_SCREENSAVER_STATUS,
                           0, 3, False, XA_INTEGER,
                           &type, &format, &nitems, &bytesafter,
                           XA_SCREENSAVER_STATUS,
                           0, 3, False, XA_INTEGER,
                           &type, &format, &nitems, &bytesafter,
-                          (unsigned char **) &data)
+                          &dataP)
       == Success
       && type == XA_INTEGER
       && nitems >= 3
       == Success
       && type == XA_INTEGER
       && nitems >= 3
-      && data)
-    blanked_p = (data[0] == XA_BLANK || data[0] == XA_LOCK);
+      && dataP)
+    {
+      Atom *data = (Atom *) dataP;
+      blanked_p = (data[0] == XA_BLANK || data[0] == XA_LOCK);
+    }
 
 
-  if (data) free (data);
+  if (dataP) XFree (dataP);
 
   return blanked_p;
 }
 
   return blanked_p;
 }
@@ -3715,7 +3762,7 @@ check_blanked_timer (gpointer data)
     {
       if (s->debug_p)
         fprintf (stderr, "%s: screen is blanked: killing preview\n", blurb());
     {
       if (s->debug_p)
         fprintf (stderr, "%s: screen is blanked: killing preview\n", blurb());
-      kill_preview_subproc (s);
+      kill_preview_subproc (s, True);
     }
 
   return True;  /* re-execute timer */
     }
 
   return True;  /* re-execute timer */
@@ -3896,7 +3943,7 @@ demo_ehandler (Display *dpy, XErrorEvent *error)
   state *s = global_state_kludge;  /* I hate C so much... */
   fprintf (stderr, "\nX error in %s:\n", blurb());
   XmuPrintDefaultErrorMessage (dpy, error, stderr);
   state *s = global_state_kludge;  /* I hate C so much... */
   fprintf (stderr, "\nX error in %s:\n", blurb());
   XmuPrintDefaultErrorMessage (dpy, error, stderr);
-  kill_preview_subproc (s);
+  kill_preview_subproc (s, False);
   exit (-1);
   return 0;
 }
   exit (-1);
   return 0;
 }
@@ -4598,7 +4645,7 @@ main (int argc, char **argv)
 # endif /* HAVE_CRAPPLET */
     gtk_main ();
 
 # endif /* HAVE_CRAPPLET */
     gtk_main ();
 
-  kill_preview_subproc (s);
+  kill_preview_subproc (s, False);
   exit (0);
 }
 
   exit (0);
 }
 
index 30621cb18e0da80ee5f8f2337143faaa8a846b5b..2aa61f637daa8f9178ee7b31521651f7c9c7d57e 100644 (file)
@@ -948,6 +948,9 @@ xfree_lock_grab_smasher (saver_info *si, Bool lock_p)
   XSync (si->dpy, False);
   if (error_handler_hit_p) status = 666;
 
   XSync (si->dpy, False);
   if (error_handler_hit_p) status = 666;
 
+  if (!lock_p && status == MiscExtGrabStateAlready)
+    status = MiscExtGrabStateSuccess;  /* shut up, consider this success */
+
   if (p->verbose_p && status != MiscExtGrabStateSuccess)
     fprintf (stderr, "%s: error: XF86MiscSetGrabKeysState(%d) returned %s\n",
              blurb(), !lock_p,
   if (p->verbose_p && status != MiscExtGrabStateSuccess)
     fprintf (stderr, "%s: error: XF86MiscSetGrabKeysState(%d) returned %s\n",
              blurb(), !lock_p,
@@ -1160,7 +1163,7 @@ passwd_animate_timer (XtPointer closure, XtIntervalId *id)
   else
     pw->timer = 0;
 
   else
     pw->timer = 0;
 
-  idle_timer ((XtPointer) si, id);
+  idle_timer ((XtPointer) si, 0);
 }
 
 
 }
 
 
index 3c6e4d1e4a04c3114915c6be28cfa2e07508ab32..d56d5e9fd20ff2f5f205a2e29f20f22f841d8c42 100644 (file)
@@ -89,7 +89,7 @@ find_screensaver_window (Display *dpy, char **version)
       Atom type;
       int format;
       unsigned long nitems, bytesafter;
       Atom type;
       int format;
       unsigned long nitems, bytesafter;
-      char *v;
+      unsigned char *v;
       int status;
 
       /* We're walking the list of root-level windows and trying to find
       int status;
 
       /* We're walking the list of root-level windows and trying to find
@@ -106,7 +106,7 @@ find_screensaver_window (Display *dpy, char **version)
                                    XA_SCREENSAVER_VERSION,
                                    0, 200, False, XA_STRING,
                                    &type, &format, &nitems, &bytesafter,
                                    XA_SCREENSAVER_VERSION,
                                    0, 200, False, XA_STRING,
                                    &type, &format, &nitems, &bytesafter,
-                                   (unsigned char **) &v);
+                                   &v);
       XSync (dpy, False);
       XSetErrorHandler (old_handler);
       old_handler = 0;
       XSync (dpy, False);
       XSetErrorHandler (old_handler);
       old_handler = 0;
@@ -121,7 +121,7 @@ find_screensaver_window (Display *dpy, char **version)
        {
           Window ret = kids[i];
          if (version)
        {
           Window ret = kids[i];
          if (version)
-           *version = v;
+           *version = (char *) v;
           XFree (kids);
          return ret;
        }
           XFree (kids);
          return ret;
        }
@@ -217,21 +217,22 @@ send_xscreensaver_command (Display *dpy, Atom command, long arg,
          Atom type;
          int format;
          unsigned long nitems, bytesafter;
          Atom type;
          int format;
          unsigned long nitems, bytesafter;
-         CARD32 *data = 0;
+         unsigned char *dataP = 0;
 
          if (XGetWindowProperty (dpy,
                                   RootWindow (dpy, 0),
                                  XA_SCREENSAVER_STATUS,
                                  0, 999, False, XA_INTEGER,
                                  &type, &format, &nitems, &bytesafter,
 
          if (XGetWindowProperty (dpy,
                                   RootWindow (dpy, 0),
                                  XA_SCREENSAVER_STATUS,
                                  0, 999, False, XA_INTEGER,
                                  &type, &format, &nitems, &bytesafter,
-                                 (unsigned char **) &data)
+                                 &dataP)
              == Success
              && type
              == Success
              && type
-             && data)
+             && dataP)
            {
               Atom blanked;
               time_t tt;
               char *s;
            {
               Atom blanked;
               time_t tt;
               char *s;
+              Atom *data = (Atom *) dataP;
 
               if (type != XA_INTEGER || nitems < 3)
                 {
 
               if (type != XA_INTEGER || nitems < 3)
                 {
@@ -298,7 +299,7 @@ send_xscreensaver_command (Display *dpy, Atom command, long arg,
            }
          else
            {
            }
          else
            {
-             if (data) free (data);
+             if (dataP) XFree (dataP);
              fprintf (stdout, "\n");
              fflush (stdout);
              fprintf (stderr, "no saver status on root window.\n");
              fprintf (stdout, "\n");
              fflush (stdout);
              fprintf (stderr, "no saver status on root window.\n");
@@ -414,7 +415,7 @@ xscreensaver_command_response (Display *dpy, Window window,
              Atom type;
              int format;
              unsigned long nitems, bytesafter;
              Atom type;
              int format;
              unsigned long nitems, bytesafter;
-             char *msg = 0;
+             unsigned char *msg = 0;
 
              XSync (dpy, False);
               if (old_handler) abort();
 
              XSync (dpy, False);
               if (old_handler) abort();
@@ -424,7 +425,7 @@ xscreensaver_command_response (Display *dpy, Window window,
                                        0, 1024, True,
                                        AnyPropertyType,
                                        &type, &format, &nitems, &bytesafter,
                                        0, 1024, True,
                                        AnyPropertyType,
                                        &type, &format, &nitems, &bytesafter,
-                                       (unsigned char **) &msg);
+                                       &msg);
              XSync (dpy, False);
               XSetErrorHandler (old_handler);
               old_handler = 0;
              XSync (dpy, False);
               XSetErrorHandler (old_handler);
               old_handler = 0;
@@ -473,7 +474,7 @@ xscreensaver_command_response (Display *dpy, Window window,
                  else
                    {
                      int ret = (msg[0] == '+' ? 0 : -1);
                  else
                    {
                      int ret = (msg[0] == '+' ? 0 : -1);
-                      sprintf (err, "%s: %s\n", progname, msg+1);
+                      sprintf (err, "%s: %s\n", progname, (char *) msg+1);
 
                       if (error_ret)
                         *error_ret = strdup (err);
 
                       if (error_ret)
                         *error_ret = strdup (err);
@@ -531,30 +532,30 @@ server_xscreensaver_version (Display *dpy,
 
   if (version_ret)
     {
 
   if (version_ret)
     {
-      char *v = 0;
+      unsigned char *v = 0;
       XGetWindowProperty (dpy, window, XA_SCREENSAVER_VERSION, 0, 1,
                          False, XA_STRING, &type, &format, &nitems,
       XGetWindowProperty (dpy, window, XA_SCREENSAVER_VERSION, 0, 1,
                          False, XA_STRING, &type, &format, &nitems,
-                         &bytesafter, (unsigned char **) &v);
+                         &bytesafter, &v);
       if (v)
        {
       if (v)
        {
-         *version_ret = strdup (v);
+         *version_ret = strdup ((char *) v);
          XFree (v);
        }
     }
 
   if (user_ret || host_ret)
     {
          XFree (v);
        }
     }
 
   if (user_ret || host_ret)
     {
-      char *id = 0;
+      unsigned char *id = 0;
       const char *user = 0;
       const char *host = 0;
 
       XGetWindowProperty (dpy, window, XA_SCREENSAVER_ID, 0, 512,
                          False, XA_STRING, &type, &format, &nitems,
       const char *user = 0;
       const char *host = 0;
 
       XGetWindowProperty (dpy, window, XA_SCREENSAVER_ID, 0, 512,
                          False, XA_STRING, &type, &format, &nitems,
-                         &bytesafter, (unsigned char **) &id);
+                         &bytesafter, &id);
       if (id && *id)
        {
          const char *old_tag = " on host ";
       if (id && *id)
        {
          const char *old_tag = " on host ";
-         const char *s = strstr (id, old_tag);
+         const char *s = strstr ((char *) id, old_tag);
          if (s)
            {
              /* found ID of the form "1234 on host xyz". */
          if (s)
            {
              /* found ID of the form "1234 on host xyz". */
@@ -564,7 +565,7 @@ server_xscreensaver_version (Display *dpy,
          else
            {
              char *o = 0, *p = 0, *c = 0;
          else
            {
              char *o = 0, *p = 0, *c = 0;
-             o = strchr (id, '(');
+             o = strchr ((char *) id, '(');
              if (o) p = strchr (o, '@');
              if (p) c = strchr (p, ')');
              if (c)
              if (o) p = strchr (o, '@');
              if (p) c = strchr (p, ')');
              if (c)
index 63887efa670744f774768d9204bd7af903c77a9e..5ba24b4a9d1ab2a16df126c81a0a67915ccb76f7 100644 (file)
@@ -50,11 +50,21 @@ blurb (void)
 }
 
 
 }
 
 
+static Bool error_handler_hit_p = False;
+
+static int
+ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error)
+{
+  error_handler_hit_p = True;
+  return 0;
+}
+
+
 int
 main (int argc, char **argv)
 {
 int
 main (int argc, char **argv)
 {
-  int event_number, error_number;
-  int major, minor;
+  int event_number = -1, error_number = -1;
+  int major = -1, minor = -1;
   int nscreens = 0;
   int i;
 
   int nscreens = 0;
   int i;
 
@@ -93,10 +103,27 @@ main (int argc, char **argv)
 
   for (i = 0; i < nscreens; i++)
     {
 
   for (i = 0; i < nscreens; i++)
     {
-      XRRScreenConfiguration *rrc =
-        (major >= 0 ? XRRGetScreenInfo (dpy, RootWindow (dpy, i)) : 0);
+      XRRScreenConfiguration *rrc;
+      XErrorHandler old_handler;
+
+      XSync (dpy, False);
+      error_handler_hit_p = False;
+      old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
 
 
-      if (rrc)
+      rrc = (major >= 0 ? XRRGetScreenInfo (dpy, RootWindow (dpy, i)) : 0);
+
+      XSync (dpy, False);
+      XSetErrorHandler (old_handler);
+      XSync (dpy, False);
+
+      if (error_handler_hit_p)
+        {
+          fprintf(stderr, "%s:   XRRGetScreenInfo(dpy, %d) ==> X error:\n",
+                  blurb(), i);
+          /* do it again without the error handler to print the error */
+          rrc = XRRGetScreenInfo (dpy, RootWindow (dpy, i));
+        }
+      else if (rrc)
         {
           SizeID current_size = -1;
           Rotation current_rotation = ~0;
         {
           SizeID current_size = -1;
           Rotation current_rotation = ~0;
index 2f11bc0d2cdb29ce0f1337dff519b0c285bcce50..bf1a0b188c160acfa705cf97270a4a9e16e34a8e 100644 (file)
@@ -51,6 +51,16 @@ blurb (void)
 }
 
 
 }
 
 
+static Bool error_handler_hit_p = False;
+
+static int
+ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error)
+{
+  error_handler_hit_p = True;
+  return 0;
+}
+
+
 static int
 screen_count (Display *dpy)
 {
 static int
 screen_count (Display *dpy)
 {
@@ -150,11 +160,29 @@ main (int argc, char **argv)
 
   for (i = 0; i < nscreens; i++)
     {
 
   for (i = 0; i < nscreens; i++)
     {
-      int result;
+      int result = 0;
       int x = 0, y = 0, dot = 0;
       XF86VidModeModeLine ml = { 0, };
       int x = 0, y = 0, dot = 0;
       XF86VidModeModeLine ml = { 0, };
+      XErrorHandler old_handler;
+
+      XSync (dpy, False);
+      error_handler_hit_p = False;
+      old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
 
       result = XF86VidModeGetViewPort (dpy, i, &x, &y);
 
       result = XF86VidModeGetViewPort (dpy, i, &x, &y);
+
+      XSync (dpy, False);
+      XSetErrorHandler (old_handler);
+      XSync (dpy, False);
+
+      if (error_handler_hit_p)
+        {
+          fprintf(stderr,
+                  "%s: XF86VidModeGetViewPort(dpy, %d, ...) ==> X error\n",
+                  blurb(), i);
+          continue;
+        }
+
       if (! result)
         fprintf(stderr, "%s: XF86VidModeGetViewPort(dpy, %d, ...) ==> %d\n",
                 blurb(), i, result);
       if (! result)
         fprintf(stderr, "%s: XF86VidModeGetViewPort(dpy, %d, ...) ==> %d\n",
                 blurb(), i, result);
index aac16586da8717ef50f5bce66517fea4a3279de8..160ad73d7c8e85b7d0d013b4ed75ba2765e7d13a 100644 (file)
@@ -76,12 +76,27 @@ idle_timer (XtPointer closure, XtIntervalId *id)
   fake_event.xany.display = si->dpy;
   fake_event.xany.window  = 0;
   XPutBackEvent (si->dpy, &fake_event);
   fake_event.xany.display = si->dpy;
   fake_event.xany.window  = 0;
   XPutBackEvent (si->dpy, &fake_event);
+
+  /* If we are the timer that just went off, clear the pointer to the id. */
+  if (id)
+    {
+      if (si->timer_id && *id != si->timer_id)
+        abort();  /* oops, scheduled timer twice?? */
+      si->timer_id = 0;
+    }
 }
 
 
 }
 
 
-static void
+void
 schedule_wakeup_event (saver_info *si, Time when, Bool verbose_p)
 {
 schedule_wakeup_event (saver_info *si, Time when, Bool verbose_p)
 {
+  if (si->timer_id)
+    {
+      if (verbose_p)
+        fprintf (stderr, "%s: idle_timer already running\n", blurb());
+      return;
+    }
+
   /* Wake up periodically to ask the server if we are idle. */
   si->timer_id = XtAppAddTimeOut (si->app, when, idle_timer,
                                   (XtPointer) si);
   /* Wake up periodically to ask the server if we are idle. */
   si->timer_id = XtAppAddTimeOut (si->app, when, idle_timer,
                                   (XtPointer) si);
@@ -301,6 +316,7 @@ reset_timers (saver_info *si)
         fprintf (stderr, "%s: killing idle_timer  (%ld, %ld)\n",
                  blurb(), p->timeout, si->timer_id);
       XtRemoveTimeOut (si->timer_id);
         fprintf (stderr, "%s: killing idle_timer  (%ld, %ld)\n",
                  blurb(), p->timeout, si->timer_id);
       XtRemoveTimeOut (si->timer_id);
+      si->timer_id = 0;
     }
 
   schedule_wakeup_event (si, p->timeout, p->debug_p); /* sets si->timer_id */
     }
 
   schedule_wakeup_event (si, p->timeout, p->debug_p); /* sets si->timer_id */
@@ -332,7 +348,13 @@ check_pointer_timer (XtPointer closure, XtIntervalId *id)
      */
     abort ();
 
      */
     abort ();
 
-  si->check_pointer_timer_id =
+  if (id && *id == si->check_pointer_timer_id)  /* this is us - it's expired */
+    si->check_pointer_timer_id = 0;
+
+  if (si->check_pointer_timer_id)              /* only queue one at a time */
+    XtRemoveTimeOut (si->check_pointer_timer_id);
+
+  si->check_pointer_timer_id =                 /* now re-queue */
     XtAppAddTimeOut (si->app, p->pointer_timeout, check_pointer_timer,
                     (XtPointer) si);
 
     XtAppAddTimeOut (si->app, p->pointer_timeout, check_pointer_timer,
                     (XtPointer) si);
 
@@ -597,10 +619,7 @@ sleep_until_idle (saver_info *si, Bool until_idle_p)
     {
       if (polling_for_idleness)
         /* This causes a no-op event to be delivered to us in a while, so that
     {
       if (polling_for_idleness)
         /* This causes a no-op event to be delivered to us in a while, so that
-           we come back around through the event loop again.  Use of this timer
-           is economical: for example, if the screensaver should come on in 5
-           minutes, and the user has been idle for 2 minutes, then this
-           timeout will go off no sooner than 3 minutes from now.  */
+           we come back around through the event loop again.  */
         schedule_wakeup_event (si, p->timeout, p->debug_p);
 
       if (polling_mouse_position)
         schedule_wakeup_event (si, p->timeout, p->debug_p);
 
       if (polling_mouse_position)
@@ -618,6 +637,15 @@ sleep_until_idle (saver_info *si, Bool until_idle_p)
        if (until_idle_p)
          {
            Time idle;
        if (until_idle_p)
          {
            Time idle;
+
+            /* We may be idle; check one last time to see if the mouse has
+               moved, just in case the idle-timer went off within the 5 second
+               window between mouse polling.  If the mouse has moved, then
+               check_pointer_timer() will reset last_activity_time.
+             */
+            if (polling_mouse_position)
+              check_pointer_timer ((XtPointer) si, 0);
+
 #ifdef HAVE_XIDLE_EXTENSION
            if (si->using_xidle_extension)
              {
 #ifdef HAVE_XIDLE_EXTENSION
            if (si->using_xidle_extension)
              {
@@ -681,7 +709,10 @@ sleep_until_idle (saver_info *si, Bool until_idle_p)
               {
                 /* The event went off, but it turns out that the user has not
                    yet been idle for long enough.  So re-signal the event.
               {
                 /* The event went off, but it turns out that the user has not
                    yet been idle for long enough.  So re-signal the event.
-                   */
+                   Be economical: if we should blank after 5 minutes, and the
+                   user has been idle for 2 minutes, then set this timer to
+                   go off in 3 minutes.
+                 */
                 if (polling_for_idleness)
                   schedule_wakeup_event (si, p->timeout - idle, p->debug_p);
               }
                 if (polling_for_idleness)
                   schedule_wakeup_event (si, p->timeout - idle, p->debug_p);
               }
@@ -884,6 +915,7 @@ sleep_until_idle (saver_info *si, Bool until_idle_p)
 
             XRRScreenChangeNotifyEvent *xrr_event =
               (XRRScreenChangeNotifyEvent *) &event;
 
             XRRScreenChangeNotifyEvent *xrr_event =
               (XRRScreenChangeNotifyEvent *) &event;
+            /* XRRRootToScreen is in Xrandr.h 1.4, 2001/06/07 */
             int screen = XRRRootToScreen (si->dpy, xrr_event->window);
 
             if (p->verbose_p)
             int screen = XRRRootToScreen (si->dpy, xrr_event->window);
 
             if (p->verbose_p)
@@ -903,8 +935,10 @@ sleep_until_idle (saver_info *si, Bool until_idle_p)
                            xrr_event->width, xrr_event->height);
               }
 
                            xrr_event->width, xrr_event->height);
               }
 
+# ifdef RRScreenChangeNotifyMask
             /* Inform Xlib that it's ok to update its data structures. */
             /* Inform Xlib that it's ok to update its data structures. */
-            XRRUpdateConfiguration (&event);
+            XRRUpdateConfiguration (&event); /* Xrandr.h 1.9, 2002/09/29 */
+# endif /* RRScreenChangeNotifyMask */
 
             /* Resize the existing xscreensaver windows and cached ssi data. */
             resize_screensaver_window (si);
 
             /* Resize the existing xscreensaver windows and cached ssi data. */
             resize_screensaver_window (si);
@@ -1275,3 +1309,90 @@ reset_watchdog_timer (saver_info *si, Bool on_p)
                 blurb(), p->watchdog_timeout, si->watchdog_id);
     }
 }
                 blurb(), p->watchdog_timeout, si->watchdog_id);
     }
 }
+
+
+/* It's possible that a race condition could have led to the saver
+   window being unexpectedly still mapped.  This can happen like so:
+
+    - screen is blanked
+    - hack is launched
+    - that hack tries to grab a screen image (it does this by
+      first unmapping the saver window, then remapping it.)
+    - hack unmaps window
+    - hack waits
+    - user becomes active
+    - hack re-maps window (*)
+    - driver kills subprocess
+    - driver unmaps window (**)
+
+   The race is that (*) might have been sent to the server before
+   the client process was killed, but, due to scheduling randomness,
+   might not have been received by the server until after (**).
+   In other words, (*) and (**) might happen out of order, meaning
+   the driver will unmap the window, and then after that, the
+   recently-dead client will re-map it.  This leaves the user
+   locked out (it looks like a desktop, but it's not!)
+
+   To avoid this: after un-blanking the screen, we launch a timer
+   that wakes up once a second for ten seconds, and makes damned
+   sure that the window is still unmapped.
+ */
+
+void
+de_race_timer (XtPointer closure, XtIntervalId *id)
+{
+  saver_info *si = (saver_info *) closure;
+  saver_preferences *p = &si->prefs;
+  int secs = 1;
+
+  if (id == 0)  /* if id is 0, this is the initialization call. */
+    {
+      si->de_race_ticks = 10;
+      if (p->verbose_p)
+        fprintf (stderr, "%s: starting de-race timer (%d seconds.)\n",
+                 blurb(), si->de_race_ticks);
+    }
+  else
+    {
+      int i;
+      XSync (si->dpy, False);
+      for (i = 0; i < si->nscreens; i++)
+        {
+          saver_screen_info *ssi = &si->screens[i];
+          Window w = ssi->screensaver_window;
+          XWindowAttributes xgwa;
+          XGetWindowAttributes (si->dpy, w, &xgwa);
+          if (xgwa.map_state != IsUnmapped)
+            {
+              if (p->verbose_p)
+                fprintf (stderr,
+                         "%s: %d: client race! emergency unmap 0x%lx.\n",
+                         blurb(), i, (unsigned long) w);
+              XUnmapWindow (si->dpy, w);
+            }
+          else if (p->debug_p)
+            fprintf (stderr, "%s: %d: (de-race of 0x%lx is cool.)\n",
+                     blurb(), i, (unsigned long) w);
+        }
+      XSync (si->dpy, False);
+
+      si->de_race_ticks--;
+    }
+
+  if (id && *id == si->de_race_id)
+    si->de_race_id = 0;
+
+  if (si->de_race_id) abort();
+
+  if (si->de_race_ticks <= 0)
+    {
+      si->de_race_id = 0;
+      if (p->verbose_p)
+        fprintf (stderr, "%s: de-race completed.\n", blurb());
+    }
+  else
+    {
+      si->de_race_id = XtAppAddTimeOut (si->app, secs * 1000,
+                                        de_race_timer, closure);
+    }
+}
index 7ee76045134b9cf0967b73821c2582aa9ec545fa..60de0a92fa2a51dd7069a995caf5c0f4a2618481 100644 (file)
@@ -269,8 +269,24 @@ grab_keyboard_and_mouse (saver_info *si, Window window, Cursor cursor,
     fprintf (stderr, "%s: couldn't grab pointer!  (%s)\n",
              blurb(), grab_string(mstatus));
 
     fprintf (stderr, "%s: couldn't grab pointer!  (%s)\n",
              blurb(), grab_string(mstatus));
 
-  return (kstatus == GrabSuccess ||
-         mstatus == GrabSuccess);
+
+  /* When should we allow blanking to proceed?  The current theory
+     is that a keyboard grab is manditory; a mouse grab is optional.
+
+     - If we don't have a keyboard grab, then we won't be able to
+       read a password to unlock, so the kbd grab is manditory.
+       (We can't conditionalize this on locked_p, because someone
+       might run "xscreensaver-command -lock" at any time.)
+
+     - If we don't have a mouse grab, then we might not see mouse
+       clicks as a signal to unblank -- but we will still see kbd
+       activity, so that's not a disaster.
+   */
+
+  if (kstatus != GrabSuccess)  /* Do not blank without a kbd grab.   */
+    return False;
+
+  return True;                 /* Grab is good, go ahead and blank.  */
 }
 
 static void
 }
 
 static void
@@ -348,25 +364,26 @@ ensure_no_screensaver_running (Display *dpy, Screen *screen)
       Atom type;
       int format;
       unsigned long nitems, bytesafter;
       Atom type;
       int format;
       unsigned long nitems, bytesafter;
-      char *version;
+      unsigned char *version;
 
       if (XGetWindowProperty (dpy, kids[i], XA_SCREENSAVER_VERSION, 0, 1,
                              False, XA_STRING, &type, &format, &nitems,
 
       if (XGetWindowProperty (dpy, kids[i], XA_SCREENSAVER_VERSION, 0, 1,
                              False, XA_STRING, &type, &format, &nitems,
-                             &bytesafter, (unsigned char **) &version)
+                             &bytesafter, &version)
          == Success
          && type != None)
        {
          == Success
          && type != None)
        {
-         char *id;
+         unsigned char *id;
          if (!XGetWindowProperty (dpy, kids[i], XA_SCREENSAVER_ID, 0, 512,
                                   False, XA_STRING, &type, &format, &nitems,
          if (!XGetWindowProperty (dpy, kids[i], XA_SCREENSAVER_ID, 0, 512,
                                   False, XA_STRING, &type, &format, &nitems,
-                                  &bytesafter, (unsigned char **) &id)
+                                  &bytesafter, &id)
              == Success
              || type == None)
              == Success
              || type == None)
-           id = "???";
+           id = (unsigned char *) "???";
 
          fprintf (stderr,
       "%s: already running on display %s (window 0x%x)\n from process %s.\n",
 
          fprintf (stderr,
       "%s: already running on display %s (window 0x%x)\n from process %s.\n",
-                  blurb(), DisplayString (dpy), (int) kids [i], id);
+                  blurb(), DisplayString (dpy), (int) kids [i],
+                   (char *) id);
          status = True;
        }
     }
          status = True;
        }
     }
@@ -434,7 +451,7 @@ kill_xsetroot_data_1 (Display *dpy, Window window,
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
-  Pixmap *dataP = 0;
+  unsigned char *dataP = 0;
 
   /* If the user has been using xv or xsetroot as a screensaver (to display
      an image on the screensaver window, as a kind of slideshow) then the
 
   /* If the user has been using xv or xsetroot as a screensaver (to display
      an image on the screensaver window, as a kind of slideshow) then the
@@ -454,17 +471,18 @@ kill_xsetroot_data_1 (Display *dpy, Window window,
    */
   if (XGetWindowProperty (dpy, window, prop, 0, 1,
                          True, AnyPropertyType, &type, &format, &nitems, 
    */
   if (XGetWindowProperty (dpy, window, prop, 0, 1,
                          True, AnyPropertyType, &type, &format, &nitems, 
-                         &bytesafter, (unsigned char **) &dataP)
+                         &bytesafter, &dataP)
       == Success
       && type != None)
     {
       == Success
       && type != None)
     {
-      if (dataP && *dataP && type == XA_PIXMAP && format == 32 &&
+      Pixmap *pixP = (Pixmap *) dataP;
+      if (pixP && *pixP && type == XA_PIXMAP && format == 32 &&
          nitems == 1 && bytesafter == 0)
        {
          if (verbose_p)
            fprintf (stderr, "%s: destroying %s data (0x%lX).\n",
          nitems == 1 && bytesafter == 0)
        {
          if (verbose_p)
            fprintf (stderr, "%s: destroying %s data (0x%lX).\n",
-                    blurb(), atom_name, *dataP);
-         safe_XKillClient (dpy, *dataP);
+                    blurb(), atom_name, *pixP);
+         safe_XKillClient (dpy, *pixP);
        }
       else
        fprintf (stderr,
        }
       else
        fprintf (stderr,
@@ -472,7 +490,7 @@ kill_xsetroot_data_1 (Display *dpy, Window window,
                  "\t%lu, %lu; type: %lu, format: %d, "
                  "nitems: %lu, bytesafter %ld\n",
                 blurb(), atom_name,
                  "\t%lu, %lu; type: %lu, format: %d, "
                  "nitems: %lu, bytesafter %ld\n",
                 blurb(), atom_name,
-                 (unsigned long) dataP, (dataP ? *dataP : 0), type,
+                 (unsigned long) pixP, (pixP ? *pixP : 0), type,
                 format, nitems, bytesafter);
     }
 }
                 format, nitems, bytesafter);
     }
 }
@@ -522,7 +540,8 @@ save_real_vroot (saver_screen_info *ssi)
       Atom type;
       int format;
       unsigned long nitems, bytesafter;
       Atom type;
       int format;
       unsigned long nitems, bytesafter;
-      Window *vrootP = 0;
+      unsigned char *dataP = 0;
+      Window *vrootP;
       int j;
 
       /* Skip this window if it is the xscreensaver window of any other
       int j;
 
       /* Skip this window if it is the xscreensaver window of any other
@@ -537,11 +556,13 @@ save_real_vroot (saver_screen_info *ssi)
 
       if (XGetWindowProperty (dpy, kids[i], XA_VROOT, 0, 1, False, XA_WINDOW,
                              &type, &format, &nitems, &bytesafter,
 
       if (XGetWindowProperty (dpy, kids[i], XA_VROOT, 0, 1, False, XA_WINDOW,
                              &type, &format, &nitems, &bytesafter,
-                             (unsigned char **) &vrootP)
+                             &dataP)
          != Success)
        continue;
          != Success)
        continue;
-      if (! vrootP)
+      if (! dataP)
        continue;
        continue;
+
+      vrootP = (Window *) dataP;
       if (ssi->real_vroot)
        {
          if (*vrootP == ssi->screensaver_window) abort ();
       if (ssi->real_vroot)
        {
          if (*vrootP == ssi->screensaver_window) abort ();
@@ -781,9 +802,14 @@ saver_sighup_handler (int sig)
 
   fprintf (stderr, "%s: %s received: restarting...\n",
            blurb(), signal_name(sig));
 
   fprintf (stderr, "%s: %s received: restarting...\n",
            blurb(), signal_name(sig));
-  unblank_screen (si);
-  kill_screenhack (si);
-  XSync (si->dpy, False);
+
+  if (si->screen_blanked_p)
+    {
+      unblank_screen (si);
+      kill_screenhack (si);
+      XSync (si->dpy, False);
+    }
+
   restart_process (si);   /* Does not return */
   abort ();
 }
   restart_process (si);   /* Does not return */
   abort ();
 }
@@ -1829,12 +1855,17 @@ blank_screen (saver_info *si)
                                 mscreen);
 
 
                                 mscreen);
 
 
+# if 0
   if (si->using_mit_saver_extension || si->using_sgi_saver_extension)
     /* If we're using a server extension, then failure to get a grab is
        not a big deal -- even without the grab, we will still be able
        to un-blank when there is user activity, since the server will
        tell us. */
   if (si->using_mit_saver_extension || si->using_sgi_saver_extension)
     /* If we're using a server extension, then failure to get a grab is
        not a big deal -- even without the grab, we will still be able
        to un-blank when there is user activity, since the server will
        tell us. */
+    /* #### No, that's not true: if we don't have a keyboard grab,
+            then we can't read passwords to unlock.
+     */
     ok = True;
     ok = True;
+# endif /* 0 */
 
   if (!ok)
     return False;
 
   if (!ok)
     return False;
@@ -2043,6 +2074,13 @@ select_visual (saver_screen_info *ssi, const char *visual_name)
   Visual *new_v = 0;
   Bool got_it;
 
   Visual *new_v = 0;
   Bool got_it;
 
+  /* On some systems (most recently, MacOS X) OpenGL programs get confused
+     when you kill one and re-start another on the same window.  So maybe
+     it's best to just always destroy and recreate the xscreensaver window
+     when changing hacks, instead of trying to reuse the old one?
+   */
+  Bool always_recreate_window_p = True;
+
   if (visual_name && *visual_name)
     {
       if (!strcmp(visual_name, "default-i") ||
   if (visual_name && *visual_name)
     {
       if (!strcmp(visual_name, "default-i") ||
@@ -2086,7 +2124,8 @@ select_visual (saver_screen_info *ssi, const char *visual_name)
   ssi->install_cmap_p = install_cmap_p;
 
   if (new_v &&
   ssi->install_cmap_p = install_cmap_p;
 
   if (new_v &&
-      ((ssi->current_visual != new_v) ||
+      (always_recreate_window_p ||
+       (ssi->current_visual != new_v) ||
        (install_cmap_p != was_installed_p)))
     {
       Colormap old_c = ssi->cmap;
        (install_cmap_p != was_installed_p)))
     {
       Colormap old_c = ssi->cmap;
index ed10dc64adb09844040a374aa0386a32f5a9ad26..a267f4e7538659fec2a1cc15a984f342bbd2a296 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver-command, Copyright (c) 1991-2003 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver-command, Copyright (c) 1991-2004 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -342,28 +342,29 @@ watch (Display *dpy)
          Atom type;
          int format;
          unsigned long nitems, bytesafter;
          Atom type;
          int format;
          unsigned long nitems, bytesafter;
-         CARD32 *data = 0;
+          unsigned char *dataP = 0;
 
          if (XGetWindowProperty (dpy,
                                   RootWindow (dpy, 0),  /* always screen #0 */
                                  XA_SCREENSAVER_STATUS,
                                  0, 999, False, XA_INTEGER,
                                  &type, &format, &nitems, &bytesafter,
 
          if (XGetWindowProperty (dpy,
                                   RootWindow (dpy, 0),  /* always screen #0 */
                                  XA_SCREENSAVER_STATUS,
                                  0, 999, False, XA_INTEGER,
                                  &type, &format, &nitems, &bytesafter,
-                                 (unsigned char **) &data)
+                                 &dataP)
              == Success
              && type
              == Success
              && type
-             && data)
+             && dataP)
            {
               time_t tt;
               char *s;
               Bool changed = False;
               Bool running = False;
            {
               time_t tt;
               char *s;
               Bool changed = False;
               Bool running = False;
+              CARD32 *data = (CARD32 *) dataP;
 
               if (type != XA_INTEGER || nitems < 3)
                 {
                 STATUS_LOSE:
 
               if (type != XA_INTEGER || nitems < 3)
                 {
                 STATUS_LOSE:
-                  if (last) free (last);
-                  if (data) free (data);
+                  if (last) XFree (last);
+                  if (data) XFree (data);
                   fprintf (stderr, "%s: bad status format on root window.\n",
                            progname);
                   return -1;
                   fprintf (stderr, "%s: bad status format on root window.\n",
                            progname);
                   return -1;
@@ -415,13 +416,13 @@ watch (Display *dpy)
 
               fflush (stdout);
 
 
               fflush (stdout);
 
-              if (last) free (last);
+              if (last) XFree (last);
               last = data;
            }
          else
            {
               last = data;
            }
          else
            {
-             if (last) free (last);
-             if (data) free (data);
+             if (last) XFree (last);
+             if (dataP) XFree (dataP);
              fprintf (stderr, "%s: no saver status on root window.\n",
                       progname);
              return -1;
              fprintf (stderr, "%s: no saver status on root window.\n",
                       progname);
              return -1;
index fac45a2679394adbd540d8d8771d76bcdaaa9b79..d5c2226451849d4599c567fe3797d14dd5c4820a 100644 (file)
 .if n .sp 1
 .if t .sp .5
 ..
 .if n .sp 1
 .if t .sp .5
 ..
-.TH XScreenSaver 1 "12-May-2004 (4.16)" "X Version 11"
+.TH XScreenSaver 1 "14-Aug-2004 (4.18)" "X Version 11"
 .SH NAME
 xscreensaver-command - control a running xscreensaver process
 .SH SYNOPSIS
 .B xscreensaver-command
 [\-display \fIhost:display.screen\fP] \
 .SH NAME
 xscreensaver-command - control a running xscreensaver process
 .SH SYNOPSIS
 .B xscreensaver-command
 [\-display \fIhost:display.screen\fP] \
-[\-help] \
-[\-demo] \
-[\-prefs] \
-[\-activate] \
-[\-deactivate] \
-[\-cycle] \
-[\-next] \
-[\-prev] \
-[\-select \fIn\fP] \
-[\-exit] \
-[\-restart] \
-[\-lock] \
-[\-throttle] \
-[\-unthrottle] \
-[\-version] \
-[\-time] \
-[\-watch]
+[\-help | \
+\-demo | \
+\-prefs | \
+\-activate | \
+\-deactivate | \
+\-cycle | \
+\-next | \
+\-prev | \
+\-select \fIn\fP | \
+\-exit | \
+\-restart | \
+\-lock | \
+\-throttle | \
+\-unthrottle | \
+\-version | \
+\-time | \
+\-watch]
 .SH DESCRIPTION
 The \fIxscreensaver\-command\fP program controls a running \fIxscreensaver\fP
 process by sending it client-messages.
 .SH DESCRIPTION
 The \fIxscreensaver\-command\fP program controls a running \fIxscreensaver\fP
 process by sending it client-messages.
index a1c7c6e7397873d479556c71dc6620a9e4601e53..7ad902197b4ae4313460a0d0d171ce3e93d542d9 100644 (file)
@@ -2,7 +2,6 @@
 <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
 
 <glade-interface>
 <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
 
 <glade-interface>
-<requires lib="gnome"/>
 
 <widget class="GtkWindow" id="xscreensaver_demo">
   <property name="title" translatable="yes">XScreenSaver</property>
 
 <widget class="GtkWindow" id="xscreensaver_demo">
   <property name="title" translatable="yes">XScreenSaver</property>
index 0a9bbcab8b781f2d911bf371478f24bd1a2c9d26..a24ff895ca4be044323c57f27c231d0f7e9cc6ff 100644 (file)
@@ -11,7 +11,7 @@
 .if n .sp 1
 .if t .sp .5
 ..
 .if n .sp 1
 .if t .sp .5
 ..
-.TH XScreenSaver 1 "12-May-2004 (4.16)" "X Version 11"
+.TH XScreenSaver 1 "14-Aug-2004 (4.18)" "X Version 11"
 .SH NAME
 xscreensaver-demo - interactively control the background xscreensaver daemon
 .SH SYNOPSIS
 .SH NAME
 xscreensaver-demo - interactively control the background xscreensaver daemon
 .SH SYNOPSIS
index ef0c5d557715ff3265b846c96fcc310030357460..749fe56b5b8aa3858b3e86ef4efd48fb7f778961 100755 (executable)
@@ -35,7 +35,7 @@ import Fcntl ':mode' unless defined &S_ISLNK; # but it is here in Perl 5.8
 
 
 my $progname = $0; $progname =~ s@.*/@@g;
 
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.15 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.16 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
 
 my $verbose = 0;
 
 
 my $verbose = 0;
 
@@ -46,12 +46,24 @@ my $verbose = 0;
 #
 my $good_file_re = '\.(gif|p?jpe?g|png|tiff?|xbm|xpm)$';
 
 #
 my $good_file_re = '\.(gif|p?jpe?g|png|tiff?|xbm|xpm)$';
 
+# JPEG, GIF, and PNG files that are are smaller than this size in either
+# direction are rejected: this is so that you can use an image directory
+# that contains both big images and thumbnails, and have it only select
+# the big versions.
+#
+my $min_image_width  = 255;
+my $min_image_height = 255;
+
 
 # These are programs that can be used to put an image file on the root
 # window (including virtual root windows.)  The first one of these programs
 # that exists on $PATH will be used (with the file name as the last arg.)
 #
 
 # These are programs that can be used to put an image file on the root
 # window (including virtual root windows.)  The first one of these programs
 # that exists on $PATH will be used (with the file name as the last arg.)
 #
-# If you add other programs to this list, please let me know!
+# Generally this isn't used any more; when "xscreensaver-getimage" invokes
+# this program, it does so with the "-file" argument (meaning that we just
+# return the file name) and then xscreensaver-getimage loads that file
+# directly.  However, if you invoke "xscreensaver-getimage-file" directly,
+# without "-file", this will be used to actually load the image.
 #
 my @programs = (
   "chbg       -once -xscreensaver -max_grow 4 -max_size 100",
 #
 my @programs = (
   "chbg       -once -xscreensaver -max_grow 4 -max_size 100",
@@ -86,10 +98,10 @@ sub pick_displayer {
 }
 
 
 }
 
 
-my @all_files = ();
-my %seen_inodes;
-my $skip_count = 0;
-my $dir_count = 1;
+my @all_files = ();     # list of "good" files we've collected
+my %seen_inodes;        # for breaking recursive symlink loops
+my $skip_count = 0;     # number of files skipped, for diagnostic messages
+my $dir_count = 1;      # number of directories seen, for diagnostic messages
 
 sub find_all_files {
   my ($dir) = @_;
 
 sub find_all_files {
   my ($dir) = @_;
@@ -175,13 +187,20 @@ sub find_random_file {
     exit 1;
   }
 
     exit 1;
   }
 
-  my $n = int (rand ($#all_files + 1));
-  my $file = $all_files[$n];
+  my $max_tries = 50;
+  for (my $i = 0; $i < $max_tries; $i++) {
 
 
-  print STDERR "$progname: chose file $n: $file\n" if ($verbose > 1);
-  return $file;
-}
+    my $n = int (rand ($#all_files + 1));
+    my $file = $all_files[$n];
+    if (large_enough_p ($file)) {
+      return $file;
+    }
+  }
 
 
+  print STDERR "$progname: no suitable images in $dir " .
+               "(after $max_tries tries)\n";
+  exit 1;
+}
 
 
 sub display_file {
 
 
 sub display_file {
@@ -206,6 +225,139 @@ sub find_and_display {
 }
 
 
 }
 
 
+sub large_enough_p {
+  my ($file) = @_;
+
+  my ($w, $h) = image_file_size ($file);
+
+  if (!defined ($h)) {
+    print STDERR "$progname: $file: unable to determine image size\n"
+      if ($verbose);
+    # Assume that unknown files are of good sizes: this will happen if
+    # they matched $good_file_re, but we don't have code to parse them.
+    # (This will also happen if the file is junk...)
+    return 1;
+  }
+
+  if ($w < $min_image_width || $h < $min_image_height) {
+    print STDERR "$progname: $file: too small ($w x $h)\n" if ($verbose > 1);
+    return 0;
+  }
+
+  print STDERR "$progname: $file: $w x $h\n" if ($verbose > 1);
+  return 1;
+}
+
+
+
+# Given the raw body of a GIF document, returns the dimensions of the image.
+#
+sub gif_size {
+  my ($body) = @_;
+  my $type = substr($body, 0, 6);
+  my $s;
+  return () unless ($type =~ /GIF8[7,9]a/);
+  $s = substr ($body, 6, 10);
+  my ($a,$b,$c,$d) = unpack ("C"x4, $s);
+  return (($b<<8|$a), ($d<<8|$c));
+}
+
+# Given the raw body of a JPEG document, returns the dimensions of the image.
+#
+sub jpeg_size {
+  my ($body) = @_;
+  my $i = 0;
+  my $L = length($body);
+
+  my $c1 = substr($body, $i, 1); $i++;
+  my $c2 = substr($body, $i, 1); $i++;
+  return () unless (ord($c1) == 0xFF && ord($c2) == 0xD8);
+
+  my $ch = "0";
+  while (ord($ch) != 0xDA && $i < $L) {
+    # Find next marker, beginning with 0xFF.
+    while (ord($ch) != 0xFF) {
+      return () if (length($body) <= $i);
+      $ch = substr($body, $i, 1); $i++;
+    }
+    # markers can be padded with any number of 0xFF.
+    while (ord($ch) == 0xFF) {
+      return () if (length($body) <= $i);
+      $ch = substr($body, $i, 1); $i++;
+    }
+
+    # $ch contains the value of the marker.
+    my $marker = ord($ch);
+
+    if (($marker >= 0xC0) &&
+        ($marker <= 0xCF) &&
+        ($marker != 0xC4) &&
+        ($marker != 0xCC)) {  # it's a SOFn marker
+      $i += 3;
+      return () if (length($body) <= $i);
+      my $s = substr($body, $i, 4); $i += 4;
+      my ($a,$b,$c,$d) = unpack("C"x4, $s);
+      return (($c<<8|$d), ($a<<8|$b));
+
+    } else {
+      # We must skip variables, since FFs in variable names aren't
+      # valid JPEG markers.
+      return () if (length($body) <= $i);
+      my $s = substr($body, $i, 2); $i += 2;
+      my ($c1, $c2) = unpack ("C"x2, $s);
+      my $length = ($c1 << 8) | $c2;
+      return () if ($length < 2);
+      $i += $length-2;
+    }
+  }
+  return ();
+}
+
+# Given the raw body of a PNG document, returns the dimensions of the image.
+#
+sub png_size {
+  my ($body) = @_;
+  return () unless ($body =~ m/^\211PNG\r/);
+  my ($bits) = ($body =~ m/^.{12}(.{12})/s);
+  return () unless defined ($bits);
+  return () unless ($bits =~ /^IHDR/);
+  my ($ign, $w, $h) = unpack("a4N2", $bits);
+  return ($w, $h);
+}
+
+
+# Given the raw body of a GIF, JPEG, or PNG document, returns the dimensions
+# of the image.
+#
+sub image_size {
+  my ($body) = @_;
+  my ($w, $h) = gif_size ($body);
+  if ($w && $h) { return ($w, $h); }
+  ($w, $h) = jpeg_size ($body);
+  if ($w && $h) { return ($w, $h); }
+  # #### TODO: need image parsers for TIFF, XPM, XBM.
+  return png_size ($body);
+}
+
+# Returns the dimensions of the image file.
+#
+sub image_file_size {
+  my ($file) = @_;
+  my $body = '';
+  local *IN;
+  if (! open (IN, "<$file")) {
+    print STDERR "$progname: $file: $!\n" if ($verbose);
+    return undef;
+  }
+  while (<IN>) {
+    $body .= $_;
+    last if (length($body) > 1024 * 100);  # the first 100k should be enough
+  }
+  close IN;
+  return image_size ($body);
+}
+
+
 sub usage {
   print STDERR "usage: $progname [--verbose] [--name] file-or-directory\n\n" .
   "       Puts the given image file (or a randomly selected image from the\n" .
 sub usage {
   print STDERR "usage: $progname [--verbose] [--name] file-or-directory\n\n" .
   "       Puts the given image file (or a randomly selected image from the\n" .
index 000110bb035c9839431866bfdab24756c55e7bad..bf8404409c1caba05105a3ea4669edc8f7eab458 100644 (file)
@@ -1,4 +1,4 @@
-.TH XScreenSaver 1 "12-May-2004 (4.16)" "X Version 11"
+.TH XScreenSaver 1 "14-Aug-2004 (4.18)" "X Version 11"
 .SH NAME
 xscreensaver-getimage-file - put a randomly-selected image on the root window
 .SH SYNOPSIS
 .SH NAME
 xscreensaver-getimage-file - put a randomly-selected image on the root window
 .SH SYNOPSIS
index 5d2e31f1affe6c9e995a3f0fec3fddd247b8af46..817cefd2b53dd26d1ea1dc3a94937fccb6e8d661 100644 (file)
@@ -1,4 +1,4 @@
-.TH XScreenSaver 1 "12-May-2004 (4.16)" "X Version 11"
+.TH XScreenSaver 1 "14-Aug-2004 (4.18)" "X Version 11"
 .SH NAME
 xscreensaver-getimage-video - put a video frame on the root window
 .SH SYNOPSIS
 .SH NAME
 xscreensaver-getimage-video - put a video frame on the root window
 .SH SYNOPSIS
index db8bc6202325549858319042693dbf007ec13e67..7b8919774ae422c63b7d3534ae2ad9dc1cc28522 100644 (file)
@@ -180,7 +180,7 @@ root_window_p (Screen *screen, Window window)
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
-  char *version;
+  unsigned char *version;
 
   if (window != RootWindowOfScreen (screen))
     return False;
 
   if (window != RootWindowOfScreen (screen))
     return False;
@@ -189,7 +189,7 @@ root_window_p (Screen *screen, Window window)
                          XInternAtom (dpy, "_SCREENSAVER_VERSION", False),
                          0, 1, False, XA_STRING,
                          &type, &format, &nitems, &bytesafter,
                          XInternAtom (dpy, "_SCREENSAVER_VERSION", False),
                          0, 1, False, XA_STRING,
                          &type, &format, &nitems, &bytesafter,
-                         (unsigned char **) &version)
+                         &version)
       == Success
       && type != None)
     return False;
       == Success
       && type != None)
     return False;
index f5e41cee01b5ee073cb2f6b321a53749a05a2144..453671b9dede6fefec68c72db097d6829bfeb628 100644 (file)
@@ -1,4 +1,4 @@
-.TH XScreenSaver 1 "12-May-2004 (4.16)" "X Version 11"
+.TH XScreenSaver 1 "14-Aug-2004 (4.18)" "X Version 11"
 .SH NAME
 xscreensaver-getimage - put some randomly-selected image on the root window
 .SH SYNOPSIS
 .SH NAME
 xscreensaver-getimage - put some randomly-selected image on the root window
 .SH SYNOPSIS
index 5d948f655fd665e68b6e2a4eeda76da01251e107..ab39b84e62341db668725061a05b382b7e0bc23c 100644 (file)
@@ -1194,6 +1194,24 @@ main_loop (saver_info *si)
           continue;
         }
 
           continue;
         }
 
+      /* Since we're about to blank the screen, kill the de-race timer,
+         if any.  It might still be running if we have unblanked and then
+         re-blanked in a short period (e.g., when using the "next" button
+         in xscreensaver-demo.)
+       */
+      if (si->de_race_id)
+        {
+          if (p->verbose_p)
+            fprintf (stderr, "%s: stopping de-race timer (%d remaining.)\n",
+                     blurb(), si->de_race_ticks);
+          XtRemoveTimeOut (si->de_race_id);
+          si->de_race_id = 0;
+        }
+
+
+      /* Now, try to blank.
+       */
+
       if (! blank_screen (si))
         {
           /* We were unable to grab either the keyboard or mouse.
       if (! blank_screen (si))
         {
           /* We were unable to grab either the keyboard or mouse.
@@ -1204,13 +1222,29 @@ main_loop (saver_info *si)
              see any events, and the display would be wedged.
 
              So, just go around the loop again and wait for the
              see any events, and the display would be wedged.
 
              So, just go around the loop again and wait for the
-             next bout of idleness.
+             next bout of idleness.  (If the user remains idle, we
+             will next try to blank the screen again in no more than
+             60 seconds.)
           */
           */
+          Time retry = 60 * 1000;
+          if (p->timeout < retry)
+            retry = p->timeout;
 
 
-          fprintf (stderr,
+          if (p->debug_p)
+            {
+              fprintf (stderr,
+                  "%s: DEBUG MODE: unable to grab -- BLANKING ANYWAY.\n",
+                       blurb());
+            }
+          else
+            {
+              fprintf (stderr,
                   "%s: unable to grab keyboard or mouse!  Blanking aborted.\n",
                   "%s: unable to grab keyboard or mouse!  Blanking aborted.\n",
-                   blurb());
-          continue;
+                       blurb());
+
+              schedule_wakeup_event (si, retry, p->debug_p);
+              continue;
+            }
         }
 
       kill_screenhack (si);
         }
 
       kill_screenhack (si);
@@ -1352,58 +1386,10 @@ main_loop (saver_info *si)
          si->lock_id = 0;
        }
 
          si->lock_id = 0;
        }
 
-      /* It's possible that a race condition could have led to the saver
-         window being unexpectedly still mapped.  This can happen like so:
-
-          - screen is blanked
-          - hack is launched
-          - that hack tries to grab a screen image (it does this by
-            first unmapping the saver window, then remapping it.)
-          - hack unmaps window
-          - hack waits
-          - user becomes active
-          - hack re-maps window (*)
-          - driver kills subprocess
-          - driver unmaps window (**)
-
-         The race is that (*) might have been sent to the server before
-         the client process was killed, but, due to scheduling randomness,
-         might not have been received by the server until after (**).
-         In other words, (*) and (**) might happen out of order, meaning
-         the driver will unmap the window, and then after that, the
-         recently-dead client will re-map it.  This leaves the user
-         locked out (it looks like a desktop, but it's not!)
-
-         To avoid this: after un-blanking the screen, sleep for a second,
-         and then really make sure the window is unmapped.
-
-         Update: actually, let's do that once a second for 8 seconds,
-         because sometimes the machine is slow, and we miss...
-       */
-      {
-        int i, j;
-        for (j = 0; j < 8; j++)
-          {
-            XSync (si->dpy, False);
-            sleep (1);
-            for (i = 0; i < si->nscreens; i++)
-              {
-                saver_screen_info *ssi = &si->screens[i];
-                Window w = ssi->screensaver_window;
-                XWindowAttributes xgwa;
-                XGetWindowAttributes (si->dpy, w, &xgwa);
-                if (xgwa.map_state != IsUnmapped)
-                  {
-                    if (p->verbose_p)
-                      fprintf (stderr,
-                               "%s: %d: client race! emergency unmap 0x%lx.\n",
-                               blurb(), i, (unsigned long) w);
-                    XUnmapWindow (si->dpy, w);
-                  }
-              }
-            XSync (si->dpy, False);
-          }
-      }
+      /* Since we're unblanked now, break race conditions and make
+         sure we stay that way (see comment in timers.c.) */
+      if (! si->de_race_id)
+        de_race_timer ((XtPointer) si, 0);
     }
 }
 
     }
 }
 
index eae4d121c439fdc7b77bb8b4afc831c95846cd08..646a5179c5afa570161a6f20661f21c235933b7e 100644 (file)
@@ -157,6 +157,9 @@ struct saver_info {
   XtIntervalId watchdog_id;    /* Timer to implement `prefs.watchdog */
   XtIntervalId check_pointer_timer_id; /* `prefs.pointer_timeout' */
 
   XtIntervalId watchdog_id;    /* Timer to implement `prefs.watchdog */
   XtIntervalId check_pointer_timer_id; /* `prefs.pointer_timeout' */
 
+  XtIntervalId de_race_id;     /* Timer to make sure screen un-blanks */
+  int de_race_ticks;
+
   time_t last_activity_time;              /* Used only when no server exts. */
   time_t last_wall_clock_time;             /* Used to detect laptop suspend. */
   saver_screen_info *last_activity_screen;
   time_t last_activity_time;              /* Used only when no server exts. */
   time_t last_wall_clock_time;             /* Used to detect laptop suspend. */
   saver_screen_info *last_activity_screen;
@@ -383,8 +386,11 @@ extern void cycle_timer (XtPointer si, XtIntervalId *id);
 extern void activate_lock_timer (XtPointer si, XtIntervalId *id);
 extern void reset_watchdog_timer (saver_info *si, Bool on_p);
 extern void idle_timer (XtPointer si, XtIntervalId *id);
 extern void activate_lock_timer (XtPointer si, XtIntervalId *id);
 extern void reset_watchdog_timer (saver_info *si, Bool on_p);
 extern void idle_timer (XtPointer si, XtIntervalId *id);
+extern void de_race_timer (XtPointer si, XtIntervalId *id);
 extern void sleep_until_idle (saver_info *si, Bool until_idle_p);
 extern void reset_timers (saver_info *si);
 extern void sleep_until_idle (saver_info *si, Bool until_idle_p);
 extern void reset_timers (saver_info *si);
+extern void schedule_wakeup_event (saver_info *si, Time when, Bool verbose_p);
+
 
 /* =======================================================================
    remote control
 
 /* =======================================================================
    remote control
index 50e403c4a85a84fc724feeb1f733213b74ef1377..465ecfbda7a5182dccba59b5420e4ef180510700 100644 (file)
@@ -11,7 +11,7 @@
 .if n .sp 1
 .if t .sp .5
 ..
 .if n .sp 1
 .if t .sp .5
 ..
-.TH XScreenSaver 1 "12-May-2004 (4.16)" "X Version 11"
+.TH XScreenSaver 1 "14-Aug-2004 (4.18)" "X Version 11"
 .SH NAME
 xscreensaver - extensible screen saver framework, plus locking
 .SH SYNOPSIS
 .SH NAME
 xscreensaver - extensible screen saver framework, plus locking
 .SH SYNOPSIS
index d26ee1b25a08938164e8d2dbfa3429ed42b40616..9f123b961675a98cb56836bf29d3409c38bf5494 100644 (file)
@@ -171,6 +171,7 @@ query_randr_extension (saver_info *si)
   Bool ok = XRRQueryExtension (si->dpy,
                                &si->randr_event_number,
                                &si->randr_error_number);
   Bool ok = XRRQueryExtension (si->dpy,
                                &si->randr_event_number,
                                &si->randr_error_number);
+
   if (ok)
     {
       int nscreens = ScreenCount (si->dpy);  /* number of *real* screens */
   if (ok)
     {
       int nscreens = ScreenCount (si->dpy);  /* number of *real* screens */
@@ -179,14 +180,18 @@ query_randr_extension (saver_info *si)
       if (p->verbose_p)
        fprintf (stderr, "%s: selecting RANDR events\n", blurb());
       for (i = 0; i < nscreens; i++)
       if (p->verbose_p)
        fprintf (stderr, "%s: selecting RANDR events\n", blurb());
       for (i = 0; i < nscreens; i++)
+# ifdef RRScreenChangeNotifyMask                 /* randr.h 1.5, 2002/09/29 */
         XRRSelectInput (si->dpy, RootWindow (si->dpy, i),
                         RRScreenChangeNotifyMask);
         XRRSelectInput (si->dpy, RootWindow (si->dpy, i),
                         RRScreenChangeNotifyMask);
+# else  /* !RRScreenChangeNotifyMask */          /* Xrandr.h 1.4, 2001/06/07 */
+        XRRScreenChangeSelectInput (si->dpy, RootWindow (si->dpy, i), True);
+# endif /* !RRScreenChangeNotifyMask */
     }
 
   return ok;
 }
 
     }
 
   return ok;
 }
 
-#endif /* HAVE_XIDLE_EXTENSION */
+#endif /* HAVE_RANDR */
 
 
 \f
 
 
 \f
index bf5f61d83215af9b908f37c2262c5296653a05a5..4a71641bfd95d23e12d9c3d563ecbc77c4020869 100644 (file)
@@ -101,7 +101,8 @@ SRCS                = attraction.c blitspin.c bouboule.c braid.c bubbles.c \
                  anemone.c halftone.c metaballs.c eruption.c popsquares.c \
                  barcode.c piecewise.c cloudlife.c fontglide.c apple2.c \
                  apple2-main.c analogtv.c xanalogtv.c pong.c wormhole.c \
                  anemone.c halftone.c metaballs.c eruption.c popsquares.c \
                  barcode.c piecewise.c cloudlife.c fontglide.c apple2.c \
                  apple2-main.c analogtv.c xanalogtv.c pong.c wormhole.c \
-                 mismunch.c pacman.c fuzzyflakes.c
+                 mismunch.c pacman.c pacman_ai.c pacman_level.c \
+                 fuzzyflakes.c anemotaxis.c memscroller.c
 SCRIPTS                = vidwhacker webcollage ljlatest
 
 OBJS           = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
 SCRIPTS                = vidwhacker webcollage ljlatest
 
 OBJS           = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
@@ -128,7 +129,8 @@ OBJS                = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
                  anemone.o halftone.o metaballs.o eruption.o popsquares.o \
                  barcode.o piecewise.o cloudlife.o fontglide.o apple2.o \
                  apple2-main.o analogtv.o xanalogtv.o pong.o wormhole.o \
                  anemone.o halftone.o metaballs.o eruption.o popsquares.o \
                  barcode.o piecewise.o cloudlife.o fontglide.o apple2.o \
                  apple2-main.o analogtv.o xanalogtv.o pong.o wormhole.o \
-                 mismunch.o pacman.o fuzzyflakes.o
+                 mismunch.o pacman.o pacman_ai.o pacman_level.o \
+                 fuzzyflakes.o anemotaxis.o memscroller.c
 
 NEXES          = attraction blitspin bouboule braid bubbles decayscreen deco \
                  drift flag flame forest vines galaxy grav greynetic halo \
 
 NEXES          = attraction blitspin bouboule braid bubbles decayscreen deco \
                  drift flag flame forest vines galaxy grav greynetic halo \
@@ -147,7 +149,7 @@ NEXES               = attraction blitspin bouboule braid bubbles decayscreen deco \
                  juggle polyominoes thornbird  fluidballs anemone halftone \
                  metaballs eruption popsquares barcode piecewise cloudlife \
                  fontglide apple2 xanalogtv pong  wormhole mismunch \
                  juggle polyominoes thornbird  fluidballs anemone halftone \
                  metaballs eruption popsquares barcode piecewise cloudlife \
                  fontglide apple2 xanalogtv pong  wormhole mismunch \
-                 pacman fuzzyflakes \
+                 pacman fuzzyflakes anemotaxis memscroller \
                  @JPEG_EXES@
 SEXES          = sonar
 JPEG_EXES      = webcollage-helper
                  @JPEG_EXES@
 SEXES          = sonar
 JPEG_EXES      = webcollage-helper
@@ -192,7 +194,8 @@ MEN         = anemone.man ant.man apollonian.man attraction.man \
                  zoom.man halftone.man eruption.man metaballs.man \
                  barcode.man piecewise.man cloudlife.man ljlatest.man \
                  fontglide.man apple2.man xanalogtv.man pong.man \
                  zoom.man halftone.man eruption.man metaballs.man \
                  barcode.man piecewise.man cloudlife.man ljlatest.man \
                  fontglide.man apple2.man xanalogtv.man pong.man \
-                 wormhole.man mismunch.man pacman.man fuzzyflakes.man
+                 wormhole.man mismunch.man pacman.man fuzzyflakes.man \
+                 anemotaxis.man memscroller.man
 STAR           = *
 EXTRAS         = README Makefile.in xlock_23.h xml2man.pl .gdbinit \
                  euler2d.tex \
 STAR           = *
 EXTRAS         = README Makefile.in xlock_23.h xml2man.pl .gdbinit \
                  euler2d.tex \
@@ -205,7 +208,8 @@ EXTRAS              = README Makefile.in xlock_23.h xml2man.pl .gdbinit \
                  images/noseguy/$(STAR).xbm \
                  images/noseguy/$(STAR).xpm \
                  images/jigsaw/$(STAR).xbm  \
                  images/noseguy/$(STAR).xbm \
                  images/noseguy/$(STAR).xpm \
                  images/jigsaw/$(STAR).xbm  \
-                 images/molecules/$(STAR).pdb
+                 images/molecules/$(STAR).pdb \
+                 images/pacman/$(STAR).xpm
 
 VMSFILES       = compile_axp.com compile_decc.com link_axp.com link_decc.com \
                  vms_axp.opt vms_axp_12.opt vms_decc.opt vms_decc_12.opt
 
 VMSFILES       = compile_axp.com compile_decc.com link_axp.com link_decc.com \
                  vms_axp.opt vms_axp_12.opt vms_decc.opt vms_decc_12.opt
@@ -785,6 +789,11 @@ mismunch:  mismunch.o      $(HACK_OBJS) $(COL) $(SPL)
 fuzzyflakes:   fuzzyflakes.o   $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
 fuzzyflakes:   fuzzyflakes.o   $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
+anemotaxis:    anemotaxis.o    $(HACK_OBJS) $(DBE)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(DBE) $(HACK_LIBS)
+
+memscroller:   memscroller.o   $(HACK_OBJS) $(SHM) $(COL)
+       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(SHM) $(COL) $(HACK_LIBS)
 
 
 # The rules for those hacks which follow the `xlockmore' API.
 
 
 # The rules for those hacks which follow the `xlockmore' API.
@@ -904,8 +913,9 @@ polyominoes:        polyominoes.o   $(XLOCK_OBJS) $(ERASE)
 thornbird:     thornbird.o     $(XLOCK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
 
 thornbird:     thornbird.o     $(XLOCK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
 
-pacman:                pacman.o        $(XLOCK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(XLOCK_OBJS) $(HACK_LIBS)
+PACOBJS=pacman_ai.o pacman_level.o
+pacman:                pacman.o        $(PACOBJS) $(XLOCK_OBJS) $(XPM)
+       $(CC_HACK) -o $@ $@.o   $(PACOBJS) $(XLOCK_OBJS) $(XPM) $(XPM_LIBS)
 
 
 # These are not like the others.
 
 
 # These are not like the others.
@@ -925,6 +935,8 @@ analogtv.o: $(srcdir)/analogtv.h
 analogtv.o: ../config.h
 anemone.o: ../config.h
 anemone.o: $(srcdir)/screenhack.h
 analogtv.o: ../config.h
 anemone.o: ../config.h
 anemone.o: $(srcdir)/screenhack.h
+anemotaxis.o: ../config.h
+anemotaxis.o: $(srcdir)/screenhack.h
 ant.o: $(srcdir)/automata.h
 ant.o: ../config.h
 ant.o: $(srcdir)/screenhack.h
 ant.o: $(srcdir)/automata.h
 ant.o: ../config.h
 ant.o: $(srcdir)/screenhack.h
@@ -1203,6 +1215,8 @@ loop.o: $(srcdir)/xlockmore.h
 loop.o: $(srcdir)/xlockmoreI.h
 maze.o: ../config.h
 maze.o: $(srcdir)/screenhack.h
 loop.o: $(srcdir)/xlockmoreI.h
 maze.o: ../config.h
 maze.o: $(srcdir)/screenhack.h
+memscroller.o: ../config.h
+memscroller.o: $(srcdir)/screenhack.h
 metaballs.o: ../config.h
 metaballs.o: $(srcdir)/screenhack.h
 mismunch.o: ../config.h
 metaballs.o: ../config.h
 metaballs.o: $(srcdir)/screenhack.h
 mismunch.o: ../config.h
@@ -1230,13 +1244,34 @@ noseguy.o: $(srcdir)/images/noseguy/nose-r1.xpm
 noseguy.o: $(srcdir)/images/noseguy/nose-r2.xpm
 noseguy.o: $(srcdir)/screenhack.h
 noseguy.o: $(srcdir)/xpm-pixmap.h
 noseguy.o: $(srcdir)/images/noseguy/nose-r2.xpm
 noseguy.o: $(srcdir)/screenhack.h
 noseguy.o: $(srcdir)/xpm-pixmap.h
+pacman_ai.o: ../config.h
+pacman_ai.o: $(srcdir)/pacman_ai.h
+pacman_ai.o: $(srcdir)/pacman.h
+pacman_ai.o: $(srcdir)/pacman_level.h
+pacman_ai.o: $(srcdir)/screenhack.h
+pacman_ai.o: $(srcdir)/xlockmoreI.h
+pacman_level.o: ../config.h
+pacman_level.o: $(srcdir)/pacman.h
+pacman_level.o: $(srcdir)/pacman_level.h
+pacman_level.o: $(srcdir)/screenhack.h
+pacman_level.o: $(srcdir)/xlockmoreI.h
 pacman.o: ../config.h
 pacman.o: ../config.h
+pacman.o: $(srcdir)/images/pacman/ghost-d1.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-d2.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-l1.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-l2.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-mask.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-r1.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-r2.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-u1.xpm
+pacman.o: $(srcdir)/images/pacman/ghost-u2.xpm
 pacman.o: $(srcdir)/pacman_ai.h
 pacman.o: $(srcdir)/pacman.h
 pacman.o: $(srcdir)/pacman_level.h
 pacman.o: $(srcdir)/screenhack.h
 pacman.o: $(srcdir)/xlockmore.h
 pacman.o: $(srcdir)/xlockmoreI.h
 pacman.o: $(srcdir)/pacman_ai.h
 pacman.o: $(srcdir)/pacman.h
 pacman.o: $(srcdir)/pacman_level.h
 pacman.o: $(srcdir)/screenhack.h
 pacman.o: $(srcdir)/xlockmore.h
 pacman.o: $(srcdir)/xlockmoreI.h
+pacman.o: $(srcdir)/xpm-pixmap.h
 pedal.o: ../config.h
 pedal.o: $(srcdir)/screenhack.h
 penetrate.o: ../config.h
 pedal.o: ../config.h
 pedal.o: $(srcdir)/screenhack.h
 penetrate.o: ../config.h
index d3d51aed3077befc780f73ea78727d971218a26e..487b2efd50eff2f7241e4f0afdcd93e97a66e9b2 100644 (file)
@@ -264,8 +264,9 @@ analogtv_alloc_image(analogtv *it)
   if (!it->image) {
     it->image = XCreateImage(it->dpy, it->xgwa.visual, it->xgwa.depth, ZPixmap, 0, 0,
                              it->usewidth, it->useheight, 8, 0);
   if (!it->image) {
     it->image = XCreateImage(it->dpy, it->xgwa.visual, it->xgwa.depth, ZPixmap, 0, 0,
                              it->usewidth, it->useheight, 8, 0);
-    it->image->data = (char *)calloc(it->image->height, it->image->bytes_per_line);
+    it->image->data = (char *)malloc(it->image->height * it->image->bytes_per_line);
   }
   }
+  memset (it->image->data, 0, it->image->height * it->image->bytes_per_line);
 }
 
 
 }
 
 
diff --git a/hacks/anemotaxis.c b/hacks/anemotaxis.c
new file mode 100644 (file)
index 0000000..d1eec48
--- /dev/null
@@ -0,0 +1,710 @@
+/* anemotaxis, Copyright (c) 2004 Eugene Balkovski 
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation.  No representations are made
+ * about the suitability of this software for any purpose. It is
+ * provided "as is" without express or implied warranty.
+ */
+
+/*------------------------------------------------------------------------
+  |
+  |  FILE            anemotaxis.c
+  |
+  |  DESCRIPTION     Anemotaxis
+  |
+  |                  This code illustrates an optimal algorithm designed
+  |                  for searching a source of particles on a plane.
+  |                  The particles drift in one direction and walk randomly 
+  |                  in the other. The only information available to the
+  |                  searcher is the presence of a particle at its location
+  |                  and the local direction from where particle arrived.
+  |                  The algorithm "explains" the behavior
+  |                  of some animals and insects 
+  |                  who use olfactory and directional cues to find
+  |                  sources of odor (mates, food, home etc) in
+  |                  turbulent atmosphere (odor-modulated anemotaxis),
+  |                  e.g. male moths locating females who release 
+  |                  pheromones to attract males. The search trajectories
+  |                  resemble the trajectories that the animals follow.
+  |
+  |
+  |  WRITTEN BY      Eugene Balkovski
+  |
+  |  MODIFICATIONS   june 2004 started
+  |           
+  +----------------------------------------------------------------------*/
+
+/* 
+   Options:
+   
+   -distance <arg> size of the lattice
+   -sources <arg>  number of sources
+   -searhers <arg> number of searcher        */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "screenhack.h"
+
+#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
+#include "xdbe.h"
+#endif
+
+
+/*-----------------------------------------------------------------------+
+  |  PRIVATE DATA                                                          |
+  +-----------------------------------------------------------------------*/
+
+#define MAX_DIST 250
+#define MIN_DIST 10
+#define LINE_WIDTH 4
+#define MAX_INV_RATE 5
+
+#define RND(x)     (random() % (x))
+#define X(x) ((int) (ax * (x) + bx))
+#define Y(x) ((int) (ay * (x) + by))
+
+typedef struct {
+  short x;
+  short y;
+} Point;
+
+typedef struct {
+
+  short y;    /* y-coordinate of the particle (relative to the source) */
+
+  short v;    /* velocity of the particle. Allowed values are -1, 0, 1.
+                2 means the particle is not valid */
+} YV;
+
+typedef struct {
+
+  int n;             /* size of array xv */
+
+  YV *yv;            /* yv[i] keeps velocity and y-coordinate of the
+                       particle at (i + 1, yv[i].y) relative to the
+                       source */
+
+  int inv_rate;      /* Inverse rate of particle emission (if 0 then
+                       source doesn't emit new particles (although
+                       old ones can still exist )*/
+
+  Point r;           /* Position of the source */
+
+  long color;
+
+} Source;
+
+
+typedef struct PList {
+  Point r;
+  struct PList *next;
+} PList;
+
+typedef enum {UP_LEFT, UP_RIGHT, LEFT, RIGHT, DONE} State_t;
+
+typedef enum {FALSE = 0, TRUE = 1} bool;
+
+typedef struct {
+
+  Point r;              /* Current position */
+
+  Point vertex;         /* Position of the vertex of the most recent
+                          cone, which is the region where the source
+                          is located. We do exhaustive search in the
+                          cone until we encounter a new particle,
+                          which gives us a new cone. */
+
+  State_t state;        /* Internal state variable */
+
+  unsigned char c;      /* Concentration at r */
+
+  short v;              /* Velocity at r (good only when c != 0) */
+
+  PList *hist;          /* Trajectory */
+
+  int rs;               /* small shift of x-coordinate to avoid
+                          painting over the same x */
+
+  long color;
+
+} Searcher;
+
+static Source **source;
+static Searcher **searcher;
+
+static int max_dist, max_src, max_searcher;
+
+static double ax, ay, bx, by;
+static int dx, dy;
+
+static Display *dpy;
+static Window window;
+
+static Pixmap b, ba, bb;
+
+#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
+static  XdbeBackBuffer backb;
+#endif
+
+static long delay;              /* usecs to wait between updates. */
+
+static int scrWidth, scrHeight;
+static GC gcDraw, gcClear;
+
+static bool dbuf;
+
+static XGCValues gcv;
+static Colormap cmap;
+
+
+/*-----------------------------------------------------------------------+
+  |  PUBLIC DATA                                                           |
+  +-----------------------------------------------------------------------*/
+
+char *progclass = "Anemotaxis";
+
+char *defaults [] = {
+  ".background: black",
+  "*distance: 40",
+  "*sources: 25",
+  "*searchers: 25",
+  "*delay: 20000",
+#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
+  "*useDBE:            True",
+#endif
+  0
+};
+
+
+XrmOptionDescRec options [] = {
+  { "-delay",       ".delay",       XrmoptionSepArg, 0 },
+  { "-distance",    ".distance",    XrmoptionSepArg, 0 },
+  { "-sources",     ".sources",     XrmoptionSepArg, 0 },
+  { "-searchers",   ".searchers",   XrmoptionSepArg, 0 },
+  { 0, 0, 0, 0 }
+};
+
+
+
+/*-----------------------------------------------------------------------+
+  |  PRIVATE FUNCTIONS                                                     |
+  +-----------------------------------------------------------------------*/
+
+static void *emalloc(size_t size)
+{
+  void *ret = malloc(size);
+
+  if (ret == NULL) {
+    fprintf(stderr, "out of memory\n");
+    exit(1);
+  }
+  return ret;
+}
+
+static Searcher *new_searcher(void)
+{
+  Searcher *m = (Searcher *) emalloc(sizeof(Searcher));
+
+  m->r.x = m->vertex.x = max_dist;
+
+  do {
+    m->r.y = RND(2 * max_dist);
+  } while(m->r.y < MIN_DIST || m->r.y > 2 * max_dist - MIN_DIST);
+
+  m->vertex.y = m->r.y;
+
+  m->state = (RND(2) == 0 ? UP_RIGHT : UP_LEFT);
+  m->hist = NULL;
+  m->color = random();
+
+  m->rs = RND(dx);
+
+  return m;
+}
+
+static void destroy_searcher(Searcher *m)
+{
+  PList *p = m->hist, *q;
+
+  while(p != NULL) {
+    q = p->next;
+    free(p);
+    p = q;
+  }
+
+  free(m);
+}
+
+static void write_hist(Searcher *m)
+{
+  PList *l;
+
+  l = m->hist;
+  m->hist = (PList *) emalloc(sizeof(PList));
+  m->hist->next = l;
+  m->hist->r = m->r;
+
+}
+
+static void move_searcher(Searcher *m)
+{
+
+  if(m->c == TRUE) {
+    write_hist(m);
+    m->r.x -= 1;
+    m->r.y -= m->v;
+    write_hist(m);
+    m->state = (RND(2) == 0 ? UP_LEFT : UP_RIGHT);
+    m->vertex = m->r;
+    return;
+
+  }
+
+  switch(m->state) {
+  case UP_LEFT:
+
+    m->r.x -= 1;
+    m->r.y += 1;
+    m->state = RIGHT;
+    write_hist(m);
+    return;
+
+  case RIGHT:
+
+    m->r.y -= 1;
+    if(m->vertex.x - m->r.x == m->vertex.y - m->r.y) {
+      write_hist(m);
+      m->state = UP_RIGHT;
+    }
+    return;
+
+  case UP_RIGHT:
+
+    m->r.x -= 1;
+    m->r.y -= 1;
+
+    m->state = LEFT;
+    write_hist(m);
+    return;
+
+  case LEFT:
+
+    m->r.y += 1;
+
+    if(m->vertex.x - m->r.x == m->r.y - m->vertex.y) {
+      write_hist(m);
+      m->state = UP_LEFT;
+    }
+    return;
+
+  default:
+    break;
+  }
+
+}
+
+static void evolve_source(Source *s)
+{
+
+  int i;
+
+  /* propagate existing particles */
+
+  for(i = s->n - 1; i > 0; i--) {
+
+    if(s->yv[i - 1].v == 2)
+      s->yv[i].v = 2;
+    else {
+      s->yv[i].v = RND(3) - 1;
+      s->yv[i].y = s->yv[i - 1].y + s->yv[i].v;
+    }
+
+  }
+
+
+  if(s->inv_rate > 0 && (RND(s->inv_rate) == 0)) /* emit a particle */
+    s->yv[0].y = s->yv[0].v = RND(3) - 1;
+  else
+    s->yv[0].v = 2;
+
+}
+
+static Source *new_source(void)
+{
+  int i;
+
+  Source *s = (Source *) emalloc(sizeof(Source));
+  if(max_searcher == 0) {
+    s->r.x = 0;
+    s->r.y = RND(2 * max_dist);
+  }
+  else {
+    s->r.x = RND(max_dist / 3);
+    do {
+      s->r.y = RND(2 * max_dist);
+    } while(s->r.y < MIN_DIST || s->r.y > 2 * max_dist - MIN_DIST);
+  }
+
+  s->n = max_dist - s->r.x;
+  s->yv = emalloc(sizeof(YV) * s->n);
+
+  for(i = 0; i < s->n; i++)
+    s->yv[i].v = 2;
+
+  s->inv_rate = RND(MAX_INV_RATE);
+
+  if(s->inv_rate == 0)
+    s->inv_rate = 1;
+
+  s->color = random();
+
+  return s;
+}
+
+static void destroy_source(Source *s)
+{
+  free(s->yv);
+  free(s);
+}
+
+static void get_v(const Source *s, Searcher *m)
+{
+  int x = m->r.x - s->r.x - 1;
+
+  m->c = 0;
+
+  if(x < 0 || x >= s->n)
+    return;
+
+  if((s->yv[x].v == 2) || (s->yv[x].y != m->r.y - s->r.y))
+    return;
+
+  m->c = 1;
+  m->v = s->yv[x].v;
+  m->color = s->color;
+}
+
+
+static void init_anemotaxis(void)
+{
+  XWindowAttributes wa;
+
+  delay = get_integer_resource("delay", "Integer");
+  max_dist = get_integer_resource("distance", "Integer");
+
+  if(max_dist < MIN_DIST)
+    max_dist = MIN_DIST + 1;
+  if(max_dist > MAX_DIST)
+    max_dist = MAX_DIST;
+
+  max_src = get_integer_resource("sources", "Integer");
+
+  if(max_src <= 0) 
+    max_src = 1;
+
+  max_searcher = get_integer_resource("searchers", "Integer");
+
+  if(max_searcher < 0)
+    max_searcher = 0;
+
+  dbuf = TRUE;
+
+  source = (Source **) emalloc(sizeof(Source *) * max_src);
+  memset(source, 0, max_src * sizeof(Source *));
+
+  source[0] = new_source();
+
+  searcher = (Searcher **) emalloc(max_searcher * sizeof(Searcher *));
+
+  memset(searcher, 0, max_searcher * sizeof(Searcher *));
+
+  b = ba = bb = 0;     /* double-buffer to reduce flicker */
+
+#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
+  b = backb = xdbe_get_backbuffer (dpy, window, XdbeUndefined);
+#endif
+
+  XGetWindowAttributes(dpy, window, &wa);
+  scrWidth = wa.width;
+  scrHeight = wa.height;
+  cmap = wa.colormap;
+  gcDraw = XCreateGC(dpy, window, GCForeground, &gcv);
+  gcv.foreground = get_pixel_resource("background", "Background", dpy, cmap);
+  gcClear = XCreateGC(dpy, window, GCForeground, &gcv);
+
+  if (dbuf) {
+    if (!b) {
+       ba = XCreatePixmap (dpy, window, scrWidth, scrHeight, wa.depth);
+       bb = XCreatePixmap (dpy, window, scrWidth, scrHeight, wa.depth);
+       b = ba;
+      }
+  }
+  else
+    b = window;
+  
+
+  if (ba) XFillRectangle (dpy, ba, gcClear, 0, 0, scrWidth, scrHeight);
+  if (bb) XFillRectangle (dpy, bb, gcClear, 0, 0, scrWidth, scrHeight);
+
+  ax = scrWidth / (double) max_dist;
+  ay = scrHeight / (2. * max_dist);
+  bx = 0.;
+  by = 0.;
+
+  if((dx = scrWidth / (2 * max_dist)) == 0)
+    dx = 1;
+  if((dy = scrHeight / (4 * max_dist)) == 0)
+    dy = 1;
+  XSetLineAttributes(dpy, gcDraw, dx / 3 + 1, LineSolid, CapRound, JoinRound);
+  XClearWindow(dpy, window);
+}
+
+static void draw_searcher(Drawable curr_window, int i)
+{
+  Point r1, r2;
+  PList *l;
+
+  if(searcher[i] == NULL)
+    return;
+
+  XSetForeground(dpy, gcDraw, searcher[i]->color);
+
+  r1.x = X(searcher[i]->r.x) + searcher[i]->rs;
+  r1.y = Y(searcher[i]->r.y);
+
+  XFillRectangle(dpy, curr_window, gcDraw, r1.x - 2, r1.y - 2, 4, 4);
+
+  for(l = searcher[i]->hist; l != NULL; l = l->next) {
+
+    r2.x = X(l->r.x) + searcher[i]->rs;
+    r2.y = Y(l->r.y);
+
+    XDrawLine(dpy, curr_window, gcDraw, r1.x, r1.y, r2.x, r2.y);
+
+    r1 = r2;
+  }
+
+}
+
+static void draw_image(Drawable curr_window)
+{
+  int i, j;
+  int x, y;
+
+  for(i = 0; i < max_src; i++) {
+
+    if(source[i] == NULL)
+      continue;
+
+    XSetForeground(dpy, gcDraw, source[i]->color);
+
+    if(source[i]->inv_rate > 0) {
+
+      if(max_searcher > 0) {
+      x = (int) X(source[i]->r.x);
+      y = (int) Y(source[i]->r.y);
+      j = dx * (MAX_INV_RATE + 1 - source[i]->inv_rate) / (2 * MAX_INV_RATE);
+      if(j == 0)
+       j = 1;
+      XFillArc(dpy, curr_window, gcDraw, x - j, y - j, 2 * j, 2 * j, 0, 360 * 64);
+      }}
+
+    for(j = 0; j < source[i]->n; j++) {
+
+      if(source[i]->yv[j].v == 2)
+       continue;
+
+      /* Move the particles slightly off lattice */
+      x =  X(source[i]->r.x + 1 + j) + RND(dx);
+      y = Y(source[i]->r.y + source[i]->yv[j].y) + RND(dy);
+      XFillArc(dpy, curr_window, gcDraw, x - 2, y - 2, 4, 4, 0, 360 * 64);
+    }
+
+  }
+
+  for(i = 0; i < max_searcher; i++)
+    draw_searcher(curr_window, i);
+}
+
+static void animate_anemotaxis(Drawable curr_window)
+{
+  int i, j;
+  bool dead;
+
+  for(i = 0; i < max_src; i++) {
+
+    if(source[i] == NULL)
+      continue;
+
+    evolve_source(source[i]);
+
+    /* reap dead sources for which all particles are gone */
+    if(source[i]->inv_rate == 0) {
+
+      dead = TRUE;
+
+      for(j = 0; j < source[i]->n; j++) {
+       if(source[i]->yv[j].v != 2) {
+         dead = FALSE;
+         break;
+       }
+      }
+
+      if(dead == TRUE) {
+       destroy_source(source[i]);
+       source[i] = NULL;
+      }
+    }
+  }
+
+  /* Decide if we want to add new  sources */
+
+  for(i = 0; i < max_src; i++) {
+    if(source[i] == NULL && RND(max_dist * max_src) == 0)
+      source[i] = new_source();
+  }
+
+  if(max_searcher == 0) { /* kill some sources when searchers don't do that */
+    for(i = 0; i < max_src; i++) {
+      if(source[i] != NULL && RND(max_dist * max_src) == 0) {
+       destroy_source(source[i]);
+       source[i] = 0;
+      }
+    }
+  }
+
+  /* Now deal with searchers */
+
+  for(i = 0; i < max_searcher; i++) {
+
+    if((searcher[i] != NULL) && (searcher[i]->state == DONE)) {
+      destroy_searcher(searcher[i]);
+      searcher[i] = NULL;
+    }
+
+    if(searcher[i] == NULL) {
+
+      if(RND(max_dist * max_searcher) == 0) {
+
+       searcher[i] = new_searcher();
+
+      }
+    }
+
+    if(searcher[i] == NULL)
+      continue;
+
+    /* Check if searcher found a source or missed all of them */
+    for(j = 0; j < max_src; j++) {
+
+      if(source[j] == NULL || source[j]->inv_rate == 0)
+       continue;
+
+      if(searcher[i]->r.x < 0) {
+       searcher[i]->state = DONE;
+       break;
+      }
+
+      if((source[j]->r.y == searcher[i]->r.y) && 
+        (source[j]->r.x == searcher[i]->r.x)) {
+       searcher[i]->state = DONE;
+       source[j]->inv_rate = 0;  /* source disappears */
+
+       /* Make it flash */
+       searcher[i]->color = WhitePixel(dpy, DefaultScreen(dpy));
+
+       break;
+      }
+    }
+
+    searcher[i]->c = 0; /* set it here in case we don't get to get_v() */
+
+    /* Find the concentration at searcher's location */
+    
+    if(searcher[i]->state != DONE) {
+      for(j = 0; j < max_src; j++) {
+       
+       if(source[j] == NULL)
+         continue;
+
+       get_v(source[j], searcher[i]);
+      
+       if(searcher[i]->c == 1)
+         break;
+      }
+    }
+
+    move_searcher(searcher[i]);
+
+  }
+
+  draw_image(curr_window);
+  usleep(delay);
+}
+
+/*-----------------------------------------------------------------------+
+  |  PUBLIC FUNCTIONS                                                      |
+  +-----------------------------------------------------------------------*/
+
+void screenhack(Display *disp, Window win)
+{
+
+  XWindowAttributes wa;
+  int w, h;
+
+
+  dpy = disp;
+  window = win;
+
+  init_anemotaxis();
+
+  for(;;) {
+    
+    XGetWindowAttributes(dpy, window, &wa);
+
+    w = wa.width;
+    h = wa.height;
+
+    if(w != scrWidth || h != scrHeight) {
+      scrWidth = w;
+      scrHeight = h;
+      ax = scrWidth / (double) max_dist;
+      ay = scrHeight / (2. * max_dist);
+      bx = 0.;
+      by = 0.;
+      
+      if((dx = scrWidth / (2 * max_dist)) == 0)
+       dx = 1;
+      if((dy = scrHeight / (4 * max_dist)) == 0)
+       dy = 1;
+      XSetLineAttributes(dpy, gcDraw, dx / 3 + 1, LineSolid, CapRound, JoinRound);
+    } 
+
+    XFillRectangle (dpy, b, gcClear, 0, 0, scrWidth, scrHeight);
+    animate_anemotaxis(b);
+
+#ifdef HAVE_DOUBLE_BUFFER_EXTENSION
+    if (backb) {
+       XdbeSwapInfo info[1];
+       info[0].swap_window = window;
+       info[0].swap_action = XdbeUndefined;
+       XdbeSwapBuffers (dpy, info, 1);
+      }
+    else
+#endif
+      if (dbuf)        {
+         XCopyArea (dpy, b, window, gcClear, 0, 0,
+                    scrWidth, scrHeight, 0, 0);
+         b = (b == ba ? bb : ba);
+       }
+
+    screenhack_handle_events (dpy);
+  }
+
+}
diff --git a/hacks/anemotaxis.man b/hacks/anemotaxis.man
new file mode 100644 (file)
index 0000000..0ea7fa4
--- /dev/null
@@ -0,0 +1,75 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+anemotaxis - directional search on a plane.
+.SH SYNOPSIS
+.B anemotaxis
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-distance \fInumber\fP]
+[\-sources \fInumber\fP]
+[\-searchers \fInumber\fP]
+.SH DESCRIPTION
+The program demonstrates a search algorithm designed for locating a
+source of odor in turbulent atmosphere. The odor is convected by wind
+which has a constant mean direction and fluctuations around it. The
+searcher is able to sense the odor and determine local instantaneous
+wind direction. The goal is to find the source in the shortest mean
+time.  Some animals face this task to find mates, food, home etc. They
+exhibit very particular, zigzagging search trajectories.
+
+This is modeled as a search on a discrete two-dimensional lattice. The
+source releases particles that drift with constant velocity in one
+direction and walk randomly in the other direction. The searcher knows
+if it hit a particle, and if so, particle's position one time step
+earlier (local wind direction). The program paints sources and
+particles released by them as well as trajectories of serchers who are
+trying to capture the sources.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use.  Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window.  This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds.  Default: 20000 (0.02 seconds.).
+.TP 8
+.B \-distance \fInumber\fP
+Max initial distance to the source .  10 - 250.  Default: 40.
+.TP 8
+.B \-sources \fInumber\fP
+Max number of sources.  Default: 25.
+.TP 8
+.B \-searchers \fInumber\fP
+Max number of searchers. Default: 25.
+
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2004 by Eugene Balkovsky.  Permission to use, copy, modify, 
+distribute, and sell this software and its documentation for any purpose is 
+hereby granted without fee, provided that the above copyright notice appear 
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation.  No representations are made about the 
+suitability of this software for any purpose.  It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Eugene Balkovsky
index 9fc750a577b17486c69dc7f847c81616e84d9b6f..463c4e048b38c35a218ae23ede85f65aab99b046 100644 (file)
@@ -90,30 +90,30 @@ static Bool sharpturn;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {(char *) "-neighbors", (char *) ".ant.neighbors", XrmoptionSepArg, (caddr_t) NULL},
-       {(char *) "-truchet", (char *) ".ant.truchet", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+truchet", (char *) ".ant.truchet", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-eyes", (char *) ".ant.eyes", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+eyes", (char *) ".ant.eyes", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-sharpturn", (char *) ".ant.sharpturn", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+sharpturn", (char *) ".ant.sharpturn", XrmoptionNoArg, (caddr_t) "off"},
-       {"-neighbors", ".ant.neighbors", XrmoptionSepArg, (caddr_t) 0},
-       {"+neighbors", ".ant.neighbors", XrmoptionSepArg, (caddr_t) 0}
+       {"-neighbors", ".ant.neighbors", XrmoptionSepArg, NULL},
+       {"-truchet", ".ant.truchet", XrmoptionNoArg, "on"},
+       {"+truchet", ".ant.truchet", XrmoptionNoArg, "off"},
+       {"-eyes", ".ant.eyes", XrmoptionNoArg, "on"},
+       {"+eyes", ".ant.eyes", XrmoptionNoArg, "off"},
+       {"-sharpturn", ".ant.sharpturn", XrmoptionNoArg, "on"},
+       {"+sharpturn", ".ant.sharpturn", XrmoptionNoArg, "off"},
+       {"-neighbors", ".ant.neighbors", XrmoptionSepArg, 0},
+       {"+neighbors", ".ant.neighbors", XrmoptionSepArg, 0}
 };
 static argtype vars[] =
 {
        {&neighbors, "neighbors", "Neighbors", DEF_NEIGHBORS, t_Int},
        {&truchet,   "truchet",   "Truchet",   DEF_TRUCHET,   t_Bool},
        {&eyes,      "eyes",      "Eyes",      DEF_EYES,      t_Bool},
 };
 static argtype vars[] =
 {
        {&neighbors, "neighbors", "Neighbors", DEF_NEIGHBORS, t_Int},
        {&truchet,   "truchet",   "Truchet",   DEF_TRUCHET,   t_Bool},
        {&eyes,      "eyes",      "Eyes",      DEF_EYES,      t_Bool},
-       {&sharpturn, "sharpturn", "SharpTurn", DEF_SHARPTURN, t_Bool},
+    {&sharpturn, "sharpturn", "SharpTurn", DEF_SHARPTURN, t_Bool},
        {&neighbors, "neighbors", "Neighbors", DEF_NEIGHBORS, t_Int}
 };
 static OptionStruct desc[] =
 {
        {&neighbors, "neighbors", "Neighbors", DEF_NEIGHBORS, t_Int}
 };
 static OptionStruct desc[] =
 {
-       {(char *) "-neighbors num", (char *) "squares 4 or 8, hexagons 6, triangles 3 or 12"},
-       {(char *) "-/+truchet", (char *) "turn on/off Truchet lines"},
-       {(char *) "-/+eyes", (char *) "turn on/off eyes"},
-       {(char *) "-/+sharpturn", (char *) "turn on/off sharp turns (6, 8 or 12 neighbors only)"}
+       {"-neighbors num", "squares 4 or 8, hexagons 6, triangles 3 or 12"},
+       {"-/+truchet", "turn on/off Truchet lines"},
+       {"-/+eyes", "turn on/off eyes"},
+       {"-/+sharpturn", "turn on/off sharp turns (6, 8 or 12 neighbors only)"}
 };
 
 ModeSpecOpt ant_opts =
 };
 
 ModeSpecOpt ant_opts =
index 838f81fd73c4acf86cd073f06615b020f51be000..ad46b1a2c7908f0e079eba448e8cee8373e04ee1 100644 (file)
@@ -90,10 +90,10 @@ static Bool label;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {(char *) "-altgeom", (char *) ".apollonian.altgeom", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+altgeom", (char *) ".apollonian.altgeom", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-label", (char *) ".apollonian.label", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+label", (char *) ".apollonian.label", XrmoptionNoArg, (caddr_t) "off"},
+       {"-altgeom", ".apollonian.altgeom", XrmoptionNoArg, "on"},
+       {"+altgeom", ".apollonian.altgeom", XrmoptionNoArg, "off"},
+       {"-label", ".apollonian.label", XrmoptionNoArg, "on"},
+       {"+label", ".apollonian.label", XrmoptionNoArg, "off"},
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
@@ -102,8 +102,8 @@ static argtype vars[] =
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
-        {(char *) "-/+altgeom", (char *) "turn on/off alternate geometries (off euclidean space, on includes spherical and hyperbolic)"},
-        {(char *) "-/+label", (char *) "turn on/off alternate space and number labeling"},
+        {"-/+altgeom", "turn on/off alternate geometries (off euclidean space, on includes spherical and hyperbolic)"},
+        {"-/+label", "turn on/off alternate space and number labeling"},
 };
 
 ModeSpecOpt apollonian_opts =
 };
 
 ModeSpecOpt apollonian_opts =
index fed55dce4f70f9c28bf9abc6279490e3333c73a5..5f545c40030c48f7352ec7fa9685de8283c57b81 100644 (file)
@@ -71,12 +71,12 @@ void
 a2_scroll(apple2_state_t *st)
 {
   int i;
 a2_scroll(apple2_state_t *st)
 {
   int i;
-  st->textlines[st->cursy][st->cursx] ^= 0xc0;     /* turn off cursor */
+  st->textlines[st->cursy][st->cursx] |= 0xc0;     /* turn off cursor */
+
   for (i=0; i<23; i++) {
     memcpy(st->textlines[i],st->textlines[i+1],40);
   }
   memset(st->textlines[23],0xe0,40);
   for (i=0; i<23; i++) {
     memcpy(st->textlines[i],st->textlines[i+1],40);
   }
   memset(st->textlines[23],0xe0,40);
-  st->textlines[st->cursy][st->cursx] ^= 0xc0;     /* turn cursor back on */
 }
 
 static void
 }
 
 static void
index fc61a59dcfee08965dd2fba903e0762a8840ccc4..b15784814e7f82e0a7b13e8feab823562ec04adc 100644 (file)
@@ -1529,6 +1529,8 @@ static void setup (void)
     theImage = XCreateImage(display, visual, 1, XYBitmap, 0, theBitmap->buf,
                            theBitmap->width, theBitmap->height, 8,
                            theBitmap->widthBytes);
     theImage = XCreateImage(display, visual, 1, XYBitmap, 0, theBitmap->buf,
                            theBitmap->width, theBitmap->height, 8,
                            theBitmap->widthBytes);
+    theImage->bitmap_bit_order = LSBFirst;
+    theImage->byte_order       = LSBFirst;
 }
 
 
 }
 
 
index 24eecb2db39e611743a792017378914c65f5ab6e..e9eeeba28a349b38836631ba573d5cb3437c6337 100644 (file)
@@ -1,5 +1,6 @@
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMONE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMONE.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMOTAXIS.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANT.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) APOLLONIAN.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) APPLE2.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANT.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) APOLLONIAN.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) APPLE2.C
@@ -64,6 +65,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LMORPH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LOOP.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MAZE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LMORPH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LOOP.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MAZE.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MEMSCROLLER.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) METABALLS.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MISMUNCH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE2.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) METABALLS.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MISMUNCH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE2.C
@@ -72,7 +74,9 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MUNCH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NERVEROT.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NOSEGUY.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MUNCH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NERVEROT.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NOSEGUY.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PACMAN_AI.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PACMAN.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PACMAN.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PACMAN_LEVEL.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PEDAL.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENETRATE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENROSE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PEDAL.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENETRATE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENROSE.C
index 24eecb2db39e611743a792017378914c65f5ab6e..e9eeeba28a349b38836631ba573d5cb3437c6337 100644 (file)
@@ -1,5 +1,6 @@
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMONE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMONE.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMOTAXIS.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANT.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) APOLLONIAN.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) APPLE2.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANT.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) APOLLONIAN.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) APPLE2.C
@@ -64,6 +65,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LMORPH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LOOP.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MAZE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LMORPH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LOOP.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MAZE.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MEMSCROLLER.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) METABALLS.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MISMUNCH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE2.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) METABALLS.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MISMUNCH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE2.C
@@ -72,7 +74,9 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MUNCH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NERVEROT.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NOSEGUY.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MUNCH.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NERVEROT.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NOSEGUY.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PACMAN_AI.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PACMAN.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PACMAN.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PACMAN_LEVEL.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PEDAL.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENETRATE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENROSE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PEDAL.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENETRATE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) PENROSE.C
index 7976bc426782c99c0879a9641fa2b94b983124b2..07f7914300c4bee5e76c7a3808c8fbfebd83b14c 100644 (file)
@@ -4,8 +4,8 @@
             a screen saver and locker for the X window system
                             by Jamie Zawinski
 
             a screen saver and locker for the X window system
                             by Jamie Zawinski
 
-                              version 4.16
-                               12-May-2004
+                              version 4.18
+                               14-Aug-2004
 
                      http://www.jwz.org/xscreensaver/
 
 
                      http://www.jwz.org/xscreensaver/
 
diff --git a/hacks/config/anemotaxis.xml b/hacks/config/anemotaxis.xml
new file mode 100644 (file)
index 0000000..7e65852
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="anemotaxis" _label="Anemotaxis">
+
+  <command arg="-root"/>
+
+  <number id="delay" type="slider" arg="-delay %"
+          _label="Speed" _low-label="Slow" _high-label="Fast"
+          low="0" high="60000" default="20000"
+          convert="invert"/>
+
+  <number id="distance" type="slider" arg="-distance %"
+           _label="Distance" _low-label="Near" _high-label="Far"
+          low="0" high="400" default="40"/>
+
+  <number id="sources" type="slider" arg="-sources %"
+           _label="Sources" _low-label="Few" _high-label="Many"
+          low="1" high="100" default="25"/>
+
+  <number id="searchers" type="slider" arg="-searchers %"
+           _label="Searchers" _low-label="Few" _high-label="Many"
+          low="1" high="100" default="25"/>
+
+  <_description>
+Anemotaxis demonstrates a search algorithm designed for locating a
+source of odor in turbulent atmosphere.  The searcher is able to sense
+the odor and determine local instantaneous wind direction.  The goal is
+to find the source in the shortest mean time.  Written by Eugene Balkovsky.
+  </_description>
+</screensaver>
index b04aa6a340f519141704566fbc809cb86e137b1a..1f43df193763a1a6f1ebca89fb06e5b4b09061a0 100644 (file)
@@ -22,7 +22,7 @@
   <hgroup>
     <number id="points" type="spinbutton" arg="-points %"
               _label="Ball Count" low="0" high="200" default="0"/>
   <hgroup>
     <number id="points" type="spinbutton" arg="-points %"
               _label="Ball Count" low="0" high="200" default="0"/>
-    <number id="points" type="slider" arg="-size %"
+    <number id="size" type="slider" arg="-size %"
               _low-label="Ball Mass" _high-label="High"
               low="0" high="100" default="0"/>
   </hgroup>
               _low-label="Ball Mass" _high-label="High"
               low="0" high="100" default="0"/>
   </hgroup>
@@ -44,7 +44,7 @@
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="0" high="20000" default="10000"
+          low="0" high="40000" default="10000"
           convert="invert"/>
 
   <number id="ncolors" type="slider" arg="-colors %"
           convert="invert"/>
 
   <number id="ncolors" type="slider" arg="-colors %"
index 366fd73d21b75c1663eb0c599eabd1b33467cd48..7bc0211e368d49ab9a904a98806684c3e1025a18 100644 (file)
@@ -9,7 +9,7 @@
           low="0" high="50000" default="30000"/>
 
   <number id="boxsize" type="spinbutton" arg="-boxsize %"
           low="0" high="50000" default="30000"/>
 
   <number id="boxsize" type="spinbutton" arg="-boxsize %"
-          _label="Box Size" low="1" high="4" default="1"/>
+          _label="Box Size" low="1" high="8" default="1"/>
 
   <hgroup>
    <boolean id="fade"      _label="Fade"       arg-unset="-no-fade"/>
 
   <hgroup>
    <boolean id="fade"      _label="Fade"       arg-unset="-no-fade"/>
index 92cb91da904c378c03bd1ccb21e9503e8eedb049..0edbaf47e733be775552739858c9d8c96be53e89 100644 (file)
@@ -6,7 +6,7 @@
 
   <number id="speed" type="slider" arg="-speed %"
           _label="Bounce Speed" _low-label="Slow" _high-label="Fast"
 
   <number id="speed" type="slider" arg="-speed %"
           _label="Bounce Speed" _low-label="Slow" _high-label="Fast"
-          low="0.05" high="1.7" default="1.0"/>
+          low="0.05" high="1.7" default="0.7"/>
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Animation Speed" _low-label="Slow" _high-label="Fast"
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Animation Speed" _low-label="Slow" _high-label="Fast"
index ee365ae143fb5cc0d0804d611f05f1ba3dfbbcaa..50256015869ac880996681b1a138e1fab90eb7a9 100644 (file)
@@ -9,6 +9,10 @@
           low="0" high="20000" default="20000"
           convert="invert"/>
 
           low="0" high="20000" default="20000"
           convert="invert"/>
 
+  <number id="speed" type="slider" arg="-speed %"
+          _label="Motion Speed" _low-label="Slow" _high-label="Fast"
+          low="0.001" high="4.0" default="0.5"/>
+
   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
 
   <_description>
   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
 
   <_description>
index 10c02b28cf1bcfa90e85d403465e42f067b2a5f2..19bf40ab98ba6935f686e530a18516f98d57a582 100644 (file)
@@ -6,7 +6,7 @@
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="0" high="20000" default="10000"
+          low="0" high="20000" default="15000"
           convert="invert"/>
 
   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
           convert="invert"/>
 
   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
index 63f713fb2ab4784f4bb4f073c8d647b802aadf06..90954fc3b145203a8b09cc771bbc03e1971a172f 100644 (file)
@@ -5,6 +5,6 @@
 
   <_description>
 Draws fireworks and zooming, fading flares.  By Tom Campbell. 
 
   <_description>
 Draws fireworks and zooming, fading flares.  By Tom Campbell. 
-You can find it at &lt;http://cosmos.dnsalias.net/cosmos/&gt;
+You can find it at &lt;http://www.cosmosx.org/&gt;
   </_description>
 </screensaver>
\ No newline at end of file
   </_description>
 </screensaver>
\ No newline at end of file
index 05986c5cec1efb57546d2c0e5e6473a8ac374f5a..a3ca352a3f9010a3e2c76b5a494b140588e8013b 100644 (file)
@@ -6,7 +6,7 @@
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="0" high="50000" default="30000"
+          low="0" high="50000" default="20000"
           convert="invert"/>
 
   <number id="count" type="slider" arg="-count %"
           convert="invert"/>
 
   <number id="count" type="slider" arg="-count %"
index dfa8dbb58399df43f8005921a8519d85e0c43e38..c7f262654f4d3a60b7543774a103fec4336660ac 100644 (file)
@@ -4,11 +4,9 @@
 
   <command arg="-root"/>
 
 
   <command arg="-root"/>
 
-  <!-- #### -rotate-speed [1] -->
-
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="0" high="20000" default="10000"
+          low="0" high="40000" default="30000"
           convert="invert"/>
 
   <select id="engine">
           convert="invert"/>
 
   <select id="engine">
index bed071fd81cd8b62ee3791570179c9cfcfb950e8..ce718d4fde1a1ef04460d348cd5224699c0ad094 100644 (file)
@@ -33,6 +33,6 @@
 
   <_description>
 Another series of strange attractors: a flowing series of points,
 
   <_description>
 Another series of strange attractors: a flowing series of points,
-making strange rotational shapes.  Written by Jeff Butterworth.
+making strange rotational shapes.  Written by Tim Auckland.
   </_description>
 </screensaver>
   </_description>
 </screensaver>
index f842b5749099372c99fa848f0001189c8847ed78..7d21f893ff738271bdf2615907206495ab1ba952 100644 (file)
@@ -1,40 +1,36 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 
 <?xml version="1.0" encoding="ISO-8859-1"?>
 
-<screensaver name="fuaayflakes" _label="FuzzyFlakes">
+<screensaver name="fuzzyflakes" _label="FuzzyFlakes">
 
   <command arg="-root"/>
 
 
   <command arg="-root"/>
 
+  <string id="color" _label="Color" arg="-color %"/>
+
   <number id="arms" type="slider" arg="-arms %"
           _label="Arms" _low-label="Few" _high-label="Many"
   <number id="arms" type="slider" arg="-arms %"
           _label="Arms" _low-label="Few" _high-label="Many"
-          low="1" high="10" default="5"
-          convert="invert"/>
+          low="1" high="10" default="5"/>
   <number id="thickness" type="slider" arg="-thickness %"
           _label="Thickness" _low-label="Thin" _high-label="Thick"
   <number id="thickness" type="slider" arg="-thickness %"
           _label="Thickness" _low-label="Thin" _high-label="Thick"
-          low="1" high="50" default="10"
-          convert="invert"/>
+          low="1" high="50" default="10"/>
   <number id="bthickness" type="slider" arg="-bthickness %"
           _label="Border Thickness" _low-label="Thin" _high-label="Thick"
   <number id="bthickness" type="slider" arg="-bthickness %"
           _label="Border Thickness" _low-label="Thin" _high-label="Thick"
-          low="0" high="50" default="3"
-          convert="invert"/>
+          low="0" high="50" default="3"/>
   <number id="radius" type="slider" arg="-radius %"
           _label="Radius" _low-label="Small" _high-label="Large"
   <number id="radius" type="slider" arg="-radius %"
           _label="Radius" _low-label="Small" _high-label="Large"
-          low="1" high="100" default="20"
-          convert="invert"/>
+          low="1" high="100" default="20"/>
   <number id="layers" type="slider" arg="-layers %"
           _label="Layers" _low-label="Few" _high-label="Many"
   <number id="layers" type="slider" arg="-layers %"
           _label="Layers" _low-label="Few" _high-label="Many"
-          low="1" high="10" default="3"
-          convert="invert"/>
+          low="1" high="10" default="3"/>
   <number id="delay" type="slider" arg="-delay %"
           _label="Delay" _low-label="Slow" _high-label="Fast"
   <number id="delay" type="slider" arg="-delay %"
           _label="Delay" _low-label="Slow" _high-label="Fast"
-          low="0" high="250000" default="10000"
-          convert="invert"/>
+          low="0" high="250000" default="10000"/>
   <number id="speed" type="slider" arg="-speed %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
   <number id="speed" type="slider" arg="-speed %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="1" high="50" default="10"
-          convert="invert"/>
+          low="1" high="50" default="10"/>
   <boolean id="db" _label="Double Buffer" arg-unset="-no-db"/>
   <boolean id="db" _label="Double Buffer" arg-unset="-no-db"/>
+  <boolean id="rc" _label="Random Colors" arg-set="-random-colors"/>
   <_description>
   <_description>
-Falling pastel colored snowflake/flower shapes.
+Falling colored snowflake/flower shapes.
 Inspired by the credits of the anime "Azumanga Daioh".
 Written by Barry Dmytro.
   </_description>
 Inspired by the credits of the anime "Azumanga Daioh".
 Written by Barry Dmytro.
   </_description>
index b0943f8ba403f5a0d92bdef69708b11d0944319f..df54197317542330a58eeea95940d29764c3f81f 100644 (file)
@@ -39,6 +39,6 @@ Draws an animation of sprinkling fire-like 3D triangles in a landscape
 filled with trees.  Requires OpenGL, and a machine with fast hardware
 support for texture maps.
 
 filled with trees.  Requires OpenGL, and a machine with fast hardware
 support for texture maps.
 
-Written by Eric Lassauge &lt;lassauge@free.fr&gt;.
+Written by Eric Lassauge &lt;lassauge@users.sourceforge.net&gt;.
   </_description>
 </screensaver>
   </_description>
 </screensaver>
index faa198794589879f14ecfa4d4029a31bb6007890..9dff6aca0927543f85fe0a157f7ab34f5a029204 100644 (file)
@@ -4,9 +4,6 @@
 
   <command arg="-root"/>
 
 
   <command arg="-root"/>
 
-  <!-- #### -no-rotate -->
-  <!-- #### -no-roll -->
-  <!-- #### -no-wander -->
   <!-- #### -no-texture -->
   <!-- #### -no-stars -->
 
   <!-- #### -no-texture -->
   <!-- #### -no-stars -->
 
@@ -19,7 +16,7 @@
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="0" high="20000" default="15000"
+          low="0" high="50000" default="20000"
           convert="invert"/>
 
   <select id="render">
           convert="invert"/>
 
   <select id="render">
     <option id="solid" _label="Solid"/>
   </select>
 
     <option id="solid" _label="Solid"/>
   </select>
 
+  <hgroup>
+   <boolean id="wander" _label="Wander"    arg-unset="-no-wander"/>
+   <boolean id="rotate" _label="Rotate"    arg-unset="-no-rotate"/>
+   <boolean id="roll"   _label="Roll"      arg-unset="-no-roll"/>
+   <boolean id="stars"  _label="Stars"     arg-unset="-no-stars"/>
+  </hgroup>
+
   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
 
   <_description>
   <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
 
   <_description>
index 347cd916e58a1d2f0e7e708050107af8158b0f54..a8e411b8296bb5031d645e54576b39861282e513 100644 (file)
@@ -8,7 +8,7 @@
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="0" high="20000" default="10000"
+          low="0" high="30000" default="20000"
           convert="invert"/>
 
   <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
           convert="invert"/>
 
   <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
index d702e3713f951adfd98c0f8bf33abf07d148130f..2f6999398b5b8c2693bf0957f48a43c5bbb7fa72 100644 (file)
           low="0.1" high="3.0" default="1.2"/>
 
   <_description>
           low="0.1" high="3.0" default="1.2"/>
 
   <_description>
-This draws set of animating, transparent, amoeba-like blobs.  The
-blobs change shape as they wander around the screen, and they are
-translucent, so you can see the lower blobs through the higher ones,
-and when one passes over another, their colors merge.  Written by
-Jamie Zawinski.  I got the idea for this from a cool mouse pad I
-have, which achieves the same kind of effect in real life by having
-several layers plastic with colored oil between them.  Written by
-Jamie Zawinski.
+This draws set of animating, transparent, amoeba-like blobs.  The blobs
+change shape as they wander around the screen, and they are translucent,
+so you can see the lower blobs through the higher ones, and when one
+passes over another, their colors merge.  I got the idea for this from
+a cool mouse pad I have, which achieves the same kind of effect in real
+life by having several layers plastic with colored oil between them.
+Written by Jamie Zawinski.
   </_description>
 </screensaver>
   </_description>
 </screensaver>
index 8a4b4319796eea94639c68b75b7603d21127bc3c..c0e70b554a73c188763de0cbec77931aab297d6a 100644 (file)
@@ -6,7 +6,7 @@
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="0" high="20000" default="10000"
+          low="0" high="40000" default="20000"
           convert="invert"/>
 
   <select id="render">
           convert="invert"/>
 
   <select id="render">
index 5e90039515567e02f249d41652ac1d8edaf3f018..8dc3fe757f591eba7520993846f6e293bcd37204 100644 (file)
@@ -6,7 +6,7 @@
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="0" high="50000" default="10000"
+          low="0" high="50000" default="30000"
           convert="invert"/>
 
   <number id="speed" type="slider" arg="-speed %"
           convert="invert"/>
 
   <number id="speed" type="slider" arg="-speed %"
diff --git a/hacks/config/memscroller.xml b/hacks/config/memscroller.xml
new file mode 100644 (file)
index 0000000..343baa2
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="memscroller" _label="MemScroller">
+
+  <command arg="-root"/>
+
+  <number id="delay" type="slider" arg="-delay %"
+          _label="Speed" _low-label="Slow" _high-label="Fast"
+          low="0" high="30000" default="10000"
+          convert="invert"/>
+
+  <select id="seedMode">
+    <option id="ram"    _label="Dump Memory"/>
+    <option id="random" _label="Draw Random Numbers" arg-set="-random"/>
+  </select>
+
+  <select id="drawMode">
+    <option id="color" _label="Draw in RGB"/>
+    <option id="mono"  _label="Draw Green" arg-set="-mono"/>
+  </select>
+
+  <_description>
+This draws a dump of its own process memory scrolling across the screen
+in three windows at three different rates.  Written by Jamie Zawinski.
+  </_description>
+</screensaver>
index 7907da6c98b365e7f80775a3280df27180e5b711..37e60104c63adf78054bbb506d8e7fc014d63bc0 100644 (file)
@@ -6,7 +6,7 @@
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
 
   <number id="delay" type="slider" arg="-delay %"
           _label="Speed" _low-label="Slow" _high-label="Fast"
-          low="0" high="20000" default="10000"
+          low="0" high="60000" default="30000"
           convert="invert"/>
 
   <select id="object">
           convert="invert"/>
 
   <select id="object">
@@ -34,6 +34,6 @@ Draws an animation of textured balls spinning like crazy in GL.
 Requires OpenGL, and a machine with fast hardware support for texture
 maps.
 
 Requires OpenGL, and a machine with fast hardware support for texture
 maps.
 
-Written by Eric Lassauge &lt;lassauge@free.fr&gt;.
+Written by Eric Lassauge &lt;lassauge@users.sourceforge.net&gt;.
   </_description>
 </screensaver>
   </_description>
 </screensaver>
index a0907da867c353720e4a67d2bc9d57ae3a2c9cfd..15c01ba3ffb718c2fee0622dc668f405d0d6ab4f 100644 (file)
@@ -108,18 +108,18 @@ static Bool unit_cell, grid_cell, centre, maxsize, cycle_p;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {"-nx", "crystal.nx", XrmoptionSepArg, (caddr_t) NULL},
-       {"-ny", "crystal.ny", XrmoptionSepArg, (caddr_t) NULL},
-       {"-centre", ".crystal.centre", XrmoptionNoArg, (caddr_t) "on"},
-       {"+centre", ".crystal.centre", XrmoptionNoArg, (caddr_t) "off"},
-       {"-maxsize", ".crystal.maxsize", XrmoptionNoArg, (caddr_t) "on"},
-       {"+maxsize", ".crystal.maxsize", XrmoptionNoArg, (caddr_t) "off"},
-       {"-cell", ".crystal.cell", XrmoptionNoArg, (caddr_t) "on"},
-       {"+cell", ".crystal.cell", XrmoptionNoArg, (caddr_t) "off"},
-       {"-grid", ".crystal.grid", XrmoptionNoArg, (caddr_t) "on"},
-       {"+grid", ".crystal.grid", XrmoptionNoArg, (caddr_t) "off"},
-       {"-shift", ".crystal.shift", XrmoptionNoArg, (caddr_t) "on"},
-       {"+shift", ".crystal.shift", XrmoptionNoArg, (caddr_t) "off"}
+       {"-nx", "crystal.nx", XrmoptionSepArg, 0},
+       {"-ny", "crystal.ny", XrmoptionSepArg, 0},
+       {"-centre", ".crystal.centre", XrmoptionNoArg, "on"},
+       {"+centre", ".crystal.centre", XrmoptionNoArg, "off"},
+       {"-maxsize", ".crystal.maxsize", XrmoptionNoArg, "on"},
+       {"+maxsize", ".crystal.maxsize", XrmoptionNoArg, "off"},
+       {"-cell", ".crystal.cell", XrmoptionNoArg, "on"},
+       {"+cell", ".crystal.cell", XrmoptionNoArg, "off"},
+       {"-grid", ".crystal.grid", XrmoptionNoArg, "on"},
+       {"+grid", ".crystal.grid", XrmoptionNoArg, "off"},
+       {"-shift", ".crystal.shift", XrmoptionNoArg, "on"},
+       {"+shift", ".crystal.shift", XrmoptionNoArg, "off"}
 };
 
 static argtype vars[] =
 };
 
 static argtype vars[] =
index 46137d665babf61464dce1ca62d92949e99a3193..fcb965980417b319749145d8edfa3b17d5ccd97b 100644 (file)
@@ -77,7 +77,7 @@ static int  neighbors;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {(char *) "-neighbors", (char *) ".demon.neighbors", XrmoptionSepArg, (caddr_t) NULL}
+       {"-neighbors", ".demon.neighbors", XrmoptionSepArg, 0}
 };
 
 static argtype vars[] =
 };
 
 static argtype vars[] =
@@ -86,7 +86,7 @@ static argtype vars[] =
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
-       {(char *) "-neighbors num", (char *) "squares 4 or 8, hexagons 6, triangles 3, 9 or 12"}
+       {"-neighbors num", "squares 4 or 8, hexagons 6, triangles 3, 9 or 12"}
 };
 
 ModeSpecOpt demon_opts =
 };
 
 ModeSpecOpt demon_opts =
index 50893db90b9fa9c312a6fe2824763a6c79421024..6059142542671932efd9c92143a42501bb44680e 100644 (file)
@@ -61,10 +61,10 @@ static Bool liss;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {(char *) "-grow", (char *) ".drift.grow", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+grow", (char *) ".drift.grow", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-liss", (char *) ".drift.trail", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+liss", (char *) ".drift.trail", XrmoptionNoArg, (caddr_t) "off"}
+       {"-grow", ".drift.grow", XrmoptionNoArg, "on"},
+       {"+grow", ".drift.grow", XrmoptionNoArg, "off"},
+       {"-liss", ".drift.trail", XrmoptionNoArg, "on"},
+       {"+liss", ".drift.trail", XrmoptionNoArg, "off"}
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
@@ -73,8 +73,8 @@ static argtype vars[] =
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
-       {(char *) "-/+grow", (char *) "turn on/off growing fractals, else they are animated"},
-       {(char *) "-/+liss", (char *) "turn on/off using lissojous figures to get points"}
+       {"-/+grow", "turn on/off growing fractals, else they are animated"},
+       {"-/+liss", "turn on/off using lissojous figures to get points"}
 };
 
 ModeSpecOpt drift_opts =
 };
 
 ModeSpecOpt drift_opts =
index b055c45e4343b6877f03ca66da8c2921d95747f1..a4ec68ca410ee29a496fbaeab9a678aa2b3b6ba0 100644 (file)
@@ -68,22 +68,20 @@ static float power = 1;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-  {(char* ) "-eulertail", (char *) ".euler2d.eulertail",
-   XrmoptionSepArg, (caddr_t) NULL},
-  {(char* ) "-eulerpower", (char *) ".euler2d.eulerpower",
-   XrmoptionSepArg, (caddr_t) NULL},
+  {"-eulertail", ".euler2d.eulertail",   XrmoptionSepArg, NULL},
+  {"-eulerpower", ".euler2d.eulerpower", XrmoptionSepArg, NULL},
 };
 static argtype vars[] =
 {
   {&tail_len, "eulertail",
 };
 static argtype vars[] =
 {
   {&tail_len, "eulertail",
-   (char *) "EulerTail", (char *) DEF_EULERTAIL, t_Int},
+   "EulerTail", (char *) DEF_EULERTAIL, t_Int},
   {&power, "eulerpower",
   {&power, "eulerpower",
-   (char *) "EulerPower", (char *) "1", t_Float},
+   "EulerPower", "1", t_Float},
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
-  {(char *) "-eulertail len", (char *) "Length of Euler2d tails"},
-  {(char *) "-eulerpower power", (char *) "power of interaction law for points for Euler2d"},
+  {"-eulertail len", "Length of Euler2d tails"},
+  {"-eulerpower power", "power of interaction law for points for Euler2d"},
 };
 
 ModeSpecOpt euler2d_opts =
 };
 
 ModeSpecOpt euler2d_opts =
index 6215286f7bbfe2fabacc668e81c5fd32b5609824..4b9e8c2ae3fde4b49371917d68463bc5409340fa 100644 (file)
@@ -78,12 +78,15 @@ stored in the RESOURCE_MANAGER property.
 .BR X (1),
 .BR xscreensaver (1)
 .SH COPYRIGHT
 .BR X (1),
 .BR xscreensaver (1)
 .SH COPYRIGHT
-Copyright \(co 2002 by Jeff Butterworth.  Permission to use, copy, modify, 
-distribute, and sell this software and its documentation for any purpose is 
-hereby granted without fee, provided that the above copyright notice appear 
-in all copies and that both that copyright notice and this permission notice
-appear in supporting documentation.  No representations are made about the 
-suitability of this software for any purpose.  It is provided "as is" without
-express or implied warranty.
+
+Copyright \(co 2002 by Tim Auckland and Jeff Butterworth.  Permission
+to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.  No representations are made about the suitability of
+this software for any purpose.  It is provided "as is" without express
+or implied warranty.
+
 .SH AUTHOR
 .SH AUTHOR
-Jeff Butterworth.
+Tim Auckland based on code by Jeff Butterworth.
index 9bb3c44de356b7780f5c49c62445ded7e8302a93..59293939dcf7a07ff5a46094de767d04a7a28965 100644 (file)
@@ -1,6 +1,18 @@
 /* fuzzyflakes, Copyright (c) 2004
  *  Barry Dmytro <badcherry@mailc.net>
  *
 /* fuzzyflakes, Copyright (c) 2004
  *  Barry Dmytro <badcherry@mailc.net>
  *
+ * ! 2004.06.10 21:05
+ * ! - Added support for resizing
+ * ! - Added a color scheme generation algorithm
+ * !    Thanks to <ZoeB> from #vegans@irc.blitzed.org
+ * ! - Added random color generation
+ * ! - Fixed errors in the xml config file
+ * ! - Cleaned up a few inconsistencies in the code
+ * ! - Changed the default color to #EFBEA5
+ *
+ * ! 2004.05.?? ??:??
+ * ! -original creation
+ *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  * the above copyright notice appear in all copies and that both that
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  * the above copyright notice appear in all copies and that both that
 
 #include <math.h>
 #include "screenhack.h"
 
 #include <math.h>
 #include "screenhack.h"
-#define PI 3.14159265359
+
+/* I have need of 1/3 and 2/3 constants later on */
+#define N1_3 0.3333333333
+#define N2_3 0.6666666666
 
 typedef struct _flake_var
 {
 
 typedef struct _flake_var
 {
-  double Ticks;
-  double XPos, YPos;
-  double TrueX;
-  double XOffset;
-  double Angle;
+   double              Ticks;
+   double              XPos, YPos;
+   double              TrueX;
+   double              XOffset;
+   double              Angle;
 } FlakeVariable;
 
 } FlakeVariable;
 
+/* Struct containing the atrributes to our flakes */
 static struct _flake
 static struct _flake
-{ /* Struct containing the atrributes to our flakes */
-  int Arms;
-  int Thickness;
-  int BorderThickness;
-  int Radius;
-  unsigned long BordColor;
-  unsigned long ForeColor;
-  unsigned long BackColor;
-  int Layers;
-  int Density;
-  int Delay;
-  int FallingSpeed;
-  FlakeVariable *** Flakes; /* a dynamic array containing positions of all the flakes */
-  XGCValues GCValues;
-  unsigned long GCFlags;
-  GC GCVar;
-  Display * DisplayVar;
-  Window WindowVar;
-  XWindowAttributes XGWA;
-  struct _dbevar
-  {
-    Bool dbuf;
-    Pixmap b,ba,bb;
-  } DB;
+{
+   int                 Arms;
+   int                 Thickness;
+   int                 BorderThickness;
+   int                 Radius;
+   unsigned long       BordColor;
+   unsigned long       ForeColor;
+   unsigned long       BackColor;
+   Bool                RandomColors;
+   int                 Layers;
+   int                 Density;
+   int                 Delay;
+   int                 FallingSpeed;
+   struct _colors
+   {
+      char               *Fore;
+      char               *Bord;
+      char               *Back;
+   } Colors;
+/* a dynamic array containing positions of all the flakes */
+   FlakeVariable    ***Flakes;
+   XGCValues           GCValues;
+   unsigned long       GCFlags;
+   GC                  GCVar;
+   Display            *DisplayVar;
+   Window              WindowVar;
+   XWindowAttributes   XGWA;
+   struct _dbevar
+   {
+      Bool                dbuf;
+      Pixmap              b, ba, bb;
+   } DB;
 } Flake;
 
 } Flake;
 
+/*
+ *This gets the pixel resource for a color: #ffffff
+ */
+unsigned int
+FuzzyFlakesColorResource(char *Color)
+{
+   XColor              color;
+
+   if (!XParseColor(Flake.DisplayVar, Flake.XGWA.colormap, Color, &color))
+     {
+       fprintf(stderr, "%s: can't parse color %s", progname, Color);
+       return 0;
+     }
+   if (!XAllocColor(Flake.DisplayVar, Flake.XGWA.colormap, &color))
+     {
+       fprintf(stderr, "%s: can't allocate color %s", progname, Color);
+       return 0;
+     }
+   return color.pixel;
+}
+
+/*
+ * This is a great color matching algorithm that I got from
+ * a friend of mine on #vegans@irc.blitzed.org
+ * She wrote it in PHP and I ported it over to C
+ * her site is http://beautifulfreak.net/
+ */
+static int
+FuzzyFlakesColorHelper(void)
+{
+   unsigned int        iR, iG, iB;
+   unsigned int        iR0, iG0, iB0;
+   unsigned int        iR1, iG1, iB1;
+   float               fR, fG, fB;
+   float               Max = 0, Min = 0, Lig, Sat;
+   float               Hue, Hue0, Hue1;
+   float               f1, f2;
+   float               fR0, fG0, fB0;
+   float               fR1, fG1, fB1;
+   float               nR0, nG0, nB0;
+   float               nR1, nG1, nB1;
+   XColor              color;
+
+   /* First convert from hex to dec */
+   /* while splitting up the RGB values */
+   if (!XParseColor(Flake.DisplayVar, Flake.XGWA.colormap,
+                    Flake.Colors.Back, &color))
+     {
+       fprintf(stderr, "%s: can't parse color %s", progname,
+                Flake.Colors.Back);
+       return 1;
+     }
+   iR = color.red   >> 8;
+   iG = color.green >> 8;
+   iB = color.blue  >> 8;
+
+   /* Convert from int to float */
+   fR = iR;
+   fG = iG;
+   fB = iB;
+
+   /* convert from 0-255 to 0-1 */
+   fR = fR / 255;
+   fG = fG / 255;
+   fB = fB / 255;
+
+   /* work out the lightness */
+   if (fR >= fG && fR >= fB)
+      Max = fR;
+   if (fG >= fR && fG >= fB)
+      Max = fG;
+   if (fB >= fR && fB >= fG)
+      Max = fB;
+
+   if (fR <= fG && fR <= fB)
+      Min = fR;
+   if (fG <= fR && fG <= fB)
+      Min = fG;
+   if (fB <= fR && fB <= fG)
+      Min = fB;
+
+   Lig = (Max + Min) / 2;
+
+   /* work out the saturation */
+   if (Max == Min)
+      Sat = 0;
+   else
+     {
+       if (Lig < 0.5)
+          Sat = (Max - Min) / (Max + Min);
+       else
+          Sat = (Max - Min) / (2 - Max - Min);
+     }
+
+   /*
+    * if our satration is too low we won't be
+    * able to see any objects
+    */
+   if (Sat < 0.03)
+     {
+       return 1;
+     }
+
+   /* work out the hue */
+   if (fR == Max)
+      Hue = (fG - fB) / (Max - Min);
+   else if (fG == Max)
+      Hue = 2 + (fB - fR) / (Max - Min);
+   else
+      Hue = 4 + (fR - fG) / (Max - Min);
+
+   Hue = Hue / 6;
+
+   /* fine two equidistant hues */
+   Hue0 = Hue + N1_3;
+   if (Hue0 > 1)
+      Hue0 = Hue0 - 1;
+   Hue1 = Hue0 + N1_3;
+   if (Hue1 > 1)
+      Hue1 = Hue1 - 1;
+
+   /* convert the colors into hex codes */
+   if (Lig < 0.5)
+      f2 = Lig * (1 + Sat);
+   else
+      f2 = (Lig + Sat) - (Lig * Sat);
+
+   f1 = (2 * Lig) - f2;
+
+   fR0 = (Hue0 + 1) / 3;
+   fR1 = (Hue1 + 1) / 3;
+   fG0 = Hue0;
+   fG1 = Hue1;
+   fB0 = (Hue0 - 1) / 3;
+   fB1 = (Hue1 - 1) / 3;
+
+   if (fR0 < 0)
+      fR0 = fR0 + 1;
+   if (fR0 > 1)
+      fR0 = fR0 - 1;
+   if (fG0 < 0)
+      fG0 = fG0 + 1;
+   if (fG0 > 1)
+      fG0 = fG0 - 1;
+   if (fB0 < 0)
+      fB0 = fB0 + 1;
+   if (fB0 > 1)
+      fB0 = fB0 - 1;
+
+   if (fR1 < 0)
+      fR1 = fR1 + 1;
+   if (fR1 > 1)
+      fR1 = fR1 - 1;
+   if (fG1 < 0)
+      fG1 = fG1 + 1;
+   if (fG1 > 1)
+      fG1 = fG1 - 1;
+   if (fB1 < 0)
+      fB1 = fB1 + 1;
+   if (fB1 > 1)
+      fB1 = fB1 - 1;
+
+   if (6 * fR0 < 1)
+      nR0 = f1 + (f2 - f1) * 6 * fR0;
+   else if (2 * fR0 < 1)
+      nR0 = f2;
+   else if (3 * fR0 < 2)
+      nR0 = f1 + (f2 - f1) * (N2_3 - fR0) * 6;
+   else
+      nR0 = f1;
+
+   if (6 * fG0 < 1)
+      nG0 = f1 + (f2 - f1) * 6 * fG0;
+   else if (2 * fG0 < 1)
+      nG0 = f2;
+   else if (3 * fG0 < 2)
+      nG0 = f1 + (f2 - f1) * (N2_3 - fG0) * 6;
+   else
+      nG0 = f1;
+
+   if (6 * fB0 < 1)
+      nB0 = f1 + (f2 - f1) * 6 * fB0;
+   else if (2 * fB0 < 1)
+      nB0 = f2;
+   else if (3 * fB0 < 2)
+      nB0 = f1 + (f2 - f1) * (N2_3 - fB0) * 6;
+   else
+      nB0 = f1;
+
+   if (6 * fR1 < 1)
+      nR1 = f1 + (f2 - f1) * 6 * fR1;
+   else if (2 * fR1 < 1)
+      nR1 = f2;
+   else if (3 * fR1 < 2)
+      nR1 = f1 + (f2 - f1) * (N2_3 - fR1) * 6;
+   else
+      nR1 = f1;
+
+   if (6 * fG1 < 1)
+      nG1 = f1 + (f2 - f1) * 6 * fG1;
+   else if (2 * fG1 < 1)
+      nG1 = f2;
+   else if (3 * fG1 < 2)
+      nG1 = f1 + (f2 - f1) * (N2_3 - fG1) * 6;
+   else
+      nG1 = f1;
+
+   if (6 * fB1 < 1)
+      nB1 = f1 + (f2 - f1) * 6 * fB1;
+   else if (2 * fB1 < 1)
+      nB1 = f2;
+   else if (3 * fB1 < 2)
+      nB1 = f1 + (f2 - f1) * (N2_3 - fB1) * 6;
+   else
+      nB1 = f1;
+
+   /* at last convert them to a hex string */
+   iR0 = nR0 * 255;
+   iG0 = nG0 * 255;
+   iB0 = nB0 * 255;
+
+   iR1 = nR1 * 255;
+   iG1 = nG1 * 255;
+   iB1 = nB1 * 255;
+
+   Flake.Colors.Fore = malloc(sizeof(unsigned char) * 8);
+   Flake.Colors.Bord = malloc(sizeof(unsigned char) * 8);
+
+   sprintf(Flake.Colors.Fore, "#%02X%02X%02X", iR0, iG0, iB0);
+   sprintf(Flake.Colors.Bord, "#%02X%02X%02X", iR1, iG1, iB1);
+
+   return 0;
+}
+
 static void
 static void
-InitFuzzyFlakes (Display *dpy, Window window)
+FuzzyFlakesInit(Display * dpy, Window window)
 {
 {
-  int i,j;
-  XWindowAttributes xgwa;
-  Colormap cmap;
-  
-  XGetWindowAttributes (dpy, window, &xgwa);
-  cmap = xgwa.colormap;
-  Flake.XGWA = xgwa;
-  Flake.DB.b = Flake.DB.ba = Flake.DB.bb = 0;
-  Flake.DB.dbuf                = get_boolean_resource ("doubleBuffer", "Boolean");
-  
-
-  if (Flake.DB.dbuf)
-    {
-      Flake.DB.ba = XCreatePixmap (dpy, window, xgwa.width, xgwa.height,xgwa.depth);
-      Flake.DB.bb = XCreatePixmap (dpy, window, xgwa.width, xgwa.height,xgwa.depth);
-      Flake.DB.b = Flake.DB.ba;
-    }
-  else
-    {
-      Flake.DB.b = window;
-    }
-
-
-  Flake.DisplayVar     = dpy;
-  Flake.WindowVar      = window;
-  Flake.Arms           = get_integer_resource ("arms", "Integer");
-  Flake.Thickness      = get_integer_resource ("thickness", "Integer");
-  Flake.BorderThickness        = get_integer_resource ("bthickness", "Integer");
-  Flake.Radius         = get_integer_resource ("radius", "Integer");
-  Flake.BordColor      = get_pixel_resource   ("border","Border",dpy,cmap);
-  Flake.ForeColor      = get_pixel_resource   ("foreground","Foreground",dpy,cmap);
-  Flake.BackColor      = get_pixel_resource   ("background","Background",dpy,cmap);
-  Flake.Density                = get_integer_resource ("density", "Integer");
-  Flake.Layers         = get_integer_resource ("layers", "Integer");
-  Flake.FallingSpeed   = get_integer_resource ("fallingspeed", "Integer");
-  Flake.Delay          = get_integer_resource ("delay", "Integer");
-  
-  if (Flake.Delay < 0) Flake.Delay = 0;
-
-  Flake.GCValues.foreground = get_pixel_resource("foreground","Foreground", dpy, cmap);
-  Flake.GCValues.background = get_pixel_resource("background","Background", dpy, cmap);
-  Flake.GCValues.line_width = Flake.Thickness;
-  Flake.GCValues.line_style = LineSolid;
-  Flake.GCValues.cap_style  = CapProjecting;
-  Flake.GCValues.join_style = JoinMiter;
-  Flake.GCFlags |= (GCLineWidth | GCLineStyle | GCCapStyle | GCJoinStyle);
-
-  Flake.GCVar = XCreateGC (Flake.DisplayVar, Flake.WindowVar, Flake.GCFlags, &Flake.GCValues);
-
-  Flake.Density = Flake.XGWA.width/200*Flake.Density;
-  Flake.Flakes = malloc(sizeof(FlakeVariable**)*Flake.Layers);
-  for(i=1;i<=Flake.Layers;i++)
-  {
-     Flake.Flakes[i-1] = malloc(sizeof(FlakeVariable*)*Flake.Density);
-     for(j=0;j<Flake.Density;j++)
+   int                 i, j;
+   XWindowAttributes   xgwa;
+   Colormap            cmap;
+
+   XGetWindowAttributes(dpy, window, &xgwa);
+   cmap = xgwa.colormap;
+   Flake.XGWA = xgwa;
+   Flake.DB.b = Flake.DB.ba = Flake.DB.bb = 0;
+   Flake.DB.dbuf = get_boolean_resource("doubleBuffer", "Boolean");
+
+   if (Flake.DB.dbuf)
+     {
+       Flake.DB.ba =
+          XCreatePixmap(dpy, window, xgwa.width, xgwa.height, xgwa.depth);
+       Flake.DB.bb =
+          XCreatePixmap(dpy, window, xgwa.width, xgwa.height, xgwa.depth);
+       Flake.DB.b = Flake.DB.ba;
+     }
+   else
      {
      {
-       Flake.Flakes[i-1][j] = malloc(sizeof(FlakeVariable));
-       Flake.Flakes[i-1][j]->XPos = random()%Flake.XGWA.width;
-       Flake.Flakes[i-1][j]->YPos = random()%Flake.XGWA.height;
-       Flake.Flakes[i-1][j]->Angle = random()%360*(PI/180);
-       Flake.Flakes[i-1][j]->Ticks = random()%360;
-       Flake.Flakes[i-1][j]->XOffset = random()%Flake.XGWA.height;
+       Flake.DB.b = window;
+     }
+
+   Flake.DisplayVar = dpy;
+   Flake.WindowVar = window;
+   Flake.Arms = get_integer_resource("arms", "Integer");
+   Flake.Thickness = get_integer_resource("thickness", "Integer");
+   Flake.BorderThickness = get_integer_resource("bthickness", "Integer");
+   Flake.Radius = get_integer_resource("radius", "Integer");
+
+   Flake.Density = get_integer_resource("density", "Integer");
+   Flake.Layers = get_integer_resource("layers", "Integer");
+   Flake.FallingSpeed = get_integer_resource("fallingspeed", "Integer");
+   Flake.Delay = get_integer_resource("delay", "Integer");
+   if (Flake.RandomColors == True)
+      Flake.RandomColors = get_boolean_resource("randomColors", "Boolean");
+
+   if (Flake.Delay < 0)
+      Flake.Delay = 0;
+
+   if (!Flake.Colors.Back)
+     {
+       Flake.Colors.Back = get_string_resource("color", "Color");
+       if (!FuzzyFlakesColorResource(Flake.Colors.Back))
+         {
+            fprintf(stderr, " reverting to random\n");
+            Flake.RandomColors = True;
+         }
+
+       if (Flake.RandomColors)
+         {
+            if (Flake.Colors.Back)
+               free(Flake.Colors.Back);
+            Flake.Colors.Back = malloc(sizeof(unsigned char) * 8);
+            sprintf(Flake.Colors.Back, "#%X%X%X%X%X%X", random() % 16,
+                    random() % 16, random() % 16, random() % 16, random() % 16,
+                    random() % 16);
+         }
+
+       /*
+        * Here we establish our colormap based on what is in
+        * Flake.Colors.Back
+        */
+       if (FuzzyFlakesColorHelper())
+         {
+            fprintf(stderr, " reverting to random\n");
+            if (Flake.Colors.Back)
+               free(Flake.Colors.Back);
+            Flake.Colors.Back = malloc(sizeof(unsigned char) * 8);
+            sprintf(Flake.Colors.Back, "#%X%X%X%X%X%X", random() % 16,
+                    random() % 16, random() % 16, random() % 16, random() % 16,
+                    random() % 16);
+            FuzzyFlakesColorHelper();
+         }
+
+       Flake.ForeColor = FuzzyFlakesColorResource(Flake.Colors.Fore);
+       Flake.BackColor = FuzzyFlakesColorResource(Flake.Colors.Back);
+       Flake.BordColor = FuzzyFlakesColorResource(Flake.Colors.Bord);
+
+       Flake.GCValues.foreground = Flake.ForeColor;
+       Flake.GCValues.background = Flake.BackColor;
+       Flake.RandomColors = False;
+     }
+
+   Flake.GCValues.line_width = Flake.Thickness;
+   Flake.GCValues.line_style = LineSolid;
+   Flake.GCValues.cap_style = CapProjecting;
+   Flake.GCValues.join_style = JoinMiter;
+   Flake.GCFlags |= (GCLineWidth | GCLineStyle | GCCapStyle | GCJoinStyle);
+
+   Flake.GCVar =
+      XCreateGC(Flake.DisplayVar, Flake.WindowVar, Flake.GCFlags,
+               &Flake.GCValues);
+
+   Flake.Density = Flake.XGWA.width / 200 * Flake.Density;
+   Flake.Flakes = malloc(sizeof(FlakeVariable **) * Flake.Layers);
+   for (i = 1; i <= Flake.Layers; i++)
+     {
+       Flake.Flakes[i - 1] = malloc(sizeof(FlakeVariable *) * Flake.Density);
+       for (j = 0; j < Flake.Density; j++)
+         {
+            Flake.Flakes[i - 1][j] = malloc(sizeof(FlakeVariable));
+            Flake.Flakes[i - 1][j]->XPos = random() % Flake.XGWA.width;
+            Flake.Flakes[i - 1][j]->YPos = random() % Flake.XGWA.height;
+            Flake.Flakes[i - 1][j]->Angle = random() % 360 * (M_PI / 180);
+            Flake.Flakes[i - 1][j]->Ticks = random() % 360;
+            Flake.Flakes[i - 1][j]->XOffset = random() % Flake.XGWA.height;
+         }
+     }
+}
+
+static void
+FuzzyFlakesFreeFlake(void)
+{
+   int                 i, j;
+
+   for (i = 1; i <= Flake.Layers; i++)
+     {
+       for (j = 0; j < Flake.Density; j++)
+         {
+            free(Flake.Flakes[i - 1][j]);
+         }
+       free(Flake.Flakes[i - 1]);
+     }
+
+   XFreePixmap(Flake.DisplayVar, Flake.DB.bb);
+   XFreePixmap(Flake.DisplayVar, Flake.DB.ba);
+}
+
+static void
+FuzzyFlakesResizeTest(void)
+{
+   XWindowAttributes   xgwa;
+
+   XGetWindowAttributes(Flake.DisplayVar, Flake.WindowVar, &xgwa);
+   if (Flake.XGWA.width != xgwa.width || Flake.XGWA.height != xgwa.height)
+     {
+       FuzzyFlakesFreeFlake();
+       FuzzyFlakesInit(Flake.DisplayVar, Flake.WindowVar);
      }
      }
-  }
 }
 
 static void
 FuzzyFlakesMove(void)
 {
 }
 
 static void
 FuzzyFlakesMove(void)
 {
-  int i,j;
-  for(i=1;i<=Flake.Layers;i++)
-  {
-     for(j=0;j<Flake.Density;j++)
+   int                 i, j;
+
+   for (i = 1; i <= Flake.Layers; i++)
      {
      {
-       FlakeVariable * FlakeVar;
-       FlakeVar = Flake.Flakes[i-1][j];
-       FlakeVar->Ticks++;
-       FlakeVar->YPos = FlakeVar->YPos + ((double)Flake.FallingSpeed)/10/i;
-       FlakeVar->TrueX = (sin(FlakeVar->XOffset + FlakeVar->Ticks*(PI/180)*((double)Flake.FallingSpeed/10)))*10 + FlakeVar->XPos;
-       FlakeVar->Angle = FlakeVar->Angle + 0.005*((double)Flake.FallingSpeed/10);
-       if(FlakeVar->YPos - Flake.Radius > Flake.XGWA.height)
-       {
-         FlakeVar->Ticks = 0;
-        FlakeVar->YPos = 0 - Flake.Radius;
-       }
+       for (j = 0; j < Flake.Density; j++)
+         {
+            FlakeVariable      *FlakeVar;
+
+            FlakeVar = Flake.Flakes[i - 1][j];
+            FlakeVar->Ticks++;
+            FlakeVar->YPos =
+               FlakeVar->YPos + ((double)Flake.FallingSpeed) / 10 / i;
+            FlakeVar->TrueX =
+               (sin
+                (FlakeVar->XOffset +
+                 FlakeVar->Ticks * (M_PI / 180) * ((double)Flake.FallingSpeed /
+                                                   10))) * 10 + FlakeVar->XPos;
+            FlakeVar->Angle =
+               FlakeVar->Angle + 0.005 * ((double)Flake.FallingSpeed / 10);
+            if (FlakeVar->YPos - Flake.Radius > Flake.XGWA.height)
+              {
+                 FlakeVar->Ticks = 0;
+                 FlakeVar->YPos = 0 - Flake.Radius;
+              }
+         }
      }
      }
-  }
 }
 
 static void
 FuzzyFlakesDrawFlake(int XPos, int YPos, double AngleOffset, int Layer)
 {
 }
 
 static void
 FuzzyFlakesDrawFlake(int XPos, int YPos, double AngleOffset, int Layer)
 {
-  int i;
-  double x,y,Angle,Radius;
-  
-  /* calculate the shrink factor debending on which layer we are drawing atm */
-  Radius = (double)(Flake.Radius - Layer * 5);
-  
-  /* draw the flake one arm at a time */
-  for(i=1;i<=Flake.Arms;i++)
-  {
-    int Diameter;
-    Diameter = (Flake.BorderThickness*2 + Flake.Thickness)/Layer;
-    /* compute the angle of this arm of the flake */
-    Angle = ((2*PI)/Flake.Arms)*i + AngleOffset;
-    /* calculate the x and y dispositions for this arm */
-    y=(int)(sin(Angle)*Radius);
-    x=(int)(cos(Angle)*Radius);
-    /* draw the base for the arm */
-    Flake.GCValues.line_width = Diameter;
-    XFreeGC(Flake.DisplayVar,Flake.GCVar);
-    Flake.GCVar = XCreateGC (Flake.DisplayVar, Flake.DB.b, Flake.GCFlags, &Flake.GCValues);
-    XSetForeground(Flake.DisplayVar,Flake.GCVar,Flake.BordColor);
-    XDrawLine(Flake.DisplayVar, Flake.DB.b, Flake.GCVar, XPos,YPos,XPos+x,YPos+y);
-    
-  }
-  /* draw the flake one arm at a time */
-  for(i=1;i<=Flake.Arms;i++)
-  {
-    /* compute the angle of this arm of the flake */
-    Angle = ((2*PI)/Flake.Arms)*i + AngleOffset;
-    /* calculate the x and y dispositions for this arm */
-    y=(int)(sin(Angle)*Radius);
-    x=(int)(cos(Angle)*Radius);
-    /* draw the inside of the arm */
-    Flake.GCValues.line_width = Flake.Thickness/Layer;
-    XFreeGC(Flake.DisplayVar,Flake.GCVar);
-    Flake.GCVar = XCreateGC (Flake.DisplayVar, Flake.DB.b, Flake.GCFlags, &Flake.GCValues);
-    XSetForeground(Flake.DisplayVar,Flake.GCVar,Flake.ForeColor);
-    XDrawLine(Flake.DisplayVar, Flake.DB.b, Flake.GCVar, XPos,YPos,XPos+x,YPos+y);
-  }
+   int                 i;
+   double              x, y, Angle, Radius;
+
+   /* calculate the shrink factor debending on which layer we are drawing atm */
+   Radius = (double)(Flake.Radius - Layer * 5);
+   /* draw the flake one arm at a time */
+   for (i = 1; i <= Flake.Arms; i++)
+     {
+       int                 Diameter;
+
+       Diameter = (Flake.BorderThickness * 2 + Flake.Thickness) / Layer;
+       /* compute the angle of this arm of the flake */
+       Angle = ((2 * M_PI) / Flake.Arms) * i + AngleOffset;
+       /* calculate the x and y dispositions for this arm */
+       y = (int)(sin(Angle) * Radius);
+       x = (int)(cos(Angle) * Radius);
+       /* draw the base for the arm */
+       Flake.GCValues.line_width = Diameter;
+       XFreeGC(Flake.DisplayVar, Flake.GCVar);
+       Flake.GCVar =
+          XCreateGC(Flake.DisplayVar, Flake.DB.b, Flake.GCFlags,
+                    &Flake.GCValues);
+       XSetForeground(Flake.DisplayVar, Flake.GCVar, Flake.BordColor);
+       XDrawLine(Flake.DisplayVar, Flake.DB.b, Flake.GCVar, XPos, YPos,
+                 XPos + x, YPos + y);
+     }
+   /* draw the flake one arm at a time */
+   for (i = 1; i <= Flake.Arms; i++)
+     {
+       /* compute the angle of this arm of the flake */
+       Angle = ((2 * M_PI) / Flake.Arms) * i + AngleOffset;
+       /* calculate the x and y dispositions for this arm */
+       y = (int)(sin(Angle) * Radius);
+       x = (int)(cos(Angle) * Radius);
+       /* draw the inside of the arm */
+       Flake.GCValues.line_width = Flake.Thickness / Layer;
+       XFreeGC(Flake.DisplayVar, Flake.GCVar);
+       Flake.GCVar =
+          XCreateGC(Flake.DisplayVar, Flake.DB.b, Flake.GCFlags,
+                    &Flake.GCValues);
+       XSetForeground(Flake.DisplayVar, Flake.GCVar, Flake.ForeColor);
+       XDrawLine(Flake.DisplayVar, Flake.DB.b, Flake.GCVar, XPos, YPos,
+                 XPos + x, YPos + y);
+     }
 }
 
 static void
 }
 
 static void
-FuzzyFlakes (Display *dpy, Window window)
+FuzzyFlakes(Display * dpy, Window window)
 {
 {
-  int i,j;
-  
-  FuzzyFlakesMove();
-
-  XSetForeground(Flake.DisplayVar,Flake.GCVar,Flake.BackColor);
-  XFillRectangle(Flake.DisplayVar,Flake.DB.b,Flake.GCVar,0,0,Flake.XGWA.width,Flake.XGWA.height);
+   int                 i, j;
 
 
-  for(i=Flake.Layers;i>=1;i--)
-  {
-     for(j=0;j<Flake.Density;j++)
+   FuzzyFlakesMove();
+   XSetForeground(Flake.DisplayVar, Flake.GCVar, Flake.BackColor);
+   XFillRectangle(Flake.DisplayVar, Flake.DB.b, Flake.GCVar, 0, 0,
+                 Flake.XGWA.width, Flake.XGWA.height);
+   for (i = Flake.Layers; i >= 1; i--)
      {
      {
-       FuzzyFlakesDrawFlake(
-                       Flake.Flakes[i-1][j]->TrueX,
-                       Flake.Flakes[i-1][j]->YPos,
-               Flake.Flakes[i-1][j]->Angle,i);
+       for (j = 0; j < Flake.Density; j++)
+         {
+            FuzzyFlakesDrawFlake(Flake.Flakes[i - 1][j]->TrueX,
+                                 Flake.Flakes[i - 1][j]->YPos,
+                                 Flake.Flakes[i - 1][j]->Angle, i);
+         }
      }
      }
-  }
 
 }
 
 
 }
 
-\f
-char *progclass = "FuzzyFlakes";
-
-char *defaults [] = {
-  ".background:        pale green",
-  ".foreground:        pink",
-  ".border:    snow4",
-  "*arms:      5",
-  "*thickness: 10",
-  "*bthickness:        3",
-  "*radius:    20",
-  "*layers:    3",
-  "*density:   5",
-  "*fallingspeed:      10",
-  "*delay:     10000",
-  "*doubleBuffer:      True",
-  0
+char               *progclass = "FuzzyFlakes";
+char               *defaults[] = {
+   "*color:    #efbea5",
+   "*arms:     5",
+   "*thickness:        10",
+   "*bthickness:       3",
+   "*radius:   20",
+   "*layers:   3",
+   "*density:  5",
+   "*fallingspeed:     10",
+   "*delay:    10000",
+   "*doubleBuffer:     True",
+   "*randomColors:      False",
+   0
 };
 
 };
 
-XrmOptionDescRec options [] = {
-  { "-arms",           ".arms",        XrmoptionSepArg, 0 },
-  { "-thickness",      ".thickness",   XrmoptionSepArg, 0 },
-  { "-bthickness",     ".bthickness",  XrmoptionSepArg, 0 },
-  { "-radius",         ".radius",      XrmoptionSepArg, 0 },
-  { "-layers",         ".layers",      XrmoptionSepArg, 0 },
-  { "-density",                ".density",     XrmoptionSepArg, 0 },
-  { "-speed",          ".fallingspeed",XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-  { "-db",             ".doubleBuffer", XrmoptionNoArg,  "True" },
-  { "-no-db",          ".doubleBuffer", XrmoptionNoArg,  "False" },
-  { 0, 0, 0, 0 }
+XrmOptionDescRec    options[] = {
+   {
+    "-color", ".color", XrmoptionSepArg, 0},
+   {
+    "-arms", ".arms", XrmoptionSepArg, 0},
+   {
+    "-thickness", ".thickness", XrmoptionSepArg, 0},
+   {
+    "-bthickness", ".bthickness", XrmoptionSepArg, 0},
+   {
+    "-radius", ".radius", XrmoptionSepArg, 0},
+   {
+    "-layers", ".layers", XrmoptionSepArg, 0},
+   {
+    "-density", ".density", XrmoptionSepArg, 0},
+   {
+    "-speed", ".fallingspeed", XrmoptionSepArg, 0},
+   {
+    "-delay", ".delay", XrmoptionSepArg, 0},
+   {
+    "-db", ".doubleBuffer", XrmoptionNoArg, "True"},
+   {
+    "-no-db", ".doubleBuffer", XrmoptionNoArg, "False"},
+   {
+    "-random-colors", ".randomColors", XrmoptionNoArg, "True"},
+   {
+    0, 0, 0, 0}
 };
 
 void
 };
 
 void
-screenhack (Display *dpy, Window window)
+screenhack(Display * dpy, Window window)
 {
 {
-  InitFuzzyFlakes (dpy, window);
-  while (1)
-    {
-      FuzzyFlakes (dpy, Flake.DB.b);
-      if (Flake.DB.dbuf)
-        {
-          XCopyArea (Flake.DisplayVar, Flake.DB.b, Flake.WindowVar, Flake.GCVar, 0, 0,
-                     Flake.XGWA.width, Flake.XGWA.height, 0, 0);
-          Flake.DB.b = (Flake.DB.b == Flake.DB.ba ? Flake.DB.bb : Flake.DB.ba);
-        }
-      screenhack_handle_events (dpy);
-      XSync (dpy, False);
-      if (Flake.Delay) usleep (Flake.Delay);
-    }
+   register int        tick = 0;
+
+   /* This is needed even if it is going to be set to false */
+   Flake.RandomColors = True;
+
+   /* set up our colors amoung many other things */
+   FuzzyFlakesInit(dpy, window);
+
+   while (1)
+     {
+       /* Test every 50 ticks for a screen resize */
+       tick++;
+       if (tick == 50)
+         {
+            FuzzyFlakesResizeTest();
+            tick = 0;
+         }
+       FuzzyFlakes(dpy, Flake.DB.b);
+       if (Flake.DB.dbuf)
+         {
+            XCopyArea(Flake.DisplayVar, Flake.DB.b, Flake.WindowVar,
+                      Flake.GCVar, 0, 0, Flake.XGWA.width, Flake.XGWA.height,
+                      0, 0);
+            Flake.DB.b =
+               (Flake.DB.b == Flake.DB.ba ? Flake.DB.bb : Flake.DB.ba);
+         }
+       screenhack_handle_events(dpy);
+       XSync(dpy, False);
+       if (Flake.Delay)
+          usleep(Flake.Delay);
+     }
 }
 }
+
+/* EOF */
index 241414aa984c954eb7aba256b2c51f483e3507bd..07c3b0f245bfe72944da10c507411dca8faae589 100644 (file)
@@ -1,6 +1,6 @@
 .TH XScreenSaver 1 "12-May-04" "X Version 11"
 .SH NAME
 .TH XScreenSaver 1 "12-May-04" "X Version 11"
 .SH NAME
-fuzzyflakes - falling pastel snowflakes/flower shapes
+fuzzyflakes - falling snowflakes/flower shapes
 .SH SYNOPSIS
 .B fuzzyflakes
 [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
 .SH SYNOPSIS
 .B fuzzyflakes
 [\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
@@ -15,6 +15,8 @@ fuzzyflakes - falling pastel snowflakes/flower shapes
 [\-layers \fIint\fP]
 [\-density \fIint\fP]
 [\-no-db]
 [\-layers \fIint\fP]
 [\-density \fIint\fP]
 [\-no-db]
+(\-color \fIstring\fP)
+(\-random-colors)
 .SH DESCRIPTION
 The
 .I fuzzyflakes
 .SH DESCRIPTION
 The
 .I fuzzyflakes
@@ -66,6 +68,17 @@ Default 5.
 .TP 8
 .B \-no-db
 Disable double-buffering.
 .TP 8
 .B \-no-db
 Disable double-buffering.
+.TP 8
+.B \-color \fIstring\fP
+The base color for the color scheme.  Typed as a hexadecimal triplet
+with or with out the leading #. ie. fa4563 & #43cd12 are both acceptable.
+If the satration of you color is too low (<0.03) the random color
+generator will kick in.
+The default color is #efbea5
+.TP 8
+.B \-random-colors
+This enables the random color generation.  It is disabled by default.
+It overrides anything from -color
 .SH ENVIRONMENT
 .PP
 .TP 8
 .SH ENVIRONMENT
 .PP
 .TP 8
@@ -89,3 +102,7 @@ any purpose.  It is provided "as is" without express or implied
 warranty.
 .SH AUTHOR
 Barry Dmytro <badcherry@mailc.net>
 warranty.
 .SH AUTHOR
 Barry Dmytro <badcherry@mailc.net>
+.SH CREDITS
+The color generation algorithm was borrowed from a friend <ZoeB>
+from #vegans@irc.blitzed.org.  Her site is http://beautifulfreak.net/.
+To see her original code in action visit her site.
\ No newline at end of file
index b9b2db0d6b83cd8cd4d4bc932689688f72c017b1..bebe163ae6cb13824545d7020708eb87dbcd8e1b 100644 (file)
@@ -61,8 +61,8 @@ static Bool tracks;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
- {"-tracks", ".galaxy.tracks", XrmoptionNoArg, (caddr_t) "on"},
- {"+tracks", ".galaxy.tracks", XrmoptionNoArg, (caddr_t) "off"}
+ {"-tracks", ".galaxy.tracks", XrmoptionNoArg, "on"},
+ {"+tracks", ".galaxy.tracks", XrmoptionNoArg, "off"}
 };
 
 static argtype vars[] =
 };
 
 static argtype vars[] =
index c710b7d237b01522eb2c7eeaa17e6a24a91de7be..b4d1bbf00846183eb3e645f374210562a640e497 100644 (file)
@@ -623,6 +623,9 @@ atunnel.o: ../../config.h
 atunnel.o: $(HACK_SRC)/images/tunnel0.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel1.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel2.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel0.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel1.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel2.xpm
+atunnel.o: $(HACK_SRC)/images/tunnel3.xpm
+atunnel.o: $(HACK_SRC)/images/tunnel4.xpm
+atunnel.o: $(HACK_SRC)/images/tunnel5.xpm
 atunnel.o: $(srcdir)/tunnel_draw.h
 atunnel.o: $(srcdir)/xpm-ximage.h
 b_draw.o: $(srcdir)/bubble3d.h
 atunnel.o: $(srcdir)/tunnel_draw.h
 atunnel.o: $(srcdir)/xpm-ximage.h
 b_draw.o: $(srcdir)/bubble3d.h
index 0d50467146e400b79a98d4e2ac5ea322bf7eb7f7..777ddbecfca55dfccfb14007e5f0e58aca22b568 100644 (file)
 static int shadows;
 
 static XrmOptionDescRec opts[] = {
 static int shadows;
 
 static XrmOptionDescRec opts[] = {
-  {(char *) "-shadows", 
-   (char *) ".antinspect.shadows", XrmoptionNoArg, (caddr_t) "on"},
-
-  {(char *) "+shadows", 
-   (char *) ".antinspect.shadows", XrmoptionNoArg, (caddr_t) "off"}
+  {"-shadows", ".antinspect.shadows", XrmoptionNoArg, "on"},
+  {"+shadows", ".antinspect.shadows", XrmoptionNoArg, "off"}
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
-  {(caddr_t *) &shadows, 
-   (char *) "shadows", (char *) "Shadows", (char *) DEF_SHADOWS, t_Bool}
+  {&shadows, "shadows", "Shadows", DEF_SHADOWS, t_Bool}
 };
 
 static OptionStruct desc[] = {
 };
 
 static OptionStruct desc[] = {
-  {(char *) "-/+shadows", 
-   (char *) "turn on/off ant shadows"}
+  {"-/+shadows", "turn on/off ant shadows"}
 };
 
 ModeSpecOpt antinspect_opts = {sizeof opts / sizeof opts[0], 
 };
 
 ModeSpecOpt antinspect_opts = {sizeof opts / sizeof opts[0], 
index 2656543bcc2ca89c31c6140a7565071d4013862a..b7afd8cbbe022e8ac4518d89324d1b1b783b412f 100644 (file)
@@ -29,7 +29,7 @@ static const char sccsid[] = "@(#)atlantis.c  5.08 2003/04/09 xlockmore";
  * Thanks goes also to Brian Paul for making it possible and inexpensive
  * to use OpenGL at home.
  *
  * Thanks goes also to Brian Paul for making it possible and inexpensive
  * to use OpenGL at home.
  *
- * My e-mail address is lassauge@sourceforge.net
+ * My e-mail address is lassauge@users.sourceforge.net
  *
  * Eric Lassauge  (May-13-1998)
  *
  *
  * Eric Lassauge  (May-13-1998)
  *
@@ -137,11 +137,11 @@ static int do_texture;
 static int do_gradient;
 static XrmOptionDescRec opts[] =
 {
 static int do_gradient;
 static XrmOptionDescRec opts[] =
 {
-     {"-whalespeed", ".atlantis.whalespeed", XrmoptionSepArg, (caddr_t) NULL},
-     {"-texture",    ".atlantis.texture",    XrmoptionNoArg, (caddr_t)"true"},
-     {"+texture",    ".atlantis.texture",    XrmoptionNoArg, (caddr_t)"false"},
-     {"-gradient",   ".atlantis.gradient",   XrmoptionNoArg, (caddr_t)"true"},
-     {"+gradient",   ".atlantis.gradient",   XrmoptionNoArg, (caddr_t)"false"},
+     {"-whalespeed", ".atlantis.whalespeed", XrmoptionSepArg, 0},
+     {"-texture",    ".atlantis.texture",    XrmoptionNoArg, "true"},
+     {"+texture",    ".atlantis.texture",    XrmoptionNoArg, "false"},
+     {"-gradient",   ".atlantis.gradient",   XrmoptionNoArg, "true"},
+     {"+gradient",   ".atlantis.gradient",   XrmoptionNoArg, "false"},
 };
 
 static argtype vars[] =
 };
 
 static argtype vars[] =
index be07c963367a1e03ca53eb90682f6484c183d2f6..472fe528d800e38b21baffd13c8c353005317f15 100644 (file)
@@ -25,7 +25,7 @@
  * Thanks goes also to Brian Paul for making it possible and inexpensive
  * to use OpenGL at home.
  *
  * Thanks goes also to Brian Paul for making it possible and inexpensive
  * to use OpenGL at home.
  *
- * My e-mail address is lassauge@sagem.fr
+ * My e-mail address is lassauge@users.sourceforge.net
  *
  * Eric Lassauge  (May-13-1998)
  *
  *
  * Eric Lassauge  (May-13-1998)
  *
index 966b1be3c29c69dad17face448b823426ae7b3b2..ea7a900431afaa7a06175101258c70b0926e5060 100644 (file)
@@ -2,10 +2,10 @@
 /* atunnels --- OpenGL Advanced Tunnel Screensaver */
 
 #if 0
 /* atunnels --- OpenGL Advanced Tunnel Screensaver */
 
 #if 0
-static const char sccsid[] = "@(#)atunnels.c   5.07 2003/02/12 xlockmore";
+static const char sccsid[] = "@(#)atunnels.c   5.13 2004/05/25 xlockmore";
 #endif
 
 #endif
 
-/* Copyright (c) E. Lassauge, 2003. */
+/* Copyright (c) E. Lassauge, 2003-2004. */
 
 /*
  * Permission to use, copy, modify, and distribute this software and its
 
 /*
  * Permission to use, copy, modify, and distribute this software and its
@@ -24,11 +24,13 @@ static const char sccsid[] = "@(#)atunnels.c        5.07 2003/02/12 xlockmore";
  * Email: romka@ut.ee
  * WEB: http://romka.demonews.com
  *
  * Email: romka@ut.ee
  * WEB: http://romka.demonews.com
  *
- * Eric Lassauge  (March-16-2002) <lassauge@mail.dotcom.fr>
+ * Eric Lassauge  (May-25-2004) <lassauge@users.sourceforge.net>
  *                                 http://lassauge.free.fr/linux.html
  *
  * REVISION HISTORY:
  *
  *                                 http://lassauge.free.fr/linux.html
  *
  * REVISION HISTORY:
  *
+ * E.Lassauge - 25-May-2004:
+ *     - added more texture !
  * E.Lassauge - 16-Mar-2002:
  *     - created based on the Roman demo.
  *     - deleted all external file stuff to use xpm textures and
  * E.Lassauge - 16-Mar-2002:
  *     - created based on the Roman demo.
  *     - deleted all external file stuff to use xpm textures and
@@ -70,13 +72,20 @@ static const char sccsid[] = "@(#)atunnels.c        5.07 2003/02/12 xlockmore";
 #include "../images/tunnel0.xpm"
 #include "../images/tunnel1.xpm"
 #include "../images/tunnel2.xpm"
 #include "../images/tunnel0.xpm"
 #include "../images/tunnel1.xpm"
 #include "../images/tunnel2.xpm"
+#include "../images/tunnel3.xpm"
+#include "../images/tunnel4.xpm"
+#include "../images/tunnel5.xpm"
 #else /* !STANDALONE */
 #include "pixmaps/tunnel0.xpm"
 #include "pixmaps/tunnel1.xpm"
 #include "pixmaps/tunnel2.xpm"
 #else /* !STANDALONE */
 #include "pixmaps/tunnel0.xpm"
 #include "pixmaps/tunnel1.xpm"
 #include "pixmaps/tunnel2.xpm"
+#include "pixmaps/tunnel3.xpm"
+#include "pixmaps/tunnel4.xpm"
+#include "pixmaps/tunnel5.xpm"
 #endif /* !STANDALONE */
 #endif /* HAVE_XPM */
 
 #endif /* !STANDALONE */
 #endif /* HAVE_XPM */
 
+
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
@@ -89,12 +98,12 @@ static Bool do_wire;
 static Bool do_texture;
 
 static XrmOptionDescRec opts[] = {
 static Bool do_texture;
 
 static XrmOptionDescRec opts[] = {
-  {(char *)"-light",   (char *)".atunnels.light",      XrmoptionNoArg, (caddr_t) "true" },
-  {(char *)"+light",   (char *)".atunnels.light",      XrmoptionNoArg, (caddr_t) "false" },
-  {(char *)"-wire",    (char *)".atunnels.wire",       XrmoptionNoArg, (caddr_t) "true" },
-  {(char *)"+wire",    (char *)".atunnels.wire",       XrmoptionNoArg, (caddr_t) "false" },
-  {(char *)"-texture", (char *)".atunnels.texture",    XrmoptionNoArg, (caddr_t) "true" },
-  {(char *)"+texture", (char *)".atunnels.texture",    XrmoptionNoArg, (caddr_t) "false" },
+  {"-light",   ".atunnels.light",      XrmoptionNoArg, "true" },
+  {"+light",   ".atunnels.light",      XrmoptionNoArg, "false" },
+  {"-wire",    ".atunnels.wire",       XrmoptionNoArg, "true" },
+  {"+wire",    ".atunnels.wire",       XrmoptionNoArg, "false" },
+  {"-texture", ".atunnels.texture",    XrmoptionNoArg, "true" },
+  {"+texture", ".atunnels.texture",    XrmoptionNoArg, "false" },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
@@ -105,9 +114,9 @@ static argtype vars[] = {
 
 static OptionStruct desc[] =
 {
 
 static OptionStruct desc[] =
 {
-  {(char *)"-/+ light",   (char *)"whether to do enable lighting (slower)"},
-  {(char *)"-/+ wire",    (char *)"whether to do use wireframe instead of filled (faster)"},
-  {(char *)"-/+ texture", (char *)"whether to apply a texture (slower)"},
+  {"-/+ light",   "whether to do enable lighting (slower)"},
+  {"-/+ wire",    "whether to do use wireframe instead of filled (faster)"},
+  {"-/+ texture", "whether to apply a texture (slower)"},
 };
 
 ModeSpecOpt atunnels_opts = {countof(opts), opts, countof(vars), vars, desc};
 };
 
 ModeSpecOpt atunnels_opts = {countof(opts), opts, countof(vars), vars, desc};
@@ -128,7 +137,8 @@ typedef struct {
 } atunnelsstruct;
 
 static atunnelsstruct *Atunnels = NULL;
 } atunnelsstruct;
 
 static atunnelsstruct *Atunnels = NULL;
-static GLuint texture[3]; /* texture id: GL world */
+
+static GLuint texture[MAX_TEXTURE]; /* texture id: GL world */
 
 /*=================== Load Texture =========================================*/
 static void LoadTexture(ModeInfo * mi, char **fn, int t_num)
 
 /*=================== Load Texture =========================================*/
 static void LoadTexture(ModeInfo * mi, char **fn, int t_num)
@@ -179,10 +189,13 @@ static void Init(ModeInfo * mi)
        glClearColor(0, 0, 0, 0);
        if (do_texture)
        {
        glClearColor(0, 0, 0, 0);
        if (do_texture)
        {
-               glGenTextures(3, texture);
+               glGenTextures(MAX_TEXTURE, texture);
                LoadTexture(mi, texture0,0);
                LoadTexture(mi, texture1,1);
                LoadTexture(mi, texture2,2);
                LoadTexture(mi, texture0,0);
                LoadTexture(mi, texture1,1);
                LoadTexture(mi, texture2,2);
+               LoadTexture(mi, texture3,3);
+               LoadTexture(mi, texture4,4);
+               LoadTexture(mi, texture5,5);
                glEnable(GL_TEXTURE_2D);
        }
        InitTunnel();
                glEnable(GL_TEXTURE_2D);
        }
        InitTunnel();
index 1baa491ef991d6b7c93fbb6e52f3583e07cf0751..8bf0b4b5041d3c1f3417db9d487677c5b9637c59 100644 (file)
@@ -82,4 +82,4 @@ and can be found at http://romka.demonews.com
 
 .SH AUTHOR
 Roman Podobedov <romka@ut.ee> 
 
 .SH AUTHOR
 Roman Podobedov <romka@ut.ee> 
-Eric Lassauge <lassauge@mail.dotcom.fr>
+Eric Lassauge <lassauge@users.sourceforge.net>
index d0bc7229fc93f488c56a2497419bc2dafdd65ad6..c85e3500d810c83ad8348122e019cc8e448c9cde 100644 (file)
@@ -20,16 +20,16 @@ struct glb_config glb_config =
        3,                      /* subdivision_depth */
 #endif
        5,                      /* nr_nudge_axes */
        3,                      /* subdivision_depth */
 #endif
        5,                      /* nr_nudge_axes */
-       0.3,                    /* nudge_angle_factor */
-       0.15,                   /* nudge_factor */
+       0.01,                   /* nudge_angle_factor */
+       0.20,                   /* nudge_factor */
        0.1,                    /* rotation_factor */
        8,                      /* create_bubbles_every */
        8,                      /* max_bubbles */
        {0.7, 0.8, 0.9, 1.0},   /* p_bubble_group */
        0.5,                    /* max_size */
        0.1,                    /* min_size */
        0.1,                    /* rotation_factor */
        8,                      /* create_bubbles_every */
        8,                      /* max_bubbles */
        {0.7, 0.8, 0.9, 1.0},   /* p_bubble_group */
        0.5,                    /* max_size */
        0.1,                    /* min_size */
-       0.1,                    /* max_speed */
-       0.03,                   /* min_speed */
+       0.03,                   /* max_speed */
+       0.005,                  /* min_speed */
        1.5,                    /* scale_factor */
        -4,                     /* screen_bottom */
        4,                      /* screen_top */
        1.5,                    /* scale_factor */
        -4,                     /* screen_bottom */
        4,                      /* screen_top */
index c057943f5344066893eb6704aad6e98e83b211eb..0dfc4372b90ce8e64d11973d4e5bf226a4d2c01e 100644 (file)
@@ -21,16 +21,16 @@ extern XtAppContext app;
 #define MAX_COUNT 20
 #define ALPHA_AMT 0.05
 
 #define MAX_COUNT 20
 #define ALPHA_AMT 0.05
 
-/* this should be between 1 and 4 */
-#define DEF_WH      "1"
+/* this should be between 1 and 8 */
+#define DEF_WH       "2"
 #define DEF_DISSOLVE "False"
 #define DEF_DISSOLVE "False"
-#define DEF_FADE    "True"
+#define DEF_FADE     "True"
 
 
-#define DEFAULTS       "*delay:          30000         \n" \
-                               "*wireframe:  False      \n" \
-                       "*boxsize:  " DEF_WH      "\n" \
-                    "*dissolve:  " DEF_DISSOLVE "\n" \
-                    "*fade:     " DEF_FADE    "\n" \
+#define DEFAULTS       "*delay:        30000            \n" \
+                       "*wireframe:    False            \n" \
+                       "*boxsize:  "   DEF_WH          "\n" \
+                       "*dissolve: "   DEF_DISSOLVE    "\n" \
+                       "*fade: "       DEF_FADE        "\n" \
 
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -61,7 +61,7 @@ typedef struct{
 struct Bounding_box {
   Tdpos top;
   Tdpos bottom;
 struct Bounding_box {
   Tdpos top;
   Tdpos bottom;
-} bbox = {{7,7,10},{-7,-7,-10}};
+} bbox = {{14,14,20},{-14,-14,-20}};
 
 struct Ball {
   GLfloat x;
 
 struct Ball {
   GLfloat x;
@@ -100,18 +100,18 @@ static Bool do_fade;
 static GLfloat des_amt   = 1;
 
 static XrmOptionDescRec opts[] = {
 static GLfloat des_amt   = 1;
 
 static XrmOptionDescRec opts[] = {
-  { "-boxsize", ".boxsize", XrmoptionSepArg, 0 },
-  { "-dissolve", ".dissolve", XrmoptionNoArg, "True" },
+  { "-boxsize",  ".boxsize",  XrmoptionSepArg, 0      },
+  { "-dissolve", ".dissolve", XrmoptionNoArg, "True"  },
   { "+dissolve", ".dissolve", XrmoptionNoArg, "False" },
   { "+dissolve", ".dissolve", XrmoptionNoArg, "False" },
-  { "-fade",    ".fade",    XrmoptionNoArg, "True" },
-  { "+fade",    ".fade",    XrmoptionNoArg, "False" }
+  { "-fade",     ".fade",     XrmoptionNoArg, "True"  },
+  { "+fade",     ".fade",     XrmoptionNoArg, "False" }
 
 };
 
 static argtype vars[] = {
 
 };
 
 static argtype vars[] = {
-  {(caddr_t *) &bscale.wh,  "boxsize",  "Boxsize",  DEF_WH,      t_Float},
-  {(caddr_t *) &do_dissolve, "dissolve",  "Dissolve",  DEF_DISSOLVE, t_Bool},
-  {(caddr_t *) &do_fade,    "fade",     "Fade",     DEF_FADE,    t_Bool},
+  {&bscale.wh,   "boxsize",   "Boxsize",  DEF_WH,       t_Float},
+  {&do_dissolve, "dissolve",  "Dissolve", DEF_DISSOLVE, t_Bool},
+  {&do_fade,     "fade",      "Fade",     DEF_FADE,     t_Bool},
 };
 
 ModeSpecOpt sws_opts = {countof(opts), opts, countof(vars), vars, NULL};
 };
 
 ModeSpecOpt sws_opts = {countof(opts), opts, countof(vars), vars, NULL};
@@ -281,9 +281,9 @@ init_ball (ModeInfo *mi)
     exit(1);
   }
   if( (bscale.wh < 1) ||
     exit(1);
   }
   if( (bscale.wh < 1) ||
-      (bscale.wh > 4) ) {
+      (bscale.wh > 8) ) {
     fprintf(stderr,"Boxsize out of range. Using default\n");
     fprintf(stderr,"Boxsize out of range. Using default\n");
-    bscale.wh = 1;
+    bscale.wh = 2;
   }
   if (do_dissolve){
     des_amt = bscale.wh / MAX_COUNT;
   }
   if (do_dissolve){
     des_amt = bscale.wh / MAX_COUNT;
@@ -346,12 +346,16 @@ draw_ball (ModeInfo *mi)
    glRotated(0.25,1,0,0);
 
 
    glRotated(0.25,1,0,0);
 
 
+   glPushMatrix();
+   glScalef(0.5,0.5,0.5);
+
    glColor3f(1,1,1);
    glPushMatrix();
    glTranslatef(ball.x += mo.x,
                 ball.y += mo.y,
                 ball.z += mo.z);
 
    glColor3f(1,1,1);
    glPushMatrix();
    glTranslatef(ball.x += mo.x,
                 ball.y += mo.y,
                 ball.z += mo.z);
 
+   glScalef(2,2,2);
    glCallList(ballList);
    glPopMatrix();
 
    glCallList(ballList);
    glPopMatrix();
 
@@ -441,6 +445,7 @@ draw_ball (ModeInfo *mi)
   }
 
 
   }
 
 
+   glPopMatrix();
    glFinish();
    glXSwapBuffers(dpy, window);
 
    glFinish();
    glXSwapBuffers(dpy, window);
 
index 9b4907eae54f357a61ade7f455c0a62c7e48febd..9202c551c830f740acf427133f89eef88d0664e1 100644 (file)
@@ -98,10 +98,10 @@ GLfloat tunnelWidth=5;
 static XrmOptionDescRec opts[] = {
     { "-holdtime",  ".holdtime",  XrmoptionSepArg, 0 },
     { "-changetime",  ".changetime",  XrmoptionSepArg, 0 },
 static XrmOptionDescRec opts[] = {
     { "-holdtime",  ".holdtime",  XrmoptionSepArg, 0 },
     { "-changetime",  ".changetime",  XrmoptionSepArg, 0 },
-    {"-texture",     ".texture",   XrmoptionNoArg, (caddr_t) "True" },
-    {"+texture",     ".texture",   XrmoptionNoArg, (caddr_t) "False" },
-    {"-fog",         ".fog",       XrmoptionNoArg, (caddr_t) "True" },
-    {"+fog",         ".fog",       XrmoptionNoArg, (caddr_t) "False" },
+    {"-texture",     ".texture",   XrmoptionNoArg, "True" },
+    {"+texture",     ".texture",   XrmoptionNoArg, "False" },
+    {"-fog",         ".fog",       XrmoptionNoArg, "True" },
+    {"+fog",         ".fog",       XrmoptionNoArg, "False" },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
index 3f85b598bba753686ba761146d19b1e5476f28f0..1c9e92bcf95bf75b37807aaa41d2cae57bd2a0ab 100644 (file)
@@ -23,7 +23,7 @@ extern XtAppContext app;
 #define EVENT_MASK      PointerMotionMask
 #define sws_opts       xlockmore_opts
 
 #define EVENT_MASK      PointerMotionMask
 #define sws_opts       xlockmore_opts
 
-#define DEF_SPEED       "1.0"
+#define DEF_SPEED       "0.7"
 #define DEF_TEXTURE     "(none)"
 
 #define DEFAULTS       "*delay:        30000       \n" \
 #define DEF_TEXTURE     "(none)"
 
 #define DEFAULTS       "*delay:        30000       \n" \
@@ -100,7 +100,7 @@ static const char *do_texture;
 static XrmOptionDescRec opts[] = {
   { "-speed",      ".speed",     XrmoptionSepArg, 0 },
   {"-texture",     ".texture",   XrmoptionSepArg, 0 },
 static XrmOptionDescRec opts[] = {
   { "-speed",      ".speed",     XrmoptionSepArg, 0 },
   {"-texture",     ".texture",   XrmoptionSepArg, 0 },
-  {"+texture",     ".texture",   XrmoptionNoArg, (caddr_t) "(none)" },
+  {"+texture",     ".texture",   XrmoptionNoArg, "(none)" },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
index 1200e62c7a339949af85a1de29062b95200b261e..e9da0e3b03793b9ace49797d5132dd0187600985 100644 (file)
@@ -35,17 +35,18 @@ static const char sccsid[] = "@(#)boxed.c   0.9 01/09/26 xlockmore";
 */
 
 #ifdef STANDALONE
 */
 
 #ifdef STANDALONE
-# define PROGCLASS                                     "boxed"
-# define HACK_INIT                                     init_boxed
-# define HACK_DRAW                                     draw_boxed
-# define HACK_RESHAPE                                  reshape_boxed
-# define boxed_opts                                    xlockmore_opts
-# define DEFAULTS      "*delay:                20000   \n"                     \
-     "*showFPS:         False   \n"                    \
-
-# include "xlockmore.h"                                /* from the xscreensaver distribution */
+# define PROGCLASS     "boxed"
+# define HACK_INIT     init_boxed
+# define HACK_DRAW     draw_boxed
+# define HACK_RESHAPE  reshape_boxed
+# define boxed_opts    xlockmore_opts
+# define DEFAULTS      "*delay:   20000   \n"  \
+                       "*showFPS: False   \n"  \
+                       "*speed:   0.5     \n"  \
+
+# include "xlockmore.h"                /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
 #else  /* !STANDALONE */
-# include "xlock.h"                                    /* from the xlockmore distribution */
+# include "xlock.h"            /* from the xlockmore distribution */
 #endif /* !STANDALONE */
 
 #ifdef USE_GL
 #endif /* !STANDALONE */
 
 #ifdef USE_GL
@@ -56,23 +57,18 @@ static const char sccsid[] = "@(#)boxed.c   0.9 01/09/26 xlockmore";
 #undef rnd
 #define rnd() (frand(1.0))
 
 #undef rnd
 #define rnd() (frand(1.0))
 
-/* #define DEF_PLANETARY "False"
+GLfloat speed;  /* jwz -- overall speed factor applied to all motion */
 
 
-static int planetary;
 
 static XrmOptionDescRec opts[] = {
 
 static XrmOptionDescRec opts[] = {
-  {"-planetary", ".gears.planetary", XrmoptionNoArg, (caddr_t) "true" },
-  {"+planetary", ".gears.planetary", XrmoptionNoArg, (caddr_t) "false" },
+    {"-speed", ".boxed.speed", XrmoptionSepArg, 0},
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
-  {&planetary, "planetary", "Planetary", DEF_PLANETARY, t_Bool},
+    {&speed, "speed", "Speed", "1.0", t_Float},
 };
 };
-*/
-
-/* ModeSpecOpts boxed_opts = {countof(opts), opts, countof(vars), vars, NULL}; */
 
 
-ModeSpecOpt boxed_opts = {0, NULL, 0, NULL, NULL};
+ModeSpecOpt boxed_opts = {countof(opts), opts, countof(vars), vars, NULL};
 
 #ifdef USE_MODULES
 
 
 #ifdef USE_MODULES
 
@@ -90,6 +86,7 @@ ModStruct   boxed_description = {
 
 /* rendering defines */
 
 
 /* rendering defines */
 
+
 /* box size */
 #define BOX_SIZE       20.0f
 
 /* box size */
 #define BOX_SIZE       20.0f
 
@@ -100,7 +97,7 @@ ModStruct   boxed_description = {
 #define CAMDISTANCE_SPEED 1.5
 
 /* rendering the sphere */
 #define CAMDISTANCE_SPEED 1.5
 
 /* rendering the sphere */
-#define MESH_SIZE      5
+#define MESH_SIZE      10
 #define SPHERE_VERTICES        (2+MESH_SIZE*MESH_SIZE*2)
 #define SPHERE_INDICES ((MESH_SIZE*4 + MESH_SIZE*4*(MESH_SIZE-1))*3)
 
 #define SPHERE_VERTICES        (2+MESH_SIZE*MESH_SIZE*2)
 #define SPHERE_INDICES ((MESH_SIZE*4 + MESH_SIZE*4*(MESH_SIZE-1))*3)
 
@@ -342,14 +339,15 @@ static void generatesphere(void)
  * create fresh ball 
  */
 
  * create fresh ball 
  */
 
-void createball(ball *newball) {
+void createball(ball *newball) 
+{
    float r=0.0f,g=0.0f,b=0.0f;
    newball->loc.x = 5-10*rnd();
    newball->loc.y = 35+20*rnd();
    newball->loc.z = 5-10*rnd();
    float r=0.0f,g=0.0f,b=0.0f;
    newball->loc.x = 5-10*rnd();
    newball->loc.y = 35+20*rnd();
    newball->loc.z = 5-10*rnd();
-   newball->dir.x = 0.5f-rnd();
+   newball->dir.x = (0.5f-rnd()) * speed;
    newball->dir.y = 0.0;
    newball->dir.y = 0.0;
-   newball->dir.z = 0.5-rnd();
+   newball->dir.z = (0.5-rnd())  * speed;
    newball->offside = 0;
    newball->bounced = FALSE;
    newball->radius = BALLSIZE;
    newball->offside = 0;
    newball->bounced = FALSE;
    newball->radius = BALLSIZE;
@@ -363,15 +361,18 @@ void createball(ball *newball) {
 
 /* Update position of each ball */
 
 
 /* Update position of each ball */
 
-void updateballs(ballman *bman) {
+void updateballs(ballman *bman) 
+{
    register int b,j;
    vectorf dvect,richting,relspeed,influence;
    GLfloat squaredist;
 
    for (b=0;b<bman->num_balls;b++) {
 
    register int b,j;
    vectorf dvect,richting,relspeed,influence;
    GLfloat squaredist;
 
    for (b=0;b<bman->num_balls;b++) {
 
+     GLfloat gravity = 0.15f * speed;
+
       /* apply gravity */
       /* apply gravity */
-      bman->balls[b].dir.y -= 0.15f;
+      bman->balls[b].dir.y -= gravity;
       /* apply movement */
       addvectors(&bman->balls[b].loc,&bman->balls[b].loc,&bman->balls[b].dir);
       /* boundary check */
       /* apply movement */
       addvectors(&bman->balls[b].loc,&bman->balls[b].loc,&bman->balls[b].dir);
       /* boundary check */
@@ -457,7 +458,8 @@ void updateballs(ballman *bman) {
 * explode ball into triangles
 */
 
 * explode ball into triangles
 */
 
-void createtrisfromball(triman* tman, vectorf *spherev, GLint *spherei, int ind_num, ball *b) {
+void createtrisfromball(triman* tman, vectorf *spherev, GLint *spherei, int ind_num, ball *b)
+{
    int pos;
    float explosion;
    float scale;
    int pos;
    float explosion;
    float scale;
@@ -511,9 +513,9 @@ void createtrisfromball(triman* tman, vectorf *spherev, GLint *spherei, int ind_
             
       /* bereken nieuwe richting */
       scalevector(&tman->tris[i].dir,&avgdir,explosion);
             
       /* bereken nieuwe richting */
       scalevector(&tman->tris[i].dir,&avgdir,explosion);
-      dvect.x = 0.1f - 0.2f*rnd();
-      dvect.y = 0.15f - 0.3f*rnd();
-      dvect.z = 0.1f - 0.2f*rnd(); 
+      dvect.x = (0.1f - 0.2f*rnd());
+      dvect.y = (0.15f - 0.3f*rnd());
+      dvect.z = (0.1f - 0.2f*rnd());
       addvectors(&tman->tris[i].dir,&tman->tris[i].dir,&dvect);
    }
 }
       addvectors(&tman->tris[i].dir,&tman->tris[i].dir,&dvect);
    }
 }
@@ -523,13 +525,14 @@ void createtrisfromball(triman* tman, vectorf *spherev, GLint *spherei, int ind_
 * update position of each tri
 */
 
 * update position of each tri
 */
 
-void updatetris(triman *t) {
+void updatetris(triman *t) 
+{
    int b;
    GLfloat xd,zd;
    
    for (b=0;b<t->num_tri;b++) {
       /* apply gravity */
    int b;
    GLfloat xd,zd;
    
    for (b=0;b<t->num_tri;b++) {
       /* apply gravity */
-      t->tris[b].dir.y -= 0.1f;
+      t->tris[b].dir.y -= (0.1f * speed);
       /* apply movement */
       addvectors(&t->tris[b].loc,&t->tris[b].loc,&t->tris[b].dir);
       /* boundary check */
       /* apply movement */
       addvectors(&t->tris[b].loc,&t->tris[b].loc,&t->tris[b].dir);
       /* boundary check */
@@ -595,7 +598,8 @@ void updatetris(triman *t) {
 /*
  * free memory allocated by a tri manager
  */
 /*
  * free memory allocated by a tri manager
  */
-void freetris(triman *t) {
+void freetris(triman *t) 
+{
    if (!t) return;
    if (t->tris) free(t->tris);
    if (t->vertices) free(t->vertices);
    if (!t) return;
    if (t->tris) free(t->tris);
    if (t->vertices) free(t->vertices);
@@ -611,7 +615,8 @@ void freetris(triman *t) {
 /*
  *load defaults in config structure
  */
 /*
  *load defaults in config structure
  */
-void setdefaultconfig(boxed_config *config) {
+void setdefaultconfig(boxed_config *config) 
+{
   config->numballs = NUMBALLS;
   config->textures = TRUE;
   config->transparent = FALSE;
   config->numballs = NUMBALLS;
   config->textures = TRUE;
   config->transparent = FALSE;
@@ -896,10 +901,10 @@ static void draw(ModeInfo * mi)
    gp->tic += 0.01f;
 
    /* rotate camera around (0,0,0), looking at (0,0,0), up is (0,1,0) */
    gp->tic += 0.01f;
 
    /* rotate camera around (0,0,0), looking at (0,0,0), up is (0,1,0) */
-   dcam = CAMDISTANCE_MIN + (CAMDISTANCE_MAX - CAMDISTANCE_MIN) + (CAMDISTANCE_MAX - CAMDISTANCE_MIN)*cos(gp->tic/CAMDISTANCE_SPEED);
-   v1.x = dcam * sin(gp->tic/gp->cam_x_speed);
-   v1.z = dcam * cos(gp->tic/gp->cam_z_speed);
-   v1.y = CAM_HEIGHT * sin(gp->tic/gp->cam_y_speed) + 1.02 * CAM_HEIGHT;
+   dcam = CAMDISTANCE_MIN + (CAMDISTANCE_MAX - CAMDISTANCE_MIN) + (CAMDISTANCE_MAX - CAMDISTANCE_MIN)*cos((gp->tic/CAMDISTANCE_SPEED) * speed);
+   v1.x = dcam * sin((gp->tic/gp->cam_x_speed) * speed);
+   v1.z = dcam * cos((gp->tic/gp->cam_z_speed) * speed);
+   v1.y = CAM_HEIGHT * sin((gp->tic/gp->cam_y_speed) * speed) + 1.02 * CAM_HEIGHT;
    gluLookAt(v1.x,v1.y,v1.z,0.0,0.0,0.0,0.0,1.0,0.0); 
 
    glLightfv(GL_LIGHT0, GL_AMBIENT, l0_ambient); 
    gluLookAt(v1.x,v1.y,v1.z,0.0,0.0,0.0,0.0,1.0,0.0); 
 
    glLightfv(GL_LIGHT0, GL_AMBIENT, l0_ambient); 
index 4cbdd7540f417496c2365e5ece00ad1ea376e786..f8b4c69740367949ab029c0f688bf5a485447ace 100644 (file)
@@ -16,7 +16,7 @@
 #include <GL/glu.h>
 
 /* Static configuration. */
 #include <GL/glu.h>
 
 /* Static configuration. */
-#define GLB_SLOW_GL          1 /* Set this if you have a slow GL
+#define GLB_SLOW_GL          0 /* Set this if you have a slow GL
                                   * implementation. If you have an accelerated
                                   * graphics card, set this to 0.
                                 */
                                   * implementation. If you have an accelerated
                                   * graphics card, set this to 0.
                                 */
index 21bdbe0e32922990f56e822cbaac96b09921c650..229f076db2ee54ff35e814bf32470b98941cc0e5 100644 (file)
@@ -25,7 +25,7 @@ Draw on a newly-created window.  This is the default.
 Draw on the root window.
 .TP 8
 .B \-delay \fInumber\fP
 Draw on the root window.
 .TP 8
 .B \-delay \fInumber\fP
-Per-frame delay, in microseconds.  Default: 10000 (0.01 seconds.).
+Per-frame delay, in microseconds.  Default: 15000 (0.015 seconds.).
 .TP 8
 .B \-fps | \-no-fps
 Whether to show a frames-per-second display at the bottom of the screen.
 .TP 8
 .B \-fps | \-no-fps
 Whether to show a frames-per-second display at the bottom of the screen.
index 85bd17fbd8b09042b0289ebf098b76fbddb00e9e..7b14c72c1fea24b940ceb50c0b5387248511cbdd 100644 (file)
@@ -75,14 +75,6 @@ static const char sccsid[] = "@(#)cage.c     5.01 2001/03/01 xlockmore";
  * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know).
  */
 
  * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know).
  */
 
-#ifdef VMS
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-#include <X11/Intrinsic.h>
-#endif
-
 #ifdef STANDALONE
 # define MODE_cage
 # define PROGCLASS                     "Cage"
 #ifdef STANDALONE
 # define MODE_cage
 # define PROGCLASS                     "Cage"
index e7ee382b80daae3fb04d1771578bf2c1e03b1c82..e6636c29f2f0a1d6f842200e3360b436d84e73d8 100644 (file)
@@ -91,14 +91,14 @@ static XrmOptionDescRec opts[] = {
   {"-parts", ".circuit.parts", XrmoptionSepArg, "10" },
   {"-font", ".circuit.font", XrmoptionSepArg, "fixed" },
   {"-rotate-speed", ".circuit.rotatespeed", XrmoptionSepArg, "1" },
   {"-parts", ".circuit.parts", XrmoptionSepArg, "10" },
   {"-font", ".circuit.font", XrmoptionSepArg, "fixed" },
   {"-rotate-speed", ".circuit.rotatespeed", XrmoptionSepArg, "1" },
-  {"+spin", ".circuit.spin", XrmoptionNoArg, (caddr_t) "false" },
-  {"-spin", ".circuit.spin", XrmoptionNoArg, (caddr_t) "true" },
-  {"+light", ".circuit.light", XrmoptionNoArg, (caddr_t) "false" },
-  {"-light", ".circuit.light", XrmoptionNoArg, (caddr_t) "true" },
-  {"+seven", ".circuit.seven", XrmoptionNoArg, (caddr_t) "false" },
-  {"-seven", ".circuit.seven", XrmoptionNoArg, (caddr_t) "true" },
-  {"+rotate", ".circuit.rotate", XrmoptionNoArg, (caddr_t) "false" },
-  {"-rotate", ".circuit.rotate", XrmoptionNoArg, (caddr_t) "true" },
+  {"+spin", ".circuit.spin", XrmoptionNoArg, "false" },
+  {"-spin", ".circuit.spin", XrmoptionNoArg, "true" },
+  {"+light", ".circuit.light", XrmoptionNoArg, "false" },
+  {"-light", ".circuit.light", XrmoptionNoArg, "true" },
+  {"+seven", ".circuit.seven", XrmoptionNoArg, "false" },
+  {"-seven", ".circuit.seven", XrmoptionNoArg, "true" },
+  {"+rotate", ".circuit.rotate", XrmoptionNoArg, "false" },
+  {"-rotate", ".circuit.rotate", XrmoptionNoArg, "true" },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
@@ -149,7 +149,7 @@ static int YMAX = 30;
 
 #define MAX_COMPONENTS 30
 
 
 #define MAX_COMPONENTS 30
 
-#define MOVE_MULT 0.05
+#define MOVE_MULT 0.02
 
 static float f_rand(void) {
    return ((float)RAND(10000)/(float)10000);
 
 static float f_rand(void) {
    return ((float)RAND(10000)/(float)10000);
@@ -1498,7 +1498,7 @@ Component * NewComponent(void)
   c->rotx = f_rand();
   c->roty = f_rand();
   c->rotz = f_rand();
   c->rotx = f_rand();
   c->roty = f_rand();
   c->rotz = f_rand();
-  c->drot = f_rand() * 7;
+  c->drot = f_rand() * 3;
   c->rdeg = 0;
   c->dz = f_rand()*2 - 1;
   c->norm = 0;
   c->rdeg = 0;
   c->dz = f_rand()*2 - 1;
   c->norm = 0;
index e2c470d76225c2f6ee0de97f4ae5f89e6724aea2..84e2726490f1ccf03d3fe1cae51e87b085e61ef8 100644 (file)
@@ -29,7 +29,7 @@ extern XtAppContext app;
 #define DEF_WAVE_SPEED  "80"
 #define DEF_WAVE_RADIUS "512"
 
 #define DEF_WAVE_SPEED  "80"
 #define DEF_WAVE_RADIUS "512"
 
-#define DEFAULTS       "*delay:        30000       \n" \
+#define DEFAULTS       "*delay:        20000       \n" \
                        "*count:        5           \n" \
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
                        "*count:        5           \n" \
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
@@ -113,8 +113,8 @@ static XrmOptionDescRec opts[] = {
   { "+spin",   ".spin",   XrmoptionNoArg, "" },
   { "-wander", ".wander", XrmoptionNoArg, "True" },
   { "+wander", ".wander", XrmoptionNoArg, "False" },
   { "+spin",   ".spin",   XrmoptionNoArg, "" },
   { "-wander", ".wander", XrmoptionNoArg, "True" },
   { "+wander", ".wander", XrmoptionNoArg, "False" },
-  {"-texture", ".texture", XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture", ".texture", XrmoptionNoArg, (caddr_t) "false" },
+  {"-texture", ".texture", XrmoptionNoArg, "true" },
+  {"+texture", ".texture", XrmoptionNoArg, "false" },
   {"-waves",       ".waves",      XrmoptionSepArg, 0 },
   {"-wave-speed",  ".waveSpeed",  XrmoptionSepArg, 0 },
   {"-wave-radius", ".waveRadius", XrmoptionSepArg, 0 },
   {"-waves",       ".waves",      XrmoptionSepArg, 0 },
   {"-wave-speed",  ".waveSpeed",  XrmoptionSepArg, 0 },
   {"-wave-radius", ".waveRadius", XrmoptionSepArg, 0 },
index f31bf026a9e59bfa23d708c701c801e3be77d033..32483a1dce2db772ecf470ccc30f60ca6896d85f 100644 (file)
@@ -266,7 +266,7 @@ init_ball (ModeInfo *mi)
 
   {
     double spin_speed   = 10.0;
 
   {
     double spin_speed   = 10.0;
-    double wander_speed = 0.15;
+    double wander_speed = 0.12;
     double spin_accel   = 2.0;
 
     bp->rot = make_rotator (do_spin ? spin_speed : 0,
     double spin_accel   = 2.0;
 
     bp->rot = make_rotator (do_spin ? spin_speed : 0,
index 41131c28d325c032fa3879becbd0c04127e5fc8b..25335a7097e1a351c1e520ef3f085a7998fb357d 100644 (file)
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 static XrmOptionDescRec opts[] = {
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 static XrmOptionDescRec opts[] = {
-  {"+rotate", ".chess.rotate", XrmoptionNoArg, (caddr_t) "false" },
-  {"-rotate", ".chess.rotate", XrmoptionNoArg, (caddr_t) "true" },
-  {"+reflections", ".chess.reflections", XrmoptionNoArg, (caddr_t) "false" },
-  {"-reflections", ".chess.reflections", XrmoptionNoArg, (caddr_t) "true" },
-  {"+shadows", ".chess.shadows", XrmoptionNoArg, (caddr_t) "false" },
-  {"-shadows", ".chess.shadows", XrmoptionNoArg, (caddr_t) "true" },
-  {"+smooth", ".chess.smooth", XrmoptionNoArg, (caddr_t) "false" },
-  {"-smooth", ".chess.smooth", XrmoptionNoArg, (caddr_t) "true" },
+  {"+rotate", ".chess.rotate", XrmoptionNoArg, "false" },
+  {"-rotate", ".chess.rotate", XrmoptionNoArg, "true" },
+  {"+reflections", ".chess.reflections", XrmoptionNoArg, "false" },
+  {"-reflections", ".chess.reflections", XrmoptionNoArg, "true" },
+  {"+shadows", ".chess.shadows", XrmoptionNoArg, "false" },
+  {"-shadows", ".chess.shadows", XrmoptionNoArg, "true" },
+  {"+smooth", ".chess.smooth", XrmoptionNoArg, "false" },
+  {"-smooth", ".chess.smooth", XrmoptionNoArg, "true" },
 };
 
 int rotate, reflections, smooth, shadows;
 };
 
 int rotate, reflections, smooth, shadows;
index 4744f3cb58ab8d88b22b38bb1e8b1c97d447b9b2..892524a73da216e4e0590f3d9f2ee0b527cfded3 100644 (file)
@@ -39,7 +39,7 @@
 #define DEF_SPIN   "True"
 #define DEF_WANDER "True"
 
 #define DEF_SPIN   "True"
 #define DEF_WANDER "True"
 
-#define DEFAULTS        "*delay:           10000        \n" \
+#define DEFAULTS        "*delay:           30000        \n" \
                         "*showFPS:         False        \n" \
                         "*move:            True         \n" \
                         "*spin:            True         \n" \
                         "*showFPS:         False        \n" \
                         "*move:            True         \n" \
                         "*spin:            True         \n" \
@@ -79,12 +79,12 @@ static Bool do_titles;
 
 static XrmOptionDescRec opts[] = {
   {"-engine",  ".engine.engine", XrmoptionSepArg, DEF_ENGINE },
 
 static XrmOptionDescRec opts[] = {
   {"-engine",  ".engine.engine", XrmoptionSepArg, DEF_ENGINE },
-  {"-move",    ".engine.move",   XrmoptionNoArg, (caddr_t) "True"  },
-  {"+move",    ".engine.move",   XrmoptionNoArg, (caddr_t) "False" },
-  {"-spin",    ".engine.spin",   XrmoptionNoArg, (caddr_t) "True"  },
-  {"+spin",    ".engine.spin",   XrmoptionNoArg, (caddr_t) "False" },
-  { "-titles", ".engine.titles", XrmoptionNoArg, (caddr_t) "True"  },
-  { "+titles", ".engine.titles", XrmoptionNoArg, (caddr_t) "False" },
+  {"-move",    ".engine.move",   XrmoptionNoArg, "True"  },
+  {"+move",    ".engine.move",   XrmoptionNoArg, "False" },
+  {"-spin",    ".engine.spin",   XrmoptionNoArg, "True"  },
+  {"+spin",    ".engine.spin",   XrmoptionNoArg, "False" },
+  { "-titles", ".engine.titles", XrmoptionNoArg, "True"  },
+  { "+titles", ".engine.titles", XrmoptionNoArg, "False" },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
@@ -951,8 +951,8 @@ void init_engine(ModeInfo *mi)
  }
 
  {
  }
 
  {
-   double spin_speed = 1.0;
-   double wander_speed = 0.03;
+   double spin_speed = 0.5;
+   double wander_speed = 0.01;
 
  e->rot = make_rotator (spin ? spin_speed : 0,
                         spin ? spin_speed : 0,
 
  e->rot = make_rotator (spin ? spin_speed : 0,
                         spin ? spin_speed : 0,
index 1c63435680aa4413a60aa7d4f23c34fb415fe33d..32f8e6946d39e0c43921994986b54108ee7d2f6f 100644 (file)
  * which can be obtained from http://www.linas.org/gle/index.html
   */
 
  * which can be obtained from http://www.linas.org/gle/index.html
   */
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -124,19 +117,19 @@ static char *which_name;
 static char *which_image;
 
 static XrmOptionDescRec opts[] = {
 static char *which_image;
 
 static XrmOptionDescRec opts[] = {
-  {"-light",   ".extrusion.light",     XrmoptionNoArg, (caddr_t) "true" },
-  {"+light",   ".extrusion.light",     XrmoptionNoArg, (caddr_t) "false" },
-  {"-wire",    ".extrusion.wire",      XrmoptionNoArg, (caddr_t) "true" },
-  {"+wire",    ".extrusion.wire",      XrmoptionNoArg, (caddr_t) "false" },
-  {"-texture", ".extrusion.texture",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture", ".extrusion.texture",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-texture", ".extrusion.texture",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture_quality", ".extrusion.texture",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-texture_quality", ".extrusion.texture",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+mipmap", ".extrusion.mipmap",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-mipmap", ".extrusion.mipmap",   XrmoptionNoArg, (caddr_t) "true" },
-  {"-name",   ".extrusion.name",  XrmoptionSepArg, (caddr_t) NULL },
-  {"-image",   ".extrusion.image",  XrmoptionSepArg, (caddr_t) NULL },
+  {"-light",   ".extrusion.light",     XrmoptionNoArg, "true" },
+  {"+light",   ".extrusion.light",     XrmoptionNoArg, "false" },
+  {"-wire",    ".extrusion.wire",      XrmoptionNoArg, "true" },
+  {"+wire",    ".extrusion.wire",      XrmoptionNoArg, "false" },
+  {"-texture", ".extrusion.texture",   XrmoptionNoArg, "true" },
+  {"+texture", ".extrusion.texture",   XrmoptionNoArg, "false" },
+  {"-texture", ".extrusion.texture",   XrmoptionNoArg, "true" },
+  {"+texture_quality", ".extrusion.texture",   XrmoptionNoArg, "false" },
+  {"-texture_quality", ".extrusion.texture",   XrmoptionNoArg, "true" },
+  {"+mipmap", ".extrusion.mipmap",   XrmoptionNoArg, "false" },
+  {"-mipmap", ".extrusion.mipmap",   XrmoptionNoArg, "true" },
+  {"-name",   ".extrusion.name",  XrmoptionSepArg, 0 },
+  {"-image",   ".extrusion.image",  XrmoptionSepArg, 0 },
 };
 
 
 };
 
 
@@ -455,7 +448,7 @@ initializeGL(ModeInfo *mi, GLsizei width, GLsizei height)
   glClearColor(0,0,0,0);
 /*    glCullFace(GL_BACK); */
 /*    glEnable(GL_CULL_FACE); */
   glClearColor(0,0,0,0);
 /*    glCullFace(GL_BACK); */
 /*    glEnable(GL_CULL_FACE); */
-  glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, TRUE);
+  glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, True);
   glShadeModel(GL_SMOOTH);
 
   if (do_light)
   glShadeModel(GL_SMOOTH);
 
   if (do_light)
index 6e1593d9b106b72e61848091620f6e3df3afd44e..1aadee77de347218b97282688a1375577650b5af 100644 (file)
@@ -48,8 +48,8 @@
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 static XrmOptionDescRec opts[] = {
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 static XrmOptionDescRec opts[] = {
-  {"+rotate", ".flipflop.rotate", XrmoptionNoArg, (caddr_t) "false" },
-  {"-rotate", ".flipflop.rotate", XrmoptionNoArg, (caddr_t) "true" },
+  {"+rotate", ".flipflop.rotate", XrmoptionNoArg, "false" },
+  {"-rotate", ".flipflop.rotate", XrmoptionNoArg, "true" },
 };
 
 
 };
 
 
@@ -57,7 +57,7 @@ static XrmOptionDescRec opts[] = {
 static int rotate, wire, clearbits;
 
 static argtype vars[] = {
 static int rotate, wire, clearbits;
 
 static argtype vars[] = {
-  {(caddr_t *) &rotate, "rotate", "Rotate", "True", t_Bool},
+  { &rotate, "rotate", "Rotate", "True", t_Bool},
 };
 
 ModeSpecOpt flipflop_opts = {countof(opts), opts, countof(vars), vars, NULL};
 };
 
 ModeSpecOpt flipflop_opts = {countof(opts), opts, countof(vars), vars, NULL};
index 19d57bf495bc965973e25daaa0145adabb359a04..4cee56ee262011142accee066014dd53add1e138 100644 (file)
@@ -63,8 +63,8 @@ GLfloat qx = -6 , qy = 6;
 
 
 static XrmOptionDescRec opts[] = {
 
 
 static XrmOptionDescRec opts[] = {
-  {"+rotate", ".screenflip.rotate", XrmoptionNoArg, (caddr_t) "false" },
-  {"-rotate", ".screenflip.rotate", XrmoptionNoArg, (caddr_t) "true" },
+  {"+rotate", ".screenflip.rotate", XrmoptionNoArg, "false" },
+  {"-rotate", ".screenflip.rotate", XrmoptionNoArg, "true" },
 };
 
 
 };
 
 
index e6a7565765557956f62ceb12636620e1daf124ff..51a241bc364ed872daaf98c1d09c74d152f7becc 100644 (file)
@@ -41,11 +41,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 static const char sccsid[] = "@(#)flurry.c     4.07 97/11/24 xlockmore";
 #endif
 
 static const char sccsid[] = "@(#)flurry.c     4.07 97/11/24 xlockmore";
 #endif
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
 #define DEF_PRESET     "classic"
 #define DEF_BRIGHTNESS "8"
 
 #define DEF_PRESET     "classic"
 #define DEF_BRIGHTNESS "8"
 
index 32062f1b7d12e993d56ef45fe7a4b20b636f150d..e9fd5a8ec1b89f7119beb887e8382c98a1457c6f 100644 (file)
@@ -153,8 +153,8 @@ static XrmOptionDescRec opts[] = {
   { "-speed",  ".speed",  XrmoptionSepArg, 0 },
   { "-ntoasters",  ".ntoasters", XrmoptionSepArg, 0 },
   { "-nslices",    ".nslices",   XrmoptionSepArg, 0 },
   { "-speed",  ".speed",  XrmoptionSepArg, 0 },
   { "-ntoasters",  ".ntoasters", XrmoptionSepArg, 0 },
   { "-nslices",    ".nslices",   XrmoptionSepArg, 0 },
-  {"-texture",     ".texture",   XrmoptionNoArg, (caddr_t) "True" },
-  {"+texture",     ".texture",   XrmoptionNoArg, (caddr_t) "False" },
+  {"-texture",     ".texture",   XrmoptionNoArg, "True" },
+  {"+texture",     ".texture",   XrmoptionNoArg, "False" },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
index e89ba4e44255464b1de9ad742fa0072902309bd7..b9a8871ecdfff670609b2c1bba0a59a3a2ea82a9 100644 (file)
@@ -34,13 +34,6 @@ static const char sccsid[] = "@(#)gears.c    4.07 97/11/24 xlockmore";
  * been fixed in MesaGL 2.2 and later releases.
  */
 
  * been fixed in MesaGL 2.2 and later releases.
  */
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
 #ifdef STANDALONE
 # define PROGCLASS                                     "Gears"
 # define HACK_INIT                                     init_gears
 #ifdef STANDALONE
 # define PROGCLASS                                     "Gears"
 # define HACK_INIT                                     init_gears
@@ -73,8 +66,8 @@ static const char sccsid[] = "@(#)gears.c     4.07 97/11/24 xlockmore";
 static int planetary;
 
 static XrmOptionDescRec opts[] = {
 static int planetary;
 
 static XrmOptionDescRec opts[] = {
-  {"-planetary", ".gears.planetary", XrmoptionNoArg, (caddr_t) "true" },
-  {"+planetary", ".gears.planetary", XrmoptionNoArg, (caddr_t) "false" },
+  {"-planetary", ".gears.planetary", XrmoptionNoArg, "true" },
+  {"+planetary", ".gears.planetary", XrmoptionNoArg, "false" },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
index f2e682addcbbb6020a33468cf6b916064fc919e3..51aa59778b31c20fecd18daba5bc961b8045cbc4 100644 (file)
  */
 
 
  */
 
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
-
 #ifdef STANDALONE
 # define PROGCLASS                                             "gflux"
 # define HACK_INIT                                             init_gflux
 #ifdef STANDALONE
 # define PROGCLASS                                             "gflux"
 # define HACK_INIT                                             init_gflux
@@ -130,20 +122,20 @@ static Bool button_down_p = False;
 #define HEIGHT 240
 
 static XrmOptionDescRec opts[] = {
 #define HEIGHT 240
 
 static XrmOptionDescRec opts[] = {
-    {"-squares", ".gflux.squares", XrmoptionSepArg, (caddr_t) NULL},
-    {"-resolution", ".gflux.resolution", XrmoptionSepArg, (caddr_t) NULL},
-/*    {"-draw", ".gflux.draw", XrmoptionSepArg, (caddr_t) NULL},*/
-    {"-mode", ".gflux.mode", XrmoptionSepArg, (caddr_t) NULL},
-    {"-flat", ".gflux.flat", XrmoptionSepArg, (caddr_t) NULL},
-    {"-speed", ".gflux.speed", XrmoptionSepArg, (caddr_t) NULL},
-    {"-rotationx", ".gflux.rotationx", XrmoptionSepArg, (caddr_t) NULL},
-    {"-rotationy", ".gflux.rotationy", XrmoptionSepArg, (caddr_t) NULL},
-    {"-rotationz", ".gflux.rotationz", XrmoptionSepArg, (caddr_t) NULL},
-    {"-waves", ".gflux.waves", XrmoptionSepArg, (caddr_t) NULL},
-    {"-waveChange", ".gflux.waveChange", XrmoptionSepArg, (caddr_t) NULL},
-    {"-waveHeight", ".gflux.waveHeight", XrmoptionSepArg, (caddr_t) NULL},
-    {"-waveFreq", ".gflux.waveFreq", XrmoptionSepArg, (caddr_t) NULL},
-    {"-zoom", ".gflux.zoom", XrmoptionSepArg, (caddr_t) NULL},
+    {"-squares", ".gflux.squares", XrmoptionSepArg, 0},
+    {"-resolution", ".gflux.resolution", XrmoptionSepArg, 0},
+/*    {"-draw", ".gflux.draw", XrmoptionSepArg, 0},*/
+    {"-mode", ".gflux.mode", XrmoptionSepArg, 0},
+    {"-flat", ".gflux.flat", XrmoptionSepArg, 0},
+    {"-speed", ".gflux.speed", XrmoptionSepArg, 0},
+    {"-rotationx", ".gflux.rotationx", XrmoptionSepArg, 0},
+    {"-rotationy", ".gflux.rotationy", XrmoptionSepArg, 0},
+    {"-rotationz", ".gflux.rotationz", XrmoptionSepArg, 0},
+    {"-waves", ".gflux.waves", XrmoptionSepArg, 0},
+    {"-waveChange", ".gflux.waveChange", XrmoptionSepArg, 0},
+    {"-waveHeight", ".gflux.waveHeight", XrmoptionSepArg, 0},
+    {"-waveFreq", ".gflux.waveFreq", XrmoptionSepArg, 0},
+    {"-zoom", ".gflux.zoom", XrmoptionSepArg, 0},
 };
 
 
 };
 
 
index 7470d3f3888d1584c92645212bcc2fe61fefc1b4..2c9fb3de2e517fc22c10ea19697878dcc053147c 100644 (file)
@@ -109,33 +109,33 @@ static float      rangle_acc = 0.0;       /* rotate acceleration */
 static XrmOptionDescRec opts[] =
 {
 #ifdef GRAB
 static XrmOptionDescRec opts[] =
 {
 #ifdef GRAB
-       {"-grab",               (char *) ".gleidescope.grab",           XrmoptionNoArg,         "true"},
+       {"-grab",               ".gleidescope.grab",            XrmoptionNoArg,         "true"},
 #endif
 #endif
-       {"-move",               (char *) ".gleidescope.move",           XrmoptionNoArg,         "true"},
-       {"-no-move",    (char *) ".gleidescope.nomove",         XrmoptionNoArg,         "true"},
-       {"-rotate",             (char *) ".gleidescope.rotate",         XrmoptionNoArg,         "true"},
-       {"-no-rotate",  (char *) ".gleidescope.norotate",       XrmoptionNoArg,         "true"},
-       /*{"-size",             (char *) ".gleidescope.size",           XrmoptionNoArg,         "-1"},*/
-       {"-zoom",               (char *) ".gleidescope.zoom",           XrmoptionNoArg,         "true"},
-       {"-no-zoom",    (char *) ".gleidescope.nozoom",         XrmoptionNoArg,         "true"},
-       {"-image",              (char *) ".gleidescope.image",          XrmoptionSepArg,        "DEFAULT"},
-       {"-duration",   (char *) ".gleidescope.duration",       XrmoptionSepArg,        "30"},
+       {"-move",               ".gleidescope.move",            XrmoptionNoArg,         "true"},
+       {"-no-move",    ".gleidescope.nomove",          XrmoptionNoArg,         "true"},
+       {"-rotate",             ".gleidescope.rotate",          XrmoptionNoArg,         "true"},
+       {"-no-rotate",  ".gleidescope.norotate",        XrmoptionNoArg,         "true"},
+       /*{"-size",             ".gleidescope.size",            XrmoptionNoArg,         "-1"},*/
+       {"-zoom",               ".gleidescope.zoom",            XrmoptionNoArg,         "true"},
+       {"-no-zoom",    ".gleidescope.nozoom",          XrmoptionNoArg,         "true"},
+       {"-image",              ".gleidescope.image",           XrmoptionSepArg,        "DEFAULT"},
+       {"-duration",   ".gleidescope.duration",        XrmoptionSepArg,        "30"},
 };
 
 
 static argtype vars[] = {
 #ifdef GRAB
 };
 
 
 static argtype vars[] = {
 #ifdef GRAB
-       {(caddr_t *) &grab,                     "grab",         "Grab",         "False",        t_Bool},
+       {&grab,                 "grab",         "Grab",         "False",        t_Bool},
 #endif
 #endif
-       {(caddr_t *) &move,                     "move",         "Move",         "False",        t_Bool},
-       {(caddr_t *) &nomove,           "nomove",       "noMove",       "False",        t_Bool},
-       {(caddr_t *) &rotate,           "rotate",       "Rotate",       "False",        t_Bool},
-       {(caddr_t *) &norotate,         "norotate",     "noRotate",     "False",        t_Bool},
-       /*{(caddr_t *) &size,                   "size",         "Size",         "-1",           t_Int},*/
-       {(caddr_t *) &zoom,                     "zoom",         "Zoom",         "False",        t_Bool},
-       {(caddr_t *) &nozoom,           "nozoom",       "noZoom",       "False",        t_Bool},
-       {(caddr_t *) &image,            "image",        "Image",        "DEFAULT",      t_String},
-       {(caddr_t *) &duration,         "duration",     "Duration",     "30",           t_Int},
+       {&move,                 "move",         "Move",         "False",        t_Bool},
+       {&nomove,               "nomove",       "noMove",       "False",        t_Bool},
+       {&rotate,               "rotate",       "Rotate",       "False",        t_Bool},
+       {&norotate,             "norotate",     "noRotate",     "False",        t_Bool},
+       /*{&size,               "size",         "Size",         "-1",           t_Int},*/
+       {&zoom,                 "zoom",         "Zoom",         "False",        t_Bool},
+       {&nozoom,               "nozoom",       "noZoom",       "False",        t_Bool},
+       {&image,                "image",        "Image",        "DEFAULT",      t_String},
+       {&duration,             "duration",     "Duration",     "30",           t_Int},
 };
 
 static OptionStruct desc[] = {
 };
 
 static OptionStruct desc[] = {
index 0531ebace58e07da648c7edad7c7d7afd2c412b4..589ed6172ddf19981f904a2f9aa641c7430e7612 100644 (file)
@@ -25,7 +25,7 @@ static const char sccsid[] = "@(#)fire.c      5.02 2001/09/26 xlockmore";
  * of Mesa (Mesa-3.2/3Dfx/demos/). This mode is the result of the merge of
  * two of the David's demos (fire and rain).
  *
  * of Mesa (Mesa-3.2/3Dfx/demos/). This mode is the result of the merge of
  * two of the David's demos (fire and rain).
  *
- * Eric Lassauge  (October-10-2000) <lassauge@mail.dotcom.fr>
+ * Eric Lassauge  (October-10-2000) <lassauge@users.sourceforge.net>
  *                                 http://lassauge.free.fr/linux.html
  *
  * REVISION HISTORY:
  *                                 http://lassauge.free.fr/linux.html
  *
  * REVISION HISTORY:
@@ -180,18 +180,18 @@ static int frame = 0;
 static XFontStruct *mode_font = None;
 
 static XrmOptionDescRec opts[] = {
 static XFontStruct *mode_font = None;
 
 static XrmOptionDescRec opts[] = {
-    {(char *) "-texture", (char *) ".fire.texture", XrmoptionNoArg, (caddr_t) "on"},
-    {(char *) "+texture", (char *) ".fire.texture", XrmoptionNoArg, (caddr_t) "off"},
-    {(char *) "-fog", (char *) ".fire.fog", XrmoptionNoArg, (caddr_t) "on"},
-    {(char *) "+fog", (char *) ".fire.fog", XrmoptionNoArg, (caddr_t) "off"},
-    {(char *) "-shadows", (char *) ".fire.shadows", XrmoptionNoArg, (caddr_t) "on"},
-    {(char *) "+shadows", (char *) ".fire.shadows", XrmoptionNoArg, (caddr_t) "off"},
-    {(char *) "-trackmouse", (char *) ".fire.trackmouse", XrmoptionNoArg, (caddr_t) "on"},
-    {(char *) "+trackmouse", (char *) ".fire.trackmouse", XrmoptionNoArg, (caddr_t) "off"},
-    {(char *) "-wander", (char *) ".fire.wander", XrmoptionNoArg, (caddr_t) "on"},
-    {(char *) "+wander", (char *) ".fire.wander", XrmoptionNoArg, (caddr_t) "off"},
-    {(char *) "-trees", (char *) ".fire.trees", XrmoptionSepArg, (caddr_t) NULL},
-    {(char *) "-rain", (char *) ".fire.count", XrmoptionNoArg, (caddr_t) "0"},
+    {"-texture", ".fire.texture", XrmoptionNoArg, "on"},
+    {"+texture", ".fire.texture", XrmoptionNoArg, "off"},
+    {"-fog", ".fire.fog", XrmoptionNoArg, "on"},
+    {"+fog", ".fire.fog", XrmoptionNoArg, "off"},
+    {"-shadows", ".fire.shadows", XrmoptionNoArg, "on"},
+    {"+shadows", ".fire.shadows", XrmoptionNoArg, "off"},
+    {"-trackmouse", ".fire.trackmouse", XrmoptionNoArg, "on"},
+    {"+trackmouse", ".fire.trackmouse", XrmoptionNoArg, "off"},
+    {"-wander", ".fire.wander", XrmoptionNoArg, "on"},
+    {"+wander", ".fire.wander", XrmoptionNoArg, "off"},
+    {"-trees", ".fire.trees", XrmoptionSepArg, 0},
+    {"-rain", ".fire.count", XrmoptionNoArg, "0"},
 
 };
 
 
 };
 
@@ -205,12 +205,12 @@ static argtype vars[] = {
 };
 
 static OptionStruct desc[] = {
 };
 
 static OptionStruct desc[] = {
-    {(char *) "-/+texture", (char *) "turn on/off texturing"},
-    {(char *) "-/+fog", (char *) "turn on/off fog"},
-    {(char *) "-/+shadows", (char *) "turn on/off shadows"},
-    {(char *) "-/+trackmouse", (char *) "turn on/off the tracking of the mouse"},
-    {(char *) "-/+wander", (char *) "turn on/off wandering"},
-    {(char *) "-trees num", (char *) "number of trees (0 disables)"},
+    {"-/+texture", "turn on/off texturing"},
+    {"-/+fog", "turn on/off fog"},
+    {"-/+shadows", "turn on/off shadows"},
+    {"-/+trackmouse", "turn on/off the tracking of the mouse"},
+    {"-/+wander", "turn on/off wandering"},
+    {"-trees num", "number of trees (0 disables)"},
 };
 
 ModeSpecOpt fire_opts =
 };
 
 ModeSpecOpt fire_opts =
index 955325d261ecce8908099207cd52269d1c46ddba..e81199956d56fe22f00d4b17329297fd1ea059e0 100644 (file)
  */
 
 
  */
 
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
 #ifdef STANDALONE
 # define PROGCLASS                                             "Planet"
 # define HACK_INIT                                             init_planet
 #ifdef STANDALONE
 # define PROGCLASS                                             "Planet"
 # define HACK_INIT                                             init_planet
@@ -50,7 +43,7 @@
 # define HACK_HANDLE_EVENT                             planet_handle_event
 # define EVENT_MASK                                            PointerMotionMask
 # define planet_opts                                   xlockmore_opts
 # define HACK_HANDLE_EVENT                             planet_handle_event
 # define EVENT_MASK                                            PointerMotionMask
 # define planet_opts                                   xlockmore_opts
-#define DEFAULTS       "*delay:                        15000   \n"     \
+#define DEFAULTS       "*delay:                        20000   \n"     \
                                        "*showFPS:                      False   \n" \
                     "*rotate:           True    \n" \
                     "*roll:             True    \n" \
                                        "*showFPS:                      False   \n" \
                     "*rotate:           True    \n" \
                     "*roll:             True    \n" \
@@ -89,7 +82,7 @@
 #define DEF_TEXTURE "True"
 #define DEF_STARS   "True"
 #define DEF_LIGHT   "True"
 #define DEF_TEXTURE "True"
 #define DEF_STARS   "True"
 #define DEF_LIGHT   "True"
-#define DEF_RESOLUTION "64"
+#define DEF_RESOLUTION "128"
 #define DEF_IMAGE   "BUILTIN"
 
 #undef countof
 #define DEF_IMAGE   "BUILTIN"
 
 #undef countof
@@ -105,20 +98,20 @@ static char *which_image;
 static int resolution;
 
 static XrmOptionDescRec opts[] = {
 static int resolution;
 
 static XrmOptionDescRec opts[] = {
-  {"-rotate",  ".glplanet.rotate",  XrmoptionNoArg, (caddr_t) "true" },
-  {"+rotate",  ".glplanet.rotate",  XrmoptionNoArg, (caddr_t) "false" },
-  {"-roll",    ".glplanet.roll",    XrmoptionNoArg, (caddr_t) "true" },
-  {"+roll",    ".glplanet.roll",    XrmoptionNoArg, (caddr_t) "false" },
-  {"-wander",  ".glplanet.wander",  XrmoptionNoArg, (caddr_t) "true" },
-  {"+wander",  ".glplanet.wander",  XrmoptionNoArg, (caddr_t) "false" },
-  {"-texture", ".glplanet.texture", XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture", ".glplanet.texture", XrmoptionNoArg, (caddr_t) "false" },
-  {"-stars",   ".glplanet.stars",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+stars",   ".glplanet.stars",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-light",   ".glplanet.light",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+light",   ".glplanet.light",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-image",   ".glplanet.image",  XrmoptionSepArg, (caddr_t) 0 },
-  {"-resolution", ".glplanet.resolution", XrmoptionSepArg, (caddr_t) 0 },
+  {"-rotate",  ".glplanet.rotate",  XrmoptionNoArg, "true" },
+  {"+rotate",  ".glplanet.rotate",  XrmoptionNoArg, "false" },
+  {"-roll",    ".glplanet.roll",    XrmoptionNoArg, "true" },
+  {"+roll",    ".glplanet.roll",    XrmoptionNoArg, "false" },
+  {"-wander",  ".glplanet.wander",  XrmoptionNoArg, "true" },
+  {"+wander",  ".glplanet.wander",  XrmoptionNoArg, "false" },
+  {"-texture", ".glplanet.texture", XrmoptionNoArg, "true" },
+  {"+texture", ".glplanet.texture", XrmoptionNoArg, "false" },
+  {"-stars",   ".glplanet.stars",   XrmoptionNoArg, "true" },
+  {"+stars",   ".glplanet.stars",   XrmoptionNoArg, "false" },
+  {"-light",   ".glplanet.light",   XrmoptionNoArg, "true" },
+  {"+light",   ".glplanet.light",   XrmoptionNoArg, "false" },
+  {"-image",   ".glplanet.image",  XrmoptionSepArg, 0 },
+  {"-resolution", ".glplanet.resolution", XrmoptionSepArg, 0 },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
@@ -549,8 +542,8 @@ init_planet (ModeInfo * mi)
   }
 
   {
   }
 
   {
-    double spin_speed   = 1.0;
-    double wander_speed = 0.05;
+    double spin_speed   = 0.5;
+    double wander_speed = 0.02;
     gp->rot = make_rotator (do_roll ? spin_speed : 0,
                             do_roll ? spin_speed : 0,
                             0, 1,
     gp->rot = make_rotator (do_roll ? spin_speed : 0,
                             do_roll ? spin_speed : 0,
                             0, 1,
@@ -657,7 +650,7 @@ draw_planet (ModeInfo * mi)
   glRotatef (gp->z * 360, 0.0, 0.0, 1.0);
   if (do_rotate && !gp->button_down_p)
     {
   glRotatef (gp->z * 360, 0.0, 0.0, 1.0);
   if (do_rotate && !gp->button_down_p)
     {
-      gp->z -= 0.01;     /* the sun sets in the west */
+      gp->z -= 0.005;     /* the sun sets in the west */
       if (gp->z < 0) gp->z += 1;
     }
 
       if (gp->z < 0) gp->z += 1;
     }
 
index d4ca5a4ca721e6c2b4aefc45e0640b63498483ed..d735e7bd5e3514010a9f41981587dfe45d4a3aa1 100644 (file)
  * software for any purpose.  It is provided "as is" without express or
  * implied warranty.
  *
  * software for any purpose.  It is provided "as is" without express or
  * implied warranty.
  *
+ * TODO:
+ *
+ * - Resizing the window makes everything go black forevermore.  No idea why.
+ *
+ *
+ * - When a new image is loaded, there is a glitch: animation pauses during
+ *   the period when we're loading the image-to-fade-in.  On fast (2GHz)
+ *   machines, this stutter is short but noticable (usually less than half a
+ *   second.)  On slower machines, it can be much more pronounced.
+ *
+ *   In xscreensaver 4.17, I added the new functions fork_load_random_image()
+ *   and fork_screen_to_ximage() to make it possible to do image loading in
+ *   the background, in an attempt to solve this (the idea being to only swap
+ *   in the new image once it has been loaded.)  Using those routines, we
+ *   continue animating while the file system is being searched for an image
+ *   file; while that image data is read, parsed, and decompressed; while that
+ *   data is placed on a Pixmap in the X server.
+ *
+ *   However, two things still happen in the "parent" (glslideshow) process:
+ *   converting that server-side Pixmap to a client-side XImage (XGetImage);
+ *   and converting that XImage to an OpenGL texture (gluBuild2DMipmaps).
+ *   It's possible that some new code would allow us to do the Pixmap-to-XImage
+ *   conversion in the forked process (feed it back upstream through a pipe or
+ *   SHM segment or something); however, it turns out that significant
+ *   parent-process image-loading time is being spent in gluBuild2DMipmaps().
+ *
+ *   So, the next step would be to figure out some way to create a texture on
+ *   the other end of the fork that would be usable by the parent process.  Is
+ *   that even possible?  Is it possible to use a single GLX context in a
+ *   multithreaded way like that?  (Or use a second GLX context, but allow the
+ *   two contexts to share data?)
+ *
+ *   Another question remains: is the stalling happening in the GL/GLX
+ *   libraries, or are we actually seeing a stall on the graphics pipeline?
+ *   If the latter, then no amount of threading would help, because the
+ *   bottleneck is pushing the bits from system memory to the graphics card.
+ *
+ *   How does Apple do this with their MacOSX slideshow screen saver?  Perhaps
+ *   it's easier for them because their OpenGL libraries have thread support
+ *   at a lower level?
+ *
+ *
+ * - Even if the glitch was solved, there's still a bug in the background
+ *   loading of images: as soon as the image comes in, we slap it into place
+ *   in the target quad.  This can lead to an image being changed while it is
+ *   still being drawn, if that quad happens to be visible already.  Instead,
+ *   when the callback goes off, we should make sure to load it into the
+ *   invisible quad, or if both are visible, we should wait until one goes
+ *   invisible and then load it there (in other words, wait for the next
+ *   fade-out to end.)
  */
 
 #include <X11/Intrinsic.h>
  */
 
 #include <X11/Intrinsic.h>
@@ -104,6 +154,8 @@ typedef struct {
   Bool low_fps_p;              /* Whether we have compensated for a low
                                    frame rate. */
 
   Bool low_fps_p;              /* Whether we have compensated for a low
                                    frame rate. */
 
+  Bool fork_p;                 /* threaded image loading; #### still buggy */
+
   XFontStruct *xfont;
   GLuint font_dlist;
 
   XFontStruct *xfont;
   GLuint font_dlist;
 
@@ -152,6 +204,23 @@ static argtype vars[] = {
 ModeSpecOpt slideshow_opts = {countof(opts), opts, countof(vars), vars, NULL};
 
 
 ModeSpecOpt slideshow_opts = {countof(opts), opts, countof(vars), vars, NULL};
 
 
+static const char *
+blurb (void)
+{
+  static char buf[255];
+  time_t now = time ((time_t *) 0);
+  char *ct = (char *) ctime (&now);
+  int n = strlen(progname);
+  if (n > 100) n = 99;
+  strncpy(buf, progname, n);
+  buf[n++] = ':';
+  buf[n++] = ' ';
+  strncpy(buf+n, ct+11, 8);
+  strcpy(buf+n+9, ": ");
+  return buf;
+}
+
+
 /* Returns the current time in seconds as a double.
  */
 static double
 /* Returns the current time in seconds as a double.
  */
 static double
@@ -489,7 +558,7 @@ shrink_image (ModeInfo *mi, XImage *ximage)
 
   if (debug_p)
     fprintf (stderr, "%s: debug: shrinking image %dx%d -> %dx%d\n",
 
   if (debug_p)
     fprintf (stderr, "%s: debug: shrinking image %dx%d -> %dx%d\n",
-             progname, ximage->width, ximage->height, w2, h2);
+             blurb(), ximage->width, ximage->height, w2, h2);
 
   ximage2 = XCreateImage (MI_DISPLAY (mi), mi->xgwa.visual,
                           32, ZPixmap, 0, 0,
 
   ximage2 = XCreateImage (MI_DISPLAY (mi), mi->xgwa.visual,
                           32, ZPixmap, 0, 0,
@@ -498,7 +567,7 @@ shrink_image (ModeInfo *mi, XImage *ximage)
   if (!ximage2->data)
     {
       fprintf (stderr, "%s: out of memory (scaling %dx%d image to %dx%d)\n",
   if (!ximage2->data)
     {
       fprintf (stderr, "%s: out of memory (scaling %dx%d image to %dx%d)\n",
-               progname, ximage->width, ximage->height, w2, h2);
+               blurb(), ximage->width, ximage->height, w2, h2);
       exit (1);
     }
   for (y = 0; y < h2; y++)
       exit (1);
     }
   for (y = 0; y < h2; y++)
@@ -514,16 +583,17 @@ shrink_image (ModeInfo *mi, XImage *ximage)
 /* Load a new image into a texture for the given quad.
  */
 static void
 /* Load a new image into a texture for the given quad.
  */
 static void
-load_quad (ModeInfo *mi, gls_quad *q)
+load_quad_1 (ModeInfo *mi, gls_quad *q, XImage *ximage,
+             const char *filename, double start_time, double cvt_time)
 {
   slideshow_state *ss = &sss[MI_SCREEN(mi)];
 {
   slideshow_state *ss = &sss[MI_SCREEN(mi)];
-  XImage *ximage;
   int status;
   int max_reduction = 7;
   int err_count = 0;
   int wire = MI_IS_WIREFRAME(mi);
   int status;
   int max_reduction = 7;
   int err_count = 0;
   int wire = MI_IS_WIREFRAME(mi);
+  double load_time=0, mipmap_time=0;   /* for debugging messages */
 
 
-  if (q->state != DEAD) abort();
+  /* if (q->state != DEAD) abort(); */
 
   /* Figure out which texid is currently in use, and pick the other one.
    */
 
   /* Figure out which texid is currently in use, and pick the other one.
    */
@@ -545,16 +615,11 @@ load_quad (ModeInfo *mi, gls_quad *q)
     ss->current_texid = tid;
   }
 
     ss->current_texid = tid;
   }
 
-  if (debug_p)
-    fprintf (stderr, "%s: debug: loading image %d (%dx%d)\n",
-             progname, q->texid, mi->xgwa.width, mi->xgwa.height);
-
   if (wire)
     goto DONE;
 
   if (q->title) free (q->title);
   if (wire)
     goto DONE;
 
   if (q->title) free (q->title);
-  q->title = 0;
-  ximage = screen_to_ximage (mi->xgwa.screen, mi->window, &q->title);
+  q->title = (filename ? strdup (filename) : 0);
 
   if (q->title)   /* strip filename to part after last /. */
     {
 
   if (q->title)   /* strip filename to part after last /. */
     {
@@ -563,8 +628,11 @@ load_quad (ModeInfo *mi, gls_quad *q)
     }
 
   if (debug_p)
     }
 
   if (debug_p)
-    fprintf (stderr, "%s: debug: loaded image %d (%s)\n",
-             progname, q->texid, (q->title ? q->title : "(null)"));
+    {
+      fprintf (stderr, "%s: debug: loaded    image %d: \"%s\"\n",
+               blurb(), q->texid, (q->title ? q->title : "(null)"));
+      load_time = double_time();
+    }
 
   glBindTexture (GL_TEXTURE_2D, q->texid);
   glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
 
   glBindTexture (GL_TEXTURE_2D, q->texid);
   glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
@@ -607,17 +675,17 @@ load_quad (ModeInfo *mi, gls_quad *q)
                   "%s: GLU said: \"%s\".\n"
                   "%s: probably this means "
                   "\"your video card is worthless and weak\"?\n\n",
                   "%s: GLU said: \"%s\".\n"
                   "%s: probably this means "
                   "\"your video card is worthless and weak\"?\n\n",
-                  progname, MI_WIDTH(mi), MI_HEIGHT(mi),
+                  blurb(), MI_WIDTH(mi), MI_HEIGHT(mi),
                   ximage->width, ximage->height,
                   ximage->width, ximage->height,
-                  progname, s,
-                  progname);
+                  blurb(), s,
+                  blurb());
           exit (1);
         }
       else
         {
           if (debug_p)
             fprintf (stderr, "%s: debug: mipmap error (%dx%d): %s\n",
           exit (1);
         }
       else
         {
           if (debug_p)
             fprintf (stderr, "%s: debug: mipmap error (%dx%d): %s\n",
-                     progname, ximage->width, ximage->height, s);
+                     blurb(), ximage->width, ximage->height, s);
           shrink_image (mi, ximage);
           goto AGAIN;
         }
           shrink_image (mi, ximage);
           goto AGAIN;
         }
@@ -630,6 +698,24 @@ load_quad (ModeInfo *mi, gls_quad *q)
   ximage->data = 0;
   XDestroyImage(ximage);
 
   ximage->data = 0;
   XDestroyImage(ximage);
 
+  if (debug_p)
+    {
+      fprintf (stderr, "%s: debug: mipmapped image %d: %dx%d\n",
+               blurb(), q->texid, mi->xgwa.width, mi->xgwa.height);
+      mipmap_time = double_time();
+    }
+
+  if (cvt_time == 0)
+    cvt_time = load_time;
+  if (debug_p)
+    fprintf (stderr,
+             "%s: debug: load time elapsed: %.2f + %.2f + %.2f = %.2f sec\n",
+             blurb(),
+             cvt_time    - start_time,
+             load_time   - cvt_time,
+             mipmap_time - load_time,
+             mipmap_time - start_time);
+
  DONE:
 
   /* Re-set "now" so that time spent loading the image file does not count
  DONE:
 
   /* Re-set "now" so that time spent loading the image file does not count
@@ -644,6 +730,67 @@ load_quad (ModeInfo *mi, gls_quad *q)
 }
 
 
 }
 
 
+static void slideshow_load_cb (Screen *, Window, XImage *,
+                               const char *filename, void *closure,
+                               double cvt_time);
+
+typedef struct {
+  ModeInfo *mi;
+  gls_quad *q;
+  double start_time;
+} img_load_closure;
+
+
+/* Load a new image into a texture for the given quad.
+ */
+static void
+load_quad (ModeInfo *mi, gls_quad *q)
+{
+  slideshow_state *ss = &sss[MI_SCREEN(mi)];
+  img_load_closure *data;
+
+  if (debug_p)
+    fprintf (stderr, "%s: debug: loading   image %d: %dx%d\n",
+             blurb(), q->texid, mi->xgwa.width, mi->xgwa.height);
+
+  if (q->state != DEAD) abort();
+  if (q->title) free (q->title);
+  q->title = 0;
+
+  if (MI_IS_WIREFRAME(mi))
+    return;
+
+  data = (img_load_closure *) calloc (1, sizeof(*data));
+  data->mi = mi;
+  data->q = q;
+  data->start_time = double_time();
+
+  if (ss->fork_p)
+    {
+      fork_screen_to_ximage (mi->xgwa.screen, mi->window,
+                             slideshow_load_cb, data);
+    }
+  else
+    {
+      char *title = 0;
+      XImage *ximage = screen_to_ximage (mi->xgwa.screen, mi->window, &title);
+      slideshow_load_cb (mi->xgwa.screen, mi->window, ximage, title, data, 0);
+    }
+}
+
+
+static void
+slideshow_load_cb (Screen *screen, Window window, XImage *ximage,
+                   const char *filename, void *closure, double cvt_time)
+{
+  img_load_closure *data = (img_load_closure *) closure;
+  load_quad_1 (data->mi, data->q, ximage, filename,
+               data->start_time, cvt_time);
+  memset (data, 0, sizeof (*data));
+  free (data);
+}
+
+
 void
 reshape_slideshow (ModeInfo *mi, int width, int height)
 {
 void
 reshape_slideshow (ModeInfo *mi, int width, int height)
 {
@@ -682,7 +829,7 @@ glslideshow_handle_event (ModeInfo *mi, XEvent *event)
       event->xany.type == VisibilityNotify)
     {
       if (debug_p)
       event->xany.type == VisibilityNotify)
     {
       if (debug_p)
-        fprintf (stderr, "%s: debug: exposure\n", progname);
+        fprintf (stderr, "%s: debug: exposure\n", blurb());
       ss->redisplay_needed_p = True;
       return True;
     }
       ss->redisplay_needed_p = True;
       return True;
     }
@@ -719,6 +866,26 @@ sanity_check (ModeInfo *mi)
 }
 
 
 }
 
 
+/* Kludge to add "-v" to invocation of "xscreensaver-getimage" in -debug mode
+ */
+static void
+hack_resources (void)
+{
+#if 0
+  char *res = "desktopGrabber";
+  char *val = get_string_resource (res, "DesktopGrabber");
+  char buf1[255];
+  char buf2[255];
+  XrmValue value;
+  sprintf (buf1, "%.100s.%.100s", progclass, res);
+  sprintf (buf2, "%.200s -v", val);
+  value.addr = buf2;
+  value.size = strlen(buf2);
+  XrmPutResource (&db, buf1, "String", &value);
+#endif
+}
+
+
 void
 init_slideshow (ModeInfo *mi)
 {
 void
 init_slideshow (ModeInfo *mi)
 {
@@ -740,11 +907,15 @@ init_slideshow (ModeInfo *mi)
     MI_CLEARWINDOW(mi);
   }
 
     MI_CLEARWINDOW(mi);
   }
 
+  if (debug_p)
+    fprintf (stderr, "%s: debug: pan: %d; fade: %d; img: %d; zoom: %d%%\n",
+             blurb(), pan_seconds, fade_seconds, image_seconds, zoom);
+
   sanity_check(mi);
 
   if (debug_p)
     fprintf (stderr, "%s: debug: pan: %d; fade: %d; img: %d; zoom: %d%%\n",
   sanity_check(mi);
 
   if (debug_p)
     fprintf (stderr, "%s: debug: pan: %d; fade: %d; img: %d; zoom: %d%%\n",
-             progname, pan_seconds, fade_seconds, image_seconds, zoom);
+             blurb(), pan_seconds, fade_seconds, image_seconds, zoom);
 
   if (! wire)
     {
 
   if (! wire)
     {
@@ -779,10 +950,16 @@ init_slideshow (ModeInfo *mi)
       q->state = DEAD;
     }
 
       q->state = DEAD;
     }
 
+  if (debug_p)
+    hack_resources();
+
   load_quad (mi, &ss->quads[0]);
   ss->quads[0].state = IN;
 
   ss->redisplay_needed_p = True;
   load_quad (mi, &ss->quads[0]);
   ss->quads[0].state = IN;
 
   ss->redisplay_needed_p = True;
+
+  ss->fork_p = 0; /* #### buggy */
+
 }
 
 
 }
 
 
@@ -823,7 +1000,7 @@ ponder_state_change (ModeInfo *mi)
 
   if (debug_p)
     fprintf (stderr, "%s: debug: %s %3d frames %2d sec %4.1f fps\n",
 
   if (debug_p)
     fprintf (stderr, "%s: debug: %s %3d frames %2d sec %4.1f fps\n",
-             progname, which, frames, secs, fps);
+             blurb(), which, frames, secs, fps);
 
 
   if (fps < fps_cutoff && !ss->low_fps_p)   /* oops, this computer sucks! */
 
 
   if (fps < fps_cutoff && !ss->low_fps_p)   /* oops, this computer sucks! */
@@ -831,9 +1008,8 @@ ponder_state_change (ModeInfo *mi)
       int i;
 
       fprintf (stderr,
       int i;
 
       fprintf (stderr,
-               "%s: frame rate is only %.1f!  "
-               "Turning off pan/fade to compensate...\n",
-               progname, fps);
+               "%s: only %.1f fps!  Turning off pan/fade to compensate...\n",
+               blurb(), fps);
       zoom = 100;
       fade_seconds = 0;
       ss->low_fps_p = True;
       zoom = 100;
       fade_seconds = 0;
       ss->low_fps_p = True;
@@ -961,7 +1137,7 @@ draw_slideshow (ModeInfo *mi)
   if (!ss->redisplay_needed_p)
     return;
   else if (debug_p && zoom == 100)
   if (!ss->redisplay_needed_p)
     return;
   else if (debug_p && zoom == 100)
-    fprintf (stderr, "%s: debug: drawing (%d)\n", progname,
+    fprintf (stderr, "%s: debug: drawing (%d)\n", blurb(),
              (int) (ss->now - ss->dawn_of_time));
 
   draw_quads (mi);
              (int) (ss->now - ss->dawn_of_time));
 
   draw_quads (mi);
index 9ee2cb2ad67acf0484bec31f2cff1fdb8f6e9115..534788b4c3d28601d5efaed223c004ed98357390 100644 (file)
@@ -164,13 +164,13 @@ static XrmOptionDescRec opts[] = {
     { "-statictime", ".statictime", XrmoptionSepArg, DEF_STATICTIME },
     { "-yangvel", ".yangvel", XrmoptionSepArg, DEF_YANGVEL },
     { "-zangvel", ".zangvel", XrmoptionSepArg, DEF_ZANGVEL },
     { "-statictime", ".statictime", XrmoptionSepArg, DEF_STATICTIME },
     { "-yangvel", ".yangvel", XrmoptionSepArg, DEF_YANGVEL },
     { "-zangvel", ".zangvel", XrmoptionSepArg, DEF_ZANGVEL },
-    { "-altcolour", ".altcolour", XrmoptionNoArg, (caddr_t) "True" },
-    { "-no-altcolour", ".altcolour", XrmoptionNoArg, (caddr_t) "False" },
-    { "-titles", ".titles", XrmoptionNoArg, (caddr_t) "True" },
-    { "-no-titles", ".titles", XrmoptionNoArg, (caddr_t) "False" },
+    { "-altcolour", ".altcolour", XrmoptionNoArg, "True" },
+    { "-no-altcolour", ".altcolour", XrmoptionNoArg, "False" },
+    { "-titles", ".titles", XrmoptionNoArg, "True" },
+    { "-no-titles", ".titles", XrmoptionNoArg, "False" },
     { "-zoom", ".zoom", XrmoptionSepArg, DEF_ZOOM },
     { "-zoom", ".zoom", XrmoptionSepArg, DEF_ZOOM },
-    { "-wireframe", ".wireframe", XrmoptionNoArg, (caddr_t) "true" },
-    { "-no-wireframe", ".wireframe", XrmoptionNoArg, (caddr_t) "false" },
+    { "-wireframe", ".wireframe", XrmoptionNoArg, "true" },
+    { "-no-wireframe", ".wireframe", XrmoptionNoArg, "false" },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
index 64934cb8986992322e97065a2b5ad8aa7854acea..a537c374299fe7f09e6e98fb1dfa0705bdfb67e1 100644 (file)
@@ -25,7 +25,7 @@ extern XtAppContext app;
 #define DEF_SPIN        "XYZ"
 #define DEF_WANDER      "True"
 
 #define DEF_SPIN        "XYZ"
 #define DEF_WANDER      "True"
 
-#define DEFAULTS       "*delay:        10000       \n" \
+#define DEFAULTS       "*delay:        20000       \n" \
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
                        "*spin:       " DEF_SPIN   "\n" \
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
                        "*spin:       " DEF_SPIN   "\n" \
@@ -301,9 +301,9 @@ init_text (ModeInfo *mi)
 
   {
     Bool spinx=False, spiny=False, spinz=False;
 
   {
     Bool spinx=False, spiny=False, spinz=False;
-    double spin_speed   = 1.0;
-    double wander_speed = 0.05;
-    double spin_accel   = 1.0;
+    double spin_speed   = 0.5;
+    double wander_speed = 0.02;
+    double spin_accel   = 0.5;
 
     char *s = do_spin;
     while (*s)
 
     char *s = do_spin;
     while (*s)
index 9cd46e0e69ea8f0606769e5a7f753b7e6475b8cf..b7a783d1a705fe53f9b46e9ce80b63c8214e9e4a 100644 (file)
@@ -10,6 +10,7 @@
 #else   /* for xscreensaver */
 # include "config.h"
 # include <GL/gl.h>
 #else   /* for xscreensaver */
 # include "config.h"
 # include <GL/gl.h>
+# undef APIENTRY
 # define APIENTRY /**/
 #endif
 
 # define APIENTRY /**/
 #endif
 
index 076858660b324fb8f7c5ab037fb36423428a26c2..fb389673c58de2b386ed128e0ec448ff749461d2 100644 (file)
@@ -10,6 +10,7 @@
 #else   /* for xscreensaver */
 # include "config.h"
 # include <GL/gl.h>
 #else   /* for xscreensaver */
 # include "config.h"
 # include <GL/gl.h>
+# undef APIENTRY
 # define APIENTRY /**/
 #endif
 
 # define APIENTRY /**/
 #endif
 
index 99e92317487e25373e5a456a86d94eb356e74a89..6000e563c7b6bb5fa14a1f030e64bac22b2e0b2c 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <stdlib.h>
 #include <stdio.h>
 
 #include <stdlib.h>
 #include <stdio.h>
+#include <string.h>
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <GL/gl.h>     /* only for GLfloat */
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <GL/gl.h>     /* only for GLfloat */
@@ -26,6 +27,7 @@
 extern char *progname;
 
 #include <X11/Xutil.h>
 extern char *progname;
 
 #include <X11/Xutil.h>
+#include <sys/time.h>
 
 #undef MAX
 #define MAX(a,b) ((a)>(b)?(a):(b))
 
 #undef MAX
 #define MAX(a,b) ((a)>(b)?(a):(b))
@@ -94,16 +96,10 @@ bigendian (void)
 }
 
 
 }
 
 
-/* Returns an XImage structure containing an image of the desktop.
-   (As a side-effect, that image *may* be painted onto the given Window.)
-   This XImage will be 32 bits per pixel, 8 each per R, G, and B, with the
-   extra byte set to 0xFF.
- */
-XImage *
-screen_to_ximage (Screen *screen, Window window, char **filename_return)
+static XImage *
+screen_to_ximage_1 (Screen *screen, Window window, Pixmap pixmap)
 {
   Display *dpy = DisplayOfScreen (screen);
 {
   Display *dpy = DisplayOfScreen (screen);
-  Pixmap pixmap = 0;
   XWindowAttributes xgwa;
   int win_width, win_height;
   int tex_width, tex_height;
   XWindowAttributes xgwa;
   int win_width, win_height;
   int tex_width, tex_height;
@@ -112,9 +108,6 @@ screen_to_ximage (Screen *screen, Window window, char **filename_return)
   win_width = xgwa.width;
   win_height = xgwa.height;
 
   win_width = xgwa.width;
   win_height = xgwa.height;
 
-  pixmap = XCreatePixmap(dpy, window, xgwa.width, xgwa.height, xgwa.depth);
-  load_random_image (screen, window, pixmap, filename_return);
-
   /* GL texture sizes must be powers of two. */
   tex_width  = to_pow2(win_width);
   tex_height = to_pow2(win_height);
   /* GL texture sizes must be powers of two. */
   tex_width  = to_pow2(win_width);
   tex_height = to_pow2(win_height);
@@ -246,3 +239,92 @@ screen_to_ximage (Screen *screen, Window window, char **filename_return)
     return ximage2;
   }
 }
     return ximage2;
   }
 }
+
+
+/* Returns an XImage structure containing an image of the desktop.
+   (As a side-effect, that image *may* be painted onto the given Window.)
+   This XImage will be 32 bits per pixel, 8 each per R, G, and B, with the
+   extra byte set to 0xFF.
+ */
+XImage *
+screen_to_ximage (Screen *screen, Window window, char **filename_return)
+{
+  Display *dpy = DisplayOfScreen (screen);
+  Pixmap pixmap = 0;
+  XWindowAttributes xgwa;
+
+  XGetWindowAttributes (dpy, window, &xgwa);
+  pixmap = XCreatePixmap (dpy, window, xgwa.width, xgwa.height, xgwa.depth);
+  load_random_image (screen, window, pixmap, filename_return);
+
+  return screen_to_ximage_1 (screen, window, pixmap);
+}
+
+
+typedef struct {
+  void (*callback) (Screen *, Window, XImage *,
+                    const char *name, void *closure, double cvt_time);
+  void *closure;
+  Pixmap pixmap;
+} img_closure;
+
+
+/* Returns the current time in seconds as a double.
+ */
+static double
+double_time (void)
+{
+  struct timeval now;
+# ifdef GETTIMEOFDAY_TWO_ARGS
+  struct timezone tzp;
+  gettimeofday(&now, &tzp);
+# else
+  gettimeofday(&now);
+# endif
+
+  return (now.tv_sec + ((double) now.tv_usec * 0.000001));
+}
+
+
+static void
+img_cb (Screen *screen, Window window, Drawable drawable,
+        const char *name, void *closure)
+{
+  XImage *ximage;
+  double cvt_time = double_time();
+  img_closure *data = (img_closure *) closure;
+  /* copy closure data to stack and free the original before running cb */
+  img_closure dd = *data;
+  memset (data, 0, sizeof (*data));
+  free (data);
+  data = 0;
+  ximage = screen_to_ximage_1 (screen, window, dd.pixmap);
+  dd.callback (screen, window, ximage, name, dd.closure, cvt_time);
+}
+
+
+/* Like the above, but loads the image in the background and runs the
+   given callback once it has been loaded.
+ */
+#include <X11/Intrinsic.h>
+extern XtAppContext app;
+
+void
+fork_screen_to_ximage (Screen *screen, Window window,
+                       void (*callback) (Screen *, Window, XImage *,
+                                         const char *name,
+                                         void *closure,
+                                         double cvt_time),
+                       void *closure)
+{
+  Display *dpy = DisplayOfScreen (screen);
+  XWindowAttributes xgwa;
+  img_closure *data = (img_closure *) calloc (1, sizeof(*data));
+  data->callback = callback;
+  data->closure  = closure;
+
+  XGetWindowAttributes (dpy, window, &xgwa);
+  data->pixmap = XCreatePixmap (dpy, window, xgwa.width, xgwa.height,
+                                xgwa.depth);
+  fork_load_random_image (screen, window, data->pixmap, img_cb, data);
+}
index 215e950456479387e6a196d20dbfa60b660a28cb..e892139615eda8f6eb565dae5b2bd09a0744e0a8 100644 (file)
@@ -1,5 +1,5 @@
 /* grab-ximage.c --- grab the screen to an XImage for use with OpenGL.
 /* grab-ximage.c --- grab the screen to an XImage for use with OpenGL.
- * xscreensaver, Copyright (c) 2001, 2003 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 2001, 2003, 2004 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
 XImage * screen_to_ximage (Screen *screen, Window window,
                            char **filename_return);
 
 XImage * screen_to_ximage (Screen *screen, Window window,
                            char **filename_return);
 
+/* Like the above, but loads the image in the background and runs the
+   given callback once it has been loaded.
+ */
+void fork_screen_to_ximage (Screen *screen, Window window,
+                            void (*callback) (Screen *, Window, XImage *,
+                                              const char *filename,
+                                              void *closure,
+                                              double cvt_time),
+                            void *closure);
+
 #endif /* __GRAB_XIMAGE_H__ */
 #endif /* __GRAB_XIMAGE_H__ */
index a41884d0aacf7e05160af5accdfd7505ae6f111d..18302d3ccbf270207e518612e9ac4766cd72e7a3 100644 (file)
@@ -171,39 +171,33 @@ static const float offset3d[4] = {
 static XrmOptionDescRec opts[] =
 {
   {"-mesh",            ".hypertorus.displayMode",  XrmoptionNoArg,
 static XrmOptionDescRec opts[] =
 {
   {"-mesh",            ".hypertorus.displayMode",  XrmoptionNoArg,
-                       (caddr_t)DISP_WIREFRAME_STR },
+                       DISP_WIREFRAME_STR },
   {"-surface",         ".hypertorus.displayMode",  XrmoptionNoArg,
   {"-surface",         ".hypertorus.displayMode",  XrmoptionNoArg,
-                       (caddr_t)DISP_SURFACE_STR },
+                       DISP_SURFACE_STR },
   {"-transparent",     ".hypertorus.displayMode",  XrmoptionNoArg,
   {"-transparent",     ".hypertorus.displayMode",  XrmoptionNoArg,
-                       (caddr_t)DISP_TRANSPARENT_STR },
+                       DISP_TRANSPARENT_STR },
   {"-solid",           ".hypertorus.appearance",   XrmoptionNoArg,
   {"-solid",           ".hypertorus.appearance",   XrmoptionNoArg,
-                       (caddr_t)APPEARANCE_SOLID_STR },
+                       APPEARANCE_SOLID_STR },
   {"-bands",           ".hypertorus.appearance",   XrmoptionNoArg,
   {"-bands",           ".hypertorus.appearance",   XrmoptionNoArg,
-                       (caddr_t)APPEARANCE_BANDS_STR },
+                       APPEARANCE_BANDS_STR },
   {"-twosided",        ".hypertorus.colors",       XrmoptionNoArg,
   {"-twosided",        ".hypertorus.colors",       XrmoptionNoArg,
-                       (caddr_t)COLORS_TWOSIDED_STR },
+                       COLORS_TWOSIDED_STR },
   {"-colorwheel",      ".hypertorus.colors",       XrmoptionNoArg,
   {"-colorwheel",      ".hypertorus.colors",       XrmoptionNoArg,
-                       (caddr_t)COLORS_COLORWHEEL_STR },
+                       COLORS_COLORWHEEL_STR },
   {"-perspective-3d",  ".hypertorus.projection3d", XrmoptionNoArg,
   {"-perspective-3d",  ".hypertorus.projection3d", XrmoptionNoArg,
-                       (caddr_t)DISP_3D_PERSPECTIVE_STR },
+                       DISP_3D_PERSPECTIVE_STR },
   {"-orthographic-3d", ".hypertorus.projection3d", XrmoptionNoArg,
   {"-orthographic-3d", ".hypertorus.projection3d", XrmoptionNoArg,
-                       (caddr_t)DISP_3D_ORTHOGRAPHIC_STR },
+                       DISP_3D_ORTHOGRAPHIC_STR },
   {"-perspective-4d",  ".hypertorus.projection4d", XrmoptionNoArg,
   {"-perspective-4d",  ".hypertorus.projection4d", XrmoptionNoArg,
-                       (caddr_t)DISP_4D_PERSPECTIVE_STR },
+                       DISP_4D_PERSPECTIVE_STR },
   {"-orthographic-4d", ".hypertorus.projection4d", XrmoptionNoArg,
   {"-orthographic-4d", ".hypertorus.projection4d", XrmoptionNoArg,
-                       (caddr_t)DISP_4D_ORTHOGRAPHIC_STR },
-  {"-speed-wx",        ".hypertorus.speedwx",      XrmoptionSepArg,
-                       (caddr_t)NULL },
-  {"-speed-wy",        ".hypertorus.speedwy",      XrmoptionSepArg,
-                       (caddr_t)NULL },
-  {"-speed-wz",        ".hypertorus.speedwz",      XrmoptionSepArg,
-                       (caddr_t)NULL },
-  {"-speed-xy",        ".hypertorus.speedxy",      XrmoptionSepArg,
-                       (caddr_t)NULL },
-  {"-speed-xz",        ".hypertorus.speedxz",      XrmoptionSepArg,
-                       (caddr_t)NULL },
-  {"-speed-yz",        ".hypertorus.speedyz",      XrmoptionSepArg,
-                       (caddr_t)NULL }
+                       DISP_4D_ORTHOGRAPHIC_STR },
+  {"-speed-wx",        ".hypertorus.speedwx",      XrmoptionSepArg, 0 },
+  {"-speed-wy",        ".hypertorus.speedwy",      XrmoptionSepArg, 0 },
+  {"-speed-wz",        ".hypertorus.speedwz",      XrmoptionSepArg, 0 },
+  {"-speed-xy",        ".hypertorus.speedxy",      XrmoptionSepArg, 0 },
+  {"-speed-xz",        ".hypertorus.speedxz",      XrmoptionSepArg, 0 },
+  {"-speed-yz",        ".hypertorus.speedyz",      XrmoptionSepArg, 0 }
 };
 
 static argtype vars[] =
 };
 
 static argtype vars[] =
index 62f3af5c987a08d6adc01e8e465919f0bd0a52e2..f2e5710c4ca6c805da1c4d3480dd584ee3ec2107 100644 (file)
@@ -138,19 +138,19 @@ typedef struct {
 static jigglystruct *jss = NULL;
 
 static XrmOptionDescRec opts[] = {
 static jigglystruct *jss = NULL;
 
 static XrmOptionDescRec opts[] = {
-    {"-random", ".Jigglypuff.random", XrmoptionNoArg, (caddr_t)"true"},
-    {"+random", ".Jigglypuff.random", XrmoptionNoArg, (caddr_t)"false"},
-    {"-tetra", ".Jigglypuff.tetra", XrmoptionNoArg, (caddr_t)"true"},
-    {"+tetra", ".Jigglypuff.tetra", XrmoptionNoArg, (caddr_t)"false"},
-    {"-spooky", ".Jigglypuff.spooky", XrmoptionSepArg, (caddr_t)"0"},
-    {"-color", ".Jigglypuff.color", XrmoptionSepArg, (caddr_t)DEF_COLOR},
-    {"-shininess", ".Jigglypuff.shininess", XrmoptionSepArg, (caddr_t)DEF_SHININESS},
-    {"-complexity", ".Jigglypuff.complexity", XrmoptionSepArg, (caddr_t)DEF_COMPLEXITY},
-    {"-speed", ".Jigglypuff.speed", XrmoptionSepArg, (caddr_t)DEF_SPEED},
-    {"-spherism", ".Jigglypuff.spherism", XrmoptionSepArg, (caddr_t)DEF_SPHERISM},
-    {"-hold", ".Jigglypuff.hold", XrmoptionSepArg, (caddr_t)DEF_HOLD},
-    {"-distance", "Jigglypuff.distance", XrmoptionSepArg, (caddr_t)DEF_DISTANCE},
-    {"-damping", "Jigglypuff.damping", XrmoptionSepArg, (caddr_t)DEF_DAMPING}
+    {"-random", ".Jigglypuff.random", XrmoptionNoArg, "true"},
+    {"+random", ".Jigglypuff.random", XrmoptionNoArg, "false"},
+    {"-tetra", ".Jigglypuff.tetra", XrmoptionNoArg, "true"},
+    {"+tetra", ".Jigglypuff.tetra", XrmoptionNoArg, "false"},
+    {"-spooky", ".Jigglypuff.spooky", XrmoptionSepArg, "0"},
+    {"-color", ".Jigglypuff.color", XrmoptionSepArg, DEF_COLOR},
+    {"-shininess", ".Jigglypuff.shininess", XrmoptionSepArg, DEF_SHININESS},
+    {"-complexity", ".Jigglypuff.complexity", XrmoptionSepArg, DEF_COMPLEXITY},
+    {"-speed", ".Jigglypuff.speed", XrmoptionSepArg, DEF_SPEED},
+    {"-spherism", ".Jigglypuff.spherism", XrmoptionSepArg, DEF_SPHERISM},
+    {"-hold", ".Jigglypuff.hold", XrmoptionSepArg, DEF_HOLD},
+    {"-distance", "Jigglypuff.distance", XrmoptionSepArg, DEF_DISTANCE},
+    {"-damping", "Jigglypuff.damping", XrmoptionSepArg, DEF_DAMPING}
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
index 8d508330ae0674879f7a5bc05cc330e81834ba77..2f3e7e74d9915c92512fb5bcf5c818927436a997 100644 (file)
  *
  */
 
  *
  */
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
 #ifdef STANDALONE
 # define PROGCLASS                                     "Klein"
 # define HACK_INIT                                     init_klein
 #ifdef STANDALONE
 # define PROGCLASS                                     "Klein"
 # define HACK_INIT                                     init_klein
@@ -89,7 +82,7 @@ static Bool do_spin;
 static Bool do_wander;
 
 static XrmOptionDescRec opts[] = {
 static Bool do_wander;
 
 static XrmOptionDescRec opts[] = {
-  {"-speed",   ".speed",    XrmoptionSepArg, (caddr_t) 0 },
+  {"-speed",   ".speed",    XrmoptionSepArg, 0 },
   { "-spin",   ".spin",   XrmoptionNoArg, "True" },
   { "+spin",   ".spin",   XrmoptionNoArg, "False" },
   { "-wander", ".wander", XrmoptionNoArg, "True" },
   { "-spin",   ".spin",   XrmoptionNoArg, "True" },
   { "+spin",   ".spin",   XrmoptionNoArg, "False" },
   { "-wander", ".wander", XrmoptionNoArg, "True" },
index 5acada4d7d876f3348bb682d8ef3e38a0b354933..fecf80982457d88df0b0b3d26a2d3ee8b05e7365 100644 (file)
@@ -78,7 +78,7 @@
 #define HACK_HANDLE_EVENT lament_handle_event
 #define EVENT_MASK     PointerMotionMask
 #define lament_opts    xlockmore_opts
 #define HACK_HANDLE_EVENT lament_handle_event
 #define EVENT_MASK     PointerMotionMask
 #define lament_opts    xlockmore_opts
-#define DEFAULTS       "*delay:        10000   \n"     \
+#define DEFAULTS       "*delay:        20000   \n"     \
                        "*showFPS:      False   \n"     \
                        "*wireframe:    False   \n"     \
                        "*texture:      True    \n"
                        "*showFPS:      False   \n"     \
                        "*wireframe:    False   \n"     \
                        "*texture:      True    \n"
@@ -93,8 +93,8 @@
 
 static int do_texture;
 static XrmOptionDescRec opts[] = {
 
 static int do_texture;
 static XrmOptionDescRec opts[] = {
-  {"-texture", ".lament.texture", XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture", ".lament.texture", XrmoptionNoArg, (caddr_t) "false" },
+  {"-texture", ".lament.texture", XrmoptionNoArg, "true" },
+  {"+texture", ".lament.texture", XrmoptionNoArg, "false" },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
index e3cedacdfd88adada3b6c61aa32e6185f4e03612..c3f12c084959b580d716002152ab750381899fcd 100644 (file)
@@ -36,7 +36,7 @@ Do not use texture maps.  This is boring and wrong.
 Only draw outlines.
 .TP 8
 .B \-delay \fImicroseconds\fP
 Only draw outlines.
 .TP 8
 .B \-delay \fImicroseconds\fP
-How long to pause between frames.  Default is 10000, or 0.01 second.
+How long to pause between frames.  Default is 20000, or 0.02 second.
 .TP 8
 .B \-fps
 Display a running tally of how many frames per second are being rendered.
 .TP 8
 .B \-fps
 Display a running tally of how many frames per second are being rendered.
index 149f193a66f04f6c9b88aa575f37662682e8df3e..3178113e5d2ffe94cdce5455aaa506c880a3ad9c 100644 (file)
@@ -93,19 +93,18 @@ extern XtAppContext app;
 #define DEF_BTEX       "(none)"
 #define DEF_TTEX       "(none)"
 
 #define DEF_BTEX       "(none)"
 #define DEF_TTEX       "(none)"
 
-#define DEFAULTS       "*delay:        10000       \n" \
+#define DEFAULTS       "*delay:        30000       \n" \
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
-                       "*geometry:     640x640     \n" \
+                       "*geometry:     600x900     \n" \
                        "*count:      " DEF_COUNT " \n" \
                        "*style:      " DEF_STYLE " \n" \
                        "*speed:      " DEF_SPEED " \n" \
                        "*spin:       " DEF_SPIN   "\n" \
                        "*wander:     " DEF_WANDER "\n" \
                        "*resolution: " DEF_RESOLUTION "\n" \
                        "*count:      " DEF_COUNT " \n" \
                        "*style:      " DEF_STYLE " \n" \
                        "*speed:      " DEF_SPEED " \n" \
                        "*spin:       " DEF_SPIN   "\n" \
                        "*wander:     " DEF_WANDER "\n" \
                        "*resolution: " DEF_RESOLUTION "\n" \
-                       "*smooth: "     DEF_SMOOTH "\n" \
+                       "*smooth: "     DEF_SMOOTH     "\n" \
                        "*impatient:  " DEF_IMPATIENT " \n" \
                        "*impatient:  " DEF_IMPATIENT " \n" \
-                       "*geometry:     600x900\n" \
                        "*lavaColor:  " DEF_LCOLOR "\n" \
                        "*fluidColor: " DEF_FCOLOR "\n" \
                        "*baseColor:  " DEF_BCOLOR "\n" \
                        "*lavaColor:  " DEF_LCOLOR "\n" \
                        "*fluidColor: " DEF_FCOLOR "\n" \
                        "*baseColor:  " DEF_BCOLOR "\n" \
index 2ad27ace060eb51a1dbbf3a57d91e1774ddaba9e..91fecbc680d7bd4331e8abcbf7708a18c63c945b 100644 (file)
@@ -68,7 +68,7 @@ think of this as being related to the the heat of the lightbulb in
 the base.  Default: 0.003.
 .TP 8
 .B \-delay \fIusecs\fP
 the base.  Default: 0.003.
 .TP 8
 .B \-delay \fIusecs\fP
-The delay between steps of the animation; default is 40000 (1/25th second.)
+The delay between steps of the animation; default is 30000 (0.03 second.)
 .TP 8
 .B \-resolution \fIinteger\fP
 The size of the grid from which the mesh is created that is used
 .TP 8
 .B \-resolution \fIinteger\fP
 The size of the grid from which the mesh is created that is used
index 4d40a8e955037f6ea0be8c75dc886ac1439c7665..f7166493d3c366904560a7e9ec587c52ec09e08a 100644 (file)
@@ -129,7 +129,7 @@ static XrmOptionDescRec opts[] = {
   { "-speed",  ".speed",  XrmoptionSepArg, 0 },
   { "-optimize", ".optimize", XrmoptionNoArg, "True" },
   { "+optimize", ".optimize", XrmoptionNoArg, "False" },
   { "-speed",  ".speed",  XrmoptionSepArg, 0 },
   { "-optimize", ".optimize", XrmoptionNoArg, "True" },
   { "+optimize", ".optimize", XrmoptionNoArg, "False" },
-  {"-depth",   ".maxDepth", XrmoptionSepArg, (caddr_t) 0 },
+  {"-depth",   ".maxDepth", XrmoptionSepArg, 0 },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
index ace7eef3839960c7d454e3e5e7444cbe1c6354b3..61250cc03be64bbb5cf3fa90ebb9a6571d88b52c 100644 (file)
 #include <stdlib.h>
 #include <sys/time.h>
 
 #include <stdlib.h>
 #include <sys/time.h>
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
 #ifdef STANDALONE
 # define PROGCLASS         "Screensaver"
 # define HACK_INIT         init_screensaver
 #ifdef STANDALONE
 # define PROGCLASS         "Screensaver"
 # define HACK_INIT         init_screensaver
index 97e7824ffcf7c78def6550eb3550174789847d25..9052f4bcc6c3e83ff08af3e20484ae960bd5ad5e 100644 (file)
@@ -115,10 +115,10 @@ static int  noants;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-  {(char *) "-solidmoebius", (char *) ".moebius.solidmoebius", XrmoptionNoArg, (caddr_t) "on"},
-  {(char *) "+solidmoebius", (char *) ".moebius.solidmoebius", XrmoptionNoArg, (caddr_t) "off"},
-  {(char *) "-noants", (char *) ".moebius.noants", XrmoptionNoArg, (caddr_t) "on"},
-  {(char *) "+noants", (char *) ".moebius.noants", XrmoptionNoArg, (caddr_t) "off"}
+  {"-solidmoebius", ".moebius.solidmoebius", XrmoptionNoArg, "on"},
+  {"+solidmoebius", ".moebius.solidmoebius", XrmoptionNoArg, "off"},
+  {"-noants", ".moebius.noants", XrmoptionNoArg, "on"},
+  {"+noants", ".moebius.noants", XrmoptionNoArg, "off"}
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
@@ -128,8 +128,8 @@ static argtype vars[] =
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
-       {(char *) "-/+solidmoebius", (char *) "select between a SOLID or a NET Moebius Strip"},
-       {(char *) "-/+noants", (char *) "turn on/off walking ants"}
+       {"-/+solidmoebius", "select between a SOLID or a NET Moebius Strip"},
+       {"-/+noants", "turn on/off walking ants"}
 };
 
 ModeSpecOpt moebius_opts =
 };
 
 ModeSpecOpt moebius_opts =
index 992ff7ca1417f4bdf198ef6fa0fb77e53729d84b..7cb88886718f012ad60f7322a9ba4df0d2156498 100644 (file)
@@ -77,8 +77,8 @@
 #include <sys/time.h>
 #include <GL/glu.h>
 
 #include <sys/time.h>
 #include <GL/glu.h>
 
-#define SPHERE_SLICES 16  /* how densely to render spheres */
-#define SPHERE_STACKS 10
+#define SPHERE_SLICES 24  /* how densely to render spheres */
+#define SPHERE_STACKS 12
 
 #define SMOOTH_TUBE       /* whether to have smooth or faceted tubes */
 
 
 #define SMOOTH_TUBE       /* whether to have smooth or faceted tubes */
 
@@ -166,6 +166,9 @@ typedef struct {
   int nmolecules;
   molecule *molecules;
 
   int nmolecules;
   molecule *molecules;
 
+  int mode;  /* 0 = normal, 1 = out, 2 = in */
+  int mode_tick;
+
   GLuint molecule_dlist;
 
   XFontStruct *xfont1, *xfont2;
   GLuint molecule_dlist;
 
   XFontStruct *xfont1, *xfont2;
@@ -1337,8 +1340,9 @@ init_molecule (ModeInfo *mi)
 
   {
     Bool spinx=False, spiny=False, spinz=False;
 
   {
     Bool spinx=False, spiny=False, spinz=False;
-    double spin_speed   = 2.0;
-    double wander_speed = 0.03;
+    double spin_speed   = 0.5;
+    double spin_accel   = 0.3;
+    double wander_speed = 0.01;
 
     char *s = do_spin;
     while (*s)
 
     char *s = do_spin;
     while (*s)
@@ -1359,7 +1363,7 @@ init_molecule (ModeInfo *mi)
     mc->rot = make_rotator (spinx ? spin_speed : 0,
                             spiny ? spin_speed : 0,
                             spinz ? spin_speed : 0,
     mc->rot = make_rotator (spinx ? spin_speed : 0,
                             spiny ? spin_speed : 0,
                             spinz ? spin_speed : 0,
-                            1.0,
+                            spin_accel,
                             do_wander ? wander_speed : 0,
                             (spinx && spiny && spinz));
     mc->trackball = gltrackball_init ();
                             do_wander ? wander_speed : 0,
                             (spinx && spiny && spinz));
     mc->trackball = gltrackball_init ();
@@ -1374,6 +1378,7 @@ init_molecule (ModeInfo *mi)
                                                "NoLabelThreshold");
   mc->wireframe_threshold = get_float_resource ("wireframeThreshold",
                                                 "WireframeThreshold");
                                                "NoLabelThreshold");
   mc->wireframe_threshold = get_float_resource ("wireframeThreshold",
                                                 "WireframeThreshold");
+  mc->mode = 0;
 
   if (wire)
     do_bonds = 1;
 
   if (wire)
     do_bonds = 1;
@@ -1468,11 +1473,54 @@ draw_labels (ModeInfo *mi)
 }
 
 
 }
 
 
+static void
+pick_new_molecule (ModeInfo *mi, time_t last)
+{
+  molecule_configuration *mc = &mcs[MI_SCREEN(mi)];
+
+  if (mc->nmolecules == 1)
+    {
+      if (last != 0) return;
+      mc->which = 0;
+    }
+  else if (last == 0)
+    {
+      mc->which = random() % mc->nmolecules;
+    }
+  else
+    {
+      int n = mc->which;
+      while (n == mc->which)
+        n = random() % mc->nmolecules;
+      mc->which = n;
+    }
+          
+  glNewList (mc->molecule_dlist, GL_COMPILE);
+  ensure_bounding_box_visible (mi);
+
+  do_labels = orig_do_labels;
+  do_bonds = orig_do_bonds;
+  MI_IS_WIREFRAME(mi) = orig_wire;
+
+  if (mc->molecule_size > mc->no_label_threshold)
+    do_labels = 0;
+  if (mc->molecule_size > mc->wireframe_threshold)
+    MI_IS_WIREFRAME(mi) = 1;
+
+  if (MI_IS_WIREFRAME(mi))
+    do_bonds = 1;
+
+  build_molecule (mi);
+  glEndList();
+}
+
+
 void
 draw_molecule (ModeInfo *mi)
 {
   static time_t last = 0;
   time_t now = time ((time_t *) 0);
 void
 draw_molecule (ModeInfo *mi)
 {
   static time_t last = 0;
   time_t now = time ((time_t *) 0);
+  GLfloat speed = 4.0;  /* speed at which the zoom out/in happens */
 
   molecule_configuration *mc = &mcs[MI_SCREEN(mi)];
   Display *dpy = MI_DISPLAY(mi);
 
   molecule_configuration *mc = &mcs[MI_SCREEN(mi)];
   Display *dpy = MI_DISPLAY(mi);
@@ -1481,48 +1529,48 @@ draw_molecule (ModeInfo *mi)
   if (!mc->glx_context)
     return;
 
   if (!mc->glx_context)
     return;
 
-  if (last + timeout <= now && /* randomize molecules every -timeout seconds */
-      !mc->button_down_p)
+  if (last == 0)
     {
     {
-      if (mc->nmolecules == 1)
-        {
-          if (last != 0) goto SKIP;
-          mc->which = 0;
-        }
-      else if (last == 0)
+      pick_new_molecule (mi, last);
+      last = now;
+    }
+  else if (mc->mode == 0)
+    {
+      static int tick = 0;
+      if (tick++ > 10)
         {
         {
-          mc->which = random() % mc->nmolecules;
+          time_t now = time((time_t *) 0);
+          if (last == 0) last = now;
+          tick = 0;
+
+          if (!mc->button_down_p &&
+              mc->nmolecules > 1 &&
+              last + timeout <= now)
+            {
+              /* randomize molecules every -timeout seconds */
+              mc->mode = 1;    /* go out */
+              mc->mode_tick = 10 * speed;
+              last = now;
+            }
         }
         }
-      else
+    }
+  else if (mc->mode == 1)   /* out */
+    {
+      if (--mc->mode_tick <= 0)
         {
         {
-          int n = mc->which;
-          while (n == mc->which)
-            n = random() % mc->nmolecules;
-          mc->which = n;
+          mc->mode_tick = 10 * speed;
+          mc->mode = 2;  /* go in */
+          pick_new_molecule (mi, last);
+          last = now;
         }
         }
-
-      last = now;
-
-
-      glNewList (mc->molecule_dlist, GL_COMPILE);
-      ensure_bounding_box_visible (mi);
-
-      do_labels = orig_do_labels;
-      do_bonds = orig_do_bonds;
-      MI_IS_WIREFRAME(mi) = orig_wire;
-
-      if (mc->molecule_size > mc->no_label_threshold)
-        do_labels = 0;
-      if (mc->molecule_size > mc->wireframe_threshold)
-        MI_IS_WIREFRAME(mi) = 1;
-
-      if (MI_IS_WIREFRAME(mi))
-        do_bonds = 1;
-
-      build_molecule (mi);
-      glEndList();
     }
     }
- SKIP:
+  else if (mc->mode == 2)   /* in */
+    {
+      if (--mc->mode_tick <= 0)
+        mc->mode = 0;  /* normal */
+    }
+  else
+    abort();
 
   glPushMatrix ();
   glScalef(1.1, 1.1, 1.1);
 
   glPushMatrix ();
   glScalef(1.1, 1.1, 1.1);
@@ -1543,8 +1591,19 @@ draw_molecule (ModeInfo *mi)
   }
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   }
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+  if (mc->mode != 0)
+    {
+      GLfloat s = (mc->mode == 1
+                   ? mc->mode_tick / (10 * speed)
+                   : ((10 * speed) - mc->mode_tick + 1) / (10 * speed));
+      glScalef (s, s, s);
+    }
+
   glCallList (mc->molecule_dlist);
   glCallList (mc->molecule_dlist);
-  draw_labels (mi);
+
+  if (mc->mode == 0)
+    draw_labels (mi);
 
   glPopMatrix ();
 
 
   glPopMatrix ();
 
index f2691fa8306c8115db183988d6ace909fb8de366..350acdee584e7588f3360a2659c97a2cdfdae186 100644 (file)
@@ -51,15 +51,6 @@ static const char sccsid[] = "@(#)morph3d.c  5.01 2001/03/01 xlockmore";
  *
  */
 
  *
  */
 
-#ifdef VMS
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-#endif
-
 #ifdef STANDALONE
 # define MODE_moebius
 # define PROGCLASS             "Morph3d"
 #ifdef STANDALONE
 # define MODE_moebius
 # define PROGCLASS             "Morph3d"
index 881651de90e720798f8c5cf7e19d44a81d4c63ac..65e2b579740cb8913a60e4a6f7873de027f8a5e4 100644 (file)
@@ -42,13 +42,6 @@ static const char sccsid[] = "@(#)pipes.c    4.07 97/11/24 xlockmore";
  * 29-Apr-97: Efficiency speed-ups by Marcelo F. Vianna
  */
 
  * 29-Apr-97: Efficiency speed-ups by Marcelo F. Vianna
  */
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
 #ifdef STANDALONE
 # define PROGCLASS                                     "Pipes"
 # define HACK_INIT                                     init_pipes
 #ifdef STANDALONE
 # define PROGCLASS                                     "Pipes"
 # define HACK_INIT                                     init_pipes
@@ -88,15 +81,15 @@ static Bool dbuf_p;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {"-factory", ".pipes.factory", XrmoptionSepArg, (caddr_t) NULL},
-       {"-fisheye", ".pipes.fisheye", XrmoptionNoArg, (caddr_t) "on"},
-       {"+fisheye", ".pipes.fisheye", XrmoptionNoArg, (caddr_t) "off"},
-       {"-tightturns", ".pipes.tightturns", XrmoptionNoArg, (caddr_t) "on"},
-       {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, (caddr_t) "off"},
-      {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, (caddr_t) "on"},
-      {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, (caddr_t) "off"},
-      {"-db", ".pipes.doubleBuffer", XrmoptionNoArg, (caddr_t) "on"},
-      {"+db", ".pipes.doubleBuffer", XrmoptionNoArg, (caddr_t) "off"},
+       {"-factory", ".pipes.factory", XrmoptionSepArg, 0},
+       {"-fisheye", ".pipes.fisheye", XrmoptionNoArg, "on"},
+       {"+fisheye", ".pipes.fisheye", XrmoptionNoArg, "off"},
+       {"-tightturns", ".pipes.tightturns", XrmoptionNoArg, "on"},
+       {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, "off"},
+      {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "on"},
+      {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "off"},
+      {"-db", ".pipes.doubleBuffer", XrmoptionNoArg, "on"},
+      {"+db", ".pipes.doubleBuffer", XrmoptionNoArg, "off"},
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
index e85559dbe6b8ecf0613aa03345073954a0e16cfb..cdc7888632ef4a05869ebd50ba1df5b307c7628e 100644 (file)
  *
  * This file contains the OpenGL side; computation of the polyhedra themselves
  * is in "polyhedra.c".
  *
  * This file contains the OpenGL side; computation of the polyhedra themselves
  * is in "polyhedra.c".
- *
- * KNOWN BUG:
- *
- *   The normals are wrong (inverted) on some faces of some of the duals
- *   (e.g., "Rhombicosacron".)  I can't figure out how to tell when the
- *   normal should be pointing the other way.
  */
 
 #include <X11/Intrinsic.h>
  */
 
 #include <X11/Intrinsic.h>
@@ -57,6 +51,8 @@ extern XtAppContext app;
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 #include "xlockmore.h"
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 #include "xlockmore.h"
+#include <GL/glu.h>
+
 #include "polyhedra.h"
 #include "colors.h"
 #include "rotator.h"
 #include "polyhedra.h"
 #include "colors.h"
 #include "rotator.h"
@@ -173,35 +169,39 @@ calc_normal (XYZ p, XYZ p1, XYZ p2)
 }
 
 
 }
 
 
+/* Calculate the normals at each vertex of a face, and use the sum to
+   decide which normal to assign to the entire face.  This also solves
+   problems caused by nonconvex faces, in most (but not all) cases.
+ */
 static void
 static void
-do_normal(GLfloat x1, GLfloat y1, GLfloat z1,
-         GLfloat x2, GLfloat y2, GLfloat z2,
-         GLfloat x3, GLfloat y3, GLfloat z3)
+kludge_normal (int n, const int *indices, const point *points)
 {
 {
-  XYZ p1, p2, p3, p;
-  p1.x = x1; p1.y = y1; p1.z = z1;
-  p2.x = x2; p2.y = y2; p2.z = z2;
-  p3.x = x3; p3.y = y3; p3.z = z3;
+  XYZ normal = { 0, 0, 0 };
+  XYZ p;
+  int i;
 
 
-  p = calc_normal (p1, p2, p3);
+  for (i = 0; i < n; ++i) {
+    int i1 = indices[i];
+    int i2 = indices[(i + 1) % n];
+    int i3 = indices[(i + 2) % n];
+    XYZ p1, p2, p3;
 
 
-  glNormal3f (p.x, p.y, p.z);
+    p1.x = points[i1].x; p1.y = points[i1].y; p1.z = points[i1].z;
+    p2.x = points[i2].x; p2.y = points[i2].y; p2.z = points[i2].z;
+    p3.x = points[i3].x; p3.y = points[i3].y; p3.z = points[i3].z;
 
 
-#ifdef DEBUG
-  /* Draw a line in the direction of this face's normal. */
-  {
-    glPushMatrix();
-    glTranslatef ((x1 + x2 + x3) / 3,
-                  (y1 + y2 + y3) / 3,
-                  (z1 + z2 + z3) / 3);
-    glScalef (0.5, 0.5, 0.5);
-    glBegin(GL_LINE_LOOP);
-    glVertex3f(0, 0, 0);
-    glVertex3f(p.x, p.y, p.z);
-    glEnd();
-    glPopMatrix();
+    p = calc_normal (p1, p2, p3);
+    normal.x += p.x;
+    normal.y += p.y;
+    normal.z += p.z;
+  }
+
+  normalize(&normal);
+  if (normal.x == 0 && normal.y == 0 && normal.z == 0) {
+    glNormal3f (p.x, p.y, p.z);
+  } else {
+    glNormal3f (normal.x, normal.y, normal.z);
   }
   }
-#endif /* DEBUG */
 }
 
 static void
 }
 
 static void
@@ -481,6 +481,14 @@ new_label (ModeInfo *mi)
 }
 
 
 }
 
 
+static void
+tess_error (GLenum errorCode)
+{
+  fprintf (stderr, "%s: tesselation error: %s\n",
+           progname, gluErrorString(errorCode));
+  exit (0);
+}
+
 static void
 new_polyhedron (ModeInfo *mi)
 {
 static void
 new_polyhedron (ModeInfo *mi)
 {
@@ -490,6 +498,15 @@ new_polyhedron (ModeInfo *mi)
   static GLfloat bcolor[4] = {0.0, 0.0, 0.0, 1.0};
   int i;
 
   static GLfloat bcolor[4] = {0.0, 0.0, 0.0, 1.0};
   int i;
 
+  /* Use the GLU polygon tesselator so that nonconvex faces are displayed
+     correctly (e.g., for the "pentagrammic concave deltohedron").
+   */
+  GLUtesselator *tobj = gluNewTess();
+  gluTessCallback (tobj, GLU_TESS_BEGIN,  (_GLUfuncptr) &glBegin);
+  gluTessCallback (tobj, GLU_TESS_END,    (_GLUfuncptr) &glEnd);
+  gluTessCallback (tobj, GLU_TESS_VERTEX, (_GLUfuncptr) &glVertex3dv);
+  gluTessCallback (tobj, GLU_TESS_ERROR,  (_GLUfuncptr) &tess_error);
+
   mi->polygon_count = 0;
 
   bp->ncolors = 128;
   mi->polygon_count = 0;
 
   bp->ncolors = 128;
@@ -526,30 +543,22 @@ new_polyhedron (ModeInfo *mi)
           glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor);
         }
 
           glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor);
         }
 
-      do_normal (p->points[f->points[0]].x,
-                 p->points[f->points[0]].y,
-                 p->points[f->points[0]].z,
-                 p->points[f->points[1]].x,
-                 p->points[f->points[1]].y,
-                 p->points[f->points[1]].z,
-                 p->points[f->points[2]].x,
-                 p->points[f->points[2]].y,
-                 p->points[f->points[2]].z);
-
-      glBegin (wire ? GL_LINE_LOOP :
-               f->npoints == 3 ? GL_TRIANGLES :
-               f->npoints == 4 ? GL_QUADS :
-               GL_POLYGON);
+      kludge_normal (f->npoints, f->points, p->points);
+      
+      gluTessBeginPolygon (tobj, 0);
+      gluTessBeginContour (tobj);
       for (j = 0; j < f->npoints; j++)
         {
           point *pp = &p->points[f->points[j]];
       for (j = 0; j < f->npoints; j++)
         {
           point *pp = &p->points[f->points[j]];
-          glVertex3f (pp->x, pp->y, pp->z);
+          gluTessVertex (tobj, &pp->x, &pp->x);
         }
         }
-      glEnd();
+      gluTessEndContour (tobj);
+      gluTessEndPolygon (tobj);
     }
   glEndList ();
 
   mi->polygon_count += p->nfaces;
     }
   glEndList ();
 
   mi->polygon_count += p->nfaces;
+  gluDeleteTess (tobj);
 }
 
 
 }
 
 
@@ -592,6 +601,11 @@ init_polyhedra (ModeInfo *mi)
       glEnable(GL_DEPTH_TEST);
       /* glEnable(GL_CULL_FACE); */
 
       glEnable(GL_DEPTH_TEST);
       /* glEnable(GL_CULL_FACE); */
 
+      /* We need two-sided lighting for polyhedra where both sides of
+         a face are simultaneously visible (e.g., the "X-hemi-Y-hedrons".)
+       */
+      glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
+
       glLightfv(GL_LIGHT0, GL_POSITION, pos);
       glLightfv(GL_LIGHT0, GL_AMBIENT,  amb);
       glLightfv(GL_LIGHT0, GL_DIFFUSE,  dif);
       glLightfv(GL_LIGHT0, GL_POSITION, pos);
       glLightfv(GL_LIGHT0, GL_AMBIENT,  amb);
       glLightfv(GL_LIGHT0, GL_DIFFUSE,  dif);
index aed4d743c06a8a30e3295ee9fae3869eff4b26c3..42017d6b5d10d461b28ae7825dfa7c8858731a43 100644 (file)
@@ -1737,7 +1737,7 @@ faces(Polyhedron *P)
     int j;
     for (j = 0; j < P->M; j++) {
       int i0, J;
     int j;
     for (j = 0; j < P->M; j++) {
       int i0, J;
-      int pap;/* papillon edge type */
+      int pap=0;/* papillon edge type */
       if (P->incid[j][i] != -1)
         continue;
       P->incid[j][i] = newF;
       if (P->incid[j][i] != -1)
         continue;
       P->incid[j][i] = newF;
@@ -2027,7 +2027,7 @@ construct_polyhedron (Polyhedron *P, Vector *v, int V, Vector *f, int F,
                       char *name, char *dual, char *class, char *star,
                       double azimuth, double elevation, double freeze)
 {
                       char *name, char *dual, char *class, char *star,
                       double azimuth, double elevation, double freeze)
 {
-  int i, j, k, l, ll, ii, *hit, facelets;
+  int i, j, k=0, l, ll, ii, *hit=0, facelets;
 
   polyhedron *result;
   Vector *temp;
 
   polyhedron *result;
   Vector *temp;
index 911efeb951b05bbed6bc59e6ea659bbec9c8f3d1..77aaa451862871c80c771114c77ae80d3121588a 100644 (file)
@@ -176,75 +176,58 @@ static const float offset3d[4] = {  0.0,  0.0, -2.0,  0.0 };
 static XrmOptionDescRec opts[] =
 {
   {"-mesh",            ".polytopes.displayMode",  XrmoptionNoArg,
 static XrmOptionDescRec opts[] =
 {
   {"-mesh",            ".polytopes.displayMode",  XrmoptionNoArg,
-                       (caddr_t)DISP_WIREFRAME_STR },
+                       DISP_WIREFRAME_STR },
   {"-surface",         ".polytopes.displayMode",  XrmoptionNoArg,
   {"-surface",         ".polytopes.displayMode",  XrmoptionNoArg,
-                       (caddr_t)DISP_SURFACE_STR },
+                       DISP_SURFACE_STR },
   {"-transparent",     ".polytopes.displayMode",  XrmoptionNoArg,
   {"-transparent",     ".polytopes.displayMode",  XrmoptionNoArg,
-                       (caddr_t)DISP_TRANSPARENT_STR },
+                       DISP_TRANSPARENT_STR },
   {"-random",          ".polytopes.polytope",     XrmoptionNoArg,
   {"-random",          ".polytopes.polytope",     XrmoptionNoArg,
-                       (caddr_t)POLYTOPE_RANDOM_STR },
+                       POLYTOPE_RANDOM_STR },
   {"-5-cell",          ".polytopes.polytope",     XrmoptionNoArg,
   {"-5-cell",          ".polytopes.polytope",     XrmoptionNoArg,
-                       (caddr_t)POLYTOPE_5_CELL_STR },
+                       POLYTOPE_5_CELL_STR },
   {"-8-cell",          ".polytopes.polytope",     XrmoptionNoArg,
   {"-8-cell",          ".polytopes.polytope",     XrmoptionNoArg,
-                       (caddr_t)POLYTOPE_8_CELL_STR },
+                       POLYTOPE_8_CELL_STR },
   {"-16-cell",         ".polytopes.polytope",     XrmoptionNoArg,
   {"-16-cell",         ".polytopes.polytope",     XrmoptionNoArg,
-                       (caddr_t)POLYTOPE_16_CELL_STR },
+                       POLYTOPE_16_CELL_STR },
   {"-24-cell",         ".polytopes.polytope",     XrmoptionNoArg,
   {"-24-cell",         ".polytopes.polytope",     XrmoptionNoArg,
-                       (caddr_t)POLYTOPE_24_CELL_STR },
+                       POLYTOPE_24_CELL_STR },
   {"-120-cell",        ".polytopes.polytope",     XrmoptionNoArg,
   {"-120-cell",        ".polytopes.polytope",     XrmoptionNoArg,
-                       (caddr_t)POLYTOPE_120_CELL_STR },
+                       POLYTOPE_120_CELL_STR },
   {"-600-cell",        ".polytopes.polytope",     XrmoptionNoArg,
   {"-600-cell",        ".polytopes.polytope",     XrmoptionNoArg,
-                       (caddr_t)POLYTOPE_600_CELL_STR },
+                       POLYTOPE_600_CELL_STR },
   {"-single-color",    ".polytopes.colors",       XrmoptionNoArg,
   {"-single-color",    ".polytopes.colors",       XrmoptionNoArg,
-                       (caddr_t)COLORS_SINGLE_STR },
+                       COLORS_SINGLE_STR },
   {"-depth-colors",    ".polytopes.colors",       XrmoptionNoArg,
   {"-depth-colors",    ".polytopes.colors",       XrmoptionNoArg,
-                       (caddr_t)COLORS_DEPTH_STR },
+                       COLORS_DEPTH_STR },
   {"-perspective-3d",  ".polytopes.projection3d", XrmoptionNoArg,
   {"-perspective-3d",  ".polytopes.projection3d", XrmoptionNoArg,
-                       (caddr_t)DISP_3D_PERSPECTIVE_STR },
+                       DISP_3D_PERSPECTIVE_STR },
   {"-orthographic-3d", ".polytopes.projection3d", XrmoptionNoArg,
   {"-orthographic-3d", ".polytopes.projection3d", XrmoptionNoArg,
-                       (caddr_t)DISP_3D_ORTHOGRAPHIC_STR },
+                       DISP_3D_ORTHOGRAPHIC_STR },
   {"-perspective-4d",  ".polytopes.projection4d", XrmoptionNoArg,
   {"-perspective-4d",  ".polytopes.projection4d", XrmoptionNoArg,
-                       (caddr_t)DISP_4D_PERSPECTIVE_STR },
+                       DISP_4D_PERSPECTIVE_STR },
   {"-orthographic-4d", ".polytopes.projection4d", XrmoptionNoArg,
   {"-orthographic-4d", ".polytopes.projection4d", XrmoptionNoArg,
-                       (caddr_t)DISP_4D_ORTHOGRAPHIC_STR },
-  {"-speed-wx",        ".polytopes.speedwx",      XrmoptionSepArg,
-                       (caddr_t)NULL },
-  {"-speed-wy",        ".polytopes.speedwy",      XrmoptionSepArg,
-                       (caddr_t)NULL },
-  {"-speed-wz",        ".polytopes.speedwz",      XrmoptionSepArg,
-                       (caddr_t)NULL },
-  {"-speed-xy",        ".polytopes.speedxy",      XrmoptionSepArg,
-                       (caddr_t)NULL },
-  {"-speed-xz",        ".polytopes.speedxz",      XrmoptionSepArg,
-                       (caddr_t)NULL },
-  {"-speed-yz",        ".polytopes.speedyz",      XrmoptionSepArg,
-                       (caddr_t)NULL }
+                       DISP_4D_ORTHOGRAPHIC_STR },
+  {"-speed-wx",        ".polytopes.speedwx",      XrmoptionSepArg, 0 },
+  {"-speed-wy",        ".polytopes.speedwy",      XrmoptionSepArg, 0 },
+  {"-speed-wz",        ".polytopes.speedwz",      XrmoptionSepArg, 0 },
+  {"-speed-xy",        ".polytopes.speedxy",      XrmoptionSepArg, 0 },
+  {"-speed-xz",        ".polytopes.speedxz",      XrmoptionSepArg, 0 },
+  {"-speed-yz",        ".polytopes.speedyz",      XrmoptionSepArg, 0 }
 };
 
 static argtype vars[] =
 {
 };
 
 static argtype vars[] =
 {
-  { (caddr_t *) &display_mode,  "displayMode",  "DisplayMode",
-    DEF_DISPLAY_MODE,  t_Int },
-  { (caddr_t *) &polytope,      "polytope",     "Polytope",
-    DEF_POLYTOPE,      t_Int },
-  { (caddr_t *) &color_mode,    "colors",       "Colors",
-    DEF_COLORS,        t_Int },
-  { (caddr_t *) &projection_3d, "projection3d", "Projection3d",
-    DEF_3D_PROJECTION, t_Int },
-  { (caddr_t *) &projection_4d, "projection4d", "Projection4d",
-    DEF_4D_PROJECTION, t_Int },
-  { (caddr_t *) &speed_wx,      "speedwx",      "Speedwx",
-    DEF_DALPHA,        t_Float},
-  { (caddr_t *) &speed_wy,      "speedwy",      "Speedwy",
-    DEF_DBETA,         t_Float},
-  { (caddr_t *) &speed_wz,      "speedwz",      "Speedwz",
-    DEF_DDELTA,        t_Float},
-  { (caddr_t *) &speed_xy,      "speedxy",      "Speedxy",
-    DEF_DZETA,         t_Float},
-  { (caddr_t *) &speed_xz,      "speedxz",      "Speedxz",
-    DEF_DETA,          t_Float},
-  { (caddr_t *) &speed_yz,      "speedyz",      "Speedyz",
-    DEF_DTHETA,        t_Float}
+  { &display_mode,  "displayMode",  "DisplayMode", DEF_DISPLAY_MODE,  t_Int },
+  { &polytope,      "polytope",     "Polytope",    DEF_POLYTOPE,      t_Int },
+  { &color_mode,    "colors",       "Colors",      DEF_COLORS,        t_Int },
+  { &projection_3d, "projection3d", "Projection3d",DEF_3D_PROJECTION, t_Int },
+  { &projection_4d, "projection4d", "Projection4d",DEF_4D_PROJECTION, t_Int },
+  { &speed_wx,      "speedwx",      "Speedwx",     DEF_DALPHA,        t_Float},
+  { &speed_wy,      "speedwy",      "Speedwy",     DEF_DBETA,         t_Float},
+  { &speed_wz,      "speedwz",      "Speedwz",     DEF_DDELTA,        t_Float},
+  { &speed_xy,      "speedxy",      "Speedxy",     DEF_DZETA,         t_Float},
+  { &speed_xz,      "speedxz",      "Speedxz",     DEF_DETA,          t_Float},
+  { &speed_yz,      "speedyz",      "Speedyz",     DEF_DTHETA,        t_Float}
 };
 
 static OptionStruct desc[] =
 };
 
 static OptionStruct desc[] =
index 1face865e3ff8477117f8b89e37d68bea29b9084..cd4c80bac81348f6f1bb76152b496525e3df5c29 100644 (file)
 static int eye;
 
 static XrmOptionDescRec opts[] = {
 static int eye;
 
 static XrmOptionDescRec opts[] = {
-  {(char *) "-eye", 
-   (char *) ".providence.eye", XrmoptionNoArg, (caddr_t) "on"},
-
-  {(char *) "+eye", 
-   (char *) ".providence.eye", XrmoptionNoArg, (caddr_t) "off"}
+  {"-eye", ".providence.eye", XrmoptionNoArg, "on"},
+  {"+eye", ".providence.eye", XrmoptionNoArg, "off"}
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
-  {(caddr_t *) &eye, 
-   (char *) "eye", (char *) "Eye", (char *) DEF_EYE, t_Bool}
+  {&eye, "eye", "Eye", DEF_EYE, t_Bool}
 };
 
 static OptionStruct desc[] = {
 };
 
 static OptionStruct desc[] = {
-  {(char *) "-/+eye", 
-   (char *) "turn on/off eye of providence"}
+  {"-/+eye", "turn on/off eye of providence"}
 };
 
 ModeSpecOpt providence_opts = {
 };
 
 ModeSpecOpt providence_opts = {
index b3f0cf41fd79d1b9fc64c27ba9c78154ae85a848..c344c82bbb6eca843b03e6ff5839b965fd6a2c2f 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 
 #include <stdio.h>
 #include <stdlib.h>
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
 #ifdef STANDALONE
 # define PROGCLASS                                             "Screensaver"
 # define HACK_INIT                                             init_screensaver
 #ifdef STANDALONE
 # define PROGCLASS                                             "Screensaver"
 # define HACK_INIT                                             init_screensaver
@@ -133,26 +126,26 @@ static char *which_image;
 
 
 static XrmOptionDescRec opts[] = {
 
 
 static XrmOptionDescRec opts[] = {
-  {"-quads",   ".pulsar.quads",   XrmoptionSepArg, (caddr_t) NULL },
-  {"-light",   ".pulsar.light",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+light",   ".pulsar.light",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-wire",   ".pulsar.wire",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+wire",   ".pulsar.wire",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-blend",   ".pulsar.blend",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+blend",   ".pulsar.blend",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-fog",   ".pulsar.fog",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+fog",   ".pulsar.fog",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-antialias",   ".pulsar.antialias",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+antialias",   ".pulsar.antialias",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-texture",   ".pulsar.texture",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture",   ".pulsar.texture",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-texture_quality",   ".pulsar.texture_quality",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+texture_quality",   ".pulsar.texture_quality",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-mipmap",   ".pulsar.mipmap",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+mipmap",   ".pulsar.mipmap",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-do_depth",   ".pulsar.doDepth",   XrmoptionNoArg, (caddr_t) "true" },
-  {"+do_depth",   ".pulsar.doDepth",   XrmoptionNoArg, (caddr_t) "false" },
-  {"-image",   ".pulsar.image",  XrmoptionSepArg, (caddr_t) NULL },
+  {"-quads",   ".pulsar.quads",   XrmoptionSepArg, 0 },
+  {"-light",   ".pulsar.light",   XrmoptionNoArg, "true" },
+  {"+light",   ".pulsar.light",   XrmoptionNoArg, "false" },
+  {"-wire",   ".pulsar.wire",   XrmoptionNoArg, "true" },
+  {"+wire",   ".pulsar.wire",   XrmoptionNoArg, "false" },
+  {"-blend",   ".pulsar.blend",   XrmoptionNoArg, "true" },
+  {"+blend",   ".pulsar.blend",   XrmoptionNoArg, "false" },
+  {"-fog",   ".pulsar.fog",   XrmoptionNoArg, "true" },
+  {"+fog",   ".pulsar.fog",   XrmoptionNoArg, "false" },
+  {"-antialias",   ".pulsar.antialias",   XrmoptionNoArg, "true" },
+  {"+antialias",   ".pulsar.antialias",   XrmoptionNoArg, "false" },
+  {"-texture",   ".pulsar.texture",   XrmoptionNoArg, "true" },
+  {"+texture",   ".pulsar.texture",   XrmoptionNoArg, "false" },
+  {"-texture_quality",   ".pulsar.texture_quality",   XrmoptionNoArg, "true" },
+  {"+texture_quality",   ".pulsar.texture_quality",   XrmoptionNoArg, "false" },
+  {"-mipmap",   ".pulsar.mipmap",   XrmoptionNoArg, "true" },
+  {"+mipmap",   ".pulsar.mipmap",   XrmoptionNoArg, "false" },
+  {"-do_depth",   ".pulsar.doDepth",   XrmoptionNoArg, "true" },
+  {"+do_depth",   ".pulsar.doDepth",   XrmoptionNoArg, "false" },
+  {"-image",   ".pulsar.image",  XrmoptionSepArg, 0 },
 };
 
 
 };
 
 
index 0c893af7ee452b435c0c21533334f3aa95157acb..e6e0644660cbaab296a14ab7cc13b922e8c5217d 100644 (file)
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 static XrmOptionDescRec opts[] = {
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 static XrmOptionDescRec opts[] = {
-  {"+rotate", ".queens.rotate", XrmoptionNoArg, (caddr_t) "false" },
-  {"-rotate", ".queens.rotate", XrmoptionNoArg, (caddr_t) "true" },
-  {"+flat", ".queens.flat", XrmoptionNoArg, (caddr_t) "false" },
-  {"-flat", ".queens.flat", XrmoptionNoArg, (caddr_t) "true" },
+  {"+rotate", ".queens.rotate", XrmoptionNoArg, "false" },
+  {"-rotate", ".queens.rotate", XrmoptionNoArg, "true" },
+  {"+flat", ".queens.flat", XrmoptionNoArg, "false" },
+  {"-flat", ".queens.flat", XrmoptionNoArg, "true" },
 };
 
 int rotate, wire, clearbits, flat;
 };
 
 int rotate, wire, clearbits, flat;
index 1f2be0abee1884f97c1e912d5b78c3f8adada387..ee21be9a4ecffba1cf3b61b34ada63cd27960bbf 100644 (file)
@@ -103,14 +103,6 @@ static const char sccsid[] = "@(#)rubik.c  5.01 2001/03/01 xlockmore";
  *  BOTTOM => X, Z
  */
 
  *  BOTTOM => X, Z
  */
 
-#ifdef VMS
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-#include <X11/Intrinsic.h>
-#endif
-
 #ifdef STANDALONE
 # define MODE_rubik
 # define PROGCLASS     "Rubik"
 #ifdef STANDALONE
 # define MODE_rubik
 # define PROGCLASS     "Rubik"
@@ -143,11 +135,11 @@ static Bool hideshuffling;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-        {(char *) "-sizex", (char *) ".rubik.sizex", XrmoptionSepArg, (caddr_t) NULL},
-        {(char *) "-sizey", (char *) ".rubik.sizey", XrmoptionSepArg, (caddr_t) NULL},
-        {(char *) "-sizez", (char *) ".rubik.sizez", XrmoptionSepArg, (caddr_t) NULL},
-       {(char *) "-hideshuffling", (char *) ".rubik.hideshuffling", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+hideshuffling", (char *) ".rubik.hideshuffling", XrmoptionNoArg, (caddr_t) "off"}
+        {"-sizex", ".rubik.sizex", XrmoptionSepArg, 0},
+        {"-sizey", ".rubik.sizey", XrmoptionSepArg, 0},
+        {"-sizez", ".rubik.sizez", XrmoptionSepArg, 0},
+       {"-hideshuffling", ".rubik.hideshuffling", XrmoptionNoArg, "on"},
+       {"+hideshuffling", ".rubik.hideshuffling", XrmoptionNoArg, "off"}
 };
 
 static argtype vars[] =
 };
 
 static argtype vars[] =
@@ -160,10 +152,10 @@ static argtype vars[] =
 
 static OptionStruct desc[] =
 {
 
 static OptionStruct desc[] =
 {
-       {(char *) "-sizex num", (char *) "number of cubies along x axis (overrides size)"},
-       {(char *) "-sizey num", (char *) "number of cubies along y axis (overrides size)"},
-       {(char *) "-sizez num", (char *) "number of cubies along z axis (overrides size)"},
-       {(char *) "-/+hideshuffling", (char *) "turn on/off hidden shuffle phase"}
+       {"-sizex num", "number of cubies along x axis (overrides size)"},
+       {"-sizey num", "number of cubies along y axis (overrides size)"},
+       {"-sizez num", "number of cubies along z axis (overrides size)"},
+       {"-/+hideshuffling", "turn on/off hidden shuffle phase"}
 };
 
 ModeSpecOpt rubik_opts =
 };
 
 ModeSpecOpt rubik_opts =
index 93c24c5dd4a40491fc6a660f925d795f3144fdab..2eb2bcd92708f030877cd843df44ec741254ce45 100644 (file)
@@ -23,7 +23,7 @@ static const char sccsid[] = "@(#)sballs.c    5.02 2001/03/10 xlockmore";
  * Mustata Bogdan (LoneRunner) <lonerunner@planetquake.com>
  * and can be found at http://www.cfxweb.net/lonerunner/
  *
  * Mustata Bogdan (LoneRunner) <lonerunner@planetquake.com>
  * and can be found at http://www.cfxweb.net/lonerunner/
  *
- * Eric Lassauge  (November-07-2000) <lassauge@mail.dotcom.fr>
+ * Eric Lassauge  (November-07-2000) <lassauge@users.sourceforge.net>
  *                                 http://lassauge.free.fr/linux.html
  *
  * REVISION HISTORY:
  *                                 http://lassauge.free.fr/linux.html
  *
  * REVISION HISTORY:
@@ -46,9 +46,9 @@ static const char sccsid[] = "@(#)sballs.c    5.02 2001/03/10 xlockmore";
 #define HACK_DRAW      draw_sballs
 #define HACK_RESHAPE   reshape_sballs
 #define sballs_opts    xlockmore_opts
 #define HACK_DRAW      draw_sballs
 #define HACK_RESHAPE   reshape_sballs
 #define sballs_opts    xlockmore_opts
-#define DEFAULTS       "*delay:        10000 \n" \
+#define DEFAULTS       "*delay:        30000 \n" \
                        "*size:             0 \n" \
                        "*size:             0 \n" \
-                       "*cycles:          10 \n" \
+                       "*cycles:           4 \n" \
                        "*object:           0 \n" \
                        "*trackmouse:   False \n" \
                        "*showFPS:      False \n" \
                        "*object:           0 \n" \
                        "*trackmouse:   False \n" \
                        "*showFPS:      False \n" \
@@ -98,19 +98,18 @@ static const char sccsid[] = "@(#)sballs.c  5.02 2001/03/10 xlockmore";
 /* Manage option vars */
 #define DEF_TEXTURE    "True"
 #define DEF_TRACKMOUSE  "False"
 /* Manage option vars */
 #define DEF_TEXTURE    "True"
 #define DEF_TRACKMOUSE  "False"
-#define DEF_OBJECT     "2"
-#define DEF_OBJECT_INDX        2
+#define DEF_OBJECT     "0"
 static Bool do_texture;
 static Bool do_trackmouse;
 static int  object;
 static int  spheres;
 
 static XrmOptionDescRec opts[] = {
 static Bool do_texture;
 static Bool do_trackmouse;
 static int  object;
 static int  spheres;
 
 static XrmOptionDescRec opts[] = {
-    {(char *) "-texture", (char *) ".sballs.texture", XrmoptionNoArg, (caddr_t) "on"},
-    {(char *) "+texture", (char *) ".sballs.texture", XrmoptionNoArg, (caddr_t) "off"},
-    {(char *) "-trackmouse", (char *) ".sballs.trackmouse", XrmoptionNoArg, (caddr_t) "on"},
-    {(char *) "+trackmouse", (char *) ".sballs.trackmouse", XrmoptionNoArg, (caddr_t) "off"},
-    {(char *) "-object", (char *) ".sballs.object", XrmoptionSepArg, (caddr_t) NULL},
+    {"-texture", ".sballs.texture", XrmoptionNoArg, "on"},
+    {"+texture", ".sballs.texture", XrmoptionNoArg, "off"},
+    {"-trackmouse", ".sballs.trackmouse", XrmoptionNoArg, "on"},
+    {"+trackmouse", ".sballs.trackmouse", XrmoptionNoArg, "off"},
+    {"-object", ".sballs.object", XrmoptionSepArg, 0},
 
 };
 
 
 };
 
@@ -122,11 +121,11 @@ static argtype vars[] = {
 };
 
 static OptionStruct desc[] = {
 };
 
 static OptionStruct desc[] = {
-    /*{(char *) "-count spheres", (char *) "set number of spheres"},*/
-    /*{(char *) "-cycles speed", (char *) "set ball speed value"},*/
-    {(char *) "-/+texture", (char *) "turn on/off texturing"},
-    {(char *) "-/+trackmouse", (char *) "turn on/off the tracking of the mouse"},
-    {(char *) "-object num", (char *) "number of the 3D object (0 means random)"},
+    /*{"-count spheres", "set number of spheres"},*/
+    /*{"-cycles speed", "set ball speed value"},*/
+    {"-/+texture", "turn on/off texturing"},
+    {"-/+trackmouse", "turn on/off the tracking of the mouse"},
+    {"-object num", "number of the 3D object (0 means random)"},
 };
 
 ModeSpecOpt sballs_opts =
 };
 
 ModeSpecOpt sballs_opts =
@@ -516,8 +515,8 @@ static void drawSphere(ModeInfo * mi,int sphere_num)
   float x = polygons[object].v[sphere_num][0];
   float y = polygons[object].v[sphere_num][1];
   float z = polygons[object].v[sphere_num][2];
   float x = polygons[object].v[sphere_num][0];
   float y = polygons[object].v[sphere_num][1];
   float z = polygons[object].v[sphere_num][2];
-  int numMajor = 10;
-  int numMinor = 10;
+  int numMajor = 15;
+  int numMinor = 30;
   float radius = sb->radius[sphere_num];
   double majorStep = (M_PI / numMajor);
   double minorStep = (2.0 * M_PI / numMinor);
   float radius = sb->radius[sphere_num];
   double majorStep = (M_PI / numMajor);
   double minorStep = (2.0 * M_PI / numMinor);
@@ -550,6 +549,8 @@ static void drawSphere(ModeInfo * mi,int sphere_num)
       glNormal3f((x * r1) / radius, (y * r1) / radius, z1 / radius);
       glTexCoord2f(j / (GLfloat) numMinor, (i + 1) / (GLfloat) numMajor);
       glVertex3f(x * r1, y * r1, z1);
       glNormal3f((x * r1) / radius, (y * r1) / radius, z1 / radius);
       glTexCoord2f(j / (GLfloat) numMinor, (i + 1) / (GLfloat) numMajor);
       glVertex3f(x * r1, y * r1, z1);
+
+      mi->polygon_count++;
     }
     glEnd();
   }
     }
     glEnd();
   }
@@ -600,6 +601,8 @@ static void Draw(ModeInfo * mi)
     sballsstruct *sb = &sballs[MI_SCREEN(mi)];
     int sphere;
 
     sballsstruct *sb = &sballs[MI_SCREEN(mi)];
     int sphere;
 
+    mi->polygon_count = 0;
+
     if (do_trackmouse && !MI_IS_ICONIC(mi))
        trackmouse(mi);
 
     if (do_trackmouse && !MI_IS_ICONIC(mi))
        trackmouse(mi);
 
@@ -631,6 +634,7 @@ static void Draw(ModeInfo * mi)
     glNormal3f(0, 0, 1); glTexCoord2f(1,0); glVertex3f(-8, 4.1, -4);
     glNormal3f(0, 0, 1); glTexCoord2f(1,1); glVertex3f(-8, -4.1, -4);
     glEnd();
     glNormal3f(0, 0, 1); glTexCoord2f(1,0); glVertex3f(-8, 4.1, -4);
     glNormal3f(0, 0, 1); glTexCoord2f(1,1); glVertex3f(-8, -4.1, -4);
     glEnd();
+    mi->polygon_count++;
 
     /* rotate the mouse */
     glRotatef(sb->rot[0], 1.0f, 0.0f, 0.0f);
 
     /* rotate the mouse */
     glRotatef(sb->rot[0], 1.0f, 0.0f, 0.0f);
@@ -690,10 +694,8 @@ static void Init(ModeInfo * mi)
     sb->speed = MI_CYCLES(mi);
 
     /* initialise object number */
     sb->speed = MI_CYCLES(mi);
 
     /* initialise object number */
-    if (object == 0)
-       object = NRAND(MAX_OBJ);
     if ((object == 0) || (object > MAX_OBJ))
     if ((object == 0) || (object > MAX_OBJ))
-       object = DEF_OBJECT_INDX;
+      object = NRAND(MAX_OBJ-1)+1;
     object--;
 
     /* initialise sphere number */
     object--;
 
     /* initialise sphere number */
@@ -851,10 +853,8 @@ void change_sballs(ModeInfo * mi)
        return;
 
     /* initialise object number */
        return;
 
     /* initialise object number */
-    if (object == 0)
-       object = NRAND(MAX_OBJ);
     if ((object == 0) || (object > MAX_OBJ))
     if ((object == 0) || (object > MAX_OBJ))
-       object = DEF_OBJECT_INDX;
+      object = NRAND(MAX_OBJ-1)+1;
     object--;
 
     /* correct sphere number */
     object--;
 
     /* correct sphere number */
index d8de99184f537e72a344423c9e015d2ac037c88d..1fb4a47699d5e1b70b6743575a255c13d71c5c7c 100644 (file)
@@ -134,4 +134,4 @@ and can be found at http://www.cfxweb.net/lonerunner/
 
 .SH AUTHOR
 Mustata Bogdan (LoneRunner) <lonerunner@planetquake.com>
 
 .SH AUTHOR
 Mustata Bogdan (LoneRunner) <lonerunner@planetquake.com>
-Eric Lassauge <lassauge@mail.dotcom.fr>
+Eric Lassauge <lassauge@users.sourceforge.net>
index 3658db6a8ca258e5847af96e05ab5773f52a6a7c..867c2c9813cc25d1abd8511fe202f22140d7cdba 100644 (file)
@@ -29,7 +29,7 @@ static const char sccsid[] = "@(#)shark.c     1.2 98/06/16 xlockmore";
  * Thanks goes also to Brian Paul for making it possible and inexpensive
  * to use OpenGL at home.
  *
  * Thanks goes also to Brian Paul for making it possible and inexpensive
  * to use OpenGL at home.
  *
- * My e-mail address is lassauge@sagem.fr
+ * My e-mail address is lassauge@users.sourceforge.net
  *
  * Eric Lassauge  (May-13-1998)
  *
  *
  * Eric Lassauge  (May-13-1998)
  *
index b061bf23f47f910dff90167be11b7cfccb9ed574..92781504720ccf82ba622a7ec85233fa625ff11c 100644 (file)
@@ -26,13 +26,6 @@ static const char sccsid[] = "@(#)sierpinski3D.c     00.01 99/11/04 xlockmore";
  *                  random scattering of points.
  */
 
  *                  random scattering of points.
  */
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
 #ifdef STANDALONE
 # define PROGCLASS                                     "Sierpinski3D"
 # define HACK_INIT                                     init_gasket
 #ifdef STANDALONE
 # define PROGCLASS                                     "Sierpinski3D"
 # define HACK_INIT                                     init_gasket
@@ -76,8 +69,8 @@ static Bool do_spin;
 static Bool do_wander;
 
 static XrmOptionDescRec opts[] = {
 static Bool do_wander;
 
 static XrmOptionDescRec opts[] = {
-  {"-depth", ".sierpinski3d.maxDepth", XrmoptionSepArg, (caddr_t) 0 },
-  {"-speed", ".sierpinski3d.speed",    XrmoptionSepArg, (caddr_t) 0 },
+  {"-depth", ".sierpinski3d.maxDepth", XrmoptionSepArg, 0 },
+  {"-speed", ".sierpinski3d.speed",    XrmoptionSepArg, 0 },
   { "-spin",   ".spin",   XrmoptionNoArg, "True" },
   { "+spin",   ".spin",   XrmoptionNoArg, "False" },
   { "-wander", ".wander", XrmoptionNoArg, "True" },
   { "-spin",   ".spin",   XrmoptionNoArg, "True" },
   { "+spin",   ".spin",   XrmoptionNoArg, "False" },
   { "-wander", ".wander", XrmoptionNoArg, "True" },
index 5e326aaf4459af6ebff93a699f3d4379ecbecd12..60f766a72514e576e63a11aa105901f098e0dc79 100644 (file)
@@ -141,24 +141,24 @@ static char *alignment_str;
 static int alignment;
 
 static XrmOptionDescRec opts[] = {
 static int alignment;
 
 static XrmOptionDescRec opts[] = {
-  {"-program",   ".starwars.program",  XrmoptionSepArg, (caddr_t) 0 },
-  {"-lines",     ".starwars.lines",    XrmoptionSepArg, (caddr_t) 0 },
-  {"-steps",     ".starwars.steps",    XrmoptionSepArg, (caddr_t) 0 },
-  {"-spin",      ".starwars.spin",     XrmoptionSepArg, (caddr_t) 0 },
-  {"-size",     ".starwars.fontSize", XrmoptionSepArg, (caddr_t) 0 },
-  {"-columns",  ".starwars.columns",  XrmoptionSepArg, (caddr_t) 0 },
-  {"-smooth",    ".starwars.smooth",   XrmoptionNoArg,  (caddr_t) "True" },
-  {"-no-smooth", ".starwars.smooth",   XrmoptionNoArg,  (caddr_t) "False" },
-  {"-thick",     ".starwars.thick",    XrmoptionNoArg,  (caddr_t) "True" },
-  {"-no-thick",  ".starwars.thick",    XrmoptionNoArg,  (caddr_t) "False" },
-  {"-fade",      ".starwars.fade",     XrmoptionNoArg,  (caddr_t) "True" },
-  {"-no-fade",   ".starwars.fade",     XrmoptionNoArg,  (caddr_t) "False" },
-  {"-wrap",     ".starwars.lineWrap", XrmoptionNoArg,  (caddr_t) "True" },
-  {"-no-wrap",  ".starwars.lineWrap", XrmoptionNoArg,  (caddr_t) "False" },
-  {"-nowrap",   ".starwars.lineWrap", XrmoptionNoArg,  (caddr_t) "False" },
-  {"-left",      ".starwars.alignment",XrmoptionNoArg,  (caddr_t) "Left" },
-  {"-right",     ".starwars.alignment",XrmoptionNoArg,  (caddr_t) "Right" },
-  {"-center",    ".starwars.alignment",XrmoptionNoArg,  (caddr_t) "Center" },
+  {"-program",   ".starwars.program",  XrmoptionSepArg, 0 },
+  {"-lines",     ".starwars.lines",    XrmoptionSepArg, 0 },
+  {"-steps",     ".starwars.steps",    XrmoptionSepArg, 0 },
+  {"-spin",      ".starwars.spin",     XrmoptionSepArg, 0 },
+  {"-size",     ".starwars.fontSize", XrmoptionSepArg, 0 },
+  {"-columns",  ".starwars.columns",  XrmoptionSepArg, 0 },
+  {"-smooth",    ".starwars.smooth",   XrmoptionNoArg,  "True" },
+  {"-no-smooth", ".starwars.smooth",   XrmoptionNoArg,  "False" },
+  {"-thick",     ".starwars.thick",    XrmoptionNoArg,  "True" },
+  {"-no-thick",  ".starwars.thick",    XrmoptionNoArg,  "False" },
+  {"-fade",      ".starwars.fade",     XrmoptionNoArg,  "True" },
+  {"-no-fade",   ".starwars.fade",     XrmoptionNoArg,  "False" },
+  {"-wrap",     ".starwars.lineWrap", XrmoptionNoArg,  "True" },
+  {"-no-wrap",  ".starwars.lineWrap", XrmoptionNoArg,  "False" },
+  {"-nowrap",   ".starwars.lineWrap", XrmoptionNoArg,  "False" },
+  {"-left",      ".starwars.alignment",XrmoptionNoArg,  "Left" },
+  {"-right",     ".starwars.alignment",XrmoptionNoArg,  "Right" },
+  {"-center",    ".starwars.alignment",XrmoptionNoArg,  "Center" },
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
index 022392c114e64bb7bd43e861b878aa7babb06f64..a566589cd3a2fba8539b4208e70cc5117192b01f 100644 (file)
@@ -70,13 +70,6 @@ static const char sccsid[] = "@(#)superquadrics.c    4.07 97/11/24 xlockmore";
  * Ed Mackey
  */
 
  * Ed Mackey
  */
 
-/*-
- * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock.
- * otherwise caddr_t is not defined correctly
- */
-
-#include <X11/Intrinsic.h>
-
 #ifdef STANDALONE
 # define PROGCLASS                                     "Superquadrics"
 # define HACK_INIT                                     init_superquadrics
 #ifdef STANDALONE
 # define PROGCLASS                                     "Superquadrics"
 # define HACK_INIT                                     init_superquadrics
@@ -107,7 +100,7 @@ static float spinspeed;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-  {"-spinspeed", ".superquadrics.spinspeed", XrmoptionSepArg, (caddr_t) NULL}
+  {"-spinspeed", ".superquadrics.spinspeed", XrmoptionSepArg, 0}
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
index a7fccfeb41fb7b548b1f20eabaa56e982d723941..a1ddefe1c60d6b24e820e12231c458f78a549abb 100644 (file)
@@ -29,7 +29,7 @@ static const char sccsid[] = "@(#)swim.c      1.3 98/06/18 xlockmore";
  * Thanks goes also to Brian Paul for making it possible and inexpensive
  * to use OpenGL at home.
  *
  * Thanks goes also to Brian Paul for making it possible and inexpensive
  * to use OpenGL at home.
  *
- * My e-mail address is lassauge@sagem.fr
+ * My e-mail address is lassauge@users.sourceforge.net
  *
  * Eric Lassauge  (May-13-1998)
  *
  *
  * Eric Lassauge  (May-13-1998)
  *
index 94e7bc0e661837d2f3499406ad97238d45b6f04a..2299cfb8d30354ff396a9ab6d8aa2f2c44db3fc2 100644 (file)
@@ -2,10 +2,10 @@
 /* atunnels --- OpenGL Advanced Tunnel Demo */
 
 #if 0
 /* atunnels --- OpenGL Advanced Tunnel Demo */
 
 #if 0
-static const char sccsid[] = "@(#)tunnel_draw.c        5.02 2002/03/16 xlockmore";
+static const char sccsid[] = "@(#)tunnel_draw.c        5.13 2004/05/25 xlockmore";
 #endif
 
 #endif
 
-/* Copyright (c) E. Lassauge, 2002. */
+/* Copyright (c) E. Lassauge, 2002-2004. */
 
 /*
  * Permission to use, copy, modify, and distribute this software and its
 
 /*
  * Permission to use, copy, modify, and distribute this software and its
@@ -24,10 +24,13 @@ static const char sccsid[] = "@(#)tunnel_draw.c     5.02 2002/03/16 xlockmore";
  * Email: romka@ut.ee
  * WEB: http://romka.demonews.com
  *
  * Email: romka@ut.ee
  * WEB: http://romka.demonews.com
  *
- * Eric Lassauge  (March-16-2002) <lassauge@mail.dotcom.fr>
+ * Eric Lassauge  (May-25-2004) <lassauge@users.sourceforge.net>
  *                                 http://lassauge.free.fr/linux.html
  *
  * REVISION HISTORY:
  *                                 http://lassauge.free.fr/linux.html
  *
  * REVISION HISTORY:
+ * E.Lassauge - 25-May-2004:
+ *     - added more texture
+ *     - random texture init
  *
  */
 
  *
  */
 
@@ -46,6 +49,12 @@ static const char sccsid[] = "@(#)tunnel_draw.c      5.02 2002/03/16 xlockmore";
 
 #include "tunnel_draw.h"
 
 
 #include "tunnel_draw.h"
 
+#ifdef STANDALONE /* For NRAND() */
+#include "xlockmoreI.h"          /* in xscreensaver distribution */
+#else /* STANDALONE */
+#include "xlock.h"              /* in xlockmore distribution */
+#endif /* STANDALONE */
+
 typedef struct 
 {
   float x, y, z; /* Point coordinates */
 typedef struct 
 {
   float x, y, z; /* Point coordinates */
@@ -207,7 +216,7 @@ static void LoadPath(void)
 void InitTunnel(void)
 {
        LoadPath();
 void InitTunnel(void)
 {
        LoadPath();
-       current_texture = 0;
+       current_texture = NRAND(MAX_TEXTURE);
 }
 
 void DrawTunnel(int do_texture, int do_light, GLuint *textures)
 }
 
 void DrawTunnel(int do_texture, int do_light, GLuint *textures)
@@ -425,7 +434,7 @@ void SplashScreen(int do_wire, int do_texture, int do_light)
                        tFlag = 0;
                        ModeXFlag = 1;
                        current_texture++;
                        tFlag = 0;
                        ModeXFlag = 1;
                        current_texture++;
-                       if (current_texture > 2) current_texture = 0;
+                       if (current_texture >= MAX_TEXTURE) current_texture = 0;
                }
                /*  Now we want to draw splash screen */
                glLoadIdentity();
                }
                /*  Now we want to draw splash screen */
                glLoadIdentity();
index 0441925dcba6bb9f569da92cb6b8f976329385ee..8f0aee4c3ffb9c3d1245ca3cfe8ca4193741c74a 100644 (file)
@@ -1,3 +1,4 @@
+#define MAX_TEXTURE 10
 extern void DrawTunnel(int do_texture, int do_light, GLuint *textures);
 extern void SplashScreen(int do_wire, int do_texture, int do_light);
 extern void InitTunnel(void);
 extern void DrawTunnel(int do_texture, int do_light, GLuint *textures);
 extern void SplashScreen(int do_wire, int do_texture, int do_light);
 extern void InitTunnel(void);
index 15826e4f8894f55bf7f3e45acf69ba0ce15cea30..7754718605465a91ec72f84ccdb879e61f6fe930 100644 (file)
@@ -29,7 +29,7 @@ static const char sccsid[] = "@(#)whale.c     1.3 98/06/18 xlockmore";
  * Thanks goes also to Brian Paul for making it possible and inexpensive
  * to use OpenGL at home.
  *
  * Thanks goes also to Brian Paul for making it possible and inexpensive
  * to use OpenGL at home.
  *
- * My e-mail address is lassauge@sagem.fr
+ * My e-mail address is lassauge@users.sourceforge.net
  *
  * Eric Lassauge  (May-13-1998)
  *
  *
  * Eric Lassauge  (May-13-1998)
  *
index 37c38eebc516f72df3ae536d83cc18c646244c74..7d67728b117c5bad5b7d73a38d4f885ae528bc59 100644 (file)
@@ -9,7 +9,7 @@
  * software for any purpose.  It is provided "as is" without express or 
  * implied warranty.
  *
  * software for any purpose.  It is provided "as is" without express or 
  * implied warranty.
  *
- * Alpha channel support by Eric Lassauge <lassauge@mail.dotcom.fr>.
+ * Alpha channel support by Eric Lassauge <lassauge@users.sourceforge.net>
  */
 
 #ifdef HAVE_CONFIG_H
  */
 
 #ifdef HAVE_CONFIG_H
index 1aedf93adb4fff71d50a591dc803a03c0b006b92..961afe4374c7b35de31faff2e7f7b329901df736 100644 (file)
@@ -53,10 +53,10 @@ static Bool trail;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {(char *) "-decay", (char *) ".grav.decay", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+decay", (char *) ".grav.decay", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-trail", (char *) ".grav.trail", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+trail", (char *) ".grav.trail", XrmoptionNoArg, (caddr_t) "off"}
+       {"-decay", ".grav.decay", XrmoptionNoArg, "on"},
+       {"+decay", ".grav.decay", XrmoptionNoArg, "off"},
+       {"-trail", ".grav.trail", XrmoptionNoArg, "on"},
+       {"+trail", ".grav.trail", XrmoptionNoArg, "off"}
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
@@ -65,8 +65,8 @@ static argtype vars[] =
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
-       {(char *) "-/+decay", (char *) "turn on/off decaying orbits"},
-       {(char *) "-/+trail", (char *) "turn on/off trail dots"}
+       {"-/+decay", "turn on/off decaying orbits"},
+       {"-/+trail", "turn on/off trail dots"}
 };
 
 ModeSpecOpt grav_opts =
 };
 
 ModeSpecOpt grav_opts =
index 502c73dbeb2f04fa853f4bc4108be05ff62e0641..fd64722eac65e17683bb10e2d3a90ced6e0890f7 100644 (file)
@@ -96,28 +96,28 @@ static Bool sine;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {(char *) "-martin", (char *) ".hop.martin", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+martin", (char *) ".hop.martin", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-popcorn", (char *) ".hop.popcorn", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+popcorn", (char *) ".hop.popcorn", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-ejk1", (char *) ".hop.ejk1", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+ejk1", (char *) ".hop.ejk1", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-ejk2", (char *) ".hop.ejk2", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+ejk2", (char *) ".hop.ejk2", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-ejk3", (char *) ".hop.ejk3", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+ejk3", (char *) ".hop.ejk3", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-ejk4", (char *) ".hop.ejk4", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+ejk4", (char *) ".hop.ejk4", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-ejk5", (char *) ".hop.ejk5", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+ejk5", (char *) ".hop.ejk5", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-ejk6", (char *) ".hop.ejk6", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+ejk6", (char *) ".hop.ejk6", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-rr", (char *) ".hop.rr", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+rr", (char *) ".hop.rr", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-jong", (char *) ".hop.jong", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+jong", (char *) ".hop.jong", XrmoptionNoArg, (caddr_t) "off"},
-       {(char *) "-sine", (char *) ".hop.sine", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+sine", (char *) ".hop.sine", XrmoptionNoArg, (caddr_t) "off"}
+       {"-martin", ".hop.martin", XrmoptionNoArg, "on"},
+       {"+martin", ".hop.martin", XrmoptionNoArg, "off"},
+       {"-popcorn", ".hop.popcorn", XrmoptionNoArg, "on"},
+       {"+popcorn", ".hop.popcorn", XrmoptionNoArg, "off"},
+       {"-ejk1", ".hop.ejk1", XrmoptionNoArg, "on"},
+       {"+ejk1", ".hop.ejk1", XrmoptionNoArg, "off"},
+       {"-ejk2", ".hop.ejk2", XrmoptionNoArg, "on"},
+       {"+ejk2", ".hop.ejk2", XrmoptionNoArg, "off"},
+       {"-ejk3", ".hop.ejk3", XrmoptionNoArg, "on"},
+       {"+ejk3", ".hop.ejk3", XrmoptionNoArg, "off"},
+       {"-ejk4", ".hop.ejk4", XrmoptionNoArg, "on"},
+       {"+ejk4", ".hop.ejk4", XrmoptionNoArg, "off"},
+       {"-ejk5", ".hop.ejk5", XrmoptionNoArg, "on"},
+       {"+ejk5", ".hop.ejk5", XrmoptionNoArg, "off"},
+       {"-ejk6", ".hop.ejk6", XrmoptionNoArg, "on"},
+       {"+ejk6", ".hop.ejk6", XrmoptionNoArg, "off"},
+       {"-rr", ".hop.rr", XrmoptionNoArg, "on"},
+       {"+rr", ".hop.rr", XrmoptionNoArg, "off"},
+       {"-jong", ".hop.jong", XrmoptionNoArg, "on"},
+       {"+jong", ".hop.jong", XrmoptionNoArg, "off"},
+       {"-sine", ".hop.sine", XrmoptionNoArg, "on"},
+       {"+sine", ".hop.sine", XrmoptionNoArg, "off"}
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
@@ -135,17 +135,17 @@ static argtype vars[] =
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
-       {(char *) "-/+martin", (char *) "turn on/off sqrt format"},
-       {(char *) "-/+popcorn", (char *) "turn on/off Clifford A. Pickover's popcorn format"},
-       {(char *) "-/+ejk1", (char *) "turn on/off ejk1 format"},
-       {(char *) "-/+ejk2", (char *) "turn on/off ejk2 format"},
-       {(char *) "-/+ejk3", (char *) "turn on/off ejk3 format"},
-       {(char *) "-/+ejk4", (char *) "turn on/off ejk4 format"},
-       {(char *) "-/+ejk5", (char *) "turn on/off ejk5 format"},
-       {(char *) "-/+ejk6", (char *) "turn on/off ejk6 format"},
-       {(char *) "-/+rr", (char *) "turn on/off rr format"},
-       {(char *) "-/+jong", (char *) "turn on/off jong format"},
-       {(char *) "-/+sine", (char *) "turn on/off sine format"}
+       {"-/+martin", "turn on/off sqrt format"},
+       {"-/+popcorn", "turn on/off Clifford A. Pickover's popcorn format"},
+       {"-/+ejk1", "turn on/off ejk1 format"},
+       {"-/+ejk2", "turn on/off ejk2 format"},
+       {"-/+ejk3", "turn on/off ejk3 format"},
+       {"-/+ejk4", "turn on/off ejk4 format"},
+       {"-/+ejk5", "turn on/off ejk5 format"},
+       {"-/+ejk6", "turn on/off ejk6 format"},
+       {"-/+rr",   "turn on/off rr format"},
+       {"-/+jong", "turn on/off jong format"},
+       {"-/+sine", "turn on/off sine format"}
 };
 
 ModeSpecOpt hop_opts =
 };
 
 ModeSpecOpt hop_opts =
diff --git a/hacks/images/pacman/ghost-d1.xpm b/hacks/images/pacman/ghost-d1.xpm
new file mode 100644 (file)
index 0000000..37e7dca
--- /dev/null
@@ -0,0 +1,72 @@
+/* XPM */
+static char * ghost_d1_xpm[] = {
+"64 64 5 1",
+"      c None",
+".     c #FF0000",
+"+     c #DEDEDE",
+"#     c #2121DE",
+"@     c #000000",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     .........+++++++++..................+++++++++.........     ",
+"     .........+++++++++..................+++++++++.........     ",
+"     .........+++++++++..................+++++++++.........     ",
+"     .........+++++++++..................+++++++++.........     ",
+"     .........+++++++++..................+++++++++.........     ",
+"     ....++++++++++++++++++..........++++++++++++++++++....     ",
+"     ....++++++++++++++++++..........++++++++++++++++++....     ",
+"     ....++++++++++++++++++..........++++++++++++++++++....     ",
+"     ....++++++++++++++++++..........++++++++++++++++++....     ",
+".........++++++++++++++++++..........++++++++++++++++++.........",
+".........++++++++++++++++++..........++++++++++++++++++.........",
+".........++++++++++++++++++..........++++++++++++++++++.........",
+".........++++++++++++++++++..........++++++++++++++++++.........",
+".........++++++++++++++++++..........++++++++++++++++++.........",
+".........+++++#########++++..........++++#########+++++.........",
+".........+++++#########++++..........++++#########+++++.........",
+".........+++++#########++++..........++++#########+++++.........",
+".........+++++#########++++..........++++#########+++++.........",
+".........+++++#########++++..........++++#########+++++.........",
+"..............#########..................#########..............",
+"..............#########..................#########..............",
+"..............#########..................#########..............",
+"..............#########..................#########..............",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"..................@@@@@..................@@@@@..................",
+"..................@@@@@..................@@@@@..................",
+"..................@@@@@..................@@@@@..................",
+"..................@@@@@..................@@@@@..................",
+"@@@@@.........@@@@@@@@@@@@@..........@@@@@@@@@@@@@.........@@@@@",
+"@@@@@.........@@@@@@@@@@@@@..........@@@@@@@@@@@@@.........@@@@@",
+"@@@@@.........@@@@@@@@@@@@@..........@@@@@@@@@@@@@.........@@@@@",
+"@@@@@.........@@@@@@@@@@@@@..........@@@@@@@@@@@@@.........@@@@@",
+"@@@@@.........@@@@@@@@@@@@@..........@@@@@@@@@@@@@.........@@@@@"};
diff --git a/hacks/images/pacman/ghost-d2.xpm b/hacks/images/pacman/ghost-d2.xpm
new file mode 100644 (file)
index 0000000..2c8b024
--- /dev/null
@@ -0,0 +1,72 @@
+/* XPM */
+static char * ghost_d2_xpm[] = {
+"64 64 5 1",
+"      c None",
+".     c #FF0000",
+"+     c #DEDEDE",
+"#     c #2121DE",
+"@     c #000000",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     .........+++++++++..................+++++++++.........     ",
+"     .........+++++++++..................+++++++++.........     ",
+"     .........+++++++++..................+++++++++.........     ",
+"     .........+++++++++..................+++++++++.........     ",
+"     .........+++++++++..................+++++++++.........     ",
+"     ....++++++++++++++++++..........++++++++++++++++++....     ",
+"     ....++++++++++++++++++..........++++++++++++++++++....     ",
+"     ....++++++++++++++++++..........++++++++++++++++++....     ",
+"     ....++++++++++++++++++..........++++++++++++++++++....     ",
+".........++++++++++++++++++..........++++++++++++++++++.........",
+".........++++++++++++++++++..........++++++++++++++++++.........",
+".........++++++++++++++++++..........++++++++++++++++++.........",
+".........++++++++++++++++++..........++++++++++++++++++.........",
+".........++++++++++++++++++..........++++++++++++++++++.........",
+".........+++++#########++++..........++++#########+++++.........",
+".........+++++#########++++..........++++#########+++++.........",
+".........+++++#########++++..........++++#########+++++.........",
+".........+++++#########++++..........++++#########+++++.........",
+".........+++++#########++++..........++++#########+++++.........",
+"..............#########..................#########..............",
+"..............#########..................#########..............",
+"..............#########..................#########..............",
+"..............#########..................#########..............",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+".........@@@@@.............@@@@@@@@@@.............@@@@@.........",
+".........@@@@@.............@@@@@@@@@@.............@@@@@.........",
+".........@@@@@.............@@@@@@@@@@.............@@@@@.........",
+".........@@@@@.............@@@@@@@@@@.............@@@@@.........",
+".....@@@@@@@@@@@@@.........@@@@@@@@@@.........@@@@@@@@@@@@@.....",
+".....@@@@@@@@@@@@@.........@@@@@@@@@@.........@@@@@@@@@@@@@.....",
+".....@@@@@@@@@@@@@.........@@@@@@@@@@.........@@@@@@@@@@@@@.....",
+".....@@@@@@@@@@@@@.........@@@@@@@@@@.........@@@@@@@@@@@@@.....",
+".....@@@@@@@@@@@@@.........@@@@@@@@@@.........@@@@@@@@@@@@@....."};
diff --git a/hacks/images/pacman/ghost-l1.xpm b/hacks/images/pacman/ghost-l1.xpm
new file mode 100644 (file)
index 0000000..71c2b1a
--- /dev/null
@@ -0,0 +1,72 @@
+/* XPM */
+static char * ghost_l1_xpm[] = {
+"64 64 5 1",
+"      c None",
+".     c #FF0000",
+"@     c #DEDEDE",
+"#     c #2121DE",
+"+     c #000000",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"     ....@@@@@@@@@...................@@@@@@@@@.............     ",
+"     ....@@@@@@@@@...................@@@@@@@@@.............     ",
+"     ....@@@@@@@@@...................@@@@@@@@@.............     ",
+"     ....@@@@@@@@@...................@@@@@@@@@.............     ",
+"     @@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@.........     ",
+"     @@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@.........     ",
+"     @@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@.........     ",
+"     @@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@.........     ",
+"     @@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@.........     ",
+"     #########@@@@@@@@@.........#########@@@@@@@@@.........     ",
+"     #########@@@@@@@@@.........#########@@@@@@@@@.........     ",
+"     #########@@@@@@@@@.........#########@@@@@@@@@.........     ",
+"     #########@@@@@@@@@.........#########@@@@@@@@@.........     ",
+".....#########@@@@@@@@@.........#########@@@@@@@@@..............",
+".....#########@@@@@@@@@.........#########@@@@@@@@@..............",
+".....#########@@@@@@@@@.........#########@@@@@@@@@..............",
+".....#########@@@@@@@@@.........#########@@@@@@@@@..............",
+".....#########@@@@@@@@@.........#########@@@@@@@@@..............",
+".........@@@@@@@@@...................@@@@@@@@@..................",
+".........@@@@@@@@@...................@@@@@@@@@..................",
+".........@@@@@@@@@...................@@@@@@@@@..................",
+".........@@@@@@@@@...................@@@@@@@@@..................",
+".........@@@@@@@@@...................@@@@@@@@@..................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"..................+++++..................+++++..................",
+"..................+++++..................+++++..................",
+"..................+++++..................+++++..................",
+"..................+++++..................+++++..................",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++"};
diff --git a/hacks/images/pacman/ghost-l2.xpm b/hacks/images/pacman/ghost-l2.xpm
new file mode 100644 (file)
index 0000000..7e00889
--- /dev/null
@@ -0,0 +1,73 @@
+/* XPM */
+static char * ghost_l2_xpm[] = {
+"64 64 5 1",
+"      c None",
+".     c #FF0000",
+"@     c #DEDEDE",
+"#     c #2121DE",
+"+     c #000000",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"     ....@@@@@@@@@...................@@@@@@@@@.............     ",
+"     ....@@@@@@@@@...................@@@@@@@@@.............     ",
+"     ....@@@@@@@@@...................@@@@@@@@@.............     ",
+"     ....@@@@@@@@@...................@@@@@@@@@.............     ",
+"     @@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@.........     ",
+"     @@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@.........     ",
+"     @@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@.........     ",
+"     @@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@.........     ",
+"     @@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@.........     ",
+"     #########@@@@@@@@@.........#########@@@@@@@@@.........     ",
+"     #########@@@@@@@@@.........#########@@@@@@@@@.........     ",
+"     #########@@@@@@@@@.........#########@@@@@@@@@.........     ",
+"     #########@@@@@@@@@.........#########@@@@@@@@@.........     ",
+".....#########@@@@@@@@@.........#########@@@@@@@@@..............",
+".....#########@@@@@@@@@.........#########@@@@@@@@@..............",
+".....#########@@@@@@@@@.........#########@@@@@@@@@..............",
+".....#########@@@@@@@@@.........#########@@@@@@@@@..............",
+".....#########@@@@@@@@@.........#########@@@@@@@@@..............",
+".........@@@@@@@@@...................@@@@@@@@@..................",
+".........@@@@@@@@@...................@@@@@@@@@..................",
+".........@@@@@@@@@...................@@@@@@@@@..................",
+".........@@@@@@@@@...................@@@@@@@@@..................",
+".........@@@@@@@@@...................@@@@@@@@@..................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+".........+++++.............++++++++++.............+++++.........",
+".........+++++.............++++++++++.............+++++.........",
+".........+++++.............++++++++++.............+++++.........",
+".........+++++.............++++++++++.............+++++.........",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++....."};
+
diff --git a/hacks/images/pacman/ghost-mask.xpm b/hacks/images/pacman/ghost-mask.xpm
new file mode 100644 (file)
index 0000000..86960ad
--- /dev/null
@@ -0,0 +1,69 @@
+/* XPM */
+static char * ghost_mask_xpm[] = {
+"64 64 2 1",
+"      c None",
+".     c #000000",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"     ......................................................     ",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................"};
diff --git a/hacks/images/pacman/ghost-r1.xpm b/hacks/images/pacman/ghost-r1.xpm
new file mode 100644 (file)
index 0000000..8d5fba3
--- /dev/null
@@ -0,0 +1,72 @@
+/* XPM */
+static char * ghost_r1_xpm[] = {
+"64 64 5 1",
+"      c None",
+".     c #FF0000",
+"@     c #DEDEDE",
+"#     c #2121DE",
+"+     c #000000",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"     .............@@@@@@@@@...................@@@@@@@@@....     ",
+"     .............@@@@@@@@@...................@@@@@@@@@....     ",
+"     .............@@@@@@@@@...................@@@@@@@@@....     ",
+"     .............@@@@@@@@@...................@@@@@@@@@....     ",
+"     .........@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@     ",
+"     .........@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@     ",
+"     .........@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@     ",
+"     .........@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@     ",
+"     .........@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@     ",
+"     .........@@@@@@@@@#########.........@@@@@@@@@#########     ",
+"     .........@@@@@@@@@#########.........@@@@@@@@@#########     ",
+"     .........@@@@@@@@@#########.........@@@@@@@@@#########     ",
+"     .........@@@@@@@@@#########.........@@@@@@@@@#########     ",
+"..............@@@@@@@@@#########.........@@@@@@@@@#########.....",
+"..............@@@@@@@@@#########.........@@@@@@@@@#########.....",
+"..............@@@@@@@@@#########.........@@@@@@@@@#########.....",
+"..............@@@@@@@@@#########.........@@@@@@@@@#########.....",
+"..............@@@@@@@@@#########.........@@@@@@@@@#########.....",
+"..................@@@@@@@@@...................@@@@@@@@@.........",
+"..................@@@@@@@@@...................@@@@@@@@@.........",
+"..................@@@@@@@@@...................@@@@@@@@@.........",
+"..................@@@@@@@@@...................@@@@@@@@@.........",
+"..................@@@@@@@@@...................@@@@@@@@@.........",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"..................+++++..................+++++..................",
+"..................+++++..................+++++..................",
+"..................+++++..................+++++..................",
+"..................+++++..................+++++..................",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++"};
diff --git a/hacks/images/pacman/ghost-r2.xpm b/hacks/images/pacman/ghost-r2.xpm
new file mode 100644 (file)
index 0000000..4a6ab7b
--- /dev/null
@@ -0,0 +1,72 @@
+/* XPM */
+static char * ghost_r2_xpm[] = {
+"64 64 5 1",
+"      c None",
+".     c #FF0000",
+"@     c #DEDEDE",
+"#     c #2121DE",
+"+     c #000000",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"              ....................................              ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"         ..............................................         ",
+"     .............@@@@@@@@@...................@@@@@@@@@....     ",
+"     .............@@@@@@@@@...................@@@@@@@@@....     ",
+"     .............@@@@@@@@@...................@@@@@@@@@....     ",
+"     .............@@@@@@@@@...................@@@@@@@@@....     ",
+"     .........@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@     ",
+"     .........@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@     ",
+"     .........@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@     ",
+"     .........@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@     ",
+"     .........@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@@@@@@     ",
+"     .........@@@@@@@@@#########.........@@@@@@@@@#########     ",
+"     .........@@@@@@@@@#########.........@@@@@@@@@#########     ",
+"     .........@@@@@@@@@#########.........@@@@@@@@@#########     ",
+"     .........@@@@@@@@@#########.........@@@@@@@@@#########     ",
+"..............@@@@@@@@@#########.........@@@@@@@@@#########.....",
+"..............@@@@@@@@@#########.........@@@@@@@@@#########.....",
+"..............@@@@@@@@@#########.........@@@@@@@@@#########.....",
+"..............@@@@@@@@@#########.........@@@@@@@@@#########.....",
+"..............@@@@@@@@@#########.........@@@@@@@@@#########.....",
+"..................@@@@@@@@@...................@@@@@@@@@.........",
+"..................@@@@@@@@@...................@@@@@@@@@.........",
+"..................@@@@@@@@@...................@@@@@@@@@.........",
+"..................@@@@@@@@@...................@@@@@@@@@.........",
+"..................@@@@@@@@@...................@@@@@@@@@.........",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+".........+++++.............++++++++++.............+++++.........",
+".........+++++.............++++++++++.............+++++.........",
+".........+++++.............++++++++++.............+++++.........",
+".........+++++.............++++++++++.............+++++.........",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++....."};
diff --git a/hacks/images/pacman/ghost-u1.xpm b/hacks/images/pacman/ghost-u1.xpm
new file mode 100644 (file)
index 0000000..9bf458a
--- /dev/null
@@ -0,0 +1,72 @@
+/* XPM */
+static char * ghost_u1_xpm[] = {
+"64 64 5 1",
+"      c None",
+".     c #FF0000",
+"@     c #DEDEDE",
+"#     c #2121DE",
+"+     c #000000",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"              #########..................#########              ",
+"              #########..................#########              ",
+"              #########..................#########              ",
+"              #########..................#########              ",
+"         @@@@@#########@@@@..........@@@@#########@@@@@         ",
+"         @@@@@#########@@@@..........@@@@#########@@@@@         ",
+"         @@@@@#########@@@@..........@@@@#########@@@@@         ",
+"         @@@@@#########@@@@..........@@@@#########@@@@@         ",
+"         @@@@@#########@@@@..........@@@@#########@@@@@         ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     .........@@@@@@@@@..................@@@@@@@@@.........     ",
+"     .........@@@@@@@@@..................@@@@@@@@@.........     ",
+"     .........@@@@@@@@@..................@@@@@@@@@.........     ",
+"     .........@@@@@@@@@..................@@@@@@@@@.........     ",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"..................+++++..................+++++..................",
+"..................+++++..................+++++..................",
+"..................+++++..................+++++..................",
+"..................+++++..................+++++..................",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++",
+"+++++.........+++++++++++++..........+++++++++++++.........+++++"};
diff --git a/hacks/images/pacman/ghost-u2.xpm b/hacks/images/pacman/ghost-u2.xpm
new file mode 100644 (file)
index 0000000..74adca2
--- /dev/null
@@ -0,0 +1,72 @@
+/* XPM */
+static char * ghost_u2_xpm[] = {
+"64 64 5 1",
+"      c None",
+".     c #FF0000",
+"@     c #DEDEDE",
+"#     c #2121DE",
+"+     c #000000",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"                       ..................                       ",
+"              #########..................#########              ",
+"              #########..................#########              ",
+"              #########..................#########              ",
+"              #########..................#########              ",
+"         @@@@@#########@@@@..........@@@@#########@@@@@         ",
+"         @@@@@#########@@@@..........@@@@#########@@@@@         ",
+"         @@@@@#########@@@@..........@@@@#########@@@@@         ",
+"         @@@@@#########@@@@..........@@@@#########@@@@@         ",
+"         @@@@@#########@@@@..........@@@@#########@@@@@         ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     ....@@@@@@@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@....     ",
+"     .........@@@@@@@@@..................@@@@@@@@@.........     ",
+"     .........@@@@@@@@@..................@@@@@@@@@.........     ",
+"     .........@@@@@@@@@..................@@@@@@@@@.........     ",
+"     .........@@@@@@@@@..................@@@@@@@@@.........     ",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+"................................................................",
+".........+++++.............++++++++++.............+++++.........",
+".........+++++.............++++++++++.............+++++.........",
+".........+++++.............++++++++++.............+++++.........",
+".........+++++.............++++++++++.............+++++.........",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++.....",
+".....+++++++++++++.........++++++++++.........+++++++++++++....."};
diff --git a/hacks/images/tunnel3.xpm b/hacks/images/tunnel3.xpm
new file mode 100644 (file)
index 0000000..b438f70
--- /dev/null
@@ -0,0 +1,150 @@
+/* XPM */
+static char *texture3[] = {
+/* columns rows colors chars-per-pixel */
+"128 128 16 1",
+"  c #8C7D6A",
+". c #8F806D",
+"X c #91826E",
+"o c #9A8B77",
+"O c #9F907C",
+"+ c #A1927E",
+"@ c #9F9280",
+"# c #A89A87",
+"$ c #AEA18E",
+"% c #AFA291",
+"& c #B0A28F",
+"* c #B6AA98",
+"= c #BCB09F",
+"- c #BCAFA0",
+"; c #BDB1A1",
+": c #C0B4A4",
+/* pixels */
+"&$$$####+$$$$$##$#$$#$$#++###%**%**;--=*%%%$**-*---=*=****;==&#$##&#$$##@###+#+++######&######&&#&###@#&$$&$#$$#$$#$$+@O$#$*****",
+"$$$$$###+$$$$$$##$#$$$$##$###=::;-;;;;;;-%#$%***************=&##$##&&&####$##+##+#####&&#####&&&#&$##@#&&&&$$+$##$$$$@$$@$%==:==",
+"%$$#$#%#+$$%%$$$$$#$$#$$$$$##*==---*-----$#%#%&&&&&*****=**==&$$$#&##$&#$%$######&###&&&&&&##&&&$$#&&@##*&&&$$$$$$##$$#$%#$====*",
+"&&%#$$$+#%%***$&$$#$$+$*$$$$#===***------$#####&#$#&#&*****-*&$&&&&##&&&#%#######&###&*&&&&#@&&&##&&#@$&&**&$&$$$$@$%%$$$$$=*=**",
+"$#####$+o#######$++$$$&&%$#$$*==--=*=---*###@+#&&#####&&&**-*&+#+##$#&&&$$$#+####&##&&&&&&#######@#&#O@##$+###++@$$#$$$#$#*;;;==",
+"%##&%**$ooO+##XoO+++$++$$$##$=::;---:===*######&#####%###&&&&+++O######$###$#+##&&&&*&+######&&#&&***@ O+##OX+++###$$$$$#%%;;;==",
+"***=====%**==*@####$++$$$##$%=::-*-:=--**$$##########&%#&#++#++#+##+##$$$#$#####&&&##+ +@ #@&***:-=-:****==&####$+@+#$$##$*;;-**",
+"***====;======###++$$$$+#$##%=;==--:*-==*%$#########%%&#+#&&#########$#$##########+++#+ @#&@#**--*--=:*-;==&###+O$$$$+$$##*;;--;",
+"*===-******-*=$#$++$####$$##$====:---*=**&&#+&&+#####&#+#$&###&#+&++###$%##$######+### +O####-*----&****:--*##++######%$##%:=;;=",
+"***=--*****-=*$#&+$+###$$$$$$*:=:::**-***&##&++##$$#&&###$##+&&#++&$##$$$$#$#$########+OO@#@#-***--******--%$$$##+####$#$%*;;::;",
+"*%*=*****=--*=$@$+++#####$$$$=:::==--***=&&&+++&#$+#&&+++&#+++##++++$+#&$$#############O+@#@@*&*:****-*=-***####+#+$##%%#$%::;;;",
+"*****%**==-**=@oOOooOoOoOOo++=:=----==***&#&&++++++##$+++++++++o++OOoOoOOO@O@@###&####&&###o@****-%%&==--*-$OooooOOOOOOO@@%::==;",
+"=**==%%*=***=*%%$$++%%%$$$$@#*:=-:--==-**&#&*&#&&&&&##$$#+#####&&$$&%##%&##$&*&&##&&&#&&&&&o@:***:*%*******%%$%#+$%$%#$%#@%;:==;",
+"**===*%**=*****-==::;;===:*#$*=:-=::;--**#+#+##*=:==****=;***=-:====::;:;&&****&++++##&&&#& @-**==**&-:**-**==;===::;;:;#%%-;;;;",
+"*%==*%****;;=*====::=*=;::*$**===:::-*-**+o+++#&*=*&&***====**========;=;*&*=*=*ooO##@#&&#@ @*&*=*%%*-**:-=*========;;;=%***;;=;",
+"*****&*===;;;==*=:::===:==*%**:=-;:::-***@O+++#*&****=*==;;===-=====*=;==*&****&+o+#@#&*&&o @-********---:-=*==;:==*-;==%**-;;;;",
+"%********===**=====*%=*===*%**;:--;;;;=%%#O#+##*%*******--=**-*-==***----*%**%**#+####&=*&+X#*&&*******===*======**=====%**=;:;=",
+":**==*==*=*=*%*****=*===:;****;:====-==%%#OO#++==*-=*--=-**&*=***==*-*-;-****=**$$%$#&#*-*#o$:-*==*====***%*****=*=*=;;=***=:;-=",
+"=;*=**=====**=*==*======:=****:=*=====*####O+##***-**=;-=**==*-*====--;;*****-==***=*-%**&##&::-==**=====**=*=*=========*=*;:;*=",
+"%=*=*#%**==*==**========-*%%%$%**&*%$&%%##$####$#*-%$%*-*=*==**-=====-;-*%%$%%*=**%%%%%##&&*&%*-==$$%==***=**==========%#%#%%%%*",
+"*=**%$##%*=**=**=****=*=**#$%*%*=*%%%$$$##%&##$&%**####%*-*--&*-***=*=***#%**%*=*%*%%%%#&&&&%&****$##$%==*==********===%#%*%****",
+"==%*$##O#*=**=**=*****===*%%****==%%%%%$#%&&&####**###@$*-**-**-****==*=%#%****=*%%%%%%#####%-:**%$##@%*=*=**=*=%****=*%%*****=*",
+"=***%$$#%%%*******%**=****%*****-=***%*$#%%&#####$*####&&********%***;=********;;*%**%&####@%:-**%$##$*%*******%***===********==",
+"==*%%$@@%====*******=*=*********-****%%%##%&%#####*&###*----*******;*****%*****=****&%%#@##@$::**%$$@#**==********=**********==*",
+"==****%#%====*==========*==**===-**%*%%*%#%%$#####***$#*::-**---;=======*=*=====**%*%*%#####$--***=%%#=;=*****=======*=***====-*",
+"=%%%%**%$%$%$#%%***=*=********=*-*%***%*%%*%%$$###&***$$&&##$&&**=*************=*%***%*%%###$:*$%%***$%$$$$$%**=**=********=***%",
+"=*%%%%*%$$$$##%$$$%%***********=*%%**%*%%%***%%###%%%*$##&##$&&&%%*%*******=*==*%$****%%%%##$**%%$%%%%%$$##$%%%%*%*%***=****--*%",
+"****%**$$$$###$#$$$$$$$$%=*==*==*%$%-%***%&**&%###%%**#%&&&##$##%$%$$%%***=*=-**%#**%***%##@$--**%%*%#%$$#####$$$$$%%****===-*%%",
+"=*%*%**%$*$##$##+#$$##$$$$%***=*%*%******%**%%%$##****$%&&####@#$$$##$$$*%**==*$*******%%%$@&--%$***%#%%####@###$#$#%%%%%*=**%%*",
+"*%@%%#%%$%$##+#++$$####$$$#$****%**%***%%#%%*#####$##%#$&&#@#+###$######$$%****%*%%*%**$#$###-&##$#$%$%%$####@#$#######$%%******",
+"%$@##%%%%%%%#####$######$##$##$#$%%****%%$$%########%%$$&*######$$####$$#$$@##%$****%%%##$$##&%#+##%$$%*%######$#####%##%###%%%%",
+"#$@@@o@#$**$%###+#$#@##$%$#####@#*;;;==*-=-**#@##@o@o#$%*&&&###@$##+@$$$$@@$@##%*----**-***%@@&#OOOo#$%*%$$##########%%%#@##@@%;",
+"o@@OooO$$%**%$$@##++##$&&&++#&&##*====-=*-=*=#Xo#@ooo@$%*%*%$###$+#+##$&#+##%##&*=-=====**-*+o++Oooo##***%%###+#@###$$$++$$&##&=",
+".ooXo+$$$***%$@$#####$#&&++&&&#+#*====**-*=**#oXooX@##$$***&#####+$#$#&&###$####**=-*=*==-=&+ooOXoO#$$$**%%$########$$$O+$$#+#&*",
+"OOo.o+O$***&$$$$$+$$###&&#+#$+#+#&==*==*==;=*#OOoX o+#$*%*&$&$##+&&###&&#+####+$*==-=*=*===*+++O.X+O#%***%$$##@#$$##$$$O+$$$+#$*",
+"@@@oooo@%*&$O$$++++#+#$&$#++###+#*=*==*==*=**#O@O#oooo#***#####++##+#&&##++#####**=*===**-**++++OoOoO$%*%##$##+#$#+$$$$$+$++#+&*",
+"#@OOOOoO$$$$O$$$O#$+#+#++#+#OO#++&*====*=**=*#O#++O#oo#%%%#+#$$O$##++#++++#OO#O#**--==*=**-&##++OOOOo+%%%#@$##O#++++$O+@++O+++&*",
+"##@OOOoO$$$*$&$$&$$$+oXoooX   XXo&*=*===*==**#$$##OO#O#$$%&$%&&&&&&+XooOoX  XXo+&---=;=*===&+&&+OOOOO$$%%%$%%%%$&$ooooOo   XoX#&",
+"$$$#+O+$$$$&$$$$$$+$$$+#&#OXo#OOo#====**=*==*##$%##OO#&&$%*$%$$%#$&&+##$#oXO+OoO**===**====&+&&&#++++$$$*%#$$$$#$$$@@$$+oo+++o+*",
+"%*%%$$$$$$$$$$$$+$$$$$%%&####&&#+&=*=**=*===&@$&%&#####&$%&$%%##$+#&*&&&####%&##%*==**=*-*=&+*&&$$$##$%$%%$$$#$#@$$&*%$+##&&&##*",
+"$%%$$%$$$$&&&$$$%&##$$**%$$##&&$$***===*=*=*%O%%*&%%&##%*%&%$$$%&##$%**%&##$&&$#**=*=**===*&+&&&$$$$#$%%%%$$%$%$##%%*&%$##&&&#&=",
+"$$$$$$@$$$$&**&%%%$#%%%**$$#&&#%+%*********=%O#$#####$%&&%%**%%%&##&*%**%$$&$$%#***=*--**=*&+#&&$##$#%%%%%**%%%%##*****%##&%%##*",
+"@@@$O@@$$&&&$***&$#@$*****%$&&#&$&*********%%+#########%*%%%%**$####*****##%$$$$%=*******&&&++++$@O#@%%%%%%%**%#@#&*****#&&#$&$*",
+"%**-***-====*%%=**%%*****%&%%&$*$$$##O##$#$$$$%*%*****====**#*=**&$*****&&&%%%&####+#######+#***=***-;;-=**%****%%*****%&&&&&&##",
+"$*;;;-;;;;;;-*$*****=**%%%*$##&*#OOOoXoXoooOO###*;:;-:::==;=*&**=*-***&&&%##$&&#@oooXXXoo Oo+#&::;;;;;;;=;=%%****-***%%%%$#$*&#+",
+"$$-=---**----*$%%$***%*%#&%###%&$OO@+###++OooOOo#=-=*-**===;&%*$%***$*%#&*%##&&##o#O####+####+&-===*=*-====$%%%%**%%*$%%$###&%##",
+"$%==****--;-;*%*%$$%%***$$#$#+#&###O$O#+%$@ooOO##*-****=;;:;%&*%#%%%***%######$##O##+O##&#&++#&*==****=;=:=$**%%%%***%%#####$#+#",
+"$*------;;---%%*%*$#%%%%$$###$&&@O#O+++$+O@OOO+##-;---=;;;;*%&*%*##%%&*%##@#%&##+#O+####+#+++#&*======:;==*$*%%*$#%%%*%#@##$&#O#",
+"$&:::;==;==**&&*&&$$&&%*&&$##&&##O#+########O+###*::==::-=**$%*%%&&*&%*&$##$%%############+###&=:;;;;;;--**$*&%%%%%%&*&###$&$#+#",
+"$*::;;*;=-;==*#&%$$&%*****$&&**&$#+#########+OO##;:==*:*-;-=$#%%#%%*%*=*%%%**%%#++#######&#&##&;:;;*;;*--**##%%%%*&**=*#&*&*&$#+",
+"#*====;;=-;;=*&*-:*::::-==&$&&&&%#+#+$########+#&===---=--==%**--=::;-=;-%#$%%%###+#+########+&:;;*;;;=-;-*$*==;=:;;--:*$$$&&%##",
+"+*==;;;;*-=**&-:::::----==&oo+ooO###$++#+#+#####*==::--*=****;;;::;-;;-;=#oo@@o#+####++##+#####-;;;;--*;=***:;;;;==;--;-OXo+oo#+",
+"#%;;;:;;*-*****-:::::::-::&Xoo+++#++++########@#*;;:::-*****%-;;-:--;::::# o@+##+@+##++#####&+#*;;::;-*****%=;;-:=;;;::=+Xo+#+#+",
+"#=;;;;;;*-**-**---**-:::::&oo++##+#++##+O##+#$##*::;---==*****;--*-::::;:#oO@@###+#+++######&+&-;;;;-==***=*=;-=-=::::;=+oo+####",
+"#$;;;=;=-*--***:--*:=::::=*+++###+#####+###O@$##*;:----=*--**-;;-=*:;:;;-&@++#@#######+#+# &&##*;;;;-==--***-;;---=;;;;;#+O+##+#",
+"#$;;==;=;-*****-:-===:--==*++++##+++#+#+@###$$##*::-==----**%*--:---=;;;:&@++@#@o++##+####&&###*;;;;=----**%*;----;;;;;;&+OOO#Oo",
+"O#=;;;:::=****&**--*-;;;--*@+++++o O#+###$$&%$##*---;;::;-*-***-----:----$@#++@+X ooOo++#$$&#O+*;:;;===*=****=*---;;:---#++#+#o ",
+"#######+#&&&*&**---:--;---*#$$#####@$&$&&&&$%*$$*---;;:;-*****--------*--&#####&##+@#@+##$$&&###@$##$$$$$&*%**---;-:--*-&#######",
+"OoooXooooo+++&&----**---==*&$#$$&###&&%*&#%$####%--:;:;;;***%*-----*-----*&$&##&&##+@#+#####&#oooooXooXo@+#%==---=*--*-**&$#$&&#",
+"@@#@####Ooo+++&--:-***--=**&$$$%&&###%&&&$$$#%##%;::;;;;;-*%%*---***---**&$$&&#&#####+++++##&#+#@##$#+ooOOO#*---***----*&$$$$&&#",
+"+##++###+ o+#+&;-:--*-*-***$#%$##&#$#&&&&&#%&&%#*;;=-=;--*%#*-;-;;---*--=*#$&&$$&&###+##++##&#+#+++&$+OoO++#-;;;----**-*&#$%$$$#",
+"+O+####+#+O##+&:-:--*-:-==-#$*%$$$##$&%&&****&##&;=-*-*-*-%@%-;;;;-*--**=*$&&&#$###++++oX+#&*&++##+++++OO###-;-;;**-----&%&&$#$$",
+"#########+++#+&&****%*%%%%&%%%%#$####**&&%&*&####%*%**%%%*%##%%%%%%%%*&%#%%&$$$###++++oooo+#&&++$+####++O+##%****%*%&***%%&$$$##",
+"#########++++#&---**-****%#%%&%$$$#$***=-******%%%$%%%#%%%$%%%%%$####@####&&&$$$&###+++++OOo#*###$##$#+#OO##*=;;*-****%##&&$$$$#",
+"++$++$$$+$#++#%==;=**=*=**O$$$$$$$$$&%****%*%$$%%$%%*%#**&**=*=*******%#&&%%$$$$$$$#O@O++O++&&+&+&#####+#+#%*;;;=-*=*=*##%$$$$$$",
+"$$+$++++#+###$*=======*==*+$$$$$$$$$&$$$**%**$$$$$@#$#%==**===*=***=******$$$$#$$$OOOOOOooO++&&+++#++#+&###&====-*=*=*=$#%$$#$#$",
+"+++++$$+###$+$*===*==**==*$$$+$#O$$$**&$$#*%*%$$@@##$#$=***=*==**********%$##%##$#O@#OOO+o++&&++##++++&####%*===*-*===*$@$#$$###",
+"$+$++++#$+$$+$*====*====**+##$+$$@@$*&&%#$%%*&#$@$#%%#$=****==***********$######@$OOOOOO+O+#&*+++++&#&#+$##*=-*=-**====$########",
+"+$$++$+#+O#$#$%=*====*==**##$+$#@$+$&&$$%%*%*%%$$$%%##%**%*******&&&%%$%*#########OoOooOooo+&$++##+++#++%#$%**==-=*==**%#+######",
+"++++++$+$$$#+#%*===**=**=*#+$+++O++OOOO####$#%%%$$$#%%%*$$%******%%%%#######@@oO#OOoOO@@++O+&$+++#+#&##&%@@***==-*;*==*$+###@@@@",
+"Xo+$#$$$%$$$#$**===**=*=**#+++OoO#$+####$##$$$***=*==**%%%$$%&&*%$$%#$#####+@o.o$*-***;;=:*$&+o+##+$&&&&$#%$***==*=**=*$#+@@oo@#",
+"+$$$$*$&&$%$$$%**==*=*===*#+$+oXo&**%**=*=*&*=;;;;;;;*%%#%###%&$$$########+##o o=;;;;;;;;;=**&+&&&*&&&&&$#%%*===*=*====####@XX#=",
+"$$$$&&$$$$####**=*=*==*==*++$OXXo*=;;=;:-;;;*%--===*=;###+##$$$$$$#$$###$##++o o*==*=**----*%*#%&$&&#&%####%*=*=*==**=*$O#OO.X#;",
+"$+$$&*$$$$$$$@%**=*=*****&+++oXXo*======---;-$*=**&&**+O$+####$$$#$###+###+##XXo%==****;;-;-$%##&&*&$%$#&&##**=**=***=*#+OOo.X$=",
+"$$$$%&&&$$$$$#$*-*****=**$++$++OO*==****--;;-$%*&&%$%%##$O#$###$###$$##$$#####++*-;-;*-;;-=*$$#$&&&&%&%%%$##%***=***=**####OOo$=",
+"$+$%%%**%**$#@$$####%#$$$$$$$+$O+*==*===;;;;=#$$&&%$$###$+++#####$$#$#$####$+++#-;;;--;;--=*###%&&&*%**%%$##$#####$#$#%##$##$O$=",
+"+$$***%$%**$$#######@@##+$+$+&++@-;;;==---=**#&&$$#$###$$O$$######$###$##&#&$#+&;;;--;;=-=-*$#@$***%%*%*%%##%###$#@####+$$+$O+$=",
+"$&*=*==****$%%$$$%*%%$%%$$$$+&+$$;:;;=-;==-**$$&$$$#%$#$$$++####&&#&$####&#++#+&;;--=;;*--=*##%**********%%%%&%*%$#$*%#$$$++$O&:",
+"$$&&****$*$$%*$##$*$$#$%&$+$&+++#=;-=---====*#$#$++$$$+O+OOO@@@#######+######++&;;;;---*=**%#$%%%%******#%%%##$%%$#$&&#$$@@$++&:",
+"$$&$$&&*$**$$$$#@$$####$$$$$&&$+#*;-----*=***#&&+$&&**#XO@@#@ooOO#####$#&#&&##+&;;;;;;=***=*#$$**#%**%%**%#%###$$####$##$$$O$$*;",
+"$$*&&$#%%%&&$#@#+$$$O###$#$#$+$+#=;;;;;;==***#***=;;*;=%**=;*@#####+##&$#%#$####==:==:******#%#%*%%#%%%**%###@$%$$+$$$$$$$$+$+*=",
+"O%&*%%%%*%**$#@$$&$#+$#$#$$#$+$+#*:=;;;;=****%*****;;;;=*=;;*##$+######$###%#$#$=::=-------%#%#***%#%*%%%%#@##%%#+$+$+$+$++$$+*=",
+"@$%$%%%%%*%%%%$$$$$$$+$#$$$$+$$+#=::=;;;*==**%**===;**=***==*#$##+#####$%######$*::=-----***$%@%%%%%%%%**%%$%%%##$+$$$$$$##$$$$=",
+"%%%*%*%%%****%$##$#$$####$$#$$$$#*:;;;;;-=***%***;*****%*==**#$$#######$#%#%#$#$=:==-:::--**$*%%%%%*%%%****%#$#$$#+$+$$$$+$$$$&=",
+"***==*=*====*=####@@##$#$$#$$$$O#%;;=;:::==*=%%***=****====**##########$$$#####$=;=-:::--***#***--***=*==***@##@+#$$+$$$&+$$+$$=",
+"*%*=*%%*===**=#ooooo@OO@oOOOOOO##*;;;;;;;*=**#%*****%%*===*=*@oooXo+OOo+OO++O+##*;;;:-:-***%#*&*-**%**===*=%@o@ooOOOOoOOOOo+++$*",
+"=***=%%**=****$$$$##%%%#$&$#$$&%$%;;=;;;;=***#***===***=*****$$$##$&$$$$$#$#$&%%*::;-:----*%#-*=-**%*==**=*%%%%#+$&$$$$$+&$&&&$*",
+"**===***=***=**=;;==;;;-*;*$*&**%*;:;;;;;=-*%#*-**=**%*==*=***====*:=:=::%&**=*%-::*-----*###-**=-**%*=**=***;;-===:====$*****&*",
+"=%==*%***=====*==-;;;--=;;*$*=*;**=:======*%%#**%==*%**==;==*-*=::----;;;%%***-**:=---*-**###***=**%**==:=**=*=;;--=;;;-$&*=*=**",
+"*%******=*=====*;;;;==--;-***=%**=::=*====-#@@%********====---*:::-*--;;;*%**%%$###&%$#$$####**%**%***==;:====;;;-*=;;;-&******=",
+"%%*******===**==---****-;--%*%*%*%%%%%*$%%*%#@%*%*******=-=%==*-*=****---*%%$#####$#########O#*&*******-=**=**==-***-;;-&*&***&%",
+";=*;=**==*==%%=******---;;*******$#$%%$#%*%#@$%*=*==**=--*=%******=*--;:-=%#%$##$$#**%$$##@##*:*==*==*--**%**=*--*=*-;;-*=*****#",
+";;==**====*==*===--=--*-;-*****=;***=*****%$#$%=;-=**--===***===:------;=*%##OO###%%%##$####+&:*=;**=;;=***=---*-;-=-;;-*=*=*==*",
+"%=*=*#%*===*==*%*--=----;-$%%%%*==%*%*%%$$$%%*%=****$%*=*-*==**=-*------*##O#@######%#$#%####$=***%%%==*=*;=**----=-;--%#%#%**=*",
+"*=**%$$#$%=**=***--***---*$#%*%*==%*%%$$###%%%*=**%$$$$$*-*==**-=****--**#%##@######%####&###&=***%##$%==*=-**-*****--*%#*%*&*=*",
+"=***$$#@#*=*==**-******==%$$*****=%%%%%$$#$$%%%==*%$$@@$***==********--*&#%###@######%%###$##&:**%#$@@%*=**********--**$$*****=*",
+"=***%#$#%*%*******%***==***%=***--*%**&%#####&*-***####%&*******%***--***%%#########$$######$%****###$*%*******%***==*******=---",
+"==*%%%#@%===********=******%****--***$%%#####%*-***%&##**--********==******#########$$$$$$#$#*;**%%$@#**==*********=****%*****-*",
+"==*%**%#%===***===*==;=;=*===*--;**%*%%*######*-*****$#*:--***-*-=--===*=**####@#######$####O&==***%#$;;==*%======;==*==**==---*",
+"**$%%**%$$$$$$$&&*=**=*******=-*-*%****%%#####***%#***$%&&#$$$&**=*=**=*****&$%%##%%%$%$##O#$*=%%%**%$%%%##$$%***=*==****=**=-*%",
+"=*%%%%*%$$$$#$&%&&$&*****=*****=*%%%*%***%%#$$****&%%*%$&$##$&&&&*&**********===%%*****%&$$#$*=%%%%%*$#%$@$$%%$$%************=*$",
+"=***%**$$&$#####$$$$$%$$****====*%$%**%***###%****%&*%##&&###$##%$$$%*%*=**===*%#%%*%**%&$$O$=***%**%$%%$##$$#$$$$%%%****==*-*%$",
+"=%%%%%*$$%$###@###$$$$#$$%%*****%*%***%*&%%%$%**%%***=%%*########$####$&*%**=**&%**-*%*%$$$O$=*&%*%=%$%%$####O#$$$###%%%***=;%%*",
+"*%#$%#$$$%%###$O@$$####$$$$$****%*******#####$%%$#%##%##&&#@##+##$##$##$##&**=*&**%****#@$$#$=&$#%#$$$%*####O#$######$#$$$***%**",
+"%#@##$%$#%*$#####$$#O$+$##$$++$$#*%**%$%######$&####&&#&*&$#####&$###########$#%%***&&%##$$#O&$+@#$%&#&&&$+####%##+##$####$+$$&*",
+"#$OO@o+$%*%%$###$####+$$%$$++$++#*=;;;==--=*&+++#+OO@@$&*&&#$##@###+##$%$#######--:;-=--*=*$OO%+@+Oo#$***$$##########$$$##O$++&=",
+"o#@OoX@#$****$$++#+#+#$+%$OO+$&$#*--;==*=**=*#OO@@ooo#$&*&*&########$##&#+O$$##$*-----*==*=*OXO#Oooo$#&**&$######O##$$&$O@$%+$$=",
+"XooXo##$%**%&$$#+###$#$$%$O$$$$+$%==;=*=-*==*+ooooXo@$&&***&$########$%&#+$$####*---**=**==&OooOXXO#$&%***$$#+###$##$$&+#$$#$+$=",
+"OoXXo@+$****$$$#$#$$$$+$*+++$$++#%==-=*==*;-*++ooo @@+&***&&&$#@######%%+O#$$O++*----*-====*+++o.XO@@****$$$#@+#$####%#+O$$$+$$*",
+"@@OooOo#&%*%##$+OO$@+$$&$$+++$++$*=***=**--**$++@OoOOO#&*&#####@######&#$O##@$+$*-*--**===**++++@oooO$&&%#####O###+#$$##O$++++&=",
+"#+OOOOo+$%$#+##$OO+$+++++++++O++@%*---*====**+++#@O+Oo#$&$#@#&#@###+###+#OOOO#@$%*==*===**=&+$++OO@Oo$$$$#O$$#O##++#+#++O+OO$+$*",
+"$##OOOO+$#$%$%%%*$$$+oooO+X..XoXo$**--==**=-*#$##@O@OO###*&$%&%&&&&OXXoOo....X.O%**-==**=*=&#&$+@O@OO$$$&&$*$&&$&$ooooOo...XXX+&",
+"&&&++++#%$%&$$$$$###%$@$$@OXOOOOO&====*=*===*+&$&$+++#$$$&%$$$$$##&&#@###ooo##oo&===***====&#&&&##O+#&%$%&#%&&%##&$+#### o@#Oo@*",
+"&*&&#$##%%&*$$$$$$##$%%*%$@@$$$$+&*==*=*=*=**#$&&&&#$+$$&*%&$$#$###&%%*%#####%##**===*==*=*&+**&&####$$&*&&&&####$$*%&*####%%##*",
+"$&&&$&$#$%&&$$$$$%##$$%*&$$$$$$$#&*=*=*=*=*=&+&**&$&&#$&&%%&$$$%%##$***%###%&&##**==*;***==#+&&*%&*$##%&&&&$#%%%##$***%###$%%#$*",
+"$$#&#$$#%%$&&%%%&%$@$****%$#$$$$#&*==**=****&+#&&#$#&#$&&$&%*%%%$##&%****##%%$&#***==**=***&+#&&$####$&%$*%*&**##$&&***&#$%#$#$*",
+"++$$+#+$$&$$$%**&$#O$*****$$$$$$&&*=***-=*=*&+#++$++#+#$*$$&*%*$###%*%***##&$#&$&**=*==;***&+#++##+###*&&%%%*&##+#&*****#$&$$%%*",
+"&&******====*%%-**%%*****$$$$$%&&+#+++#+#$++++$&&*=***====**%*=**%%%*=**&%%%&&*#&#++++#&###+#*&*=*&&*-====%%**-*%%****%%$$%&%%##",
+"$*::;=======-*%****=***%$$*$$$%*&++OooooooX+++++*=::;;;;;;==*%****==**%%&&$#$&*#++Oo o  ooo++&*=::;;--:-:-=%***=*=***%%%%##&*&#+",
+"#*==========-*%%%%***$*$$%&$@#$%&++++++#+$+++&++*=====*=====%$$$%**%%*%#*%###%%#+++#++#+++++#+#=--==-*----=*&%%&**&*%%%*%$##&$#+",
+"#&==****=--;;*%**$$$*&**%$$$@@$$#+++#++#$$##%%##*==****--;;=$%*$#%%*%=*%####@$$#++#++##&##$+##$*=*****-;::-%%*#$%%%**%%%####$##+",
+"$*======-----*%*%&$#$%$*%$@@#$$$###+#@++O@#$%$$#*=-*--*---;=$****#$%%%%$$#@#$&$O+#+##++##+#O##%*:-----;;--*$%**&#%%%&*%####$&###",
+"$&;::-=-;---*$$*%%$%%%&*%%$$$&&$#+######$@#$$$$$*:::-*::-=-*#%*%%%$%%**%$$#$$$$O#+#+##########*=:::--;;;-**%*%%$%%%%**%###&&$#+#",
+"$*::=-*=-*==**@%%%$%***==%$%&*&$#++#####$$$$$$*$*:::--;--;**$#$%#%*%**=*$$$%*$$$#+#########$#O%=::-*-;-;-**##%&%%**%***%&&*&&##+",
+"#*;;--;;==;==%%==;;;:;====&&$&&&&##+##+#$#$$$%%%;;;;-;;----*%*---;;;;;;==&$$$$&&@###+#########$;;--;;;----*%**---:;-==-*$&&&&&##",
+"#*;;=;=-*-=***=;;;;;====:=&XoO+O++#######$$$#%%%-;;;---=-****;;;;;;;;;;;=+XoOOo#+######+#######=;;;;--*-*-**:::;:;;;:--*OXO+OO#+",
+"#%;;;:;;*=*%***;;;;;:==:::&Xo+O++##++++#+#####%#*;;::;-*-**-%-;;;;;;;=;;=$XoOO+++++++#+##+###@#=;;;;;-**&***-:-;;;;;-;:=OXo++++#",
+"#&:;;;=;=*=*=**-;--==:::=:&ooO+###+++##+#####$##*;;;;;-*******;;-;;;:;;==$ooO+$$##+#++#+###$##$-;;;;;--**=***----;:::::=#Xo+###+"
+};
diff --git a/hacks/images/tunnel4.xpm b/hacks/images/tunnel4.xpm
new file mode 100644 (file)
index 0000000..66b135c
--- /dev/null
@@ -0,0 +1,134 @@
+/* XPM */
+static char *texture4[] = {
+/* columns rows colors chars-per-pixel */
+"64 64 64 1",
+"  c #201C02",
+". c #2C2703",
+"X c #332B06",
+"o c #352C17",
+"O c #393311",
+"+ c #3D3626",
+"@ c #1D1B00",
+"# c #453917",
+"$ c #443C0A",
+"% c #453B24",
+"& c #4F4516",
+"* c #4D4328",
+"= c #574927",
+"- c #585033",
+"; c #645630",
+": c #72623A",
+"> c #57544F",
+", c #645B53",
+"< c #6A645D",
+"1 c #70684F",
+"2 c #6B6867",
+"3 c #746C68",
+"4 c #7A736D",
+"5 c #7A7876",
+"6 c #6F6F70",
+"7 c #7F7F80",
+"8 c #7F807E",
+"9 c #7F8081",
+"0 c #857A6A",
+"q c #847C78",
+"w c #82775A",
+"e c #817F80",
+"r c #89827C",
+"t c #93867B",
+"y c #958E72",
+"u c #A1927D",
+"i c #92805F",
+"p c #8B8886",
+"a c #948D88",
+"s c #98928D",
+"d c #9A9796",
+"f c #908F90",
+"g c #9F9EA0",
+"h c #A3958C",
+"j c #A39C98",
+"k c #AD968D",
+"l c #A19FA0",
+"z c #A7A29D",
+"x c #B3A59C",
+"c c #A4A085",
+"v c #AAA7A5",
+"b c #B3ACA8",
+"n c #B7B2AD",
+"m c #B9B7B4",
+"M c #B0B0B1",
+"N c #C3BCB7",
+"B c #C3B5AC",
+"V c #C1A799",
+"C c #C6C1BD",
+"Z c #C9C7C5",
+"A c #D2CBC7",
+"S c #D7D5D2",
+"D c #E2E0DF",
+"F c #E2DBD8",
+/* pixels */
+"M6a5ClMCg9<*=B4bfdzBm0>adbtxzsl5krtd4sr4hv8AznbqkjNhZdqjzvge4fZf",
+"6bvCg,855mf*&Cbarldr3sCNmjvvz6sndjt4jkbzflvszrhxtpshfdMpbbpMlNpv",
+"mav4>gCZDz4*-cyrxa4mavd5rrja6fbvCadxCmtr8sal0hztbajqfvMfd7gpggvd",
+"vbddMS9d96s*-jzzzCnbssddajppvvzvdraavpppvaNdxmdNqdjjvvpvvdgvmvpf",
+"pddjpp9vpd,-&rbadjfbaBbjhxprppp83jpavvvZfMpfdzsrebm7fasldtvmppvm",
+"vMjvfdga7gS1&bjhxaarsjjs3azNavmmvCnndpmrglgvvdsrzd45jbMjMvMfpdMm",
+"dfdplrvfdv3.&nsstBxtsta3zk6alsssr2mjfdddldMdjpqxzvvvdpplfpglvvvp",
+"gvp6mMvdpfC+*absa0qh2tqbnkCzrbxzsdvdzzazdffvrjjsseadfljevnMpdv6f",
+"mvMZvvvaffp+#xxqrNNBFhmMq4apBvt2vvfpddfafCjpshCz4rvaajCjv6szz<5m",
+"dfffvd8dsfbo#anvAab45hdqjSANpjbSddmAbmplMdzzmvapNCdjnzpr5hdmaMSv",
+"ddMsjdCdfds+-aldps5jNzdNC,qerqv6pmM45gdva6ds<pvsdaBpjCstvfbdpgpd",
+"9CgddfpvNvd*#qldjjMvv2pqqqpabSdzMg52MsvbrxbpbndnvdrrartCd<dsMfdM",
+"MM9MMvgfeef*&aszj4vzvpm5Ajsmj2dveemZffv5BmnCzsdab44dhanarbZm5pmd",
+"vggM5f2vMSv*:<dppvvb6m2dn2pbvjzrdMCdMmfCmrfsasbbadvaanktxf0vvvg9",
+"fdmgMgAvM65&&sbMMbZfs4mp2aAb3BzjMM8vl9mf2aZdpdrzdzpddsxbhdbpszCl",
+"mm8f6fdjpZa.=mvavj4afMvAZbarBrssvpdldCvvNM26d5g6prarzathbppNx5r2",
+"f2zlNnnlmd5o&4azrbMpvZM6<yvbsrzzzvrvfddpfd5vjxhbNvxChmp4xANsaBxm",
+"dsjrmvmp7jM+=Cdavpfdgfpbnmmtsn25v6np5pa6d2ml5dCN2sBaea0ld<qqhezs",
+"nxrdgffvmv3o;kdgMzgvM8ld5brzmzvdgngvvmxvmzepfja3Nj30qpjfdAfbxdnk",
+"zzffvdvMfsjo=cnppgglZvfvCdrd<sbdmfggvbzd4mpjdzpz2pspxjtnfejbjjas",
+"8fdNdgddjvjo%4lmggg628d9fdMnCzdffgfdvdaMdazsqMmmbS7ddlmaMqhhxvah",
+"mjrsjdmvbpfo=dMdfpllmm8gvadpdpgMMsvmgpvdvmpsMpprf5dvv54apMxekphz",
+"fdgfrfdfdbdo=N5dmMMl9fdjzjnv8ffgdvmlafpxz0bMfgvfvf757CMmjs4aabxd",
+"fcNmvvdfvdpo:bgf9fdMfdmlbj3slnlfggffpMgamdp8mdMMdpgmCgfZdaqNbfjN",
+"tbr2smzqMss#:s6gMgMfZMddfdCCfpvlMdfgZd6zz5mdpMdgppMb2pa5sbs45Mj4",
+"CndNbraZpnf%-jvddgdp9ff8MjtpljMvfggfdvZzbepdv59d7vp5lnlfqsqMAzbh",
+"r354rxN00bpo*ffMd8pmCMvZrtzzdzvdgdgMllrdpfZfpMvvMvvZflvnBdnnqnje",
+"4skCmvpnzs<o=MMfdCvdrpvfvszvvzlgdgMfMpldvm5dMp7fd2g6ggdvhpbxsa4C",
+"NcAstqassj5o;fffM8vvvnpZdbSrvdgMgddzdsbdMdMvfdbxdgvNldMMvjzhmsal",
+"qNt33shjsa5o#vfCf666gpjfvg<sgfMfdlvfvlfdzdpqZnplddMpdgpveqha5eNj",
+"s4jbCxs3pnj.-nZf8nfCrmlnzajfjNfMfgdzvfdzjtvd44MjvM576gZaqjxnjmMs",
+"hsxk4qjCjbj%#n5,8fdaCsd8dmvgMdggvm8NrdjjjjmdjNjnx>zjnAgvjZjsejfj",
+"hakbnv1aaspo*6cnajBznffsnvvgpMvfldc5vvbbpfa6mddrpAbjdd8sC5tshpdZ",
+"pNajjkvdvm2O=dg8Cnjzfvbs5dddvffszfvmmp6rjMd6f5dvd<zssvazfaj4Nzvj",
+"Szqkhxrrnr8+&<8CvdgmlsjCbmdvMgZazzff6vmNmadM8gbbrdz55zavpntjddfp",
+",jvjj5aBtj,X-lMvpM8rdzd8rr5gfMdbvlavMprd86d5gjzaqb6zCas4jqtj0pqn",
+"ma2eanjmsplo&888d5Zv4svfnzdamjvsvzgcspjzvgdAnbvbszlp4MzssjxhAdj5",
+"jsZBdsvaza5o-DcgvAxhxvcspsndMlpjvgmMazCvvfzrsdfsvvazlssNtBrr3szm",
+"ajqj4sh>se>o;1-8,1411-8;o--+-pu18:-;111;-<1-ky10tiyy4iu8xitqic,s",
+"o O%.X$#@@.&&XX.X$.&.$XO&&OO$XX#$X&$&&O&$$&&$X&#OXOOXXX.X$X.OXX&",
+"y0hhyyuyyuu&&>yy11y&yy11101==000&i-1:*1=;*w11:wi1ywtxdzyt<yytsy3",
+"jAAvnSFCmZSO&dNnzfCCCACbbnNANBnbZMvZzCCmAZNtBmbbNdnCZZsvmzCCAMCb",
+"jjabv5s5zd8,&cpgz8crsdcflbhsNsVvdjzpfmmmp23sfffsaba446dNhzhx4pxc",
+"aaxjffMmz>5*;vfdfg9smzzsjqxhexj2v88vCg>6fvsrdzjvdarbzmvrjdzpvZap",
+"MdvvpMgr6naO=Cdzdplz2dvCemjaxseNzcMfsamgdCpnjdma4sbNazbdgM9ZmNml",
+"g8NrfvvMmfd+=spddMMNl8azlqqpzzhvvdxsdM>>mdvdrvsjbnqqbfpfb<Mrgv<6",
+"gMfMfgf8p4pO;ytag4marffpbCbvljCjpjbpabCzrvfrCqsjjpsx42gNdpbp5d6Z",
+"98dpgldldNz#;bbC8z3fbzznbqbvvvegpMzlSvpbMsbj5bbqskNbmvmp4gagZgZp",
+"dvMMggsvzdb1=arpbMNCeabsqN,2NefepAdddsneqbehaq4ZsZC3ajjMvseekvdv",
+"MMd86vmbjzpo=Cnn0qz0vhqjbq5MbzvmMdmZeke<jaVxsbZzja3jsdBpfbsNNzMe",
+"Zg9gMg<rnb5O:ap0jnzqjxzjavZfBevvdvdpejaNhakhflznbddptj3snhnhqfeM",
+"828d46CApan1ObZaNfeNB3znAadvedjhddjfbCksjVxjea>p3NvNn>jaqqjuzjl5",
+"mmCvdvb2snaO;jrajmbhxzjqebseqCjMevxvjfenxkualBbZbjbBrvdAjNbajjbb",
+"dglpsnrxvf5O&0pjvqpjjbpVnxjeNvdeMgfseqqjq3VNa<qpxjp3qaxpdN,0jveg",
+"Md9vzzamszz-&4bnabz0vetx0<zMgq>mgdqvCeCsaBq3afsgpqqNZCxsspbvdfvl",
+"gdvdscCszz5*&xd5jdpbpqtavSNvvMlefmvvexeqBeejvlMvdbBpq2akebsddqfg",
+"fqdzbadhxp5O=0asddjpq5j0jvpgvjvvvfrejpsNhpZxbvd4qsaMeCm0pknqpvln",
+"fmdvfadbtjr-&vjsrdmppmdCnqpZdfdasjMnjjvk3NalepjzAhspCvjbjj4NAMvb",
+"Mdrvsamdzbl%;sqjBmq0z0vqfvNdpfevjppfss5dAaapfnbdefNm3qeqnddddjjs",
+"pfbvjnvpjsq*&rjnvbhmjtjvnjfpq5zqbmMkkvMpabedvjqzlmbe4jabkbMvdgjn",
+"bNjxad65M5q>=jd>atsqjChhtzff5lhjjhdaBdfbaqhf5lMdsvd6d6vbe5ajMdev",
+"a5x5zMgSsjN*$0sSaaAjz6pmnjavM,3bjkqBj0ssdCZsmv7ll55Mjjh3jmemfjja",
+"dAv5p>vd5v<o;jd15z<jhlnsajhjjsNdqja,3jsjjvpavaddvdnnpvvgbafflnhl",
+"gdvmpmv5nsM*#pZjFzxszzjbdfNbeMzqnjfzAxmjvvqdpsdvse<0fZMpdgevmdss"
+};
diff --git a/hacks/images/tunnel5.xpm b/hacks/images/tunnel5.xpm
new file mode 100644 (file)
index 0000000..5012185
--- /dev/null
@@ -0,0 +1,134 @@
+/* XPM */
+static char *texture5[] = {
+/* columns rows colors chars-per-pixel */
+"64 64 64 1",
+"  c #1D1A1B",
+". c #221D1E",
+"X c #2D231F",
+"o c #2B2628",
+"O c #332C2D",
+"+ c #342D32",
+"@ c #34312D",
+"# c #3B3537",
+"$ c #2E2D30",
+"% c #3C3A42",
+"& c #433A3B",
+"* c #453D43",
+"= c #48413E",
+"- c #51423D",
+"; c #4A4547",
+": c #4D4A52",
+"> c #544B4B",
+", c #564D53",
+"< c #58514D",
+"1 c #5B5557",
+"2 c #4F5053",
+"3 c #5C5A63",
+"4 c #5E615D",
+"5 c #5F6469",
+"6 c #635A5B",
+"7 c #61534C",
+"8 c #665D63",
+"9 c #715D68",
+"0 c #69625D",
+"q c #70635E",
+"w c #6B6567",
+"e c #6E6A72",
+"r c #6E7073",
+"t c #74696A",
+"y c #756C74",
+"u c #79726E",
+"i c #7A7477",
+"p c #6E706E",
+"a c #7D7982",
+"s c #7E8183",
+"d c #816E77",
+"f c #82756C",
+"g c #84797A",
+"h c #907F73",
+"j c #857C84",
+"k c #947F8A",
+"l c #8A827D",
+"z c #94877B",
+"x c #8A8488",
+"c c #8C8892",
+"v c #948989",
+"b c #958C94",
+"n c #9B938B",
+"m c #9B9497",
+"M c #8E908D",
+"N c #9D99A1",
+"B c #A3948B",
+"V c #A49898",
+"C c #A59397",
+"Z c #A49AA4",
+"A c #ABA099",
+"S c #A9A3A9",
+"D c #ABA8B2",
+"F c #B5ABB0",
+/* pixels */
+"o4iiy38j9yt6dd6tkNZkZZk93*j,;1ewyccwecccaw:t98e88e8,3a,9939e#+&*",
+";2raaa,3*9ddd9qjkZZZDkka9:39eiaiacci%2jcj98yyiaeeya8339999ey**;*",
+";:1ayad7dgdt66dvNZZZZDk999jadgxxjcbcg,:aj1,dyiiaaaaa33:a3339:*:;",
+"*,*;yjkjd96,,9jxbkbZZkkjt*k9wikcmmNbbj91d7@iiair9aaaaaaa53*9:*,%",
+"%:&*9gt>,9969yjvcbCZbcbdj,kjggcbmZZCbkt9tto;iiitaaaaaaaaa8,8,***",
+"%*O:89,>,yjytdkbbbbCvkkdk*ivkbCCZNCmct7t666+2irr5aaajjcaaa93,#**",
+"#*o*8w9,9gjagxcvbmCbvkjik7dxvbmNZZZmx99gy369#>traaaakkkkjae8,+**",
+"%*.*9ee69jkjjcvvvcbvxjigd99kxCmCZZZmc<9giw96w@,t9a3aajakaae9,o*%",
+"**X1yy7>6gvjxcvxxkcvvhgu<68icbbcbZmbc<9glji88tO:eyyeaajsaaa93o**",
+"&&o6ykh7=;1,1wiaddjkhkg7666>6jvvvckkj<wvbvxi196X,yye5eaia33,9o*+",
+"&XO69kvvttut6w68,&6figg>kt9dq,uvcgigl=tMmbcxe69<.;:*+$oo +o+9*+&",
+"**&,dvgu6tt66wtdf6;&&&66j67fgd<0gjhxl;wmmmbMgt7w7>7<01<;%+%*6,+*",
+"*,**i8886yyttygdgtittq1199qtfhhq1wgjx<6cmbmbxx66f8ugj1w113,893+*",
+"&&*o8:39yglgghggguuyfut9wt97666tutwug61xcbmbccaet1ycj80w399y99+o",
+"....*,tggvvxxxvxgljgutd87gufuuqqulgtg6,xscbbcvjg8;imce192:*,76*o",
+"&,69&6dvxnCnvvvvxxxjjii>tgihlutwttugg6<faaccxccy8;4pye;;>*76696*",
+"+&,:@6dnmVmCmbbbxxxxxlw>glMnvluttwtflw=uuivbkcjey1,8ww66686<>*#O",
+"+;1;O6jbmmmmCbvvvxlxlg,<iuMmmMiyttwwuu#tixccxi8tt6uiyt9w6<-;;#+$",
+"*8w1$0vmmmBmmbvhvxlxxl11liMmmvitttwett;>gxcji86,>;ww6>6;*&;,:1>*",
+"7tlw@8bZVVmbmbvgfigxlgq7uxnbmbittpttft8&gxcy96;7<6tt1=;O#*,1w911",
+"wyyw*0xZZbvggq6#&>&>6fp=2116ugguuitwlli&iMawp<<68tpt8<;O$;1we9w8",
+"yew,#1ei3*&&--qq&utwtfuttfgw,>,660pulxx>wx8uw068euew83>+#:5eeeey",
+"ie8>,*><769ufhvz&fbgt0wt99tdgtyut7<><0u9@wwu6w1qyyyw1::&@>88eeaa",
+"ye9*gdfghguytigv<6mgutut69yijgthzguqwwtg6tgu<0<wgiy032::;%38etee",
+"1#@1ay8816ugglxxu>VliigiuxxlMvxxxgt686,66th977<uuip141:;;o<8ewee",
+"o$8xxyw818ixxbvvx>nxxjxxgxccmmMbvi8,,;&+>ff<w76giiw0w6,-:##15w,#",
+">;8iijjjw8xbVZbxb6gmMglirxmmmmmvxw;,8,*&6dy;67qgiiteww>;;1##<,;:",
+"6w83bmCvjavVASmMcu0mmxggxbmMZmbgt<1<,,>7ww67q7quuuuiyw:;;2,=>w66",
+"<q1>bmVbvcbZSSmmvj>vVnxvMbmmmbkt<60<111,68,w60quuiliuw<:;>,,69w<",
+"+o*&jmbbmmVDFSSmbk>gnbmbxbmmCcg6<10<,t6116:tqq6ppsaiw<>,>1<w1,1#",
+">@&;yvxbVNZDFSmbbbt,bbbMxccbjdt;<761<ww11,<616606ppw1;>;6;4r38:+",
+"2:&:yacjmNZSDVxxxji:vmMbcxbj;t,><166tep661<<><2->1<<>&****ware;#",
+",;+:jiccbSVZZbggddv66vxxcay*6l;#>>60pyyw101rt0<&&&&>;**#:,eaae:%",
+">;::aucZmZmbbbgggnnv-tlgiw#7hzu#;<<4www10<1wwtutq>&&;<;;6eaaaa;$",
+",;3#uimNbNvbcxxvfvvvf1gii%>dggx1#<1<1e1:1;wt8,6wuutqw6&wisxaaa:%",
+";+32ibmbixdtivVv6Czvv66u6@1wgxgl-=<<1w1,1=0rp1,68ty6i23iaccser%%",
+";#e;weyt888dlfhg,ncgjj>t;@3rlsllg#<<6113<<wlly6wte1;t;wesxccaa%;",
+":;i:&#&6tfzgut1j&&6ghnf>;10gxlMxx1&<1121<0pxxjaity:11:upscccsa%:",
+">;yiaduyuuq0dz7gxfkvvzvtfu6gMMNMjj2&<<1:6uxxxxiarw;6;1iagxxcci#:",
+"1;8<66680w41gv,vhBvffgzhvl1uxMANcjv&;11;wgxxxsxjtwo+;#;8eiaiww*1",
+"w1;*>wwwtaglg;ukCCnlfggvng;wiMSNNxjt<11>ygxcxcxxii0=601>;<<;;=2w",
+"52,pwtiixbmb<gvxCACnnhtunl#0imSSZbggt61>pgxvxxxgiuu06weewwqwp22w",
+"=16618xcbNZwuvfzBnVvggt6zl=0lMSSZcxigt1;wgixMxxgi<12;618ewww,71=",
+"160wjivcNmb7guvvBvnguiigxz;1gMNSDNcipuw;wi1uxxui6<44133wttpu,**6",
+"=118jgbjmmi6yuVnbnvillxmzl14xMNDDZcjayt=8i6qlluu>0wpe513wpiu8;#&",
+"<61eNicxmVuttzBvvnVhxvmnzz4<lMADSDNciew1<wttlur28prrr33wtuuu61;:",
+"<4<1ZugmVVww6BVlvBnvznzzzz01iMNDDSNcgw66=0uwiuw;eaire358uuiuw1,>",
+"<12emtcmCB6u6BVgMVBnzzzffu0<usNSDSNckyw661<1wu;4rssaee91tyiie1,:",
+"24>1xwcNmx7gwAABVBBBvnzzhzt>ixmSDSNmxiewww1##;;pacsaeww2eeiar311",
+"40<;xycNmtwdqAABAABnzzzzhlf<icmSNNbmMxrwetup<$4isscaewe:weiarw41",
+"101<a1bmm6gyfBBBAAAzzzzzzlu1iMmZNNbmMxip3yii4=eyxsaaree:wtuir041",
+"1p1;a8bmx6ntqBBBAAAzzBVmnvu<gxMNNNMcbxgr51ww#1rccxaieee:twyip053",
+"3ey2gewb19kqhBBBAABzBmVVVng<ulMVNmccxsur3,1>@5ajccxirra2wtiut0w1",
+"4expij>,>gB9BCBkzAAABnnVVvi<qMccbbbMxsi3:>,O;raxcxcsaaj18tutpw53",
+"3pcyyxi669kdBzBzznAAAVVBVniw<ilxccbMxiw,19&&4rsccscsxsxwweppeep4",
+"5ecx6xxj>tdfBBBBzzMVNASVmnlgt>plxxbxje9t97@>wscaccccaiiw6tyryye5",
+"55ac<tjd&6y1>nBnBnzzVAAZVbgggw>wxcMxt60ut#;4acsacbcxxaje8eutpp55",
+"00pw&8jjugvx&-fzBBBzznAZVMffq6u&1xaetijgw#1racaaxjjcbaxy<wwpww10",
+"1ww;#pikvkzgd7&&6znBnMnVVnu<6tVi%4ribZVV:.1easaas5ecxrji6pww1:$<",
+"333,%rjjgt7dxvhq2-1wpljhnnu=->bmiwixVmcx8$.,raaeaayjgijj1044:$23",
+"5311:jcd,,vCCCBiakj818,;66;;;<vCgiibbxw<81+.*:8eyaaayeyj61;>$#33",
+"2323ead>tvkjyyj6imNZZNx16w6<*gnnijmca2;ij9,9:%%%+$*%+*3181;#o#::",
+"$2raae,9vt9yy6#,vCCZCCbtw*6gkxjcccbi*,accy,yaae93:,,,;;::1we%#;$",
+" 3sia89dud91du>6vbbbZmv98,mvge9yxcceejccc9,y88ee8e83:;,89ett@#%%"
+};
index bc58f372255c14bbb03f011fd8bd1a7c26e098a4..3b3773225c684d43cbac415437d86e49c3a10e58 100644 (file)
@@ -133,21 +133,19 @@ static Bool solid;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-  {(char* ) "-pattern", (char *) ".juggle.pattern",
-   XrmoptionSepArg, (caddr_t) NULL},
-  {(char* ) "-trail", (char *) ".juggle.trail",
-   XrmoptionSepArg, (caddr_t) NULL},
+  {(char* ) "-pattern", ".juggle.pattern", XrmoptionSepArg, NULL},
+  {(char* ) "-trail", ".juggle.trail",     XrmoptionSepArg, NULL},
 #ifdef UNI
 #ifdef UNI
-  {(char *) "-uni", (char *) ".juggle.uni", XrmoptionNoArg, (caddr_t) "on"},
-  {(char *) "+uni", (char *) ".juggle.uni", XrmoptionNoArg, (caddr_t) "off"},
+  {"-uni", ".juggle.uni", XrmoptionNoArg, "on"},
+  {"+uni", ".juggle.uni", XrmoptionNoArg, "off"},
 #endif
 #endif
-  {(char *) "-solid", (char *) ".juggle.solid", XrmoptionNoArg, (caddr_t) "on"},
-  {(char *) "+solid", (char *) ".juggle.solid", XrmoptionNoArg, (caddr_t) "off"}
+  {"-solid", ".juggle.solid", XrmoptionNoArg, "on"},
+  {"+solid", ".juggle.solid", XrmoptionNoArg, "off"}
 };
 static argtype vars[] =
 {
   {&pattern, "pattern", 
 };
 static argtype vars[] =
 {
   {&pattern, "pattern", 
-   (char *) "Pattern", (char *) DEF_PATTERN, t_String},
+   "Pattern", (char *) DEF_PATTERN, t_String},
   {&trail, "trail", "Trail", DEF_TRAIL, t_Int},
 #ifdef UNI
   {&uni, "uni", "Uni", DEF_UNI, t_Bool},
   {&trail, "trail", "Trail", DEF_TRAIL, t_Int},
 #ifdef UNI
   {&uni, "uni", "Uni", DEF_UNI, t_Bool},
@@ -156,12 +154,12 @@ static argtype vars[] =
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
-  {(char *) "-pattern string", (char *) "Cambridge Juggling Pattern"},
-  {(char *) "-trail num", (char *) "Trace Juggling Patterns"},
+  {"-pattern string", "Cambridge Juggling Pattern"},
+  {"-trail num", "Trace Juggling Patterns"},
 #ifdef UNI
 #ifdef UNI
-  {(char *) "-/+uni", (char *) "Unicycle"},
+  {"-/+uni", "Unicycle"},
 #endif
 #endif
-  {(char *) "-/+solid", (char *) "solid color (else its a 4 panel look (half white))"}
+  {"-/+solid", "solid color (else its a 4 panel look (half white))"}
 };
 
 ModeSpecOpt juggle_opts =
 };
 
 ModeSpecOpt juggle_opts =
@@ -313,44 +311,44 @@ static PatternIndex* patternindex = (PatternIndex *) NULL;
 
 /* List of popular patterns, in any order */
 static patternstruct portfolio[] = {
 
 /* List of popular patterns, in any order */
 static patternstruct portfolio[] = {
-  {(char *) "[+2 1]", (char *) "+3 1, Typical 2 ball juggler"},
-  {(char *) "[2 0]", (char *) "4 0, 2 balls 1 hand"},
-  {(char *) "[2 0 1]", (char *) "5 0 1"},
-  {(char *) "[+2 0 +2 0 0]", (char *) "+5 0 +5 0 0"},
-  {(char *) "[3]", (char *) "3, cascade"},
-  {(char *) "[+3]", (char *) "+3, reverse cascade"},
-  {(char *) "[=3]", (char *) "=3, cascade under arm"},
-  {(char *) "[&3]", (char *) "&3, cascade catching under arm"},
-  {(char *) "[_3]", (char *) "_3, bouncing cascade"},
-  {(char *) "[+3 x3 =3]", (char *) "+3 x3 =3, Mill's mess"},
-  {(char *) "[3 2 1]", (char *) "5 3 1"},
-  {(char *) "[3 3 1]", (char *) "4 4 1"},
-  {(char *) "[3 1 2]", (char *) "6 1 2, See-saw"},
-  {(char *) "[=3 3 1 2]", (char *) "=4 5 1 2"},
-  {(char *) "[=3 2 2 3 1 2]", (char *) "=6 2 2 5 1 2, =4 5 1 2 stretched"},
-  {(char *) "[+3 3 1 3]", (char *) "+4 4 1 3, anemic shower box"},
-  {(char *) "[3 3 1]", (char *) "4 4 1"},
-  {(char *) "[+3 2 3]", (char *) "+4 2 3"},
-  {(char *) "[+3 1]", (char *) "+5 1, 3 shower"},
-  {(char *) "[_3 1]", (char *) "_5 1, bouncing 3 shower"},
-  {(char *) "[3 0 3 0 3]", (char *) "5 0 5 0 5, shake 3 out of 5"},
-  {(char *) "[3 3 3 0 0]", (char *) "5 5 5 0 0, flash 3 out of 5"},
-  {(char *) "[3 3 0]", (char *) "4 5 0, complete waste of a 5 ball juggler"},
-  {(char *) "[3 3 3 0 0 0 0]", (char *) "7 7 7 0 0 0 0, 3 flash"},
-  {(char *) "[+3 0 +3 0 +3 0 0]", (char *) "+7 0 +7 0 +7 0 0"},
-  {(char *) "[4]", (char *) "4, 4 cascade"},
-  {(char *) "[+4 3]", (char *) "+5 3, 4 ball half shower"},
-  {(char *) "[4 4 2]", (char *) "5 5 2"},
-  {(char *) "[+4 4 4 +4]", (char *) "+4 4 4 +4, 4 columns"},
-  {(char *) "[4 3 +4]", (char *) "5 3 +4"},
-  {(char *) "[+4 1]", (char *) "+7 1, 4 shower"},
-  {(char *) "[4 4 4 4 0]", (char *) "5 5 5 5 0, learning 5"},
-  {(char *) "[5]", (char *) "5, 5 cascade"},
-  {(char *) "[_5 _5 _5 _5 _5 5 5 5 5 5]", (char *) "_5 _5 _5 _5 _5 5 5 5 5 5, jump rope"},
-  {(char *) "[+5 x5 =5]", (char *) "+5 x5 =5, Mill's mess for 5"},
-  {(char *) "[6]", (char *) "6, 6 cascade"},
-  {(char *) "[7]", (char *) "7, 7 cascade"},
-  {(char *) "[_7]", (char *) "_7, bouncing 7 cascade"},
+  {"[+2 1]", "+3 1, Typical 2 ball juggler"},
+  {"[2 0]", "4 0, 2 balls 1 hand"},
+  {"[2 0 1]", "5 0 1"},
+  {"[+2 0 +2 0 0]", "+5 0 +5 0 0"},
+  {"[3]", "3, cascade"},
+  {"[+3]", "+3, reverse cascade"},
+  {"[=3]", "=3, cascade under arm"},
+  {"[&3]", "&3, cascade catching under arm"},
+  {"[_3]", "_3, bouncing cascade"},
+  {"[+3 x3 =3]", "+3 x3 =3, Mill's mess"},
+  {"[3 2 1]", "5 3 1"},
+  {"[3 3 1]", "4 4 1"},
+  {"[3 1 2]", "6 1 2, See-saw"},
+  {"[=3 3 1 2]", "=4 5 1 2"},
+  {"[=3 2 2 3 1 2]", "=6 2 2 5 1 2, =4 5 1 2 stretched"},
+  {"[+3 3 1 3]", "+4 4 1 3, anemic shower box"},
+  {"[3 3 1]", "4 4 1"},
+  {"[+3 2 3]", "+4 2 3"},
+  {"[+3 1]", "+5 1, 3 shower"},
+  {"[_3 1]", "_5 1, bouncing 3 shower"},
+  {"[3 0 3 0 3]", "5 0 5 0 5, shake 3 out of 5"},
+  {"[3 3 3 0 0]", "5 5 5 0 0, flash 3 out of 5"},
+  {"[3 3 0]", "4 5 0, complete waste of a 5 ball juggler"},
+  {"[3 3 3 0 0 0 0]", "7 7 7 0 0 0 0, 3 flash"},
+  {"[+3 0 +3 0 +3 0 0]", "+7 0 +7 0 +7 0 0"},
+  {"[4]", "4, 4 cascade"},
+  {"[+4 3]", "+5 3, 4 ball half shower"},
+  {"[4 4 2]", "5 5 2"},
+  {"[+4 4 4 +4]", "+4 4 4 +4, 4 columns"},
+  {"[4 3 +4]", "5 3 +4"},
+  {"[+4 1]", "+7 1, 4 shower"},
+  {"[4 4 4 4 0]", "5 5 5 5 0, learning 5"},
+  {"[5]", "5, 5 cascade"},
+  {"[_5 _5 _5 _5 _5 5 5 5 5 5]", "_5 _5 _5 _5 _5 5 5 5 5 5, jump rope"},
+  {"[+5 x5 =5]", "+5 x5 =5, Mill's mess for 5"},
+  {"[6]", "6, 6 cascade"},
+  {"[7]", "7, 7 cascade"},
+  {"[_7]", "_7, bouncing 7 cascade"},
 };
 
 /* Private Functions */
 };
 
 /* Private Functions */
index dafcf1649982e66988cfc200b9a59059a52b17e7..a39025d5659ce0538128e941cbd65adc3f6483c6 100644 (file)
@@ -58,8 +58,8 @@ static Bool track_p;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {"-mouse", ".julia.mouse", XrmoptionNoArg, (caddr_t) "on"},
-       {"+mouse", ".julia.mouse", XrmoptionNoArg, (caddr_t) "off"},
+       {"-mouse", ".julia.mouse", XrmoptionNoArg, "on"},
+       {"+mouse", ".julia.mouse", XrmoptionNoArg, "off"},
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
index 2606f5b552d875d2de596a7f9d3bf9d0cf611220..f58a96c0c9ed19ccbcc4e20791e6b66f0fd382e1 100644 (file)
@@ -62,8 +62,8 @@ static Bool additive;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {(char *) "-additive", (char *) ".lisa.additive", XrmoptionNoArg, (caddr_t) "True"},
-       {(char *) "+additive", (char *) ".lisa.additive", XrmoptionNoArg, (caddr_t) "False"}
+       {"-additive", ".lisa.additive", XrmoptionNoArg, "True"},
+       {"+additive", ".lisa.additive", XrmoptionNoArg, "False"}
 };
 
 static argtype vars[] =
 };
 
 static argtype vars[] =
@@ -73,7 +73,7 @@ static argtype vars[] =
 
 static OptionStruct desc[] =
 {
 
 static OptionStruct desc[] =
 {
-       {(char *) "-/+additive", (char *) "turn on/off additive functions mode"}
+       {"-/+additive", "turn on/off additive functions mode"}
 };
 
 ModeSpecOpt lisa_opts =
 };
 
 ModeSpecOpt lisa_opts =
index a30d3213b36c09384fcb4c7fcb5c339aaa2da6da..e271951960fa97cf4fe97cc93d276e181f35e287 100644 (file)
@@ -109,7 +109,7 @@ static int  neighbors;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {(char *) "-neighbors", (char *) ".loop.neighbors", XrmoptionSepArg, (caddr_t) NULL}
+       {"-neighbors", ".loop.neighbors", XrmoptionSepArg, 0}
 };
 
 static argtype vars[] =
 };
 
 static argtype vars[] =
@@ -119,7 +119,7 @@ static argtype vars[] =
 
 static OptionStruct desc[] =
 {
 
 static OptionStruct desc[] =
 {
-       {(char *) "-neighbors num", (char *) "squares 4 or hexagons 6"}
+       {"-neighbors num", "squares 4 or hexagons 6"}
 };
 
 ModeSpecOpt loop_opts =
 };
 
 ModeSpecOpt loop_opts =
@@ -1425,6 +1425,9 @@ release_loop(ModeInfo * mi)
        }
 }
 
        }
 }
 
+static void *stop_warning_about_triangleUnit_already;
+
+
 void
 init_loop(ModeInfo * mi)
 {
 void
 init_loop(ModeInfo * mi)
 {
@@ -1434,6 +1437,8 @@ init_loop(ModeInfo * mi)
        loopstruct *lp;
        XGCValues   gcv;
 
        loopstruct *lp;
        XGCValues   gcv;
 
+    stop_warning_about_triangleUnit_already = (void *) &triangleUnit;
+
        if (loops == NULL) {
                if ((loops = (loopstruct *) calloc(MI_NUM_SCREENS(mi),
                                               sizeof (loopstruct))) == NULL)
        if (loops == NULL) {
                if ((loops = (loopstruct *) calloc(MI_NUM_SCREENS(mi),
                                               sizeof (loopstruct))) == NULL)
diff --git a/hacks/memscroller.c b/hacks/memscroller.c
new file mode 100644 (file)
index 0000000..b4b98ba
--- /dev/null
@@ -0,0 +1,496 @@
+/* xscreensaver, Copyright (c) 2002, 2004 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ *
+ * Memscroller -- scrolls a dump of its own RAM across the screen.
+ */
+
+#include "screenhack.h"
+#include <stdio.h>
+#include <X11/Xutil.h>
+
+#ifdef HAVE_XSHM_EXTENSION
+#include "xshm.h"
+#endif
+
+typedef struct {
+  int which;
+  XRectangle rect;
+  XImage *image;
+  int rez;
+  int speed;
+  int scroll_tick;
+  unsigned char *data;
+  int count_zero;
+} scroller;
+
+typedef struct {
+  Display *dpy;
+  Window window;
+  XWindowAttributes xgwa;
+  GC draw_gc, erase_gc, text_gc;
+  XFontStruct *font;
+  int border;
+
+  enum { SEED_RAM, SEED_RANDOM } seed_mode;
+  enum { DRAW_COLOR, DRAW_MONO } draw_mode;
+
+  int nscrollers;
+  scroller *scrollers;
+
+# ifdef HAVE_XSHM_EXTENSION
+  Bool shm_p;
+  XShmSegmentInfo shm_info;
+# endif
+
+} state;
+
+
+state *
+init_memscroller (Display *dpy, Window window)
+{
+  int i;
+  XGCValues gcv;
+  state *st = (state *) calloc (1, sizeof (*st));
+  char *s;
+  st->dpy = dpy;
+  st->window = window;
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+  XSelectInput(st->dpy, st->window, ExposureMask);
+
+  /* Fill up the colormap with random colors.
+     We don't actually use these explicitly, but in 8-bit mode,
+     they will be used implicitly by the random image bits. */
+  {
+    int ncolors = 255;
+    XColor colors[256];
+    make_random_colormap (st->dpy, st->xgwa.visual, st->xgwa.colormap,
+                          colors, &ncolors, True, True, 0, False);
+  }
+
+  st->border = get_integer_resource ("borderSize", "BorderSize");
+
+  {
+    char *fontname = get_string_resource ("font", "Font");
+    st->font = XLoadQueryFont (dpy, fontname);
+
+    if (!st->font)
+      {
+       static const char *fonts[] = {
+          "-*-courier-medium-r-*-*-*-1400-*-*-p-*-*-*",
+          "-*-courier-medium-r-*-*-*-600-*-*-p-*-*-*",
+          "-*-utopia-*-r-*-*-*-1400-*-*-p-*-*-*",
+          "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*",
+          "-*-utopia-*-r-*-*-*-240-*-*-p-*-*-*",
+          "-*-helvetica-*-r-*-*-*-240-*-*-p-*-*-*",
+          "-*-*-*-r-*-*-*-240-*-*-m-*-*-*",
+          "fixed", 0 };
+        i = 0;
+        while (fonts[i])
+          {
+            st->font = XLoadQueryFont (dpy, fonts[i]);
+            if (st->font) break;
+            i++;
+          }
+        if (st->font)
+          fprintf (stderr, "%s: couldn't load font \"%s\", using \"%s\"\n",
+                   progname, fontname, fonts[i]);
+        else
+          {
+            fprintf(stderr, "%s: couldn't load any font\n", progname);
+            exit(-1);
+          }
+      }
+  }
+
+  gcv.line_width = st->border;
+
+  gcv.background = get_pixel_resource("background", "Background",
+                                      st->dpy, st->xgwa.colormap);
+  gcv.foreground = get_pixel_resource("textColor", "Foreground",
+                                      st->dpy, st->xgwa.colormap);
+  gcv.font = st->font->fid;
+  st->text_gc = XCreateGC (st->dpy, st->window,
+                           GCForeground|GCBackground|GCFont, &gcv);
+
+  gcv.foreground = get_pixel_resource("foreground", "Foreground",
+                                      st->dpy, st->xgwa.colormap);
+  st->draw_gc = XCreateGC (st->dpy, st->window,
+                           GCForeground|GCBackground|GCLineWidth,
+                           &gcv);
+  gcv.foreground = gcv.background;
+  st->erase_gc = XCreateGC (st->dpy, st->window,
+                            GCForeground|GCBackground, &gcv);
+
+
+  s = get_string_resource ("drawMode", "DrawMode");
+  if (!s || !*s || !strcasecmp (s, "color"))
+    st->draw_mode = DRAW_COLOR;
+  else if (!strcasecmp (s, "mono"))
+    st->draw_mode = DRAW_MONO;
+  else
+    {
+      fprintf (stderr, "%s: drawMode must be 'mono' or 'color', not '%s'\n",
+               progname, s);
+      exit (1);
+    }
+  if (s) free (s);
+
+
+  s = get_string_resource ("seedMode", "SeedMode");
+  if (!s || !*s ||
+      !strcasecmp (s, "ram") ||
+      !strcasecmp (s, "mem") ||
+      !strcasecmp (s, "memory"))
+    st->seed_mode = SEED_RAM;
+  else if (!strcasecmp (s, "rand") ||
+           !strcasecmp (s, "random"))
+    st->seed_mode = SEED_RANDOM;
+  else
+    {
+      fprintf (stderr, "%s: seedMode must be 'RAM' or 'random', not '%s'\n",
+               progname, s);
+      exit (1);
+    }
+  if (s) free (s);
+  s = 0;
+
+
+  st->nscrollers = 3;
+  st->scrollers = (scroller *) calloc (st->nscrollers, sizeof(scroller));
+
+  for (i = 0; i < st->nscrollers; i++)
+    {
+      scroller *sc = &st->scrollers[i];
+      int max_height = 4096;
+
+      sc->which = i;
+      sc->speed = i+1;
+
+      sc->image = 0;
+# ifdef HAVE_XSHM_EXTENSION
+      st->shm_p = get_boolean_resource ("useSHM", "Boolean");
+      if (st->shm_p)
+        {
+          sc->image = create_xshm_image (st->dpy, st->xgwa.visual,
+                                         st->xgwa.depth,
+                                         ZPixmap, 0, &st->shm_info,
+                                         1, max_height);
+          if (! sc->image)
+            st->shm_p = False;
+        }
+# endif /* HAVE_XSHM_EXTENSION */
+
+      if (!sc->image)
+        sc->image = XCreateImage (st->dpy, st->xgwa.visual, st->xgwa.depth,
+                                  ZPixmap, 0, 0, 1, max_height, 8, 0);
+
+      if (sc->image && !sc->image->data)
+        sc->image->data = (char *)
+          malloc (sc->image->bytes_per_line * sc->image->height + 1);
+
+      if (!sc->image || !sc->image->data)
+        {
+          fprintf (stderr, "%s: out of memory (allocating 1x%d image)\n",
+                   progname, sc->image->height);
+          exit (1);
+        }
+    }
+
+  return st;
+}
+
+
+static void
+reshape_memscroller (state *st)
+{
+  int i;
+
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+
+  for (i = 0; i < st->nscrollers; i++)
+    {
+      scroller *sc = &st->scrollers[i];
+
+      if (i == 0)
+        {
+          sc->rez = 6;  /* #### */
+
+          sc->rect.width  = (((int) (st->xgwa.width * 0.8)
+                              / sc->rez) * sc->rez);
+          sc->rect.height = (((int) (st->xgwa.height * 0.3)
+                              / sc->rez) * sc->rez);
+
+          sc->rect.x = (st->xgwa.width  - sc->rect.width)  / 2;
+          sc->rect.y = (st->xgwa.height - sc->rect.height) / 2;
+        }
+      else
+        {
+          scroller *sc0 = &st->scrollers[i-1];
+          sc->rez = sc0->rez * 1.8;
+
+          sc->rect.x      = sc0->rect.x;
+          sc->rect.y      = (sc0->rect.y + sc0->rect.height + st->border
+                             + (st->border + 2) * 7);
+          sc->rect.width  = sc0->rect.width;
+          sc->rect.height = (((int) (st->xgwa.height * 0.1)
+                              / sc->rez) * sc->rez);
+        }
+
+      XDrawRectangle (st->dpy, st->window, st->draw_gc,
+                      sc->rect.x - st->border*2,
+                      sc->rect.y - st->border*2,
+                      sc->rect.width  + st->border*4,
+                      sc->rect.height + st->border*4);
+    }
+}
+
+
+
+static unsigned int
+more_bits (state *st, scroller *sc)
+{
+  static unsigned char *lomem = 0;
+  static unsigned char *himem = 0;
+  unsigned char r, g, b;
+  unsigned int v;
+
+  /* Pack bytes as RGBR so that we don't have to worry about actually
+     figuring out the color channel order.
+   */
+# undef PACK
+# define PACK(r,g,b) ((r) | ((g) << 8) | ((b) << 16) | ((r) << 24))
+
+  switch (st->seed_mode)
+    {
+    case SEED_RAM:
+      if (himem == 0)
+        {
+          lomem = (unsigned char *) progname; /* not first malloc, but early */
+          himem = (unsigned char *)           /* not last malloc, but late */
+            st->scrollers[st->nscrollers-1].image->data;
+        }
+
+      if (sc->data < lomem)
+        sc->data = lomem;
+
+# ifdef HAVE_SBRK  /* re-get it each time through */
+      himem = ((unsigned char *) sbrk(0)) - (2 * sizeof(void *));
+# endif
+
+      if (lomem >= himem) abort();
+
+    RETRY:
+      if (sc->data >= himem)
+        sc->data = lomem;
+
+      switch (st->draw_mode)
+        {
+        case DRAW_COLOR:
+          r = *sc->data++;
+          g = *sc->data++;
+          b = *sc->data++;
+          break;
+        case DRAW_MONO:
+          r = 0;
+          g = *sc->data++;
+          b = 0;
+          break;
+        default:
+          abort();
+        }
+
+      v = PACK(r,g,b);
+
+      /* avoid having many seconds of blackness: truncate zeros at 24K.
+       */
+      if (v == 0)
+        sc->count_zero++;
+      else
+        sc->count_zero = 0;
+      if (sc->count_zero > 1024 * (st->draw_mode == DRAW_COLOR ? 24 : 8))
+        goto RETRY;
+
+      break;
+
+    case SEED_RANDOM:
+      v = random();
+      switch (st->draw_mode)
+        {
+        case DRAW_COLOR:
+          r = (v >> 16) & 0xFF;
+          g = (v >>  8) & 0xFF;
+          b = (v      ) & 0xFF;
+          break;
+        case DRAW_MONO:
+          r = 0;
+          g = v & 0xFF;
+          b = 0;
+          break;
+        default:
+          abort();
+        }
+      v = PACK(r,g,b);
+      break;
+
+    default:
+      abort();
+    }
+
+# undef PACK
+  return v;
+}
+
+
+static void
+draw_string (state *st, unsigned int n)
+{
+  char buf[40];
+  int direction, ascent, descent;
+  XCharStruct overall;
+  int x, y, w, h;
+  int bot = st->scrollers[0].rect.y;
+  const char *fmt = "%08X";
+
+  sprintf (buf, fmt, 0);
+  XTextExtents (st->font, buf, strlen(buf), 
+                &direction, &ascent, &descent, &overall);
+  sprintf (buf, "%08X", n);
+
+  w = overall.width;
+  h = st->font->ascent + st->font->descent + 1;
+  x = (st->xgwa.width - w) / 2;
+  y = (bot - h) / 2;
+
+  if (y + h + 10 > bot) return;
+
+  XFillRectangle (st->dpy, st->window, st->erase_gc,
+                  x-w, y, w*3, h);
+  XDrawString (st->dpy, st->window, st->text_gc,
+               x, y + st->font->ascent, buf, strlen(buf));
+}
+
+
+static void
+draw_memscroller (state *st)
+{
+  int i;
+
+  draw_string (st, *((unsigned int *) st->scrollers[0].image->data));
+
+  for (i = 0; i < st->nscrollers; i++)
+    {
+      scroller *sc = &st->scrollers[i];
+      int j;
+
+      XCopyArea (st->dpy, st->window, st->window, st->draw_gc,
+                 sc->rect.x + sc->speed, sc->rect.y,
+                 sc->rect.width - sc->speed, sc->rect.height,
+                 sc->rect.x, sc->rect.y);
+
+      if (sc->scroll_tick == 0)
+        {
+          int top = ((sc->image->bytes_per_line * sc->rect.height) /
+                     (4 * sc->rez));
+          unsigned int *out = (unsigned int *) sc->image->data;
+          for (j = 0; j < top; j++)
+            {
+              unsigned int v = more_bits(st, sc);
+              int k;
+              for (k = 0; k < sc->rez; k++)
+                *out++ = v;
+            }
+        }
+
+      sc->scroll_tick++;
+      if (sc->scroll_tick * sc->speed >= sc->rez)
+        sc->scroll_tick = 0;
+
+      for (j = 0; j < sc->speed; j++)
+        {
+# ifdef HAVE_XSHM_EXTENSION
+          if (st->shm_p)
+            XShmPutImage (st->dpy, st->window, st->draw_gc, sc->image,
+                          0, 0,
+                          sc->rect.x + sc->rect.width - sc->image->width - j,
+                          sc->rect.y,
+                          sc->rect.width, sc->rect.height,
+                          False);
+          else
+# endif /* HAVE_XSHM_EXTENSION */
+            XPutImage (st->dpy, st->window, st->draw_gc, sc->image,
+                       0, 0,
+                       sc->rect.x + sc->rect.width - sc->image->width - j,
+                       sc->rect.y,
+                       sc->rect.width, sc->rect.height);
+        }
+    }
+}
+
+static void
+handle_events (state *st)
+{
+  XSync (st->dpy, False);
+  while (XPending (st->dpy))
+    {
+      XEvent event;
+      XNextEvent (st->dpy, &event);
+      if (event.xany.type == ConfigureNotify ||
+          event.xany.type == Expose)
+        {
+          XClearWindow (st->dpy, st->window);
+          reshape_memscroller (st);
+        }
+
+      screenhack_handle_event (st->dpy, &event);
+    }
+}
+
+
+\f
+char *progclass = "MemScroller";
+
+char *defaults [] = {
+  ".background:                   black",
+  "*drawMode:             color",
+  "*seedMode:             ram",
+  ".textColor:            #00FF00",
+  ".foreground:                   #00FF00",
+  "*borderSize:                   2",
+  ".font:                 -*-courier-medium-r-*-*-*-1400-*-*-m-*-*-*",
+  "*delay:                10000",
+  "*offset:               0",
+  0
+};
+
+XrmOptionDescRec options [] = {
+  { "-delay",          ".delay",               XrmoptionSepArg, 0 },
+  { "-font",           ".font",                XrmoptionSepArg, 0 },
+  { "-color",          ".drawMode",            XrmoptionNoArg, "color"  },
+  { "-mono",           ".drawMode",            XrmoptionNoArg, "mono"   },
+  { "-ram",            ".seedMode",            XrmoptionNoArg, "ram"    },
+  { "-random",         ".seedMode",            XrmoptionNoArg, "random" },
+  { 0, 0, 0, 0 }
+};
+
+
+void
+screenhack (Display *dpy, Window window)
+{
+  state *st = init_memscroller (dpy, window);
+  int delay = get_integer_resource ("delay", "Integer");
+  reshape_memscroller (st);
+  while (1)
+    {
+      draw_memscroller (st);
+      XSync (dpy, False);
+      handle_events (st);
+      if (delay) usleep (delay);
+    }
+}
diff --git a/hacks/memscroller.man b/hacks/memscroller.man
new file mode 100644 (file)
index 0000000..c4732a3
--- /dev/null
@@ -0,0 +1,68 @@
+.TH XScreenSaver 1 "14-Aug-2004" "X Version 11"
+.SH NAME
+memscroller - scrolls a dump of its own RAM across the screen
+.SH SYNOPSIS
+.B memscroller
+[\-display \fIhost:display.screen\fP]
+[\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP]
+[\-font \fIfont\fP]
+[\-delay \fIint\fP]
+[\-mono | -color]
+[\-ram | -random]
+.SH DESCRIPTION
+The \fImemscroller\fP program scrolls a dump of its own process memory
+across the screen in three windows at three different rates.
+.SH OPTIONS
+.I memscroller
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window.  This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use.  Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-color
+Render each three bytes of memory as R, G, B.  This is the default.
+.TP 8
+.B \-mono 
+Render each byte of memory in shades of green.
+.TP 8
+.B \-ram
+Read from the process's address space.  This is the default.
+.TP 8
+.B \-random
+Instead of reading from memory, generate random numbers.
+.TP 8
+.B \-delay \fImicroseconds\fP
+How much of a delay should be introduced between steps of the animation.
+Default 100000, or about 1/10th second.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2004 by Jamie Zawinski.  Permission to use, copy, modify, 
+distribute, and sell this software and its documentation for any purpose is 
+hereby granted without fee, provided that the above copyright notice appear 
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation.  No representations are made about the 
+suitability of this software for any purpose.  It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Jamie Zawinski <jwz@jwz.org>, 14-Aug-2004.
index 43ca2cd4bb7c34c435c36bc6c31a6781764a24ca..356efeaaf1caa6b9b9d79baebf6ee9e0b4499607 100644 (file)
@@ -22,6 +22,7 @@ static const char sccsid[] = "@(#)pacman.c    5.00 2000/11/01 xlockmore";
  * other special, indirect and consequential damages.
  *
  * Revision History:
  * other special, indirect and consequential damages.
  *
  * Revision History:
+ * 11-Aug-2004: Added support for pixmap ghost. jenglish@myself.com
  * 13-May-2002: Added -trackmouse feature thanks to code from 'maze.c'.  
  *             splitted up code into several files.  Retouched AI code, cleaned
  *             up code.
  * 13-May-2002: Added -trackmouse feature thanks to code from 'maze.c'.  
  *             splitted up code into several files.  Retouched AI code, cleaned
  *             up code.
@@ -34,11 +35,12 @@ static const char sccsid[] = "@(#)pacman.c  5.00 2000/11/01 xlockmore";
 
 /* TODO:
    1. add "bonus" dots
 
 /* TODO:
    1. add "bonus" dots
-   2. make better ghost sprites (eyes, waving dress)
-   3. make a bit better pacman sprite (mouth should be larger)
-   4. think of a better level generation algorithm
+   2. make a bit better pacman sprite (mouth should be larger)
+   3. think of a better level generation algorithm
 */
 
 */
 
+#define DEF_TRACKMOUSE "False"
+
 #ifdef STANDALONE
 #      define MODE_pacman
 #      define PROGCLASS "Pacman"
 #ifdef STANDALONE
 #      define MODE_pacman
 #      define PROGCLASS "Pacman"
@@ -48,9 +50,10 @@ static const char sccsid[] = "@(#)pacman.c   5.00 2000/11/01 xlockmore";
 #      define DEFAULTS "*delay: 10000 \n" \
                                        "*size: 0 \n" \
                                        "*ncolors: 6 \n" \
 #      define DEFAULTS "*delay: 10000 \n" \
                                        "*size: 0 \n" \
                                        "*ncolors: 6 \n" \
-                                       "*trackmouse: False \n"
+                                       "*trackmouse: " DEF_TRACKMOUSE "\n"
 #      define UNIFORM_COLORS
 #      define BRIGHT_COLORS
 #      define UNIFORM_COLORS
 #      define BRIGHT_COLORS
+
 #      include "xlockmore.h"           /* in xscreensaver distribution */
 #else /* STANDALONE */
 #      include "xlock.h"               /* in xlockmore distribution */
 #      include "xlockmore.h"           /* in xscreensaver distribution */
 #else /* STANDALONE */
 #      include "xlock.h"               /* in xlockmore distribution */
@@ -62,6 +65,30 @@ static const char sccsid[] = "@(#)pacman.c   5.00 2000/11/01 xlockmore";
 #include "pacman_ai.h"
 #include "pacman_level.h"
 
 #include "pacman_ai.h"
 #include "pacman_level.h"
 
+#if defined(HAVE_GDK_PIXBUF) || defined(HAVE_XPM)
+#define USE_PIXMAP
+#include "xpm-pixmap.h"
+#else
+#if defined(USE_PIXMAP)
+#undef USE_PIXMAP
+#endif
+#endif
+
+#if defined(USE_PIXMAP)
+# include "images/pacman/ghost-u1.xpm"
+# include "images/pacman/ghost-u2.xpm"
+# include "images/pacman/ghost-r1.xpm"
+# include "images/pacman/ghost-r2.xpm"
+# include "images/pacman/ghost-l1.xpm"
+# include "images/pacman/ghost-l2.xpm"
+# include "images/pacman/ghost-d1.xpm"
+# include "images/pacman/ghost-d2.xpm"
+# include "images/pacman/ghost-mask.xpm" /* Used to clean up the dust left by wag. */
+#endif
+
+static const struct { int dx, dy; } dirvecs[DIRVECS] =
+       { {-1, 0}, {0, 1}, {1, 0}, {0, -1}};
+
 #ifdef DISABLE_INTERACTIVE
 ModeSpecOpt pacman_opts = {
        0, 
 #ifdef DISABLE_INTERACTIVE
 ModeSpecOpt pacman_opts = {
        0, 
@@ -73,22 +100,18 @@ ModeSpecOpt pacman_opts = {
 #else
 static XrmOptionDescRec opts[] =
 {
 #else
 static XrmOptionDescRec opts[] =
 {
-       {(char *) "-trackmouse", (char *) ".pacman.trackmouse", XrmoptionNoArg,
-               (caddr_t) "on"},
-       {(char *) "+trackmouse", (char *) ".pacman.trackmouse", XrmoptionNoArg,
-               (caddr_t) "off"}
+       {"-trackmouse", ".pacman.trackmouse", XrmoptionNoArg, "on"},
+       {"+trackmouse", ".pacman.trackmouse", XrmoptionNoArg, "off"}
 };
 
 static argtype vars[] =
 {
 };
 
 static argtype vars[] =
 {
-       {(caddr_t *) & trackmouse, (char *) "trackmouse", (char *) "TrackMouse",
-               (char *) DEF_TRACKMOUSE, t_Bool}
+       {&trackmouse, "trackmouse", "TrackMouse", DEF_TRACKMOUSE, t_Bool}
 };
 
 static OptionStruct desc[] =
 {
 };
 
 static OptionStruct desc[] =
 {
-       {(char *) "-/+trackmouse", (char *) "turn on/off the tracking of the "
-               "mouse"}
+       {"-/+trackmouse", "turn on/off the tracking of the mouse"}
 };
 
 ModeSpecOpt pacman_opts =
 };
 
 ModeSpecOpt pacman_opts =
@@ -109,22 +132,37 @@ ModStruct   pacman_description = {
 };
 
 #endif
 };
 
 #endif
+
+Bool trackmouse;
+pacmangamestruct *pacmangames = (pacmangamestruct *) NULL;
+
+
+static void repopulate(ModeInfo * mi);
+static void drawlevel(ModeInfo * mi);
+
+
 static void
 free_pacman(Display *display, pacmangamestruct *pp)
 {
 static void
 free_pacman(Display *display, pacmangamestruct *pp)
 {
-       int         dir, mouth;
+       int         dir, mouth, i, j, k;
 
        if (pp->ghosts != NULL) {
                free(pp->ghosts);
                pp->ghosts = (ghoststruct *) NULL;
        }
        if (pp->stippledGC != None) {
 
        if (pp->ghosts != NULL) {
                free(pp->ghosts);
                pp->ghosts = (ghoststruct *) NULL;
        }
        if (pp->stippledGC != None) {
-               XFreeGC(display, pp->stippledGC);
+           XFreeGC(display, pp->stippledGC);
                pp->stippledGC = None;
        }
                pp->stippledGC = None;
        }
-       if (pp->ghostPixmap != None) {
-               XFreePixmap(display, pp->ghostPixmap);
-               pp->ghostPixmap = None;
+       for (i = 0; i < 4; i++){
+         for (j = 0; j < MAXGDIR; j++){
+               for (k = 0; k < MAXGWAG; k++){
+                 if (pp->ghostPixmap[i][j][k] != None) {
+                       XFreePixmap(display, pp->ghostPixmap[i][j][k]);
+                       pp->ghostPixmap[i][j][k] = None;
+                 }
+               }
+         }
        }
        for (dir = 0; dir < 4; dir++)
                for (mouth = 0; mouth < MAXMOUTH; mouth++)
        }
        for (dir = 0; dir < 4; dir++)
                for (mouth = 0; mouth < MAXMOUTH; mouth++)
@@ -135,6 +173,7 @@ free_pacman(Display *display, pacmangamestruct *pp)
                        }
 }
 
                        }
 }
 
+
 /* Checks for death of any ghosts/pacman and updates.  It also makes a new
    level if all ghosts are dead or all dots are eaten. */
 static void
 /* Checks for death of any ghosts/pacman and updates.  It also makes a new
    level if all ghosts are dead or all dots are eaten. */
 static void
@@ -483,6 +522,58 @@ draw_pacman_sprite(ModeInfo * mi)
        pp->pacman.oldrf = pp->pacman.rf;
 }
 
        pp->pacman.oldrf = pp->pacman.rf;
 }
 
+#if defined(USE_PIXMAP)
+static void
+draw_ghost_sprite(ModeInfo * mi, const unsigned ghost){
+       Display    *display = MI_DISPLAY(mi);
+       Window      window = MI_WINDOW(mi);
+       pacmangamestruct *pp = &pacmangames[MI_SCREEN(mi)];
+       static int wag = 0;
+#define MAX_WAG_COUNT 50
+       static int wag_count = 0;
+       unsigned int dir = 0;
+       
+       dir = (ABS(pp->ghosts[ghost].cfactor) * (2 - pp->ghosts[ghost].cfactor) +
+              ABS(pp->ghosts[ghost].rfactor) * (1 + pp->ghosts[ghost].rfactor)) % 4;
+
+       pp->ghosts[ghost].cf = 
+               pp->ghosts[ghost].col * pp->xs + pp->ghosts[ghost].delta.x * 
+               pp->ghosts[ghost].cfactor + pp->xb + pp->spritedx;
+       pp->ghosts[ghost].rf = 
+               pp->ghosts[ghost].row * pp->ys + pp->ghosts[ghost].delta.y * 
+               pp->ghosts[ghost].rfactor + pp->yb + pp->spritedy;
+       XSetForeground(display, 
+                                  pp->stippledGC, 
+                                  MI_BLACK_PIXEL(mi));
+
+       XSetClipMask(display, pp->stippledGC, pp->ghostMask);
+       XSetClipOrigin(display, pp->stippledGC, 
+                                  pp->ghosts[ghost].oldcf, pp->ghosts[ghost].oldrf);
+       XFillRectangle(display, 
+                                  window, 
+                                  pp->stippledGC,
+                                  pp->ghosts[ghost].oldcf, 
+                                  pp->ghosts[ghost].oldrf, 
+                                  pp->spritexs, pp->spriteys);
+       XSetClipOrigin(display, pp->stippledGC, 
+                                  pp->ghosts[ghost].cf, pp->ghosts[ghost].rf);
+       XCopyArea(display, pp->ghostPixmap[ghost][dir][wag], window, 
+                         pp->stippledGC,0,0,pp->spritexs,pp->spriteys,
+                         pp->ghosts[ghost].cf, pp->ghosts[ghost].rf);
+       XSetClipMask(display, pp->stippledGC, None);
+       drawlevelblock(mi, pp, 
+                                  (unsigned int)pp->ghosts[ghost].col, 
+                                  (unsigned int)pp->ghosts[ghost].row);
+       pp->ghosts[ghost].oldcf = pp->ghosts[ghost].cf;
+       pp->ghosts[ghost].oldrf = pp->ghosts[ghost].rf;
+       if (wag_count++ == MAX_WAG_COUNT){
+         wag = !wag;
+         wag_count = 0;
+       }
+}
+
+#else
+
 /* Draws a ghost sprite, removing the previous sprite and restores the level. */
 static void
 draw_ghost_sprite(ModeInfo * mi, const unsigned ghost) {
 /* Draws a ghost sprite, removing the previous sprite and restores the level. */
 static void
 draw_ghost_sprite(ModeInfo * mi, const unsigned ghost) {
@@ -500,6 +591,12 @@ draw_ghost_sprite(ModeInfo * mi, const unsigned ghost) {
        XSetForeground(display, 
                             pp->stippledGC, 
                             MI_BLACK_PIXEL(mi));
        XSetForeground(display, 
                             pp->stippledGC, 
                             MI_BLACK_PIXEL(mi));
+       XFillRectangle(display, 
+                                  window, 
+                                  pp->stippledGC,
+                                  pp->ghosts[ghost].cf, 
+                                  pp->ghosts[ghost].rf, 
+                                  pp->spritexs, pp->spriteys);
 
        if (pp->ghosts[ghost].oldcf != NOWHERE ||
                pp->ghosts[ghost].oldrf != NOWHERE) {
 
        if (pp->ghosts[ghost].oldcf != NOWHERE ||
                pp->ghosts[ghost].oldrf != NOWHERE) {
@@ -533,7 +630,7 @@ draw_ghost_sprite(ModeInfo * mi, const unsigned ghost) {
                     MI_WHITE_PIXEL(mi));
 
        XSetStipple(display, pp->stippledGC, 
                     MI_WHITE_PIXEL(mi));
 
        XSetStipple(display, pp->stippledGC, 
-                         pp->ghostPixmap);
+                         pp->ghostPixmap[0][0][0]);
 
 #ifdef FLASH
        XSetFillStyle(display, 
 
 #ifdef FLASH
        XSetFillStyle(display, 
@@ -559,6 +656,7 @@ draw_ghost_sprite(ModeInfo * mi, const unsigned ghost) {
        pp->ghosts[ghost].oldcf = pp->ghosts[ghost].cf;
        pp->ghosts[ghost].oldrf = pp->ghosts[ghost].rf;
 }
        pp->ghosts[ghost].oldcf = pp->ghosts[ghost].cf;
        pp->ghosts[ghost].oldrf = pp->ghosts[ghost].rf;
 }
+#endif
 
 /* Does all drawing of moving sprites in the level. */
 static void
 
 /* Does all drawing of moving sprites in the level. */
 static void
@@ -579,6 +677,135 @@ pacman_tick(ModeInfo * mi)
        (void)XFlush(display);
 }
 
        (void)XFlush(display);
 }
 
+#if defined(USE_PIXMAP)
+/*  Grabbed the scaling routine off of usenet. 
+ *  Changed it so that the information specific 
+ *  to the source pixmap does not have to be a parameter.
+ *
+ *  There is probable a better way to scale pixmaps.
+ *  From: Chris Fiddyment (cxf@itd.dsto.gov.au)
+ *  Subject: Scaling Pixmap Algorithm.
+ *  Newsgroups: comp.graphics.algorithms
+ *  Date: 1994-07-06 18:51:38 PST 
+ *  -jeremy
+ */
+
+static Pixmap 
+scale_pixmap( Display **dpy, GC gc, Pixmap source, int dwidth, int dheight)
+{
+   Pixmap temp,dest;
+   int j,end;
+   float i;
+   float xscale, yscale;
+   unsigned int swidth, sheight;
+   Window window;
+   int x, y;
+   unsigned border_width_return, depth;
+   XGetGeometry(*dpy, source, &window, &x, &y, &swidth, &sheight, &border_width_return, &depth);
+   
+   xscale = (float) swidth / (float) dwidth;         /* Scaling factors */
+   yscale = (float) sheight / (float) dheight;
+   dest = XCreatePixmap(*dpy,window,dwidth,dheight,depth);
+   if (!dest){
+        fprintf(stderr, "%s Could not scale image", progname);
+   }
+   temp = XCreatePixmap(*dpy,window,dwidth,sheight,depth);
+   if (!temp){
+        fprintf(stderr, "%s Could not scale image", progname);
+   }
+   j = 0;
+   end = dwidth*xscale;
+   /* Scale width of source into temp pixmap */
+   for(i=0;i<end;i+=xscale)
+      XCopyArea(*dpy,source,temp,gc,i,0,1,sheight,j++,0);
+   j = 0;
+   end = dheight*yscale;
+   /* Scale height of temp into dest pixmap */
+   for(i=0;i<end;i+=yscale)
+      XCopyArea(*dpy,temp,dest,gc,0,i,dwidth,1,0,j++);
+   XFreePixmap( *dpy, temp );
+   return (Pixmap) dest;
+}
+
+/* Load any needed pixmaps and their mask. */
+static void
+load_pixmaps(Display **dpy, Window window, pacmangamestruct **ps)
+{
+  pacmangamestruct *pp = *ps;
+  Display *display = *dpy;
+  static char *colors[]= {
+       ".      c #FF0000", /*Red*/
+       ".  c #00FFDE", /*Blue*/
+       ".  c #FFB847", /*Orange*/
+       ".  c #FFB8DE", /*Pink*/
+  };
+  
+  static char **bits[] = {
+       ghost_u1_xpm, ghost_u2_xpm, ghost_r1_xpm, ghost_r2_xpm,
+       ghost_d1_xpm, ghost_d2_xpm, ghost_l1_xpm, ghost_l2_xpm
+  };
+  int i, j, k, m;
+  int w = pp->spritexs;
+  int h = pp->spriteys;
+  GC gc = 0;
+  Pixmap temp;
+  
+  for (i = 0; i < 4; i++){
+       m = 0;
+       for ( j = 0; j < MAXGDIR; j++){
+         for ( k = 0; k < MAXGWAG; k++){
+               bits[m][2] = colors[i];
+               pp->ghostPixmap[i][j][k] = xpm_data_to_pixmap (display, window, bits[m],
+                                                                                                                  &w, &h, &pp->ghostMask);
+               if (!pp->ghostPixmap[i][j][k])
+                 {
+                       fprintf (stderr, "%s: Can't load ghost images\n", progname);
+                       exit(1);
+                 }
+
+               pp->ghostPixmap[i][j][k] = scale_pixmap(&display, pp->stippledGC, 
+                                                                                               pp->ghostPixmap[i][j][k], pp->spritexs, pp->spriteys);
+               if (!pp->ghostPixmap[i][j][k])
+                 {
+                       fprintf (stderr, "%s: Can't load ghost images\n", progname);
+                       exit(1);
+                 }
+               
+               m++;
+         }
+       }
+  }
+  /* We really only need a single mask. This saves the headache of getting the bottom of the ghost
+   * to clip just right. What we'll do is mask the top portion of the ghost, but the bottom of the
+   * the ghost will be solid. I did this by setting the pixels between the fringe of their sheets
+   * to black instead of none. -jeremy
+   */
+  temp = xpm_data_to_pixmap (display, window, ghost_mask_xpm,
+                                                        &w, &h, &pp->ghostMask);
+  if (!temp)
+       {
+         fprintf (stderr, "%s: Can't load ghost images\n", progname);
+         exit(1);
+       }
+  
+  temp = scale_pixmap(&display, pp->stippledGC, 
+                                         temp, pp->spritexs, pp->spriteys);
+  if (!temp)
+       {
+         fprintf (stderr, "%s: Can't load ghost images\n", progname);
+         exit(1);
+       }
+  gc = XCreateGC(display, pp->ghostMask, 0, 0);
+  pp->ghostMask = scale_pixmap(&display, gc, pp->ghostMask, 
+                                                          pp->spritexs, pp->spriteys);
+  XFreePixmap(display, temp);
+}
+#endif
+
 /* Hook function, sets state to initial position. */
 void
 init_pacman(ModeInfo * mi)
 /* Hook function, sets state to initial position. */
 void
 init_pacman(ModeInfo * mi)
@@ -588,9 +815,9 @@ init_pacman(ModeInfo * mi)
        int         size = MI_SIZE(mi);
        pacmangamestruct *pp;
        XGCValues   gcv;
        int         size = MI_SIZE(mi);
        pacmangamestruct *pp;
        XGCValues   gcv;
-       int         dir, mouth;
+       int         dir, mouth, i, j, k;
        GC          fg_gc, bg_gc;
        GC          fg_gc, bg_gc;
-       XPoint      points[9];
+/*     XPoint      points[9]; */
 
        if (pacmangames == NULL) {
                if ((pacmangames = (pacmangamestruct *) 
 
        if (pacmangames == NULL) {
                if ((pacmangames = (pacmangamestruct *) 
@@ -601,13 +828,18 @@ init_pacman(ModeInfo * mi)
        pp = &pacmangames[MI_SCREEN(mi)];
 
        pp->width = (unsigned short)MI_WIDTH(mi);
        pp = &pacmangames[MI_SCREEN(mi)];
 
        pp->width = (unsigned short)MI_WIDTH(mi);
-       pp->height = (unsigned short)MI_HEIGHT(mi);
-       if (pp->ghostPixmap != None) {
-               XFreePixmap(display, pp->ghostPixmap);
-               pp->ghostPixmap = None;
-               pp->graphics_format = 0 /*IS_NONE*/;
+       pp->height = (unsigned short)MI_HEIGHT(mi); 
+       for (i = 0; i < 4; i++){
+         for (j = 0; j < MAXGDIR; j++){
+               for (k = 0; k < MAXGWAG; k++){
+                 if (pp->ghostPixmap[i][j][k] != None) {
+                       XFreePixmap(display, pp->ghostPixmap[i][j][k]);
+                       pp->ghostPixmap[i][j][k] = None;
+                       pp->graphics_format = 0 /*IS_NONE*/;
+                 }
+               }
+         }
        }
        }
-
        if (size == 0 ||
                MINGRIDSIZE * size > (int)pp->width ||
                MINGRIDSIZE * size > (int)pp->height) {
        if (size == 0 ||
                MINGRIDSIZE * size > (int)pp->width ||
                MINGRIDSIZE * size > (int)pp->height) {
@@ -641,7 +873,20 @@ init_pacman(ModeInfo * mi)
        pp->spritedx = (pp->xs - pp->spritexs) >> 1;
        pp->spritedy = (pp->ys - pp->spriteys) >> 1;
 
        pp->spritedx = (pp->xs - pp->spritexs) >> 1;
        pp->spritedy = (pp->ys - pp->spriteys) >> 1;
 
-       if ((pp->ghostPixmap = XCreatePixmap(display, window,
+       if (!pp->stippledGC) {
+               gcv.foreground = MI_BLACK_PIXEL(mi);
+               gcv.background = MI_BLACK_PIXEL(mi);
+               if ((pp->stippledGC = XCreateGC(display, window,
+                               GCForeground | GCBackground, &gcv)) == None) {
+                       free_pacman(display, pp);
+                       return;
+               }
+       }
+
+#if defined(USE_PIXMAP)
+       load_pixmaps(&display,window,&pp);
+#else
+       if ((pp->ghostPixmap[0][0][0] = XCreatePixmap(display, window,
                pp->spritexs, pp->spriteys, 1)) == None) {
                free_pacman(display, pp);
                return;
                pp->spritexs, pp->spriteys, 1)) == None) {
                free_pacman(display, pp);
                return;
@@ -649,7 +894,7 @@ init_pacman(ModeInfo * mi)
 
        gcv.foreground = 0;
        gcv.background = 1;
 
        gcv.foreground = 0;
        gcv.background = 1;
-       if ((bg_gc = XCreateGC(display, pp->ghostPixmap,
+       if ((bg_gc = XCreateGC(display, pp->ghostPixmap[0][0][0],
                        GCForeground | GCBackground, &gcv)) == None) {
                free_pacman(display, pp);
                return;
                        GCForeground | GCBackground, &gcv)) == None) {
                free_pacman(display, pp);
                return;
@@ -657,7 +902,7 @@ init_pacman(ModeInfo * mi)
 
        gcv.foreground = 1;
        gcv.background = 0;
 
        gcv.foreground = 1;
        gcv.background = 0;
-       if ((fg_gc = XCreateGC(display, pp->ghostPixmap,
+       if ((fg_gc = XCreateGC(display, pp->ghostPixmap[0][0][0],
                        GCForeground | GCBackground, &gcv)) == None) {
                XFreeGC(display, bg_gc);
                free_pacman(display, pp);
                        GCForeground | GCBackground, &gcv)) == None) {
                XFreeGC(display, bg_gc);
                free_pacman(display, pp);
@@ -677,24 +922,17 @@ init_pacman(ModeInfo * mi)
        SETPOINT(points[7], pp->spritexs,               pp->spriteys / 2);
        SETPOINT(points[8], 1,                          pp->spriteys / 2);
 
        SETPOINT(points[7], pp->spritexs,               pp->spriteys / 2);
        SETPOINT(points[8], 1,                          pp->spriteys / 2);
 
-       XFillRectangle(display, pp->ghostPixmap, bg_gc,
+       XFillRectangle(display, pp->ghostPixmap[0][0][0], bg_gc,
                0, 0, pp->spritexs, pp->spriteys);
                0, 0, pp->spritexs, pp->spriteys);
-       XFillArc(display, pp->ghostPixmap, fg_gc,
+       XFillArc(display, pp->ghostPixmap[0][0][0], fg_gc,
                0, 0, pp->spritexs, pp->spriteys, 0, 11520);
                0, 0, pp->spritexs, pp->spriteys, 0, 11520);
-       XFillPolygon(display, pp->ghostPixmap, fg_gc,
+       XFillPolygon(display, pp->ghostPixmap[0][0][0], fg_gc,
                points, 9, Nonconvex, CoordModeOrigin);
        XFreeGC(display, bg_gc);
        XFreeGC(display, fg_gc);
                points, 9, Nonconvex, CoordModeOrigin);
        XFreeGC(display, bg_gc);
        XFreeGC(display, fg_gc);
+#endif
+
 
 
-       if (!pp->stippledGC) {
-               gcv.foreground = MI_BLACK_PIXEL(mi);
-               gcv.background = MI_BLACK_PIXEL(mi);
-               if ((pp->stippledGC = XCreateGC(display, window,
-                               GCForeground | GCBackground, &gcv)) == None) {
-                       free_pacman(display, pp);
-                       return;
-               }
-       }
        if (pp->pacmanPixmap[0][0] != None)
                for (dir = 0; dir < 4; dir++)
                        for (mouth = 0; mouth < MAXMOUTH; mouth++)
        if (pp->pacmanPixmap[0][0] != None)
                for (dir = 0; dir < 4; dir++)
                        for (mouth = 0; mouth < MAXMOUTH; mouth++)
index 8c914f79b9a6b2155f1f9667ae0557bc6c15e901..3b8e40b449775b1e8564acdb11735a9a93147a17 100644 (file)
  *
  */
 
  *
  */
 
+#ifndef __PACMAN_H__
+#define __PACMAN_H__
+
+#include "config.h"
+#include "xlockmoreI.h"
+
 #define LEVHEIGHT      32U
 #define LEVWIDTH       40U
 
 #define LEVHEIGHT      32U
 #define LEVWIDTH       40U
 
@@ -31,6 +37,8 @@
 #define GHOSTS 4U
 #define MAXMOUTH 11
 #define MAXGPOS 2
 #define GHOSTS 4U
 #define MAXMOUTH 11
 #define MAXGPOS 2
+#define MAXGDIR 4
+#define MAXGWAG 2
 #define MINGRIDSIZE 4
 #define MINSIZE 3
 #define NOWHERE 16383
 #define MINGRIDSIZE 4
 #define MINSIZE 3
 #define NOWHERE 16383
@@ -51,9 +59,6 @@
 #define SIGN(x) GETFACTOR((x), 0)
 #define TRACEVECS 40
 
 #define SIGN(x) GETFACTOR((x), 0)
 #define TRACEVECS 40
 
-#define DEF_TRACKMOUSE "False"
-static Bool trackmouse;
-
 typedef struct { int vx, vy; } tracevec_struct;
 
 typedef enum { inbox = 0, goingout, randdir, chasing, hiding } GhostState;
 typedef struct { int vx, vy; } tracevec_struct;
 
 typedef enum { inbox = 0, goingout, randdir, chasing, hiding } GhostState;
@@ -107,7 +112,10 @@ typedef struct {
        unsigned int    nghosts;
        Pixmap          pacmanPixmap[4][MAXMOUTH];
 /*     Pixmap          ghostPixmap[4][MAXGPOS];*/
        unsigned int    nghosts;
        Pixmap          pacmanPixmap[4][MAXMOUTH];
 /*     Pixmap          ghostPixmap[4][MAXGPOS];*/
-       Pixmap          ghostPixmap;
+/*     Pixmap          ghostPixmap; */
+        Pixmap          ghostPixmap[4][MAXGDIR][MAXGWAG];
+/*          Pixmap          ghostMask[4][MAXGDIR][MAXGWAG]; */
+        Pixmap          ghostMask;
        char            level[LEVHEIGHT * LEVWIDTH];
        unsigned int    wallwidth;
        unsigned int    dotsleft;
        char            level[LEVHEIGHT * LEVWIDTH];
        unsigned int    wallwidth;
        unsigned int    dotsleft;
@@ -118,72 +126,10 @@ typedef struct {
 } pacmangamestruct;
 
 #define DIRVECS 4
 } pacmangamestruct;
 
 #define DIRVECS 4
-static const struct { int dx, dy; } dirvecs[DIRVECS] =
-       { {-1, 0}, {0, 1}, {1, 0}, {0, -1}};
 
 
-static pacmangamestruct *pacmangames = (pacmangamestruct *) NULL;
+extern pacmangamestruct *pacmangames;
+extern Bool trackmouse;
 
 typedef char lev_t[LEVHEIGHT][LEVWIDTH + 1];
 
 
 typedef char lev_t[LEVHEIGHT][LEVWIDTH + 1];
 
-/* function type definitions */
-
-       /* level generation */
-static int     creatlevelblock(lev_t *level, const unsigned x, 
-                               const unsigned y);
-static void    setblockto(lev_t *level, const unsigned x, const unsigned y, 
-                               const char c);
-static int     checkset(lev_t *level, const unsigned x, const unsigned y);
-static int     checksetout(lev_t *level, const unsigned x, const unsigned y);
-static int     checkunsetdef(lev_t *level, const unsigned x, const unsigned y);
-static void    clearlevel(lev_t *level);
-static void    copylevel(char *dest, lev_t *level);
-static void    createjail(lev_t *level, const unsigned width, 
-                               const unsigned height);
-static void    finishjail(lev_t *level, const unsigned width, 
-                               const unsigned height);
-static int     tryset(lev_t *level, const unsigned xpos, const unsigned ypos, 
-                               const char *block);
-static int     creatlevelblock(lev_t *level, const unsigned x, 
-                               const unsigned y);
-static void    filllevel(lev_t *level);
-static void    frmtlevel(lev_t *level);
-static unsigned countdots(ModeInfo * mi);
-static int     createnewlevel(ModeInfo * mi);
-static int     check_pos(pacmangamestruct *pp, int y, int x, int ghostpass);
-static int     check_dot(pacmangamestruct *pp, unsigned int x, unsigned int y);
-
-       /* graphics rendering */
-static void    drawlevel(ModeInfo * mi);
-
-       /* AI */
-static int     ghost_get_posdirs(pacmangamestruct *pp, int *posdirs, 
-                               ghoststruct *g);
-static void    ghost_random(pacmangamestruct *pp, ghoststruct *g);
-static void    ghost_chasing(pacmangamestruct *pp, ghoststruct *g);
-static void    ghost_hiding(pacmangamestruct *pp, ghoststruct *g);
-static void    ghost_update(pacmangamestruct *pp, ghoststruct *g);
-
-static void    pac_dot_vec(pacmangamestruct *pp, pacmanstruct *p, 
-                               long *vx, long *vy);
-static int     pac_ghost_prox_and_vector(pacmangamestruct *pp, 
-                               pacmanstruct *p, int *vx, int *vy);
-static int     pac_get_posdirs(pacmangamestruct *pp, pacmanstruct *p, 
-                               int *posdirs);
-static void    pac_clear_trace(pacmanstruct *p);
-static void    pac_save_trace(pacmanstruct *p, const int vx, const int vy);
-static int     pac_check_trace(const pacmanstruct *p, const int vx, 
-                               const int vy);
-static void    pac_eating(pacmangamestruct *pp, pacmanstruct *p);
-#if 0
-static void    pac_chasing(pacmangamestruct *pp, pacmanstruct *p);
-#endif
-static void    pac_random(pacmangamestruct *pp, pacmanstruct *p);
-static int     pac_get_vector_screen(pacmangamestruct *pp, pacmanstruct *p, 
-                       const int x, const int y, int *vx, int *vy);
-static int     pac_trackmouse(ModeInfo * mi, pacmangamestruct *pp, 
-                       pacmanstruct *p);
-static void    pac_update(ModeInfo * mi, pacmangamestruct *pp, 
-                       pacmanstruct *p);
-
-       /* generic functions */
-static void    repopulate(ModeInfo * mi);
+#endif /* __PACMAN_H__ */
diff --git a/hacks/pacman_ai.c b/hacks/pacman_ai.c
new file mode 100644 (file)
index 0000000..eeecd5b
--- /dev/null
@@ -0,0 +1,583 @@
+/*-
+ * Copyright (c) 2002 by Edwin de Jong <mauddib@gmx.net>.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind.  The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof.  In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ */
+
+/* this file handles the AI of the ghosts and the pacman. */
+
+#include "pacman.h"
+#include "pacman_ai.h"
+#include "pacman_level.h"
+
+#define MI_DISPLAY(MI) ((MI)->dpy)
+#define MI_WINDOW(MI)  ((MI)->window)
+#define MI_WIDTH(MI)   ((MI)->xgwa.width)
+#define MI_HEIGHT(MI)  ((MI)->xgwa.height)
+
+#define DIRVECS 4
+static const struct { int dx, dy; } dirvecs[DIRVECS] =
+       { {-1, 0}, {0, 1}, {1, 0}, {0, -1}};
+
+
+/* fills array of DIRVECS size with possible directions, returns number of
+   directions. 'posdirs' points to a possibly undefined array of four
+   integers.  The vector will contain booleans wether the direction is
+   a possible direction or not.  Reverse directions are deleted. */
+static int
+ghost_get_posdirs(pacmangamestruct *pp, int *posdirs, ghoststruct *g) 
+{
+       unsigned int i, nrdirs = 0;
+
+       /* bit of black magic here */
+       for (i = 0; i < DIRVECS; i++) {
+               /* remove opposite */
+               if (g->lastbox != NOWHERE && i == (g->lastbox + 2) % DIRVECS
+                               && g->aistate != goingout) {
+                       posdirs[i] = 0;
+                       continue;
+               }
+               if (g->aistate == goingout && i == 1) {
+                       posdirs[i] = 0;
+                       continue;
+               }
+               /* check if possible direction */
+               if ((posdirs[i] = 
+                       check_pos(pp, g->row + dirvecs[i].dy, 
+                               g->col + dirvecs[i].dx, 
+                               g->aistate == goingout ? True : False)) == 
+                               True) {
+                       nrdirs++;
+               }
+       }
+
+       return nrdirs;
+}
+
+/* Directs ghost to a random direction, exluding opposite (except in the
+   impossible situation that there is only one valid direction). */
+static void
+ghost_random(pacmangamestruct *pp, ghoststruct *g) 
+{
+       int posdirs[DIRVECS], nrdirs = 0, i, dir = 0;
+
+       nrdirs = ghost_get_posdirs(pp, posdirs, g);
+       for (i = 0; i < DIRVECS; i++)
+               if (posdirs[i] == True) dir = i;
+
+       if (nrdirs == 0) dir = (g->lastbox + 2) % DIRVECS;
+       else if (nrdirs > 1)
+               for (i = 0; i < DIRVECS; i++) {
+                       if (posdirs[i] == True && NRAND(nrdirs) == 0) {
+                               dir = i;
+                               break;
+                       }
+               }
+
+       g->nextrow = g->row + dirvecs[dir].dy;
+       g->nextcol = g->col + dirvecs[dir].dx;
+       g->lastbox = dir;
+}
+
+/* Determines best direction to chase the pacman and goes that direction. */
+static void
+ghost_chasing(pacmangamestruct *pp, ghoststruct *g) 
+{
+       int posdirs[DIRVECS], nrdirs = 0, i, dir = 0, highest = -100000, 
+               thisvecx, thisvecy, thisvec;
+
+       nrdirs = ghost_get_posdirs(pp, posdirs, g);
+       for (i = 0; i < DIRVECS; i++)
+               if (posdirs[i] == True) dir = i;
+
+       if (nrdirs == 0) dir = (g->lastbox + 2) % DIRVECS;
+       else if (nrdirs > 1)
+               for (i = 0; i < DIRVECS; i++) {
+                       if (posdirs[i] == False) continue;
+                       thisvecx = (pp->pacman.col - g->col) * dirvecs[i].dx;
+                       thisvecy = (pp->pacman.row - g->row) * dirvecs[i].dy;
+                       thisvec = thisvecx + thisvecy;
+                       if (thisvec >= highest) {
+                               dir = i;
+                               highest = thisvec;
+                       }
+               }
+
+       g->nextrow = g->row + dirvecs[dir].dy;
+       g->nextcol = g->col + dirvecs[dir].dx;
+       g->lastbox = dir;
+}
+
+/* Determines the best direction to go away from the pacman, and goes that
+   direction. */
+static void
+ghost_hiding(pacmangamestruct *pp, ghoststruct *g) 
+{
+       int posdirs[DIRVECS], nrdirs = 0, i, dir = 0, highest = -100000,
+               thisvecx, thisvecy, thisvec;
+
+       nrdirs = ghost_get_posdirs(pp, posdirs, g);
+       for (i = 0; i < DIRVECS; i++)
+               if (posdirs[i] == True) dir = i;
+
+       if (nrdirs == 0) dir = (g->lastbox + 2) % DIRVECS;
+       else if (nrdirs > 1)
+               for (i = 0; i < DIRVECS; i++) {
+                       if (posdirs[i] == False) continue;
+                       thisvecx = (g->col - pp->pacman.col) * dirvecs[i].dx;
+                       thisvecy = (g->row - pp->pacman.row) * dirvecs[i].dy;
+                       thisvec = thisvecx + thisvecy;
+                       if (thisvec >= highest)
+                               dir = i;
+               }
+
+       g->nextrow = g->row + dirvecs[dir].dy;
+       g->nextcol = g->col + dirvecs[dir].dx;
+       g->lastbox = dir;
+}
+
+/* Determines a vector from the pacman position, towards all dots.  The vector
+   is inversely proportional to the square of the distance of each dot.  
+   (so, close dots attract more than far away dots). */
+static void 
+pac_dot_vec(pacmangamestruct *pp, pacmanstruct *p, long *vx, long *vy) 
+{
+       int x, y, bx = 0, by = 0, ex = LEVWIDTH, ey = LEVHEIGHT;
+       long dx, dy, dist, top = 0;
+
+#if 0
+       int rnr = NRAND(50);
+       /* determine begin and end vectors */
+
+       switch (rnr) {
+               case 0: ex = LEVHEIGHT/2; break;
+               case 1: bx = LEVHEIGHT/2; break;
+               case 2: ey = LEVHEIGHT/2; break;
+               case 3: by = LEVHEIGHT/2; break;
+       }
+#endif
+       *vx = *vy = 0;
+
+       for (y = by; y < ey; y++) 
+               for (x = bx; x < ex; x++)
+                       if (check_dot(pp, x, y) == 1) {
+                               dx = (long)x - (long)(p->col);
+                               dy = (long)y - (long)(p->row);
+                               dist = dx * dx + dy * dy;
+                               if (dist > top)
+                                       top = dist;
+                               *vx += (dx * ((long)LEVWIDTH * (long)LEVHEIGHT))
+                                      / dist;
+                               *vy += (dy * ((long)LEVWIDTH * (long)LEVHEIGHT))
+                                      / dist;
+                       }
+}
+
+/* Determine a vector towards the closest ghost (in one loop, so we spare a
+   couple of cycles which we can spoil somewhere else just as fast). */
+static int
+pac_ghost_prox_and_vector(pacmangamestruct *pp, pacmanstruct *p, 
+               int *vx, int *vy) 
+{
+       int dx, dy, dist, closest = 100000;
+       unsigned int g;
+
+       if (vx != NULL)
+               *vx = *vy = 0;
+
+       for (g = 0; g < pp->nghosts; g++) {
+               if (pp->ghosts[g].dead    == True  || 
+                   pp->ghosts[g].aistate == inbox ||
+                   pp->ghosts[g].aistate == goingout)
+                       continue;
+               dx = pp->ghosts[g].col + /*dirvecs[pp->ghosts[g].lastbox].dx*/ -
+                       p->col;
+               dy = pp->ghosts[g].row + /*dirvecs[pp->ghosts[g].lastbox].dy*/ -
+                       p->row;
+               dist = dx * dx + dy * dy;
+               if (dist < closest) {
+                       closest = dist;
+                       if (vx != NULL) {
+                               *vx = dx; *vy = dy;
+                       }
+               }
+       }
+       return closest;
+}
+
+/* fills array of DIRVECS size with possible directions, returns number of
+   directions.  posdirs should point to an array of 4 integers. */
+static int
+pac_get_posdirs(pacmangamestruct *pp, pacmanstruct *p, int *posdirs)
+{
+       int nrdirs = 0;
+       unsigned int i;
+
+       for (i = 0; i < DIRVECS; i++) {
+               /* if we just ate, or we are in a statechange, it is allowed 
+                  to go the opposite direction */
+               if (p->justate == 0 &&
+                   p->state_change == 0 && 
+                   p->lastbox != NOWHERE && 
+                   i == (p->lastbox + 2) % DIRVECS) {
+                       posdirs[i] = 0;
+               } else if ((posdirs[i] = 
+                       check_pos(pp, p->row + dirvecs[i].dy, 
+                               p->col + dirvecs[i].dx, 0)) == 1)
+                       nrdirs++;
+       }
+       p->state_change = 0;
+
+       return nrdirs;
+}
+
+/* Clears the trace of vectors. */
+void
+pac_clear_trace(pacmanstruct *p) 
+{
+       int i;
+
+       for(i = 0; i < TRACEVECS; i++) {
+               p->trace[i].vx = NOWHERE; p->trace[i].vy = NOWHERE;
+       }
+       p->cur_trace = 0;
+}
+
+/* Adds a new vector to the trace. */
+static void
+pac_save_trace(pacmanstruct *p, const int vx, const int vy) 
+{
+       if (!(vx == NOWHERE && vy == NOWHERE)) {
+               p->trace[p->cur_trace].vx = vx;
+               p->trace[p->cur_trace].vy = vy;
+               p->cur_trace = (p->cur_trace + 1) % TRACEVECS;
+       }
+}
+
+/* Check if a vector can be found in the trace. */
+static int
+pac_check_trace(const pacmanstruct *p, const int vx, const int vy) 
+{
+       int i, curel;
+
+       for (i = 1; i < TRACEVECS; i++) {
+               curel = (p->cur_trace - i + TRACEVECS) % TRACEVECS;
+               if (p->trace[curel].vx == NOWHERE &&
+                   p->trace[curel].vy == NOWHERE)
+                       continue;
+               if (p->trace[curel].vx == vx &&
+                   p->trace[curel].vy == vy)
+                       return 1;
+       }
+
+
+       return 0;
+}
+
+/* AI mode "Eating" for pacman. Tries to eat as many dots as possible, goes
+   to "hiding" if too close to a ghost. If in state "hiding" the vectors
+   of the ghosts are also taken into account (thus not running towards them
+   is the general idea). */
+static void
+pac_eating(pacmangamestruct *pp, pacmanstruct *p) 
+{
+       int posdirs[DIRVECS], nrdirs, i, highest = -(1 << 16), 
+               score, dir = 0, dotfound = 0, prox, worst = 0;
+       int vx, vy;
+
+       if ((prox = pac_ghost_prox_and_vector(pp, p, &vx, &vy)) <
+                               4 * 4 && p->aistate == ps_eating) {
+               p->aistate = ps_hiding;
+               p->state_change = 1;
+               pac_clear_trace(p);
+       }
+
+       if (prox > 6 * 6 && p->aistate == ps_hiding) {
+               p->aistate = ps_eating;
+               if (p->justate == 0) p->state_change = 1;
+               pac_clear_trace(p);
+       }
+
+       if (prox < 3 * 3) p->state_change = 1;
+
+       nrdirs = pac_get_posdirs(pp, p, posdirs);
+       
+       /* remove directions which lead to ghosts */
+       if (p->aistate == ps_hiding) {
+               for (i = 0; i < DIRVECS; i++) {
+                       if (posdirs[i] == 0) continue;
+                       score = vx * dirvecs[i].dx + vy * dirvecs[i].dy;
+                       if (score > highest) {
+                               worst = i;
+                               highest = score;
+                       }
+                       dir = i;
+               }
+               nrdirs--;
+               posdirs[worst] = 0;
+               highest = -(1 << 16);
+       }
+
+       /* get last possible direction if all else fails */
+       for (i = 0; i < DIRVECS; i++)
+               if (posdirs[i] != 0) dir = i;
+
+        {
+          long lvx = vx;
+          long lvy = vy;
+          pac_dot_vec(pp, p, &lvx, &lvy);
+          vx = lvx;
+          vy = lvy;
+        }
+
+       if (vx != NOWHERE && vy != NOWHERE && pac_check_trace(p, vx, vy) > 0) {
+               p->roundscore++;
+               if (p->roundscore >= 12) {
+                       p->roundscore = 0;
+                       p->aistate = ps_random;
+                       pac_clear_trace(p);
+               }
+       } else
+               p->roundscore = 0;
+
+       if (p->justate == 0) pac_save_trace(p, vx, vy);
+
+       for (i = 0; i < DIRVECS; i++) {
+               if (posdirs[i] == 0) continue;
+               score = dirvecs[i].dx * vx + dirvecs[i].dy * vy;
+               if (check_dot(pp, p->col + dirvecs[i].dx, 
+                                 p->row + dirvecs[i].dy) == 1) {
+                       if (dotfound == 0) {
+                               highest = score;
+                               dir = i;
+                               dotfound = 1;
+                       } else if (score > highest) {
+                               highest = score;
+                               dir = i;
+                       }
+               } else if (score > highest && dotfound == 0) {
+                       dir = i;
+                       highest = score;
+               }
+       }
+
+       p->nextrow = p->row + dirvecs[dir].dy;
+       p->nextcol = p->col + dirvecs[dir].dx;
+       p->lastbox = dir;
+}
+
+#if 0
+/* Tries to catch the ghosts. */
+static void
+pac_chasing(pacmangamestruct *pp, pacmanstruct *p) 
+{
+}
+#endif
+
+/* Goes completely random, but not in the opposite direction.  Used when a
+   loop is detected. */
+static void
+pac_random(pacmangamestruct *pp, pacmanstruct *p) 
+{
+       int posdirs[DIRVECS], nrdirs, i, dir = -1, lastdir = 0;
+
+       if (pac_ghost_prox_and_vector(pp, p, NULL, NULL) < 5 * 5) {
+               p->aistate = ps_hiding;
+               p->state_change = 1;
+       }
+       if (NRAND(20) == 0) {
+               p->aistate = ps_eating;
+               p->state_change = 1;
+               pac_clear_trace(p);
+       }
+
+       nrdirs = pac_get_posdirs(pp, p, posdirs);
+
+       for (i = 0; i < DIRVECS; i++) {
+               if (posdirs[i] == 0) continue;
+               lastdir = i;
+               if (check_dot(pp, p->col + dirvecs[i].dx, 
+                       p->row + dirvecs[i].dy) == 1) {
+                       dir = i;
+                       p->aistate = ps_eating;
+                       p->state_change = 1;
+                       pac_clear_trace(p);
+                       break;
+               } else if (NRAND(nrdirs) == 0)
+                       dir = i;
+       }
+
+       if (dir == -1) dir = lastdir;
+
+       p->nextrow = p->row + dirvecs[dir].dy;
+       p->nextcol = p->col + dirvecs[dir].dx;
+       p->lastbox = dir;
+}
+
+static int
+pac_get_vector_screen(pacmangamestruct *pp, pacmanstruct *p, 
+               const int x, const int y, int *vx, int *vy) 
+{
+       int lx, ly;
+
+       lx = (x - pp->xb) / pp->xs;
+       ly = (y - pp->yb) / pp->ys;
+
+       if (lx < 0) lx = 0;
+       else if ((unsigned int) lx > LEVWIDTH) lx = LEVWIDTH - 1;
+
+       if (ly < 0) ly = 0;
+       else if ((unsigned int) ly > LEVHEIGHT) ly = LEVHEIGHT - 1;
+
+       *vx = lx - p->col;
+       *vy = ly - p->row;
+
+       if (lx == p->oldlx && ly == p->oldly) return 0;
+       p->oldlx = lx; p->oldly = ly;
+       return 1;
+}
+
+static int
+pac_trackmouse(ModeInfo * mi, pacmangamestruct *pp, pacmanstruct *p) 
+{
+       int dx, dy, cx, cy, vx, vy;
+       unsigned int m;
+       int posdirs[DIRVECS], i, dir = -1, highest = -(2 << 16), score;
+       Window r, c;
+
+       (void) XQueryPointer(MI_DISPLAY(mi), MI_WINDOW(mi),
+                        &r, &c, &dx, &dy, &cx, &cy, &m);
+
+       if (cx <= 0 || cy <= 0 ||
+                    cx >= MI_WIDTH(mi) - 1 ||
+                    cy >= MI_HEIGHT(mi) - 1)
+               return 0;
+       /* get vector */
+       p->state_change = pac_get_vector_screen(pp, p, cx, cy, &vx, &vy);
+
+       (void) pac_get_posdirs(pp, p, posdirs);
+
+       for (i = 0; i < DIRVECS; i++) {
+               if (posdirs[i] == 0) continue;
+               score = dirvecs[i].dx * vx + dirvecs[i].dy * vy;
+               if (score > highest) {
+                       highest = score;
+                       dir = i;
+               }
+       }
+
+       p->nextrow = p->row + dirvecs[dir].dy;
+       p->nextcol = p->col + dirvecs[dir].dx;
+       p->lastbox = dir;
+       return 1;
+}
+
+/* Calls correct state function, and changes between states. */
+void
+ghost_update(pacmangamestruct *pp, ghoststruct *g)
+{
+
+       if (!(g->nextrow == NOWHERE && g->nextcol == NOWHERE)) {
+               g->row = g->nextrow;
+               g->col = g->nextcol;
+       }
+
+       /* update ghost */
+       if (g->dead == True) /* dead ghosts are dead, 
+                               so they don't run around */
+               return;
+
+       if ((g->aistate == randdir || g->aistate == chasing) && 
+                       NRAND(10) == 0) {
+               switch (NRAND(3)) {
+                       case 0:
+                               g->aistate = randdir; break;
+                       case 1:
+                               g->aistate = chasing; break;
+                       case 2:
+                               g->aistate = chasing; break;
+               }
+
+       } else if (g->aistate == inbox) {
+               if (g->timeleft < 0)
+                       g->aistate = goingout;
+               else
+                       g->timeleft--;
+
+       } else if (g->aistate == goingout) {
+               if (g->col < LEVWIDTH/2 - JAILWIDTH/2 ||
+                   g->col > LEVWIDTH/2 + JAILWIDTH/2 ||
+                   g->row < LEVHEIGHT/2 - JAILHEIGHT/2 ||
+                   g->row > LEVHEIGHT/2 + JAILHEIGHT/2 )
+                       g->aistate = randdir;
+       }
+                  
+       switch (g->aistate) {
+               case inbox:
+               case goingout:
+               case randdir:
+                       ghost_random(pp, g);
+                       break;
+               case chasing:
+                       ghost_chasing(pp, g);
+                       break;
+               case hiding:
+                       ghost_hiding(pp, g);
+                       break;
+       }
+
+       g->cfactor = GETFACTOR(g->nextcol, g->col);
+       g->rfactor = GETFACTOR(g->nextrow, g->row);
+}
+
+/* Calls correct pacman state function. */
+void
+pac_update(ModeInfo *mi, pacmangamestruct *pp, pacmanstruct *p) 
+{
+       if (!(p->nextrow == NOWHERE && p->nextcol == NOWHERE)) {
+               p->row = p->nextrow;
+               p->col = p->nextcol;
+       }
+
+       if (pp->level[p->row * LEVWIDTH + p->col] == '.') { 
+               pp->level[p->row * LEVWIDTH + p->col] = ' ';
+               if (!trackmouse)
+                       p->justate = 1;
+               pp->dotsleft--;
+       } else if (!trackmouse) {
+               p->justate = 0;
+       }
+
+       if (!(trackmouse && pac_trackmouse(mi, pp, p))) {
+               /* update pacman */
+               switch (p->aistate) {
+                       case ps_eating:
+                               pac_eating(pp, p);
+                               break;
+                       case ps_hiding:
+                               pac_eating(pp, p);
+                               break;
+                       case ps_random:
+                               pac_random(pp, p);
+                               break;
+                       case ps_chasing:
+#if 0
+                               pac_chasing(pp, p);
+#endif
+                               break;
+               }
+       }
+
+       p->cfactor = GETFACTOR(p->nextcol, p->col);
+       p->rfactor = GETFACTOR(p->nextrow, p->row);
+}
index 9dbcb7da5f1d3209e333ceb5f96eb5c08b03f5c4..16de91bef98fee9c6becab040114b340412c5322 100644 (file)
  * trade secrets or any patents by this file or any part thereof.  In no
  * event will the author be liable for any lost revenue or profits or
  * other special, indirect and consequential damages.
  * trade secrets or any patents by this file or any part thereof.  In no
  * event will the author be liable for any lost revenue or profits or
  * other special, indirect and consequential damages.
+ *
+ * Revision History:
+ *  3-May-2002: Added AI to pacman and ghosts, slowed down ghosts.
+ * 26-Nov-2001: Random level generator added
+ * 01-Nov-2000: Allocation checks
+ * 04-Jun-1997: Compatible with xscreensaver
+ *
  */
 
  */
 
-/* this file is a part of pacman.c, and included via pacman.h.  It handles the
-   AI of the ghosts and the pacman. */
-
-
-/* fills array of DIRVECS size with possible directions, returns number of
-   directions. 'posdirs' points to a possibly undefined array of four
-   integers.  The vector will contain booleans wether the direction is
-   a possible direction or not.  Reverse directions are deleted. */
-static int
-ghost_get_posdirs(pacmangamestruct *pp, int *posdirs, ghoststruct *g) 
-{
-       unsigned int i, nrdirs = 0;
-
-       /* bit of black magic here */
-       for (i = 0; i < DIRVECS; i++) {
-               /* remove opposite */
-               if (g->lastbox != NOWHERE && i == (g->lastbox + 2) % DIRVECS
-                               && g->aistate != goingout) {
-                       posdirs[i] = 0;
-                       continue;
-               }
-               if (g->aistate == goingout && i == 1) {
-                       posdirs[i] = 0;
-                       continue;
-               }
-               /* check if possible direction */
-               if ((posdirs[i] = 
-                       check_pos(pp, g->row + dirvecs[i].dy, 
-                               g->col + dirvecs[i].dx, 
-                               g->aistate == goingout ? True : False)) == 
-                               True) {
-                       nrdirs++;
-               }
-       }
-
-       return nrdirs;
-}
-
-/* Directs ghost to a random direction, exluding opposite (except in the
-   impossible situation that there is only one valid direction). */
-static void
-ghost_random(pacmangamestruct *pp, ghoststruct *g) 
-{
-       int posdirs[DIRVECS], nrdirs = 0, i, dir = 0;
-
-       nrdirs = ghost_get_posdirs(pp, posdirs, g);
-       for (i = 0; i < DIRVECS; i++)
-               if (posdirs[i] == True) dir = i;
-
-       if (nrdirs == 0) dir = (g->lastbox + 2) % DIRVECS;
-       else if (nrdirs > 1)
-               for (i = 0; i < DIRVECS; i++) {
-                       if (posdirs[i] == True && NRAND(nrdirs) == 0) {
-                               dir = i;
-                               break;
-                       }
-               }
-
-       g->nextrow = g->row + dirvecs[dir].dy;
-       g->nextcol = g->col + dirvecs[dir].dx;
-       g->lastbox = dir;
-}
-
-/* Determines best direction to chase the pacman and goes that direction. */
-static void
-ghost_chasing(pacmangamestruct *pp, ghoststruct *g) 
-{
-       int posdirs[DIRVECS], nrdirs = 0, i, dir = 0, highest = -100000, 
-               thisvecx, thisvecy, thisvec;
-
-       nrdirs = ghost_get_posdirs(pp, posdirs, g);
-       for (i = 0; i < DIRVECS; i++)
-               if (posdirs[i] == True) dir = i;
-
-       if (nrdirs == 0) dir = (g->lastbox + 2) % DIRVECS;
-       else if (nrdirs > 1)
-               for (i = 0; i < DIRVECS; i++) {
-                       if (posdirs[i] == False) continue;
-                       thisvecx = (pp->pacman.col - g->col) * dirvecs[i].dx;
-                       thisvecy = (pp->pacman.row - g->row) * dirvecs[i].dy;
-                       thisvec = thisvecx + thisvecy;
-                       if (thisvec >= highest) {
-                               dir = i;
-                               highest = thisvec;
-                       }
-               }
-
-       g->nextrow = g->row + dirvecs[dir].dy;
-       g->nextcol = g->col + dirvecs[dir].dx;
-       g->lastbox = dir;
-}
-
-/* Determines the best direction to go away from the pacman, and goes that
-   direction. */
-static void
-ghost_hiding(pacmangamestruct *pp, ghoststruct *g) 
-{
-       int posdirs[DIRVECS], nrdirs = 0, i, dir = 0, highest = -100000,
-               thisvecx, thisvecy, thisvec;
-
-       nrdirs = ghost_get_posdirs(pp, posdirs, g);
-       for (i = 0; i < DIRVECS; i++)
-               if (posdirs[i] == True) dir = i;
-
-       if (nrdirs == 0) dir = (g->lastbox + 2) % DIRVECS;
-       else if (nrdirs > 1)
-               for (i = 0; i < DIRVECS; i++) {
-                       if (posdirs[i] == False) continue;
-                       thisvecx = (g->col - pp->pacman.col) * dirvecs[i].dx;
-                       thisvecy = (g->row - pp->pacman.row) * dirvecs[i].dy;
-                       thisvec = thisvecx + thisvecy;
-                       if (thisvec >= highest)
-                               dir = i;
-               }
-
-       g->nextrow = g->row + dirvecs[dir].dy;
-       g->nextcol = g->col + dirvecs[dir].dx;
-       g->lastbox = dir;
-}
-
-/* Determines a vector from the pacman position, towards all dots.  The vector
-   is inversely proportional to the square of the distance of each dot.  
-   (so, close dots attract more than far away dots). */
-static void 
-pac_dot_vec(pacmangamestruct *pp, pacmanstruct *p, long *vx, long *vy) 
-{
-       int x, y, bx = 0, by = 0, ex = LEVWIDTH, ey = LEVHEIGHT;
-       long dx, dy, dist, top = 0;
-
-#if 0
-       int rnr = NRAND(50);
-       /* determine begin and end vectors */
-
-       switch (rnr) {
-               case 0: ex = LEVHEIGHT/2; break;
-               case 1: bx = LEVHEIGHT/2; break;
-               case 2: ey = LEVHEIGHT/2; break;
-               case 3: by = LEVHEIGHT/2; break;
-       }
-#endif
-       *vx = *vy = 0;
-
-       for (y = by; y < ey; y++) 
-               for (x = bx; x < ex; x++)
-                       if (check_dot(pp, x, y) == 1) {
-                               dx = (long)x - (long)(p->col);
-                               dy = (long)y - (long)(p->row);
-                               dist = dx * dx + dy * dy;
-                               if (dist > top)
-                                       top = dist;
-                               *vx += (dx * ((long)LEVWIDTH * (long)LEVHEIGHT))
-                                      / dist;
-                               *vy += (dy * ((long)LEVWIDTH * (long)LEVHEIGHT))
-                                      / dist;
-                       }
-}
-
-/* Determine a vector towards the closest ghost (in one loop, so we spare a
-   couple of cycles which we can spoil somewhere else just as fast). */
-static int
-pac_ghost_prox_and_vector(pacmangamestruct *pp, pacmanstruct *p, 
-               int *vx, int *vy) 
-{
-       int dx, dy, dist, closest = 100000;
-       unsigned int g;
-
-       if (vx != NULL)
-               *vx = *vy = 0;
-
-       for (g = 0; g < pp->nghosts; g++) {
-               if (pp->ghosts[g].dead    == True  || 
-                   pp->ghosts[g].aistate == inbox ||
-                   pp->ghosts[g].aistate == goingout)
-                       continue;
-               dx = pp->ghosts[g].col + /*dirvecs[pp->ghosts[g].lastbox].dx*/ -
-                       p->col;
-               dy = pp->ghosts[g].row + /*dirvecs[pp->ghosts[g].lastbox].dy*/ -
-                       p->row;
-               dist = dx * dx + dy * dy;
-               if (dist < closest) {
-                       closest = dist;
-                       if (vx != NULL) {
-                               *vx = dx; *vy = dy;
-                       }
-               }
-       }
-       return closest;
-}
-
-/* fills array of DIRVECS size with possible directions, returns number of
-   directions.  posdirs should point to an array of 4 integers. */
-static int
-pac_get_posdirs(pacmangamestruct *pp, pacmanstruct *p, int *posdirs)
-{
-       int nrdirs = 0;
-       unsigned int i;
-
-       for (i = 0; i < DIRVECS; i++) {
-               /* if we just ate, or we are in a statechange, it is allowed 
-                  to go the opposite direction */
-               if (p->justate == 0 &&
-                   p->state_change == 0 && 
-                   p->lastbox != NOWHERE && 
-                   i == (p->lastbox + 2) % DIRVECS) {
-                       posdirs[i] = 0;
-               } else if ((posdirs[i] = 
-                       check_pos(pp, p->row + dirvecs[i].dy, 
-                               p->col + dirvecs[i].dx, 0)) == 1)
-                       nrdirs++;
-       }
-       p->state_change = 0;
-
-       return nrdirs;
-}
-
-/* Clears the trace of vectors. */
-static void
-pac_clear_trace(pacmanstruct *p) 
-{
-       int i;
-
-       for(i = 0; i < TRACEVECS; i++) {
-               p->trace[i].vx = NOWHERE; p->trace[i].vy = NOWHERE;
-       }
-       p->cur_trace = 0;
-}
-
-/* Adds a new vector to the trace. */
-static void
-pac_save_trace(pacmanstruct *p, const int vx, const int vy) 
-{
-       if (!(vx == NOWHERE && vy == NOWHERE)) {
-               p->trace[p->cur_trace].vx = vx;
-               p->trace[p->cur_trace].vy = vy;
-               p->cur_trace = (p->cur_trace + 1) % TRACEVECS;
-       }
-}
-
-/* Check if a vector can be found in the trace. */
-static int
-pac_check_trace(const pacmanstruct *p, const int vx, const int vy) 
-{
-       int i, curel;
-
-       for (i = 1; i < TRACEVECS; i++) {
-               curel = (p->cur_trace - i + TRACEVECS) % TRACEVECS;
-               if (p->trace[curel].vx == NOWHERE &&
-                   p->trace[curel].vy == NOWHERE)
-                       continue;
-               if (p->trace[curel].vx == vx &&
-                   p->trace[curel].vy == vy)
-                       return 1;
-       }
-
-
-       return 0;
-}
-
-/* AI mode "Eating" for pacman. Tries to eat as many dots as possible, goes
-   to "hiding" if too close to a ghost. If in state "hiding" the vectors
-   of the ghosts are also taken into account (thus not running towards them
-   is the general idea). */
-static void
-pac_eating(pacmangamestruct *pp, pacmanstruct *p) 
-{
-       int posdirs[DIRVECS], nrdirs, i, highest = -(1 << 16), 
-               score, dir = 0, dotfound = 0, prox, worst = 0;
-       long vx, vy;
-
-       if ((prox = pac_ghost_prox_and_vector(pp, p, (int *)&vx, (int *)&vy)) <
-                               4 * 4 && p->aistate == ps_eating) {
-               p->aistate = ps_hiding;
-               p->state_change = 1;
-               pac_clear_trace(p);
-       }
-
-       if (prox > 6 * 6 && p->aistate == ps_hiding) {
-               p->aistate = ps_eating;
-               if (p->justate == 0) p->state_change = 1;
-               pac_clear_trace(p);
-       }
-
-       if (prox < 3 * 3) p->state_change = 1;
-
-       nrdirs = pac_get_posdirs(pp, p, posdirs);
-       
-       /* remove directions which lead to ghosts */
-       if (p->aistate == ps_hiding) {
-               for (i = 0; i < DIRVECS; i++) {
-                       if (posdirs[i] == 0) continue;
-                       score = vx * dirvecs[i].dx + vy * dirvecs[i].dy;
-                       if (score > highest) {
-                               worst = i;
-                               highest = score;
-                       }
-                       dir = i;
-               }
-               nrdirs--;
-               posdirs[worst] = 0;
-               highest = -(1 << 16);
-       }
-
-       /* get last possible direction if all else fails */
-       for (i = 0; i < DIRVECS; i++)
-               if (posdirs[i] != 0) dir = i;
-
-       pac_dot_vec(pp, p, &vx, &vy);
-
-       if (vx != NOWHERE && vy != NOWHERE && pac_check_trace(p, vx, vy) > 0) {
-               p->roundscore++;
-               if (p->roundscore >= 12) {
-                       p->roundscore = 0;
-                       p->aistate = ps_random;
-                       pac_clear_trace(p);
-               }
-       } else
-               p->roundscore = 0;
-
-       if (p->justate == 0) pac_save_trace(p, vx, vy);
-
-       for (i = 0; i < DIRVECS; i++) {
-               if (posdirs[i] == 0) continue;
-               score = dirvecs[i].dx * vx + dirvecs[i].dy * vy;
-               if (check_dot(pp, p->col + dirvecs[i].dx, 
-                                 p->row + dirvecs[i].dy) == 1) {
-                       if (dotfound == 0) {
-                               highest = score;
-                               dir = i;
-                               dotfound = 1;
-                       } else if (score > highest) {
-                               highest = score;
-                               dir = i;
-                       }
-               } else if (score > highest && dotfound == 0) {
-                       dir = i;
-                       highest = score;
-               }
-       }
-
-       p->nextrow = p->row + dirvecs[dir].dy;
-       p->nextcol = p->col + dirvecs[dir].dx;
-       p->lastbox = dir;
-}
-
-#if 0
-/* Tries to catch the ghosts. */
-static void
-pac_chasing(pacmangamestruct *pp, pacmanstruct *p) 
-{
-}
-#endif
-
-/* Goes completely random, but not in the opposite direction.  Used when a
-   loop is detected. */
-static void
-pac_random(pacmangamestruct *pp, pacmanstruct *p) 
-{
-       int posdirs[DIRVECS], nrdirs, i, dir = -1, lastdir = 0;
-
-       if (pac_ghost_prox_and_vector(pp, p, NULL, NULL) < 5 * 5) {
-               p->aistate = ps_hiding;
-               p->state_change = 1;
-       }
-       if (NRAND(20) == 0) {
-               p->aistate = ps_eating;
-               p->state_change = 1;
-               pac_clear_trace(p);
-       }
-
-       nrdirs = pac_get_posdirs(pp, p, posdirs);
-
-       for (i = 0; i < DIRVECS; i++) {
-               if (posdirs[i] == 0) continue;
-               lastdir = i;
-               if (check_dot(pp, p->col + dirvecs[i].dx, 
-                       p->row + dirvecs[i].dy) == 1) {
-                       dir = i;
-                       p->aistate = ps_eating;
-                       p->state_change = 1;
-                       pac_clear_trace(p);
-                       break;
-               } else if (NRAND(nrdirs) == 0)
-                       dir = i;
-       }
-
-       if (dir == -1) dir = lastdir;
-
-       p->nextrow = p->row + dirvecs[dir].dy;
-       p->nextcol = p->col + dirvecs[dir].dx;
-       p->lastbox = dir;
-}
-
-static int
-pac_get_vector_screen(pacmangamestruct *pp, pacmanstruct *p, 
-               const int x, const int y, int *vx, int *vy) 
-{
-       int lx, ly;
-
-       lx = (x - pp->xb) / pp->xs;
-       ly = (y - pp->yb) / pp->ys;
-
-       if (lx < 0) lx = 0;
-       else if ((unsigned int) lx > LEVWIDTH) lx = LEVWIDTH - 1;
-
-       if (ly < 0) ly = 0;
-       else if ((unsigned int) ly > LEVHEIGHT) ly = LEVHEIGHT - 1;
-
-       *vx = lx - p->col;
-       *vy = ly - p->row;
-
-       if (lx == p->oldlx && ly == p->oldly) return 0;
-       p->oldlx = lx; p->oldly = ly;
-       return 1;
-}
-
-static int
-pac_trackmouse(ModeInfo * mi, pacmangamestruct *pp, pacmanstruct *p) 
-{
-       int dx, dy, cx, cy, vx, vy;
-       unsigned int m;
-       int posdirs[DIRVECS], i, dir = -1, highest = -(2 << 16), score;
-       Window r, c;
-
-       (void) XQueryPointer(MI_DISPLAY(mi), MI_WINDOW(mi),
-                        &r, &c, &dx, &dy, &cx, &cy, &m);
-
-       if (cx <= 0 || cy <= 0 ||
-                    cx >= MI_WIDTH(mi) - 1 ||
-                    cy >= MI_HEIGHT(mi) - 1)
-               return 0;
-       /* get vector */
-       p->state_change = pac_get_vector_screen(pp, p, cx, cy, &vx, &vy);
-
-       (void) pac_get_posdirs(pp, p, posdirs);
-
-       for (i = 0; i < DIRVECS; i++) {
-               if (posdirs[i] == 0) continue;
-               score = dirvecs[i].dx * vx + dirvecs[i].dy * vy;
-               if (score > highest) {
-                       highest = score;
-                       dir = i;
-               }
-       }
-
-       p->nextrow = p->row + dirvecs[dir].dy;
-       p->nextcol = p->col + dirvecs[dir].dx;
-       p->lastbox = dir;
-       return 1;
-}
-
-/* Calls correct state function, and changes between states. */
-static void
-ghost_update(pacmangamestruct *pp, ghoststruct *g)
-{
-
-       if (!(g->nextrow == NOWHERE && g->nextcol == NOWHERE)) {
-               g->row = g->nextrow;
-               g->col = g->nextcol;
-       }
-
-       /* update ghost */
-       if (g->dead == True) /* dead ghosts are dead, 
-                               so they don't run around */
-               return;
-
-       if ((g->aistate == randdir || g->aistate == chasing) && 
-                       NRAND(10) == 0) {
-               switch (NRAND(3)) {
-                       case 0:
-                               g->aistate = randdir; break;
-                       case 1:
-                               g->aistate = chasing; break;
-                       case 2:
-                               g->aistate = chasing; break;
-               }
-
-       } else if (g->aistate == inbox) {
-               if (g->timeleft < 0)
-                       g->aistate = goingout;
-               else
-                       g->timeleft--;
-
-       } else if (g->aistate == goingout) {
-               if (g->col < LEVWIDTH/2 - JAILWIDTH/2 ||
-                   g->col > LEVWIDTH/2 + JAILWIDTH/2 ||
-                   g->row < LEVHEIGHT/2 - JAILHEIGHT/2 ||
-                   g->row > LEVHEIGHT/2 + JAILHEIGHT/2 )
-                       g->aistate = randdir;
-       }
-                  
-       switch (g->aistate) {
-               case inbox:
-               case goingout:
-               case randdir:
-                       ghost_random(pp, g);
-                       break;
-               case chasing:
-                       ghost_chasing(pp, g);
-                       break;
-               case hiding:
-                       ghost_hiding(pp, g);
-                       break;
-       }
-
-       g->cfactor = GETFACTOR(g->nextcol, g->col);
-       g->rfactor = GETFACTOR(g->nextrow, g->row);
-}
-
-/* Calls correct pacman state function. */
-static void
-pac_update(ModeInfo *mi, pacmangamestruct *pp, pacmanstruct *p) 
-{
-       if (!(p->nextrow == NOWHERE && p->nextcol == NOWHERE)) {
-               p->row = p->nextrow;
-               p->col = p->nextcol;
-       }
-
-       if (pp->level[p->row * LEVWIDTH + p->col] == '.') { 
-               pp->level[p->row * LEVWIDTH + p->col] = ' ';
-               if (!trackmouse)
-                       p->justate = 1;
-               pp->dotsleft--;
-       } else if (!trackmouse) {
-               p->justate = 0;
-       }
+#ifndef __PACMAN_AI_H__
+#define __PACMAN_AI_H__
 
 
-       if (!(trackmouse && pac_trackmouse(mi, pp, p))) {
-               /* update pacman */
-               switch (p->aistate) {
-                       case ps_eating:
-                               pac_eating(pp, p);
-                               break;
-                       case ps_hiding:
-                               pac_eating(pp, p);
-                               break;
-                       case ps_random:
-                               pac_random(pp, p);
-                               break;
-                       case ps_chasing:
-#if 0
-                               pac_chasing(pp, p);
-#endif
-                               break;
-               }
-       }
+extern void ghost_update(pacmangamestruct *pp, ghoststruct *g);
+extern void pac_clear_trace(pacmanstruct *p);
+extern void pac_update(ModeInfo * mi, pacmangamestruct *pp, 
+                       pacmanstruct *p);
 
 
-       p->cfactor = GETFACTOR(p->nextcol, p->col);
-       p->rfactor = GETFACTOR(p->nextrow, p->row);
-}
+#endif /* __PACMAN_AI_H__ */
diff --git a/hacks/pacman_level.c b/hacks/pacman_level.c
new file mode 100644 (file)
index 0000000..2daf6b8
--- /dev/null
@@ -0,0 +1,662 @@
+/*-
+ * Copyright (c) 2002 by Edwin de Jong <mauddib@gmx.net>.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * This file is provided AS IS with no warranties of any kind.  The author
+ * shall have no liability with respect to the infringement of copyrights,
+ * trade secrets or any patents by this file or any part thereof.  In no
+ * event will the author be liable for any lost revenue or profits or
+ * other special, indirect and consequential damages.
+ */
+
+#include "pacman.h"
+#include "pacman_level.h"
+
+#define MI_SCREEN(MI)          (0)
+
+#define NONE 0x0000
+#define LT   0x1000
+#define RT   0x0001
+#define RB   0x0010
+#define LB   0x0100
+#define ALL  0x1111
+
+#define BLOCK_EMPTY    ' '
+#define BLOCK_DOT_1    '`'
+#define BLOCK_DOT_2    '.'
+#define BLOCK_WALL     '#'
+#define BLOCK_GHOST_ONLY       '='
+#define BLOCK_WALL_TL  '\''
+#define BLOCK_WALL_TR  '`'
+#define BLOCK_WALL_BR  ','
+#define BLOCK_WALL_BL  '_'
+#define BLOCK_WALL_HO  '-'
+#define BLOCK_WALL_VE  '|'
+
+/* This is more or less the standard pacman level (without the left-right
+   tunnel. */
+static const lev_t stdlevel = {
+       "########################################",
+       "########################################",
+       "#######````````````##````````````#######",
+       "#######`####`#####`##`#####`####`#######",
+       "#######`####`#####`##`#####`####`#######",
+       "#######`####`#####`##`#####`####`#######",
+       "#######``````````````````````````#######",
+       "#######`####`##`########`##`####`#######",
+       "#######`####`##`########`##`####`#######",
+       "#######``````##````##````##``````#######",
+       "############`#####`##`#####`############",
+       "############`#####`##`#####`############",
+       "############`##``````````##`############",
+       "############`##`###==###`##`############",
+       "############`##`########`##`############",
+       "############````########````############",
+       "############`##`########`##`############",
+       "############`##`########`##`############",
+        "############`##``````````##`############",
+        "############`##`########`##`############",
+       "############`##`########`##`############",
+        "#######````````````##````````````#######",
+       "#######`####`#####`##`#####`####`#######",
+       "#######`####`#####`##`#####`####`#######",
+       "#######```##````````````````##```#######",
+       "#########`##`##`########`##`##`#########",
+       "#########`##`##`########`##`##`#########",
+       "#######``````##````##````##``````#######",
+       "#######`##########`##`##########`#######",
+       "#######`##########`##`##########`#######",
+       "#######``````````````````````````#######",
+       "########################################"};
+
+#define TILEWIDTH 5U
+#define TILEHEIGHT 5U
+#define TILES_COUNT 11U
+
+#define GO_UP 0x0001U
+#define GO_LEFT 0x0002U
+#define GO_RIGHT 0x0004U
+#define GO_DOWN 0x0008U
+
+/* This are tiles which can be places to create a level. */
+static struct {
+       char block[TILEWIDTH * TILEHEIGHT + 1];
+       unsigned dirvec[4];
+        unsigned ndirs;
+       unsigned simular_to;
+} tiles[TILES_COUNT] = { 
+/*   
+ *   ' ' == dont care == BLOCK_EMPTY
+ *   '#' == set wall, and not clear == BLOCK_WALL
+ *   '`' == clear == BLOCK_DOT_1
+ *   middle position is always set as cleardef
+ */
+  {    "  #  "
+       "  #  "
+       " ``` "
+       "  #  "
+       "  #  ", 
+        { GO_LEFT, GO_RIGHT, 0, 0 }, 2,
+       (unsigned) (1 << 0 | 1 << 6 | 1 << 8 | 1 << 10) },
+  {     "     "
+       "  `  "
+       "##`##"
+       "  `  "
+       "     ", 
+        { GO_UP, GO_DOWN, 0, 0 }, 2,
+       (unsigned) (1 << 1 | 1 << 7 | 1 << 9 | 1 << 10) },
+  {    "   ##"
+       "##`##"
+       "##`` "
+       "#### "
+       "#### ", 
+        { GO_UP, GO_RIGHT, 0, 0 }, 2,
+       (unsigned) (1 << 2 | 1 << 6 | 1 << 7 | 1 << 10) },
+  {    "#### "
+       "#### "
+       "##`` "
+       "##`##"
+       "   ##", 
+        { GO_RIGHT, GO_DOWN, 0, 0 }, 2,
+       (unsigned) (1 << 3 | 1 << 7 | 1 << 8 | 1 << 10) },
+  {    "  ###"
+       "  ###"
+       " ``##"
+       "##`  "
+       "##   ",
+        { GO_LEFT, GO_DOWN, 0, 0 }, 2,
+       (unsigned) (1 << 4 | 1 << 8 | 1 << 9 | 1 << 10) },
+  {    "##   "
+       "##`##"
+       " ``##"
+       " ####"
+       " ####",
+        { GO_LEFT, GO_UP, 0, 0 }, 2,
+       (unsigned) (1 << 5 | 1 << 6 | 1 << 9 | 1 << 10) },
+  {    "##`##"
+       "##`##"
+       "`````"
+       " ### "
+       " ### ",
+        { GO_LEFT, GO_UP, GO_RIGHT, 0 }, 3,
+       (unsigned) 1 << 6 },
+  {    "  `##"
+        "##`##"
+        "##```"
+        "##`##"
+        "  `##",
+        { GO_UP, GO_RIGHT, GO_DOWN, 0}, 3,
+       (unsigned) (1 << 7) },
+  {    " ### "
+        " ### "
+        "`````"
+        "##`##"
+        "##`##",
+        { GO_LEFT, GO_RIGHT, GO_DOWN, 0}, 3, 
+       (unsigned) (1 << 8) },
+  {    "##`  "
+        "##`##"
+        "```##"
+        "##`##"
+        "##`  ",
+        { GO_UP, GO_DOWN, GO_LEFT, 0 }, 3,
+       (unsigned) (1 << 9) },
+  {    "##`##"
+        "##`##"
+        "`````"
+        "##`##"
+        "##`##",
+        { GO_UP, GO_DOWN, GO_LEFT, GO_RIGHT }, 4,
+       (unsigned) (1 << 10) }
+};
+
+/* probability array for each of the tiles */
+#define MAXTILEPROB 22
+static const unsigned tileprob[MAXTILEPROB] =
+       { 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10 };
+
+
+static int     creatlevelblock(lev_t *level, const unsigned x, 
+                               const unsigned y);
+
+
+
+/* Sets a block in the level to a certain state. */
+static void 
+setblockto(lev_t *level, const unsigned x, const unsigned y, 
+               const char c) 
+{
+       if (!(x < LEVWIDTH && y < LEVHEIGHT)) return;
+       (*level)[y][x] = c;
+}
+
+/* check if a block is set */
+static int 
+checkset(lev_t *level, const unsigned x, const unsigned y) 
+{
+       if (!(x < LEVWIDTH && y < LEVHEIGHT) ||
+                       (*level)[y][x] == BLOCK_WALL || 
+                       (*level)[y][x] == BLOCK_GHOST_ONLY)
+               return True;
+       return False;
+}
+
+/* Check if a block is not set */
+static int 
+checksetout(lev_t *level, const unsigned x, const unsigned y) 
+{
+       if (!(x < LEVWIDTH && y < LEVHEIGHT) ||
+                       checkset(level, x, y) != 0)
+               return True;
+
+       return False;
+}
+
+/* Check if a block cannot be set */
+static int 
+checkunsetdef(lev_t *level, const unsigned x, const unsigned y) 
+{
+       if (!(x < LEVWIDTH && y < LEVHEIGHT))
+               return False;
+        if ((*level)[y][x] == BLOCK_DOT_1) return True;
+        return False;
+}
+
+/* Initializes a level to empty state. */
+static void 
+clearlevel(lev_t *level) 
+{
+        unsigned x, y;
+
+        for (y = 0; y < LEVHEIGHT ; y++)
+                for (x = 0 ; x < LEVWIDTH ; x++)
+                        (*level)[y][x] = BLOCK_EMPTY;
+}
+
+/* Changes a level from the level creation structure ((array to array) to
+   array. */
+static void
+copylevel(char *dest, lev_t *level) 
+{
+       unsigned x, y;
+
+       for (y = 0; y < LEVHEIGHT ; y++)
+               for (x = 0; x < LEVWIDTH ; x++)
+                       dest[y * LEVWIDTH + x] = (*level)[y][x];
+}
+
+/* Creates a jail to work around, so we can finish it later. */
+static void 
+createjail(lev_t *level, const unsigned width, 
+               const unsigned height) 
+{
+        unsigned x, y, xstart, xend, ystart, yend;
+
+       if (LEVWIDTH < width || LEVHEIGHT < height) return;
+
+        xstart = LEVWIDTH/2 - width/2;
+        xend = LEVWIDTH/2 + width/2;
+        ystart = LEVHEIGHT/2 - height/2;
+        yend = LEVHEIGHT/2 + height/2;
+
+        for (y = ystart - 1; y < yend + 1; y++)
+                for (x = xstart - 1; x < xend + 1; x++)
+                        setblockto(level, x, y, BLOCK_DOT_1);
+
+        for (y = ystart; y < yend; y++)
+                for (x = xstart; x < xend; x++)
+                        setblockto(level, x, y, BLOCK_WALL);
+}
+
+/* Finishes a jail so it is empty and the ghostpass is on top. */
+static void 
+finishjail(lev_t *level, const unsigned width, 
+               const unsigned height) 
+{
+        unsigned x, y, xstart, xend, ystart, yend;
+
+        xstart = LEVWIDTH/2 - width/2;
+        xend = LEVWIDTH/2 + width/2;
+        ystart = LEVHEIGHT/2 - height/2;
+        yend = LEVHEIGHT/2 + height/2;
+
+        for (y = ystart + 1; y < yend - 1 ; y++)
+                for (x = xstart + 1; x < xend - 1; x++)
+                        setblockto(level, x, y, BLOCK_EMPTY);
+
+       for (x = xstart - 1; x < xend + 1; x++) {
+               setblockto(level, x, ystart - 1, BLOCK_EMPTY);
+               setblockto(level, x, yend, BLOCK_EMPTY);
+       }
+
+       for (y = ystart - 1; y < yend + 1; y++) {
+               setblockto(level, xstart - 1, y, BLOCK_EMPTY);
+               setblockto(level, xend, y, BLOCK_EMPTY);
+       }
+
+        setblockto(level, xstart + width/2 - 1, ystart, BLOCK_GHOST_ONLY);
+        setblockto(level, xstart + width/2, ystart, BLOCK_GHOST_ONLY);
+}
+
+/* Tries to set a block at a certain position. Returns true if possible,
+    and leaves level in new state (plus block), or False if not possible,
+    and leaves level in unpredictable state. */
+static int 
+tryset(lev_t *level, const unsigned xpos, const unsigned ypos, 
+               const char *block) 
+{
+        register unsigned x, y;
+        register char locchar;
+        int xstart, ystart;
+       unsigned xend, yend;
+
+        if ((*level)[ypos][xpos] == BLOCK_DOT_1) return False;
+
+        xstart = xpos - 2;
+        ystart = ypos - 2;
+
+        for (y = 0 ; y < TILEHEIGHT ; y++)
+                for (x = 0 ; x < TILEWIDTH ; x++) {
+                        locchar = block[y * TILEWIDTH + x];
+                        if (locchar == BLOCK_EMPTY)
+                                continue;
+                        if (locchar == BLOCK_DOT_1 &&
+                             (xstart + x < 1 ||
+                              xstart + x >= LEVWIDTH - 1 ||
+                              ystart + y < 1 ||
+                              ystart + y >= LEVHEIGHT - 1 ||
+                              checkset(level, xstart + x, ystart + y) != 0))
+                                return False;
+                        else if (locchar == BLOCK_WALL &&
+                                (xstart + x > 1 &&
+                                 xstart + x < LEVWIDTH &&
+                                 ystart + y > 1 &&
+                                 ystart + y < LEVHEIGHT - 1) &&
+                                 checkunsetdef(level, 
+                                        (unsigned)(xstart + x), 
+                                        (unsigned)(ystart + y)) != 0)
+                                return False;
+                }
+
+        /* and set the block in place */
+
+        xend = (xstart + TILEWIDTH < LEVWIDTH - 1) ? 
+                TILEWIDTH : LEVWIDTH - xstart - 2;
+        yend = (ystart + TILEHEIGHT < LEVHEIGHT - 1) ?
+                TILEHEIGHT : LEVHEIGHT - ystart - 2;
+
+        for (y = (ystart < 1) ? (unsigned)(1 - ystart) : 0U ; 
+                        y < yend ; y++)
+                for (x = (xstart < 1) ? 
+                               (unsigned)(1 - xstart) : 0U ; 
+                      x < xend ; x++) {
+                        locchar = block[y * TILEWIDTH + x];
+                       if ((locchar == BLOCK_WALL) &&
+                            ((*level)[ystart + y][xstart + x] == BLOCK_EMPTY)) {
+                                (*level)[ystart + y][xstart + x] = BLOCK_WALL;
+                                (*level)[ystart + y]
+                                       [LEVWIDTH - (xstart + x + 1)] = 
+                                               BLOCK_WALL;
+                        }
+                }
+
+        (*level)[ypos][xpos] = BLOCK_DOT_1;
+        (*level)[ypos][LEVWIDTH-xpos-1] = BLOCK_DOT_1;
+
+        return True;
+}
+
+/* Tries certain combinations of blocks in the level recursively. */
+static unsigned
+nextstep(lev_t *level, const unsigned x, const unsigned y, 
+               unsigned dirvec[], unsigned ndirs) 
+{
+        unsigned dirpos, curdir, inc = 0;
+       int ret = 0;
+
+        while (ndirs > 0) {
+               ndirs--;
+                if (ndirs == 0) {
+                        curdir = dirvec[0];
+                }
+                else {
+                        dirpos = NRAND(ndirs);
+                        curdir = dirvec[dirpos];
+                       /* nope, no bufoverflow, but ndirs - 1 + 1 */
+                        dirvec[dirpos] = dirvec[ndirs];
+                        dirvec[ndirs] = curdir;
+                }
+
+                switch (curdir) {
+                   case GO_UP:
+                        if (y < 1 || 
+                                (ret = creatlevelblock(level, x, y - 1)) 
+                                        == 0)
+                                return 0;
+                        break;
+                   case GO_RIGHT:
+                        if (x > LEVWIDTH - 2 || 
+                                (ret = creatlevelblock(level, x + 1, y))
+                                        == 0)
+                                return 0;
+                        break;
+                   case GO_DOWN:
+                        if (y > LEVHEIGHT - 2 ||
+                                (ret = creatlevelblock(level, x, y + 1))
+                                        == 0)
+                                return 0;
+                        break;
+                   case GO_LEFT:
+                        if (x < 1 || 
+                                (ret = creatlevelblock(level, x - 1, y))
+                                        == 0)
+                                return 0;
+                }
+               if (ret != -1)
+                       inc += (unsigned)ret;
+        }
+       if (inc == 0) inc = 1;
+        return inc; 
+}
+
+static int 
+creatlevelblock(lev_t *level, const unsigned x, const unsigned y) 
+{
+        unsigned tried = GETNB(TILES_COUNT);
+        unsigned tilenr;
+       unsigned ret;
+        lev_t savedlev;
+
+        if (!((x < LEVWIDTH) && (y < LEVHEIGHT)))
+                return 0;
+
+        if (checkunsetdef(level, x, y) != 0)
+                return -1;
+
+        if (x == 0)
+               tried &= ~(1<<0);
+        else if (x == 1)
+               tried &= ~(1<<4 | 1<<5 | 1<<6 | 1<<8 | 1<<9 | 1<<10);
+        else if (x == LEVWIDTH-1)
+               tried &= ~(1<<0);
+        else if (x == LEVWIDTH-2)
+               tried &= ~(1<<2 | 1<<3 | 1<<6 | 1<<7 | 1<<8 | 1<<10);
+
+        if (y == 1) 
+               tried &= ~(1<<2 | 1<<5 | 1<<6 | 1<<7 | 1<<9 | 1<<10);
+        else if (y == 0)
+               tried &= ~(1<<1);
+        else if (y == LEVHEIGHT-1)
+               tried &= ~(1<<1);
+        else if (y == LEVHEIGHT-2)
+               tried &= ~(1<<3 | 1<<4 | 1<<7 | 1<<8 | 1<<9 | 1<<10);
+
+       /* make a copy of the current level, so we can go back on the stack */
+        (void) memcpy(&savedlev, level, sizeof(lev_t));
+
+        /* while there are still some blocks left to try */
+        while (tried != 0x00) {
+                tilenr = tileprob[NRAND(MAXTILEPROB)];
+
+                if (!TESTNB(tried, tilenr))
+                        continue;
+
+               if (tryset(level, x, y, tiles[tilenr].block) != 0) {
+                       if ((ret = nextstep(level, x, y, tiles[tilenr].dirvec,
+                                       tiles[tilenr].ndirs)) != 0) {
+                               return ret + 1;
+                       }
+                       (void) memcpy(level, &savedlev, sizeof(lev_t));
+               }
+               tried &= ~(tiles[tilenr].simular_to);
+       }
+        return 0;
+}
+
+/* Fills up all empty space so there is wall everywhere. */
+static void 
+filllevel(lev_t *level) 
+{
+        unsigned x, y;
+
+        for (y = 0; y < LEVHEIGHT; y++)
+                for (x = 0; x < LEVWIDTH; x++)
+                        if ((*level)[y][x] == BLOCK_EMPTY) 
+                               (*level)[y][x] = BLOCK_WALL;
+}
+
+/* Changes a level from a simple wall/nowall to a wall with rounded corners
+   and such.  Stupid algorithm, could be done better! */
+static void 
+frmtlevel(lev_t *level) 
+{
+        lev_t frmtlev;
+        register unsigned x, y;
+        register unsigned poscond;
+        register unsigned poscond2;
+
+        clearlevel(&frmtlev);
+
+        for (y = 0; y < LEVHEIGHT; y++)
+                for (x = 0; x < LEVWIDTH; x++) {
+
+                        if (checkset(level, x, y) == 0) {
+                                frmtlev[y][x] = BLOCK_DOT_2;
+                                continue;
+                        }
+
+                       if ((*level)[y][x] == BLOCK_GHOST_ONLY) {
+                               frmtlev[y][x] = BLOCK_GHOST_ONLY;       
+                               continue;
+                       }
+
+                        poscond = 
+                                 (checksetout(level, x - 1, y - 1) != 0 ? 
+                                         0x01U : 0U) |
+                                 (checksetout(level, x + 1, y - 1) != 0 ?
+                                         0x02U : 0U) |
+                                 (checksetout(level, x + 1, y + 1) != 0 ?
+                                         0x04U : 0U) |
+                                 (checksetout(level, x - 1, y + 1) != 0 ?
+                                         0x08U : 0U);
+
+                        poscond2 = 
+                                (checksetout(level, x - 1, y) != 0 ?
+                                        0x01U : 0) |
+                                (checksetout(level, x, y - 1) != 0 ?
+                                        0x02U : 0) |
+                                (checksetout(level, x + 1, y) != 0 ?
+                                        0x04U : 0) |
+                                (checksetout(level, x, y + 1) != 0 ?
+                                        0x08U : 0);
+
+                        switch (poscond) {
+                                /* completely filled */
+                                case 0x01U | 0x02U | 0x04U | 0x08U:
+                                        frmtlev[y][x] = BLOCK_EMPTY; continue;
+
+                                /* left to top corner */
+                                case 0x01U:
+                                        frmtlev[y][x] = BLOCK_WALL_TL; continue;
+                                /* top to right corner */
+                                case 0x02U:
+                                        frmtlev[y][x] = BLOCK_WALL_TR; continue;
+                                /* right to bottom corner */
+                                case 0x04U:
+                                        frmtlev[y][x] = BLOCK_WALL_BR; continue;
+                                /* bottom to left corner */
+                                case 0x08U:
+                                        frmtlev[y][x] = BLOCK_WALL_BL; continue;
+                        }
+
+                        switch (poscond2) {
+                                case 0x01U | 0x04U:
+                                case 0x01U | 0x04U | 0x08U:
+                                case 0x01U | 0x04U | 0x02U:
+                                        frmtlev[y][x] = BLOCK_WALL_HO; continue;
+                                case 0x02U | 0x08U:
+                                case 0x02U | 0x08U | 0x01U:
+                                case 0x02U | 0x08U | 0x04U:
+                                        frmtlev[y][x] = BLOCK_WALL_VE; continue;
+                                case 0x01U | 0x02U:
+                                        frmtlev[y][x] = BLOCK_WALL_TL; continue;
+                                case 0x02U | 0x04U:
+                                        frmtlev[y][x] = BLOCK_WALL_TR; continue;
+                                case 0x04U | 0x08U:
+                                        frmtlev[y][x] = BLOCK_WALL_BR; continue;
+                                case 0x08U | 0x01U:
+                                        frmtlev[y][x] = BLOCK_WALL_BL; continue;
+                        }
+                        switch (poscond) {
+                                case 0x02U | 0x04U | 0x08U:
+                                        frmtlev[y][x] = BLOCK_WALL_TL; continue;
+                                case 0x01U | 0x04U | 0x08U:
+                                        frmtlev[y][x] = BLOCK_WALL_TR; continue;
+                                case 0x01U | 0x02U | 0x08U:
+                                        frmtlev[y][x] = BLOCK_WALL_BR; continue;
+                                case 0x01U | 0x02U | 0x04U:
+                                        frmtlev[y][x] = BLOCK_WALL_BL; continue;
+                        }
+                        frmtlev[y][x] = BLOCK_EMPTY;
+                }
+        (void) memcpy((lev_t *)level, (lev_t *)&frmtlev, sizeof(lev_t));
+}
+
+/* Counts the number of dots in the level, and returns that number. */
+static unsigned
+countdots(ModeInfo * mi)
+{
+       pacmangamestruct *pp = &pacmangames[MI_SCREEN(mi)];
+       unsigned i, count = 0;
+
+       for (i = 0 ; i < LEVWIDTH*LEVHEIGHT ; i++)
+               if (pp->level[i] == BLOCK_DOT_2) count++;
+
+       return count;
+}
+
+/* Creates a new level, and places that in the pacmangamestruct. */
+int
+createnewlevel(ModeInfo * mi)
+{
+       pacmangamestruct *pp = &pacmangames[MI_SCREEN(mi)];
+       lev_t *level;
+       unsigned dirvec[1] = { GO_UP };
+       unsigned ret = 0, i = 0;
+
+       if ((level = (lev_t *)calloc(1, sizeof(lev_t))) == NULL)
+               return i;
+
+       if (NRAND(2) == 0) {
+
+               do {
+                       clearlevel(level);
+                       createjail(level, JAILWIDTH, JAILHEIGHT);
+                       if ((ret = nextstep(level, LEVWIDTH/2 - 1,
+                                           LEVHEIGHT/2 - JAILHEIGHT/2 - 3, 
+                                           dirvec, 1)) == 0) {
+                               (void) free((void *) level);
+                               return i;
+                       }
+               } while (ret * 100 < (LEVWIDTH * LEVHEIGHT * MINDOTPERC));
+
+               filllevel(level);
+               frmtlevel(level);
+               finishjail(level, JAILWIDTH, JAILHEIGHT);
+       } else {
+               (void) memcpy(level, stdlevel, sizeof(lev_t));
+               frmtlevel(level);
+               i = 1;
+       }
+       copylevel(pp->level, level);
+       pp->dotsleft = countdots(mi);
+
+       (void) free((void *) level);
+       return i;
+}
+
+/* Checks if a position is allowable for ghosts/pacs to enter. */
+int
+check_pos(pacmangamestruct *pp, int y, int x, int ghostpass) 
+{
+       if ((pp->level[y*LEVWIDTH + x] == BLOCK_DOT_2) ||
+           (pp->level[y*LEVWIDTH + x] == BLOCK_EMPTY) ||
+          ((pp->level[y*LEVWIDTH + x] == BLOCK_GHOST_ONLY) && ghostpass)) {
+               return 1;
+       }
+       return 0;
+}
+
+/* Checks if there is a dot on the specified position in the level. */
+int 
+check_dot(pacmangamestruct *pp, unsigned int x, unsigned int y) 
+{
+       if (x >= LEVWIDTH || y >= LEVHEIGHT) return 0;
+       if (pp->level[y * LEVWIDTH + x] == BLOCK_DOT_2) return 1;
+       return 0;
+}
index c33f28e969245b7bb363134071cd7ff3c2ebd037..55a038645c3f0b67ea8d0ff2fd57a58761a0cfa6 100644 (file)
  * other special, indirect and consequential damages.
  */
 
  * other special, indirect and consequential damages.
  */
 
-#define NONE 0x0000
-#define LT   0x1000
-#define RT   0x0001
-#define RB   0x0010
-#define LB   0x0100
-#define ALL  0x1111
+#ifndef __PACMAN_LEVEL_H__
+#define __PACMAN_LEVEL_H__
 
 
-#define BLOCK_EMPTY    ' '
-#define BLOCK_DOT_1    '`'
-#define BLOCK_DOT_2    '.'
-#define BLOCK_WALL     '#'
-#define BLOCK_GHOST_ONLY       '='
-#define BLOCK_WALL_TL  '\''
-#define BLOCK_WALL_TR  '`'
-#define BLOCK_WALL_BR  ','
-#define BLOCK_WALL_BL  '_'
-#define BLOCK_WALL_HO  '-'
-#define BLOCK_WALL_VE  '|'
+extern int createnewlevel(ModeInfo * mi);
+extern int check_pos(pacmangamestruct *pp, int y, int x, int ghostpass);
+extern int check_dot(pacmangamestruct *pp, unsigned int x, unsigned int y);
 
 
-/* This is more or less the standard pacman level (without the left-right
-   tunnel. */
-static const lev_t stdlevel = {
-       "########################################",
-       "########################################",
-       "#######````````````##````````````#######",
-       "#######`####`#####`##`#####`####`#######",
-       "#######`####`#####`##`#####`####`#######",
-       "#######`####`#####`##`#####`####`#######",
-       "#######``````````````````````````#######",
-       "#######`####`##`########`##`####`#######",
-       "#######`####`##`########`##`####`#######",
-       "#######``````##````##````##``````#######",
-       "############`#####`##`#####`############",
-       "############`#####`##`#####`############",
-       "############`##``````````##`############",
-       "############`##`###==###`##`############",
-       "############`##`########`##`############",
-       "############````########````############",
-       "############`##`########`##`############",
-       "############`##`########`##`############",
-        "############`##``````````##`############",
-        "############`##`########`##`############",
-       "############`##`########`##`############",
-        "#######````````````##````````````#######",
-       "#######`####`#####`##`#####`####`#######",
-       "#######`####`#####`##`#####`####`#######",
-       "#######```##````````````````##```#######",
-       "#########`##`##`########`##`##`#########",
-       "#########`##`##`########`##`##`#########",
-       "#######``````##````##````##``````#######",
-       "#######`##########`##`##########`#######",
-       "#######`##########`##`##########`#######",
-       "#######``````````````````````````#######",
-       "########################################"};
-
-#define TILEWIDTH 5U
-#define TILEHEIGHT 5U
-#define TILES_COUNT 11U
-
-#define GO_UP 0x0001U
-#define GO_LEFT 0x0002U
-#define GO_RIGHT 0x0004U
-#define GO_DOWN 0x0008U
-
-/* This are tiles which can be places to create a level. */
-static struct {
-       char block[TILEWIDTH * TILEHEIGHT + 1];
-       unsigned dirvec[4];
-        unsigned ndirs;
-       unsigned simular_to;
-} tiles[TILES_COUNT] = { 
-/*   
- *   ' ' == dont care == BLOCK_EMPTY
- *   '#' == set wall, and not clear == BLOCK_WALL
- *   '`' == clear == BLOCK_DOT_1
- *   middle position is always set as cleardef
- */
-  {    "  #  "
-       "  #  "
-       " ``` "
-       "  #  "
-       "  #  ", 
-        { GO_LEFT, GO_RIGHT, 0, 0 }, 2,
-       (unsigned) (1 << 0 | 1 << 6 | 1 << 8 | 1 << 10) },
-  {     "     "
-       "  `  "
-       "##`##"
-       "  `  "
-       "     ", 
-        { GO_UP, GO_DOWN, 0, 0 }, 2,
-       (unsigned) (1 << 1 | 1 << 7 | 1 << 9 | 1 << 10) },
-  {    "   ##"
-       "##`##"
-       "##`` "
-       "#### "
-       "#### ", 
-        { GO_UP, GO_RIGHT, 0, 0 }, 2,
-       (unsigned) (1 << 2 | 1 << 6 | 1 << 7 | 1 << 10) },
-  {    "#### "
-       "#### "
-       "##`` "
-       "##`##"
-       "   ##", 
-        { GO_RIGHT, GO_DOWN, 0, 0 }, 2,
-       (unsigned) (1 << 3 | 1 << 7 | 1 << 8 | 1 << 10) },
-  {    "  ###"
-       "  ###"
-       " ``##"
-       "##`  "
-       "##   ",
-        { GO_LEFT, GO_DOWN, 0, 0 }, 2,
-       (unsigned) (1 << 4 | 1 << 8 | 1 << 9 | 1 << 10) },
-  {    "##   "
-       "##`##"
-       " ``##"
-       " ####"
-       " ####",
-        { GO_LEFT, GO_UP, 0, 0 }, 2,
-       (unsigned) (1 << 5 | 1 << 6 | 1 << 9 | 1 << 10) },
-  {    "##`##"
-       "##`##"
-       "`````"
-       " ### "
-       " ### ",
-        { GO_LEFT, GO_UP, GO_RIGHT, 0 }, 3,
-       (unsigned) 1 << 6 },
-  {    "  `##"
-        "##`##"
-        "##```"
-        "##`##"
-        "  `##",
-        { GO_UP, GO_RIGHT, GO_DOWN, 0}, 3,
-       (unsigned) (1 << 7) },
-  {    " ### "
-        " ### "
-        "`````"
-        "##`##"
-        "##`##",
-        { GO_LEFT, GO_RIGHT, GO_DOWN, 0}, 3, 
-       (unsigned) (1 << 8) },
-  {    "##`  "
-        "##`##"
-        "```##"
-        "##`##"
-        "##`  ",
-        { GO_UP, GO_DOWN, GO_LEFT, 0 }, 3,
-       (unsigned) (1 << 9) },
-  {    "##`##"
-        "##`##"
-        "`````"
-        "##`##"
-        "##`##",
-        { GO_UP, GO_DOWN, GO_LEFT, GO_RIGHT }, 4,
-       (unsigned) (1 << 10) }
-};
-
-/* probability array for each of the tiles */
-#define MAXTILEPROB 22
-static const unsigned tileprob[MAXTILEPROB] =
-       { 0, 0, 0, 1, 1, 2, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10 };
-
-/* Sets a block in the level to a certain state. */
-static void 
-setblockto(lev_t *level, const unsigned x, const unsigned y, 
-               const char c) 
-{
-       if (!(x < LEVWIDTH && y < LEVHEIGHT)) return;
-       (*level)[y][x] = c;
-}
-
-/* check if a block is set */
-static int 
-checkset(lev_t *level, const unsigned x, const unsigned y) 
-{
-       if (!(x < LEVWIDTH && y < LEVHEIGHT) ||
-                       (*level)[y][x] == BLOCK_WALL || 
-                       (*level)[y][x] == BLOCK_GHOST_ONLY)
-               return True;
-       return False;
-}
-
-/* Check if a block is not set */
-static int 
-checksetout(lev_t *level, const unsigned x, const unsigned y) 
-{
-       if (!(x < LEVWIDTH && y < LEVHEIGHT) ||
-                       checkset(level, x, y) != 0)
-               return True;
-
-       return False;
-}
-
-/* Check if a block cannot be set */
-static int 
-checkunsetdef(lev_t *level, const unsigned x, const unsigned y) 
-{
-       if (!(x < LEVWIDTH && y < LEVHEIGHT))
-               return False;
-        if ((*level)[y][x] == BLOCK_DOT_1) return True;
-        return False;
-}
-
-/* Initializes a level to empty state. */
-static void 
-clearlevel(lev_t *level) 
-{
-        unsigned x, y;
-
-        for (y = 0; y < LEVHEIGHT ; y++)
-                for (x = 0 ; x < LEVWIDTH ; x++)
-                        (*level)[y][x] = BLOCK_EMPTY;
-}
-
-/* Changes a level from the level creation structure ((array to array) to
-   array. */
-static void
-copylevel(char *dest, lev_t *level) 
-{
-       unsigned x, y;
-
-       for (y = 0; y < LEVHEIGHT ; y++)
-               for (x = 0; x < LEVWIDTH ; x++)
-                       dest[y * LEVWIDTH + x] = (*level)[y][x];
-}
-
-/* Creates a jail to work around, so we can finish it later. */
-static void 
-createjail(lev_t *level, const unsigned width, 
-               const unsigned height) 
-{
-        unsigned x, y, xstart, xend, ystart, yend;
-
-       if (LEVWIDTH < width || LEVHEIGHT < height) return;
-
-        xstart = LEVWIDTH/2 - width/2;
-        xend = LEVWIDTH/2 + width/2;
-        ystart = LEVHEIGHT/2 - height/2;
-        yend = LEVHEIGHT/2 + height/2;
-
-        for (y = ystart - 1; y < yend + 1; y++)
-                for (x = xstart - 1; x < xend + 1; x++)
-                        setblockto(level, x, y, BLOCK_DOT_1);
-
-        for (y = ystart; y < yend; y++)
-                for (x = xstart; x < xend; x++)
-                        setblockto(level, x, y, BLOCK_WALL);
-}
-
-/* Finishes a jail so it is empty and the ghostpass is on top. */
-static void 
-finishjail(lev_t *level, const unsigned width, 
-               const unsigned height) 
-{
-        unsigned x, y, xstart, xend, ystart, yend;
-
-        xstart = LEVWIDTH/2 - width/2;
-        xend = LEVWIDTH/2 + width/2;
-        ystart = LEVHEIGHT/2 - height/2;
-        yend = LEVHEIGHT/2 + height/2;
-
-        for (y = ystart + 1; y < yend - 1 ; y++)
-                for (x = xstart + 1; x < xend - 1; x++)
-                        setblockto(level, x, y, BLOCK_EMPTY);
-
-       for (x = xstart - 1; x < xend + 1; x++) {
-               setblockto(level, x, ystart - 1, BLOCK_EMPTY);
-               setblockto(level, x, yend, BLOCK_EMPTY);
-       }
-
-       for (y = ystart - 1; y < yend + 1; y++) {
-               setblockto(level, xstart - 1, y, BLOCK_EMPTY);
-               setblockto(level, xend, y, BLOCK_EMPTY);
-       }
-
-        setblockto(level, xstart + width/2 - 1, ystart, BLOCK_GHOST_ONLY);
-        setblockto(level, xstart + width/2, ystart, BLOCK_GHOST_ONLY);
-}
-
-/* Tries to set a block at a certain position. Returns true if possible,
-    and leaves level in new state (plus block), or False if not possible,
-    and leaves level in unpredictable state. */
-static int 
-tryset(lev_t *level, const unsigned xpos, const unsigned ypos, 
-               const char *block) 
-{
-        register unsigned x, y;
-        register char locchar;
-        int xstart, ystart;
-       unsigned xend, yend;
-
-        if ((*level)[ypos][xpos] == BLOCK_DOT_1) return False;
-
-        xstart = xpos - 2;
-        ystart = ypos - 2;
-
-        for (y = 0 ; y < TILEHEIGHT ; y++)
-                for (x = 0 ; x < TILEWIDTH ; x++) {
-                        locchar = block[y * TILEWIDTH + x];
-                        if (locchar == BLOCK_EMPTY)
-                                continue;
-                        if (locchar == BLOCK_DOT_1 &&
-                             (xstart + x < 1 ||
-                              xstart + x >= LEVWIDTH - 1 ||
-                              ystart + y < 1 ||
-                              ystart + y >= LEVHEIGHT - 1 ||
-                              checkset(level, xstart + x, ystart + y) != 0))
-                                return False;
-                        else if (locchar == BLOCK_WALL &&
-                                (xstart + x > 1 &&
-                                 xstart + x < LEVWIDTH &&
-                                 ystart + y > 1 &&
-                                 ystart + y < LEVHEIGHT - 1) &&
-                                 checkunsetdef(level, 
-                                        (unsigned)(xstart + x), 
-                                        (unsigned)(ystart + y)) != 0)
-                                return False;
-                }
-
-        /* and set the block in place */
-
-        xend = (xstart + TILEWIDTH < LEVWIDTH - 1) ? 
-                TILEWIDTH : LEVWIDTH - xstart - 2;
-        yend = (ystart + TILEHEIGHT < LEVHEIGHT - 1) ?
-                TILEHEIGHT : LEVHEIGHT - ystart - 2;
-
-        for (y = (ystart < 1) ? (unsigned)(1 - ystart) : 0U ; 
-                        y < yend ; y++)
-                for (x = (xstart < 1) ? 
-                               (unsigned)(1 - xstart) : 0U ; 
-                      x < xend ; x++) {
-                        locchar = block[y * TILEWIDTH + x];
-                       if ((locchar == BLOCK_WALL) &&
-                            ((*level)[ystart + y][xstart + x] == BLOCK_EMPTY)) {
-                                (*level)[ystart + y][xstart + x] = BLOCK_WALL;
-                                (*level)[ystart + y]
-                                       [LEVWIDTH - (xstart + x + 1)] = 
-                                               BLOCK_WALL;
-                        }
-                }
-
-        (*level)[ypos][xpos] = BLOCK_DOT_1;
-        (*level)[ypos][LEVWIDTH-xpos-1] = BLOCK_DOT_1;
-
-        return True;
-}
-
-/* Tries certain combinations of blocks in the level recursively. */
-static unsigned
-nextstep(lev_t *level, const unsigned x, const unsigned y, 
-               unsigned dirvec[], unsigned ndirs) 
-{
-        unsigned dirpos, curdir, inc = 0;
-       int ret = 0;
-
-        while (ndirs > 0) {
-               ndirs--;
-                if (ndirs == 0) {
-                        curdir = dirvec[0];
-                }
-                else {
-                        dirpos = NRAND(ndirs);
-                        curdir = dirvec[dirpos];
-                       /* nope, no bufoverflow, but ndirs - 1 + 1 */
-                        dirvec[dirpos] = dirvec[ndirs];
-                        dirvec[ndirs] = curdir;
-                }
-
-                switch (curdir) {
-                   case GO_UP:
-                        if (y < 1 || 
-                                (ret = creatlevelblock(level, x, y - 1)) 
-                                        == 0)
-                                return 0;
-                        break;
-                   case GO_RIGHT:
-                        if (x > LEVWIDTH - 2 || 
-                                (ret = creatlevelblock(level, x + 1, y))
-                                        == 0)
-                                return 0;
-                        break;
-                   case GO_DOWN:
-                        if (y > LEVHEIGHT - 2 ||
-                                (ret = creatlevelblock(level, x, y + 1))
-                                        == 0)
-                                return 0;
-                        break;
-                   case GO_LEFT:
-                        if (x < 1 || 
-                                (ret = creatlevelblock(level, x - 1, y))
-                                        == 0)
-                                return 0;
-                }
-               if (ret != -1)
-                       inc += (unsigned)ret;
-        }
-       if (inc == 0) inc = 1;
-        return inc; 
-}
-
-static int 
-creatlevelblock(lev_t *level, const unsigned x, const unsigned y) 
-{
-        unsigned tried = GETNB(TILES_COUNT);
-        unsigned tilenr;
-       unsigned ret;
-        lev_t savedlev;
-
-        if (!((x < LEVWIDTH) && (y < LEVHEIGHT)))
-                return 0;
-
-        if (checkunsetdef(level, x, y) != 0)
-                return -1;
-
-        if (x == 0)
-               tried &= ~(1<<0);
-        else if (x == 1)
-               tried &= ~(1<<4 | 1<<5 | 1<<6 | 1<<8 | 1<<9 | 1<<10);
-        else if (x == LEVWIDTH-1)
-               tried &= ~(1<<0);
-        else if (x == LEVWIDTH-2)
-               tried &= ~(1<<2 | 1<<3 | 1<<6 | 1<<7 | 1<<8 | 1<<10);
-
-        if (y == 1) 
-               tried &= ~(1<<2 | 1<<5 | 1<<6 | 1<<7 | 1<<9 | 1<<10);
-        else if (y == 0)
-               tried &= ~(1<<1);
-        else if (y == LEVHEIGHT-1)
-               tried &= ~(1<<1);
-        else if (y == LEVHEIGHT-2)
-               tried &= ~(1<<3 | 1<<4 | 1<<7 | 1<<8 | 1<<9 | 1<<10);
-
-       /* make a copy of the current level, so we can go back on the stack */
-        (void) memcpy(&savedlev, level, sizeof(lev_t));
-
-        /* while there are still some blocks left to try */
-        while (tried != 0x00) {
-                tilenr = tileprob[NRAND(MAXTILEPROB)];
-
-                if (!TESTNB(tried, tilenr))
-                        continue;
-
-               if (tryset(level, x, y, tiles[tilenr].block) != 0) {
-                       if ((ret = nextstep(level, x, y, tiles[tilenr].dirvec,
-                                       tiles[tilenr].ndirs)) != 0) {
-                               return ret + 1;
-                       }
-                       (void) memcpy(level, &savedlev, sizeof(lev_t));
-               }
-               tried &= ~(tiles[tilenr].simular_to);
-       }
-        return 0;
-}
-
-/* Fills up all empty space so there is wall everywhere. */
-static void 
-filllevel(lev_t *level) 
-{
-        unsigned x, y;
-
-        for (y = 0; y < LEVHEIGHT; y++)
-                for (x = 0; x < LEVWIDTH; x++)
-                        if ((*level)[y][x] == BLOCK_EMPTY) 
-                               (*level)[y][x] = BLOCK_WALL;
-}
-
-/* Changes a level from a simple wall/nowall to a wall with rounded corners
-   and such.  Stupid algorithm, could be done better! */
-static void 
-frmtlevel(lev_t *level) 
-{
-        lev_t frmtlev;
-        register unsigned x, y;
-        register unsigned poscond;
-        register unsigned poscond2;
-
-        clearlevel(&frmtlev);
-
-        for (y = 0; y < LEVHEIGHT; y++)
-                for (x = 0; x < LEVWIDTH; x++) {
-
-                        if (checkset(level, x, y) == 0) {
-                                frmtlev[y][x] = BLOCK_DOT_2;
-                                continue;
-                        }
-
-                       if ((*level)[y][x] == BLOCK_GHOST_ONLY) {
-                               frmtlev[y][x] = BLOCK_GHOST_ONLY;       
-                               continue;
-                       }
-
-                        poscond = 
-                                 (checksetout(level, x - 1, y - 1) != 0 ? 
-                                         0x01U : 0U) |
-                                 (checksetout(level, x + 1, y - 1) != 0 ?
-                                         0x02U : 0U) |
-                                 (checksetout(level, x + 1, y + 1) != 0 ?
-                                         0x04U : 0U) |
-                                 (checksetout(level, x - 1, y + 1) != 0 ?
-                                         0x08U : 0U);
-
-                        poscond2 = 
-                                (checksetout(level, x - 1, y) != 0 ?
-                                        0x01U : 0) |
-                                (checksetout(level, x, y - 1) != 0 ?
-                                        0x02U : 0) |
-                                (checksetout(level, x + 1, y) != 0 ?
-                                        0x04U : 0) |
-                                (checksetout(level, x, y + 1) != 0 ?
-                                        0x08U : 0);
-
-                        switch (poscond) {
-                                /* completely filled */
-                                case 0x01U | 0x02U | 0x04U | 0x08U:
-                                        frmtlev[y][x] = BLOCK_EMPTY; continue;
-
-                                /* left to top corner */
-                                case 0x01U:
-                                        frmtlev[y][x] = BLOCK_WALL_TL; continue;
-                                /* top to right corner */
-                                case 0x02U:
-                                        frmtlev[y][x] = BLOCK_WALL_TR; continue;
-                                /* right to bottom corner */
-                                case 0x04U:
-                                        frmtlev[y][x] = BLOCK_WALL_BR; continue;
-                                /* bottom to left corner */
-                                case 0x08U:
-                                        frmtlev[y][x] = BLOCK_WALL_BL; continue;
-                        }
-
-                        switch (poscond2) {
-                                case 0x01U | 0x04U:
-                                case 0x01U | 0x04U | 0x08U:
-                                case 0x01U | 0x04U | 0x02U:
-                                        frmtlev[y][x] = BLOCK_WALL_HO; continue;
-                                case 0x02U | 0x08U:
-                                case 0x02U | 0x08U | 0x01U:
-                                case 0x02U | 0x08U | 0x04U:
-                                        frmtlev[y][x] = BLOCK_WALL_VE; continue;
-                                case 0x01U | 0x02U:
-                                        frmtlev[y][x] = BLOCK_WALL_TL; continue;
-                                case 0x02U | 0x04U:
-                                        frmtlev[y][x] = BLOCK_WALL_TR; continue;
-                                case 0x04U | 0x08U:
-                                        frmtlev[y][x] = BLOCK_WALL_BR; continue;
-                                case 0x08U | 0x01U:
-                                        frmtlev[y][x] = BLOCK_WALL_BL; continue;
-                        }
-                        switch (poscond) {
-                                case 0x02U | 0x04U | 0x08U:
-                                        frmtlev[y][x] = BLOCK_WALL_TL; continue;
-                                case 0x01U | 0x04U | 0x08U:
-                                        frmtlev[y][x] = BLOCK_WALL_TR; continue;
-                                case 0x01U | 0x02U | 0x08U:
-                                        frmtlev[y][x] = BLOCK_WALL_BR; continue;
-                                case 0x01U | 0x02U | 0x04U:
-                                        frmtlev[y][x] = BLOCK_WALL_BL; continue;
-                        }
-                        frmtlev[y][x] = BLOCK_EMPTY;
-                }
-        (void) memcpy((lev_t *)level, (lev_t *)&frmtlev, sizeof(lev_t));
-}
-
-/* Counts the number of dots in the level, and returns that number. */
-static unsigned
-countdots(ModeInfo * mi)
-{
-       pacmangamestruct *pp = &pacmangames[MI_SCREEN(mi)];
-       unsigned i, count = 0;
-
-       for (i = 0 ; i < LEVWIDTH*LEVHEIGHT ; i++)
-               if (pp->level[i] == BLOCK_DOT_2) count++;
-
-       return count;
-}
-
-/* Creates a new level, and places that in the pacmangamestruct. */
-static int
-createnewlevel(ModeInfo * mi)
-{
-       pacmangamestruct *pp = &pacmangames[MI_SCREEN(mi)];
-       lev_t *level;
-       unsigned dirvec[1] = { GO_UP };
-       unsigned ret = 0, i = 0;
-
-       if ((level = (lev_t *)calloc(1, sizeof(lev_t))) == NULL)
-               return i;
-
-       if (NRAND(2) == 0) {
-
-               do {
-                       clearlevel(level);
-                       createjail(level, JAILWIDTH, JAILHEIGHT);
-                       if ((ret = nextstep(level, LEVWIDTH/2 - 1,
-                                           LEVHEIGHT/2 - JAILHEIGHT/2 - 3, 
-                                           dirvec, 1)) == 0) {
-                               (void) free((void *) level);
-                               return i;
-                       }
-               } while (ret * 100 < (LEVWIDTH * LEVHEIGHT * MINDOTPERC));
-
-               filllevel(level);
-               frmtlevel(level);
-               finishjail(level, JAILWIDTH, JAILHEIGHT);
-       } else {
-               (void) memcpy(level, stdlevel, sizeof(lev_t));
-               frmtlevel(level);
-               i = 1;
-       }
-       copylevel(pp->level, level);
-       pp->dotsleft = countdots(mi);
-
-       (void) free((void *) level);
-       return i;
-}
-
-/* Checks if a position is allowable for ghosts/pacs to enter. */
-static int
-check_pos(pacmangamestruct *pp, int y, int x, int ghostpass) 
-{
-       if ((pp->level[y*LEVWIDTH + x] == BLOCK_DOT_2) ||
-           (pp->level[y*LEVWIDTH + x] == BLOCK_EMPTY) ||
-          ((pp->level[y*LEVWIDTH + x] == BLOCK_GHOST_ONLY) && ghostpass)) {
-               return 1;
-       }
-       return 0;
-}
-
-/* Checks if there is a dot on the specified position in the level. */
-static int 
-check_dot(pacmangamestruct *pp, unsigned int x, unsigned int y) 
-{
-       if (x >= LEVWIDTH || y >= LEVHEIGHT) return 0;
-       if (pp->level[y * LEVWIDTH + x] == BLOCK_DOT_2) return 1;
-       return 0;
-}
+#endif /* __PACMAN_LEVEL_H__ */
index e83822144b77346801fe1e0ea19d9a5b2114f77e..a15f0009e13ee34e62374063893995755dcf606c 100644 (file)
@@ -103,8 +103,8 @@ static Bool ammann;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-       {(char *) "-ammann", (char *) ".penrose.ammann", XrmoptionNoArg, (caddr_t) "on"},
-       {(char *) "+ammann", (char *) ".penrose.ammann", XrmoptionNoArg, (caddr_t) "off"}
+       {"-ammann", ".penrose.ammann", XrmoptionNoArg, "on"},
+       {"+ammann", ".penrose.ammann", XrmoptionNoArg, "off"}
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
@@ -112,7 +112,7 @@ static argtype vars[] =
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
-       {(char *) "-/+ammann", (char *) "turn on/off Ammann lines"}
+       {"-/+ammann", "turn on/off Ammann lines"}
 };
 
 ModeSpecOpt penrose_opts =
 };
 
 ModeSpecOpt penrose_opts =
index 02645b72431c40c593b0f9f832ba84901f130a8c..faa7698f344b80c586aea5af7bc7049d586f79d3 100644 (file)
@@ -58,10 +58,10 @@ static Bool plain;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
-  {(char *) "-identical", (char *) ".polyominoes.identical", XrmoptionNoArg, (caddr_t) "on"},
-  {(char *) "+identical", (char *) ".polyominoes.identical", XrmoptionNoArg, (caddr_t) "off"},
-  {(char *) "-plain", (char *) ".polyominoes.plain", XrmoptionNoArg, (caddr_t) "on"},
-  {(char *) "+plain", (char *) ".polyominoes.plain", XrmoptionNoArg, (caddr_t) "off"}
+  {"-identical", ".polyominoes.identical", XrmoptionNoArg, "on"},
+  {"+identical", ".polyominoes.identical", XrmoptionNoArg, "off"},
+  {"-plain", ".polyominoes.plain", XrmoptionNoArg, "on"},
+  {"+plain", ".polyominoes.plain", XrmoptionNoArg, "off"}
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
@@ -70,8 +70,8 @@ static argtype vars[] =
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
-  {(char *) "-/+identical", (char *) "turn on/off puzzles where the polyomino pieces are identical"},
-  {(char *) "-/+plain", (char *) "turn on/off plain pieces"}
+  {"-/+identical", "turn on/off puzzles where the polyomino pieces are identical"},
+  {"-/+plain", "turn on/off plain pieces"}
 };
 
 ModeSpecOpt polyominoes_opts =
 };
 
 ModeSpecOpt polyominoes_opts =
index 5432711d3112f8f75558b7b4f9df1dc63bad3fc6..728d18edabbb7b6b4ed25f0899faa8055b2a4a56 100644 (file)
@@ -187,6 +187,9 @@ static Atom XA_WM_PROTOCOLS, XA_WM_DELETE_WINDOW;
 void
 screenhack_handle_event (Display *dpy, XEvent *event)
 {
 void
 screenhack_handle_event (Display *dpy, XEvent *event)
 {
+  if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput))
+    XtAppProcessEvent (app, XtIMTimer|XtIMAlternateInput);
+
   switch (event->xany.type)
     {
     case KeyPress:
   switch (event->xany.type)
     {
     case KeyPress:
index eebe5f3775ec749b89c534ab8947726a200195f6..2616b849a9662c0561607849bb78f8379fe85fcf 100644 (file)
@@ -50,6 +50,10 @@ static GC clip_gc;       /* GC for the clip pixmap */
 static int x, y, s;      /* x & y coords of buffer (upper left corner) */
                          /* s is the width of the buffer */
 
 static int x, y, s;      /* x & y coords of buffer (upper left corner) */
                          /* s is the width of the buffer */
 
+static int off = 0;    /* random offset from currentTimeInMs(), so that
+                           two concurrent copies of spotlight have different
+                           behavior. */
+
 static int oldx, oldy, max_x_speed, max_y_speed;
                          /* used to keep the new buffer position
                            over the old spotlight image to make sure 
 static int oldx, oldy, max_x_speed, max_y_speed;
                          /* used to keep the new buffer position
                            over the old spotlight image to make sure 
@@ -144,19 +148,14 @@ init_hack (Display *dpy, Window window)
 
   /* avoid remants */
   max_x_speed = max_y_speed = radius;
 
   /* avoid remants */
   max_x_speed = max_y_speed = radius;
+  
+  off = random();
 
 #ifdef DEBUG
   /* create GC with white fg */
   gcv.foreground = fg;
   white_gc = XCreateGC(dpy, window, gcflags, &gcv);
 #endif
 
 #ifdef DEBUG
   /* create GC with white fg */
   gcv.foreground = fg;
   white_gc = XCreateGC(dpy, window, gcflags, &gcv);
 #endif
-  
-  /* initialize x and y to avoid initial `jump' across screen */
-  x = ((1 + sin(((float)currentTimeInMs()) / X_PERIOD * 2. * M_PI))/2.0) 
-    * (sizex - s/2) -s/4  + MINX;
-  y = ((1 + sin(((float)currentTimeInMs()) / Y_PERIOD * 2. * M_PI))/2.0) 
-    * (sizey - s/2) -s/4  + MINY;
-
 }
 
 
 }
 
 
@@ -164,7 +163,7 @@ init_hack (Display *dpy, Window window)
  * perform one iteration
  */
 static void
  * perform one iteration
  */
 static void
-onestep (Display *dpy, Window window)
+onestep (Display *dpy, Window window, Bool first_p)
 {
     long now;
 
 {
     long now;
 
@@ -179,7 +178,7 @@ onestep (Display *dpy, Window window)
 
     s = radius *4 ;   /* s = width of buffer */
 
 
     s = radius *4 ;   /* s = width of buffer */
 
-    now = currentTimeInMs();
+    now = currentTimeInMs() + off;
 
     /* find new x,y */
     x = ((1 + sin(((float)now) / X_PERIOD * 2. * M_PI))/2.0) 
 
     /* find new x,y */
     x = ((1 + sin(((float)now) / X_PERIOD * 2. * M_PI))/2.0) 
@@ -187,11 +186,14 @@ onestep (Display *dpy, Window window)
     y = ((1 + sin(((float)now) / Y_PERIOD * 2. * M_PI))/2.0) 
       * (sizey - s/2) -s/4  + MINY;
     
     y = ((1 + sin(((float)now) / Y_PERIOD * 2. * M_PI))/2.0) 
       * (sizey - s/2) -s/4  + MINY;
     
-    /* limit change in x and y to buffer width */
-    if ( x < (oldx - max_x_speed) ) x = oldx - max_x_speed;
-    if ( x > (oldx + max_x_speed) ) x = oldx + max_x_speed;
-    if ( y < (oldy - max_y_speed) ) y = oldy - max_y_speed;
-    if ( y > (oldy + max_y_speed) ) y = oldy + max_y_speed;
+    if (!first_p)
+      {
+        /* limit change in x and y to buffer width */
+        if ( x < (oldx - max_x_speed) ) x = oldx - max_x_speed;
+        if ( x > (oldx + max_x_speed) ) x = oldx + max_x_speed;
+        if ( y < (oldy - max_y_speed) ) y = oldy - max_y_speed;
+        if ( y > (oldy + max_y_speed) ) y = oldy + max_y_speed;
+      }
 
     /* copy area of screen image (pm) to buffer
        Clip to a circle */
 
     /* copy area of screen image (pm) to buffer
        Clip to a circle */
@@ -236,9 +238,11 @@ XrmOptionDescRec options [] = {
 void
 screenhack (Display *dpy, Window window)
 {
 void
 screenhack (Display *dpy, Window window)
 {
+  Bool first_p = True;
   init_hack (dpy, window);
   while (1) {
   init_hack (dpy, window);
   while (1) {
-    onestep(dpy, window);
+    onestep(dpy, window, first_p);
+    first_p = False;
     XSync(dpy, False);
     if (delay) usleep (delay);
     screenhack_handle_events (dpy);
     XSync(dpy, False);
     if (delay) usleep (delay);
     screenhack_handle_events (dpy);
index bf6186e5ea3afe751b61f23eba5ff110c8c61a97..d958c5623c7eddfbf533cbc6f0339360ce4aa0db 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
 #!/usr/bin/perl -w
-# vidwhacker, for xscreensaver.  Copyright (c) 1998-2003 Jamie Zawinski.
+# vidwhacker, for xscreensaver.  Copyright (c) 1998-2004 Jamie Zawinski.
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
@@ -21,7 +21,7 @@ use diagnostics;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.24 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.25 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
 
 my $verbose = 0;
 my $use_stdin = 0;
 
 my $verbose = 0;
 my $use_stdin = 0;
@@ -33,28 +33,9 @@ my $imagedir;
 
 my $screen_width = -1;
 
 
 my $screen_width = -1;
 
+my $displayer = "xscreensaver-getimage -root -file";
 
 
 
 
-# ####  This list was lifted from driver/xscreensaver-getimage-file
-#
-# These are programs that can be used to put an image file on the root
-# window (including virtual root windows.)  The first one of these programs
-# that exists on $PATH will be used (with the file name as the last arg.)
-#
-# If you add other programs to this list, please let me know!
-#
-my @displayer_programs = (
-  "xscreensaver-getimage -root -file",
-# "xv         -root -quit -viewonly -maxpect -noresetroot -quick24 -rmode 5" .
-# "           -rfg black -rbg black",
-# "xli        -quiet -fullscreen -onroot -center -border black",
-# "xloadimage -quiet -fullscreen -onroot -center -border black",
-# "chbg       -once -xscreensaver -max_grow 4",
-
-# this lame program wasn't built with vroot.h:
-# "xsri       -scale -keep-aspect -center-horizontal -center-vertical",
-);
-
 # apparently some versions of netpbm call it "pamoil" instead of "pgmoil"...
 #
 my $pgmoil = (which("pamoil") ? "pamoil" : "pgmoil");
 # apparently some versions of netpbm call it "pamoil" instead of "pgmoil"...
 #
 my $pgmoil = (which("pamoil") ? "pamoil" : "pgmoil");
@@ -143,10 +124,17 @@ sub error {
 #
 my @all_tmpfiles = ();
 
 #
 my @all_tmpfiles = ();
 
-sub signal_cleanup {
+sub exit_cleanup {
+  print STDERR "$progname: delete tmp files\n" if ($verbose);
   unlink @all_tmpfiles;
 }
 
   unlink @all_tmpfiles;
 }
 
+sub signal_cleanup {
+  my ($sig) = @_;
+  print STDERR "$progname: caught SIG$sig\n" if ($verbose);
+  exit 1;
+}
+
 sub init_signals {
 
   $SIG{HUP}  = \&signal_cleanup;
 sub init_signals {
 
   $SIG{HUP}  = \&signal_cleanup;
@@ -160,33 +148,10 @@ sub init_signals {
   $SIG{PIPE} = 'IGNORE';
 }
 
   $SIG{PIPE} = 'IGNORE';
 }
 
-END { signal_cleanup(); }
-
+END { exit_cleanup(); }
 
 
 
 
 
 
-# ####  Lifted from driver/xscreensaver-getimage-file
-#
-sub pick_displayer {
-  my @names = ();
-
-  foreach my $cmd (@displayer_programs) {
-    $_ = $cmd;
-    my ($name) = m/^([^ ]+)/;
-    push @names, "\"$name\"";
-    print STDERR "$progname: looking for $name...\n" if ($verbose > 2);
-    foreach my $dir (split (/:/, $ENV{PATH})) {
-      print STDERR "$progname:   checking $dir/$name\n" if ($verbose > 3);
-      return $cmd if (-x "$dir/$name");
-    }
-  }
-
-  $names[$#names] = "or " . $names[$#names];
-  printf STDERR "$progname: none of: " . join (", ", @names) .
-                " were found on \$PATH.\n";
-  exit 1;
-}
-
 
 # returns the full path of the named program, or undef.
 #
 
 # returns the full path of the named program, or undef.
 #
@@ -416,8 +381,6 @@ sub dispose_ppm {
     print $ppm;
 
   } else {
     print $ppm;
 
   } else {
-    my $displayer = pick_displayer();
-
     my $tmpdir = $ENV{TMPDIR};
     $tmpdir = "/tmp" unless $tmpdir;
     my $fn =  sprintf ("%s/vidwhacker-%08x", $tmpdir, rand(0xFFFFFFFF));
     my $tmpdir = $ENV{TMPDIR};
     $tmpdir = "/tmp" unless $tmpdir;
     my $fn =  sprintf ("%s/vidwhacker-%08x", $tmpdir, rand(0xFFFFFFFF));
@@ -434,7 +397,15 @@ sub dispose_ppm {
       if ($verbose);
     system (@cmd);
 
       if ($verbose);
     system (@cmd);
 
+    my $exit_value  = $? >> 8;
+    my $signal_num  = $? & 127;
+    my $dumped_core = $? & 128;
+
     unlink $fn;
     unlink $fn;
+
+    error ("$cmd[0]: core dumped!") if ($dumped_core);
+    error ("$cmd[0]: signal $signal_num!") if ($signal_num);
+    error ("$cmd[0]: exited with $exit_value!") if ($exit_value);
   }
 }
 
   }
 }
 
@@ -469,9 +440,10 @@ sub usage {
   print STDERR "VidWhacker, Copyright (c) 2001 Jamie Zawinski <jwz\@jwz.org>\n";
   print STDERR "            http://www.jwz.org/xscreensaver/";
   print STDERR "\n";
   print STDERR "VidWhacker, Copyright (c) 2001 Jamie Zawinski <jwz\@jwz.org>\n";
   print STDERR "            http://www.jwz.org/xscreensaver/";
   print STDERR "\n";
-  print STDERR "usage: $0 [-display dpy] [-verbose] [-root | -window]\n";
-  print STDERR "                  [-stdin] [-stdout] [-delay secs]\n";
-  print STDERR "                  [-directory image_directory]\n";
+  print STDERR "usage: $0 [-display dpy] [-verbose]\n";
+  print STDERR "\t\t[-root | -window | -window-id 0xXXXXX ]\n";
+  print STDERR "\t\t[-stdin] [-stdout] [-delay secs]\n";
+  print STDERR "\t\t[-directory image_directory]\n";
   exit 1;
 }
 
   exit 1;
 }
 
@@ -486,6 +458,13 @@ sub main {
     elsif (m/^--?delay$/) { $delay = shift @ARGV; }
     elsif (m/^--?dir(ectory)?$/) { $imagedir = shift @ARGV; }
     elsif (m/^--?root$/) { }
     elsif (m/^--?delay$/) { $delay = shift @ARGV; }
     elsif (m/^--?dir(ectory)?$/) { $imagedir = shift @ARGV; }
     elsif (m/^--?root$/) { }
+    elsif (m/^--?window-id$/) {
+      my $id = shift @ARGV;
+      error ("unparsable window id: $id")
+        unless ($id =~ m/^\d+$|^0x[\da-f]+$/i);
+      $displayer =~ s/--?root\b/$id/ ||
+        error ("unable to munge displayer: $displayer");
+    }
     elsif (m/^--?window$/) {
       print STDERR "$progname: sorry, \"-window\" is unimplemented.\n";
       print STDERR "$progname: use \"-stdout\" and pipe to a displayer.\n";
     elsif (m/^--?window$/) {
       print STDERR "$progname: sorry, \"-window\" is unimplemented.\n";
       print STDERR "$progname: use \"-stdout\" and pipe to a displayer.\n";
index e606655ec8e6b9db09162499ef1bafff151ca45b..d7764e08e7ea645bc983ef9016bf7176b0b533b9 100755 (executable)
@@ -60,17 +60,18 @@ use bytes;  # Larry can take Unicode and shove it up his ass sideways.
 
 
 my $progname = $0; $progname =~ s@.*/@@g;
 
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.114 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.117 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
 my $copyright = "WebCollage $version, Copyright (c) 1999-2004" .
     " Jamie Zawinski <jwz\@jwz.org>\n" .
     "            http://www.jwz.org/webcollage/\n";
 
 
 
 my $copyright = "WebCollage $version, Copyright (c) 1999-2004" .
     " Jamie Zawinski <jwz\@jwz.org>\n" .
     "            http://www.jwz.org/webcollage/\n";
 
 
 
-my @search_methods = (  72, "altavista",  \&pick_from_alta_vista_random_link,
+my @search_methods = (  71, "altavista",   \&pick_from_alta_vista_random_link,
                         10, "livejournal", \&pick_from_livejournal_images,
                         10, "livejournal", \&pick_from_livejournal_images,
-                        10, "yahoorand",  \&pick_from_yahoo_random_link,
-                         8, "yahoonews",  \&pick_from_yahoo_news_text,
+                         8, "yahoorand",   \&pick_from_yahoo_random_link,
+                         6, "yahoonews",   \&pick_from_yahoo_news_text,
+                         5, "ircimages",   \&pick_from_ircimages,
 
                      # Alta Vista has a new "random link" URL now.
                      # They added it specifically to better support webcollage!
 
                      # Alta Vista has a new "random link" URL now.
                      # They added it specifically to better support webcollage!
@@ -122,6 +123,8 @@ my %cookies = (
   "www.nytimes.com"    =>  'NYT-S=18cHMIlJOn2Y1bu5xvEG3Ufuk6E1oJ.' .
                            'FMxWaQV0igaB5Yi/Q/guDnLeoL.pe7i1oakSb' .
                            '/VqfdUdb2Uo27Vzt1jmPn3cpYRlTw9',
   "www.nytimes.com"    =>  'NYT-S=18cHMIlJOn2Y1bu5xvEG3Ufuk6E1oJ.' .
                            'FMxWaQV0igaB5Yi/Q/guDnLeoL.pe7i1oakSb' .
                            '/VqfdUdb2Uo27Vzt1jmPn3cpYRlTw9',
+
+  "ircimages.com"      =>  'disclaimer=1',
 );
 
 
 );
 
 
@@ -330,7 +333,8 @@ sub get_document_1 {
       my $user_agent = "$progname/$version";
 
       if ($url =~ m@^http://www\.altavista\.com/@ ||
       my $user_agent = "$progname/$version";
 
       if ($url =~ m@^http://www\.altavista\.com/@ ||
-          $url =~ m@^http://random\.yahoo\.com/@) {
+          $url =~ m@^http://random\.yahoo\.com/@ ||
+          $url =~ m@^http://images\.google\.com/@) {
         # block this, you turkeys.
         $user_agent = "Mozilla/4.76 [en] (X11; U; Linux 2.2.16-22 i686; Nav)";
       }
         # block this, you turkeys.
         $user_agent = "Mozilla/4.76 [en] (X11; U; Linux 2.2.16-22 i686; Nav)";
       }
@@ -1122,7 +1126,7 @@ my $alta_vista_images_url = "http://www.altavista.com/image/results" .
 sub pick_from_alta_vista_images {
   my ( $timeout ) = @_;
 
 sub pick_from_alta_vista_images {
   my ( $timeout ) = @_;
 
-  my $words = random_words(0);
+  my $words = random_word();
   my $page = (int(rand(9)) + 1);
   my $search_url = $alta_vista_images_url . $words;
 
   my $page = (int(rand(9)) + 1);
   my $search_url = $alta_vista_images_url . $words;
 
@@ -1137,12 +1141,13 @@ sub pick_from_alta_vista_images {
   my @candidates = ();
   foreach my $u (@subpages) {
 
   my @candidates = ();
   foreach my $u (@subpages) {
 
-    # avtext is encoding their URLs now.
-    next unless ($u =~ m@^/r.*\&r=([^&]+).*@);
-    $u = url_unquote($1);
+    # avimages is encoding their URLs now.
+    next unless ($u =~ s/^.*\*\*(http%3a.*$)/$1/gsi);
+    $u = url_unquote($u);
 
     next unless ($u =~ m@^http://@i);    #  skip non-HTTP or relative URLs
     next if ($u =~ m@[/.]altavista\.com\b@i);     # skip altavista builtins
 
     next unless ($u =~ m@^http://@i);    #  skip non-HTTP or relative URLs
     next if ($u =~ m@[/.]altavista\.com\b@i);     # skip altavista builtins
+    next if ($u =~ m@[/.]yahoo\.com\b@i);         # yahoo and av in cahoots?
     next if ($u =~ m@[/.]doubleclick\.net\b@i);   # you cretins
     next if ($u =~ m@[/.]clicktomarket\.com\b@i); # more cretins
 
     next if ($u =~ m@[/.]doubleclick\.net\b@i);   # you cretins
     next if ($u =~ m@[/.]clicktomarket\.com\b@i); # more cretins
 
@@ -1248,7 +1253,8 @@ sub pick_from_google_image_numbers {
 
     if ($u =~ m@^/imgres\?imgurl=(.*?)\&imgrefurl=(.*?)\&@) {
       my $ref = $2;
 
     if ($u =~ m@^/imgres\?imgurl=(.*?)\&imgrefurl=(.*?)\&@) {
       my $ref = $2;
-      my $img = "http://$1";
+      my $img = $1;
+      $img = "http://$img" unless ($img =~ m/^http:/i);
 
       LOG ($verbose_filter, "  candidate: $ref");
       push @candidates, $img;
 
       LOG ($verbose_filter, "  candidate: $ref");
       push @candidates, $img;
@@ -1307,8 +1313,12 @@ sub pick_from_alta_vista_text {
     # onMouseOver to make it look like they're not!  Well, it makes it
     # easier for us to identify search results...
     #
     # onMouseOver to make it look like they're not!  Well, it makes it
     # easier for us to identify search results...
     #
-    next unless ($u =~ m@^/r.*\&r=([^&]+).*@);
-    $u = url_unquote($1);
+    next unless ($u =~ s/^.*\*\*(http%3a.*$)/$1/gsi);
+    $u = url_unquote($u);
+
+    next unless ($u =~ m@^http://@i);    #  skip non-HTTP or relative URLs
+    next if ($u =~ m@[/.]altavista\.com\b@i);     # skip altavista builtins
+    next if ($u =~ m@[/.]yahoo\.com\b@i);         # yahoo and av in cahoots?
 
     LOG ($verbose_filter, "  candidate: $u");
     push @candidates, $u;
 
     LOG ($verbose_filter, "  candidate: $u");
     push @candidates, $u;
@@ -1358,8 +1368,14 @@ sub pick_from_hotbot_text {
   foreach my $u (@subpages) {
 
     # Hotbot plays redirection games too
   foreach my $u (@subpages) {
 
     # Hotbot plays redirection games too
-    next unless ($u =~ m@/director.asp\?.*\btarget=([^&]+)@);
-    $u = url_decode($1);
+    # (not any more?)
+#    next unless ($u =~ m@/director.asp\?.*\btarget=([^&]+)@);
+#    $u = url_decode($1);
+
+    next unless ($u =~ m@^http://@i);    #  skip non-HTTP or relative URLs
+    next if ($u =~ m@[/.]hotbot\.com\b@i);     # skip hotbot builtins
+    next if ($u =~ m@[/.]lycos\.com\b@i);      # skip hotbot builtins
+    next if ($u =~ m@[/.]inktomi\.com\b@i);    # skip hotbot builtins
 
     LOG ($verbose_filter, "  candidate: $u");
     push @candidates, $u;
 
     LOG ($verbose_filter, "  candidate: $u");
     push @candidates, $u;
@@ -1403,12 +1419,20 @@ sub pick_from_lycos_text {
   foreach my $u (@subpages) {
 
     # Lycos plays redirection games.
   foreach my $u (@subpages) {
 
     # Lycos plays redirection games.
-    next unless ($u =~ m@^http://click.lycos.com/director.asp
-                         .*
-                         \btarget=([^&]+)
-                         .*
-                        @x);
-    $u = url_decode($1);
+    # (not any more?)
+#    next unless ($u =~ m@^http://click.lycos.com/director.asp
+#                         .*
+#                         \btarget=([^&]+)
+#                         .*
+#                        @x);
+#    $u = url_decode($1);
+
+    next unless ($u =~ m@^http://@i);    #  skip non-HTTP or relative URLs
+    next if ($u =~ m@[/.]hotbot\.com\b@i);     # skip lycos builtins
+    next if ($u =~ m@[/.]lycos\.com\b@i);      # skip lycos builtins
+    next if ($u =~ m@[/.]terralycos\.com\b@i); # skip lycos builtins
+    next if ($u =~ m@[/.]inktomi\.com\b@i);    # skip lycos builtins
+
 
     LOG ($verbose_filter, "  candidate: $u");
     push @candidates, $u;
 
     LOG ($verbose_filter, "  candidate: $u");
     push @candidates, $u;
@@ -1508,6 +1532,63 @@ sub pick_from_livejournal_images {
   return ($page, $img);
 }
 
   return ($page, $img);
 }
 
+\f
+############################################################################
+#
+# Pick images from ircimages.com (images that have been in the /topic of
+# various IRC channels.)
+#
+############################################################################
+
+my $ircimages_url = "http://ircimages.com/";
+
+# ircimages
+sub pick_from_ircimages {
+  my ( $timeout ) = @_;
+
+  $last_search = $ircimages_url;   # for warnings
+
+  my $n = int(rand(2900));
+  my $search_url = $ircimages_url . "page-$n";
+
+  my ( $base, $body ) = get_document ($search_url, undef, $timeout);
+  return () unless $body;
+
+  my @candidates = ();
+
+  $body =~ s/\n/ /gs;
+  $body =~ s/(<A)\b/\n$1/gsi;
+
+  foreach (split (/\n/, $body)) {
+
+    my ($u) = m@<A\s.*\bHREF\s*=\s*([^>]+)>@i;
+    next unless $u;
+
+    if ($u =~ m/^\"([^\"]*)\"/) { $u = $1; }   # quoted string
+    elsif ($u =~ m/^([^\s]*)\s/) { $u = $1; }  # or token
+
+    next unless ($u =~ m/^http:/i);
+    next if ($u =~ m@^http://(searchirc\.com\|ircimages\.com)@i);
+    next unless ($u =~ m@[.](gif|jpg|jpeg|pjpg|pjpeg|png)$@i);
+
+    LOG ($verbose_http, "    HREF: $u");
+    push @candidates, $u;
+  }
+
+  LOG ($verbose_filter, "" . $#candidates+1 . " links on $search_url");
+
+  return () if ($#candidates == -1);
+
+  my $i = int(rand($#candidates+1));
+  my $img = $candidates[$i];
+
+  LOG ($verbose_load, "picked image " .($i+1) . "/" . ($#candidates+1) .
+       ": $img");
+
+  $search_url = $img;  # hmm...
+  return ($search_url, $img);
+}
+
 \f
 ############################################################################
 #
 \f
 ############################################################################
 #
@@ -2023,6 +2104,14 @@ sub bellrand {
 }
 
 
 }
 
 
+sub exit_cleanup {
+  x_cleanup();
+  if (@pids_to_kill) {
+    print STDERR blurb() . "killing: " . join(' ', @pids_to_kill) . "\n";
+    kill ('TERM', @pids_to_kill);
+  }
+}
+
 sub signal_cleanup {
   my ($sig) = @_;
   print STDERR blurb() . (defined($sig)
 sub signal_cleanup {
   my ($sig) = @_;
   print STDERR blurb() . (defined($sig)
@@ -2030,17 +2119,11 @@ sub signal_cleanup {
                           : "exiting.")
                        . "\n"
     if ($verbose_exec);
                           : "exiting.")
                        . "\n"
     if ($verbose_exec);
-
-  x_cleanup();
-
-  if (@pids_to_kill) {
-    print STDERR blurb() . "killing: " . join(' ', @pids_to_kill) . "\n";
-    kill ('TERM', @pids_to_kill);
-  }
-
   exit 1;
 }
 
   exit 1;
 }
 
+
+
 ##############################################################################
 #
 # Generating a list of urls only
 ##############################################################################
 #
 # Generating a list of urls only
@@ -2244,6 +2327,7 @@ my $ppm_to_root_window_cmd = undef;
 
 
 sub x_or_pbm_output {
 
 
 sub x_or_pbm_output {
+  my ($window_id) = @_;
 
   # Check for our helper program, to see whether we need to use PPM pipelines.
   #
 
   # Check for our helper program, to see whether we need to use PPM pipelines.
   #
@@ -2275,13 +2359,41 @@ sub x_or_pbm_output {
   #
   $ppm_to_root_window_cmd = pick_root_displayer();
 
   #
   $ppm_to_root_window_cmd = pick_root_displayer();
 
+  if (defined ($window_id)) {
+    error ("-window-id only works if xscreensaver-getimage is installed")
+      unless ($ppm_to_root_window_cmd =~ m/^xscreensaver-getimage\b/);
+
+    error ("unparsable window id: $window_id")
+      unless ($window_id =~ m/^\d+$|^0x[\da-f]+$/i);
+    $ppm_to_root_window_cmd =~ s/--?root\b/$window_id/ ||
+      error ("unable to munge displayer: $ppm_to_root_window_cmd");
+  }
+
   if (!$img_width || !$img_height) {
   if (!$img_width || !$img_height) {
-    $_ = "xdpyinfo";
-    which ($_) || error "$_ not found on \$PATH.";
-    $_ = `$_`;
-    ($img_width, $img_height) = m/dimensions: *(\d+)x(\d+) /;
-    if (!defined($img_height)) {
-      error "xdpyinfo failed.";
+
+    if (!defined ($window_id) &&
+        defined ($ENV{XSCREENSAVER_WINDOW})) {
+      $window_id = $ENV{XSCREENSAVER_WINDOW};
+    }
+
+    if (!defined ($window_id)) {
+      $_ = "xdpyinfo";
+      which ($_) || error "$_ not found on \$PATH.";
+      $_ = `$_`;
+      ($img_width, $img_height) = m/dimensions: *(\d+)x(\d+) /;
+      if (!defined($img_height)) {
+        error "xdpyinfo failed.";
+      }
+    } else {  # we have a window id
+      $_ = "xwininfo";
+      which ($_) || error "$_ not found on \$PATH.";
+      $_ .= " -id $window_id";
+      $_ = `$_`;
+      ($img_width, $img_height) = m/^\s*Width:\s*(\d+)\n\s*Height:\s*(\d+)\n/m;
+
+      if (!defined($img_height)) {
+        error "xwininfo failed.";
+      }
     }
   }
 
     }
   }
 
@@ -2746,8 +2858,12 @@ sub update_imagemap {
   # Write the jpg to a tmp file
   #
   {
   # Write the jpg to a tmp file
   #
   {
-   #my $cmd = "cjpeg < $image_ppm > $imagemap_jpg_tmp";
-    my $cmd = "cp -p $image_ppm $imagemap_jpg_tmp";
+    my $cmd;
+    if (defined ($webcollage_helper)) {
+      $cmd = "cp -p $image_ppm $imagemap_jpg_tmp";
+    } else {
+      $cmd = "cjpeg < $image_ppm > $imagemap_jpg_tmp";
+    }
     my $rc = nontrapping_system ($cmd);
     if ($rc != 0) {
       error ("imagemap jpeg failed: \"$cmd\"\n");
     my $rc = nontrapping_system ($cmd);
     if ($rc != 0) {
       error ("imagemap jpeg failed: \"$cmd\"\n");
@@ -2808,7 +2924,7 @@ sub init_signals {
   $SIG{PIPE} = 'IGNORE';
 }
 
   $SIG{PIPE} = 'IGNORE';
 }
 
-END { signal_cleanup(); }
+END { exit_cleanup(); }
 
 
 sub main {
 
 
 sub main {
@@ -2823,6 +2939,7 @@ sub main {
   $load_method = "none";
 
   my $root_p = 0;
   $load_method = "none";
 
   my $root_p = 0;
+  my $window_id = undef;
 
   # historical suckage: the environment variable name is lower case.
   $http_proxy = $ENV{http_proxy} || $ENV{HTTP_PROXY};
 
   # historical suckage: the environment variable name is lower case.
   $http_proxy = $ENV{http_proxy} || $ENV{HTTP_PROXY};
@@ -2838,6 +2955,9 @@ sub main {
       $ENV{DISPLAY} = shift @ARGV;
     } elsif ($_ eq "-root") {
       $root_p = 1;
       $ENV{DISPLAY} = shift @ARGV;
     } elsif ($_ eq "-root") {
       $root_p = 1;
+    } elsif ($_ eq "-window-id" || $_ eq "--window-id") {
+      $window_id = shift @ARGV;
+      $root_p = 1;
     } elsif ($_ eq "-no-output") {
       $no_output_p = 1;
     } elsif ($_ eq "-urls-only") {
     } elsif ($_ eq "-no-output") {
       $no_output_p = 1;
     } elsif ($_ eq "-urls-only") {
@@ -2990,9 +3110,9 @@ sub main {
   spawn_driftnet ($driftnet_cmd) if ($driftnet_cmd);
 
   if ($urls_only_p) {
   spawn_driftnet ($driftnet_cmd) if ($driftnet_cmd);
 
   if ($urls_only_p) {
-    url_only_output;
+    url_only_output ();
   } else {
   } else {
-    x_or_pbm_output;
+    x_or_pbm_output ($window_id);
   }
 }
 
   }
 }
 
index 7c686db94c08d0e65f53a193195b1a7d763cb8db..196b4319b7056150b099ce1230369bc95ec26bea 100644 (file)
@@ -384,7 +384,7 @@ write_pixbuf (GdkPixbuf *pb, const char *file)
           perror (buf);
           exit (1);
         }
           perror (buf);
           exit (1);
         }
-      fprintf (stderr, " %luK\n", (st.st_size + 1023) / 1024);
+      fprintf (stderr, " %luK\n", ((unsigned long) st.st_size + 1023) / 1024);
     }
 
   fclose (out);
     }
 
   fclose (out);
index 64907a7b5b9d186fd6717f83a65fa89d0926b02f..7624b4875c904a16b5c97a1ac554365f9959f9d4 100644 (file)
@@ -1,5 +1,5 @@
 /* xlockmore.c --- xscreensaver compatibility layer for xlockmore modules.
 /* xlockmore.c --- xscreensaver compatibility layer for xlockmore modules.
- * xscreensaver, Copyright (c) 1997, 1998, 2001, 2002
+ * xscreensaver, Copyright (c) 1997, 1998, 2001, 2002, 2004
  *  Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  *  Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
 #include <sys/time.h>
 #include "screenhack.h"
 #include "xlockmoreI.h"
 #include <sys/time.h>
 #include "screenhack.h"
 #include "xlockmoreI.h"
+#include <X11/Intrinsic.h>
 
 #define countof(x) (sizeof((x))/sizeof(*(x)))
 
 #define MAX_COLORS (1L<<13)
 
 
 #define countof(x) (sizeof((x))/sizeof(*(x)))
 
 #define MAX_COLORS (1L<<13)
 
+extern XtAppContext app;
 extern ModeSpecOpt xlockmore_opts[];
 extern const char *app_defaults;
 
 extern ModeSpecOpt xlockmore_opts[];
 extern const char *app_defaults;
 
@@ -217,6 +219,9 @@ xlockmore_handle_events (ModeInfo *mi,
                          void (*reshape) (ModeInfo *, int, int),
                          Bool (*hook) (ModeInfo *, XEvent *))
 {
                          void (*reshape) (ModeInfo *, int, int),
                          Bool (*hook) (ModeInfo *, XEvent *))
 {
+  if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput))
+    XtAppProcessEvent (app, XtIMTimer|XtIMAlternateInput);
+
   while (XPending (mi->dpy))
     {
       XEvent event;
   while (XPending (mi->dpy))
     {
       XEvent event;
index 7bce492ebabede2a53fc865b75420ef94aaf80a9..7589c124c11f574782f5bd2df4acd1cc125d8a5b 100644 (file)
@@ -101,8 +101,8 @@ prefix = @prefix@
 exec_prefix = @exec_prefix@
 #datadir = $(prefix)/@DATADIRNAME@      -- not for xscreensaver
 datadir = @PO_DATADIR@
 exec_prefix = @exec_prefix@
 #datadir = $(prefix)/@DATADIRNAME@      -- not for xscreensaver
 datadir = @PO_DATADIR@
-#localedir = $(datadir)/locale
-localedir = $(prefix)/share/locale
+localedir = $(datadir)/locale
+#localedir = $(prefix)/share/locale
 #gnulocaledir = $(prefix)/share/locale  -- not for xscreensaver
 gnulocaledir = $(localedir)
 #gettextsrcdir = $(prefix)/share/glib-2.0/gettext/po
 #gnulocaledir = $(prefix)/share/locale  -- not for xscreensaver
 gnulocaledir = $(localedir)
 #gettextsrcdir = $(prefix)/share/glib-2.0/gettext/po
index daf132e96c32a2df007a4fbc4f964193a54e684f..8c7e1cce2038c1437ee067442dcb294bd45a878e 100644 (file)
@@ -1,4 +1,4 @@
-# Auto-generated: Wed Mar  3 13:46:35 RST 2004
+# Auto-generated: Tue May 25 12:15:03 RDT 2004
 driver/demo-Gtk-conf.c
 driver/demo-Gtk-support.c
 driver/demo-Gtk-widgets.c
 driver/demo-Gtk-conf.c
 driver/demo-Gtk-support.c
 driver/demo-Gtk-widgets.c
@@ -8,6 +8,7 @@ driver/xscreensaver-demo.glade
 driver/xscreensaver-demo.glade2
 hacks/config/anemone.xml
 hacks/config/ant.xml
 driver/xscreensaver-demo.glade2
 hacks/config/anemone.xml
 hacks/config/ant.xml
+hacks/config/antinspect.xml
 hacks/config/antspotlight.xml
 hacks/config/apollonian.xml
 hacks/config/apple2.xml
 hacks/config/antspotlight.xml
 hacks/config/apollonian.xml
 hacks/config/apple2.xml
@@ -66,6 +67,7 @@ hacks/config/flurry.xml
 hacks/config/flyingtoasters.xml
 hacks/config/fontglide.xml
 hacks/config/forest.xml
 hacks/config/flyingtoasters.xml
 hacks/config/fontglide.xml
 hacks/config/forest.xml
+hacks/config/fuzzyflakes.xml
 hacks/config/galaxy.xml
 hacks/config/gears.xml
 hacks/config/gflux.xml
 hacks/config/galaxy.xml
 hacks/config/gears.xml
 hacks/config/gflux.xml
@@ -130,10 +132,12 @@ hacks/config/petri.xml
 hacks/config/phosphor.xml
 hacks/config/piecewise.xml
 hacks/config/pipes.xml
 hacks/config/phosphor.xml
 hacks/config/piecewise.xml
 hacks/config/pipes.xml
+hacks/config/polyhedra.xml
 hacks/config/polyominoes.xml
 hacks/config/polytopes.xml
 hacks/config/pong.xml
 hacks/config/popsquares.xml
 hacks/config/polyominoes.xml
 hacks/config/polytopes.xml
 hacks/config/pong.xml
 hacks/config/popsquares.xml
+hacks/config/providence.xml
 hacks/config/pulsar.xml
 hacks/config/pyro.xml
 hacks/config/qix.xml
 hacks/config/pulsar.xml
 hacks/config/pyro.xml
 hacks/config/qix.xml
index eebcf6ade5ce65a8a455b73a3d15c97a670fde41..4e770f1f38f7d1b91861f887f9e9fd93d60b795c 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,24 +1,23 @@
 # xscreensaver fr.po
 # xscreensaver fr.po
-# Copyright (C) 2002 Free Software Foundation, Inc.
-#      Eric Lassauge <lassauge@free.fr>, 2004.
+# Copyright (C) 2004 Eric Lassauge <lassauge@users.sourceforge.net>
 #
 msgid ""
 msgstr ""
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: xscreensaver 4.15\n"
+"Project-Id-Version: xscreensaver 4.16\n"
 "Report-Msgid-Bugs-To: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-03-03 14:11+0100\n"
+"POT-Creation-Date: 2004-05-25 12:17+0200\n"
 "PO-Revision-Date: 2002-07-28 01:03+0200\n"
 "PO-Revision-Date: 2002-07-28 01:03+0200\n"
-"Last-Translator: Eric Lassauge <lassauge@free.fr>\n"
+"Last-Translator: Eric Lassauge <lassauge@users.sourceforge.net>\n"
 "Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
 "Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: driver/demo-Gtk-conf.c:732
+#: driver/demo-Gtk-conf.c:818
 msgid "Browse..."
 msgstr "Parcourir... "
 
 msgid "Browse..."
 msgstr "Parcourir... "
 
-#: driver/demo-Gtk-conf.c:1024
+#: driver/demo-Gtk-conf.c:1110
 msgid "Select file."
 msgstr "Sélectionnez un fichier."
 
 msgid "Select file."
 msgstr "Sélectionnez un fichier."
 
@@ -63,9 +62,7 @@ msgstr "_Verrouiller l'
 
 #: driver/demo-Gtk-widgets.c:224 driver/xscreensaver-demo.glade.h:51
 msgid "Lock the screen now (even if \"Lock Screen\" is unchecked.)"
 
 #: driver/demo-Gtk-widgets.c:224 driver/xscreensaver-demo.glade.h:51
 msgid "Lock the screen now (even if \"Lock Screen\" is unchecked.)"
-msgstr ""
-"Verrouille l'écran maintenant (même si \"Verrouiller l'écran\" n'est pas "
-"validé)."
+msgstr "Verrouille l'écran maintenant (même si \"Verrouiller l'écran\" n'est pas validé)."
 
 #: driver/demo-Gtk-widgets.c:228 driver/xscreensaver-demo.glade.h:96
 #: driver/xscreensaver-demo.glade2.h:78
 
 #: driver/demo-Gtk-widgets.c:228 driver/xscreensaver-demo.glade.h:96
 #: driver/xscreensaver-demo.glade2.h:78
@@ -93,9 +90,7 @@ msgstr "_Quitter"
 msgid ""
 "Exit the xscreensaver-demo program (but leave the XScreenSaver daemon "
 "running in the background.)"
 msgid ""
 "Exit the xscreensaver-demo program (but leave the XScreenSaver daemon "
 "running in the background.)"
-msgstr ""
-"Sort du programme xscreensaver-demo (mais laisse le démon XScreenSaver actif "
-"en arrière-plan)."
+msgstr "Sort du programme xscreensaver-demo (mais laisse le démon XScreenSaver actif en arrière-plan)."
 
 #: driver/demo-Gtk-widgets.c:276 driver/xscreensaver-demo.glade2.h:77
 msgid "_Help"
 
 #: driver/demo-Gtk-widgets.c:276 driver/xscreensaver-demo.glade2.h:77
 msgid "_Help"
@@ -159,9 +154,7 @@ msgstr "Aper
 msgid ""
 "Demo the selected screen saver in full-screen mode (click the mouse to "
 "return.)"
 msgid ""
 "Demo the selected screen saver in full-screen mode (click the mouse to "
 "return.)"
-msgstr ""
-"Démo de l'économiseur d'écran sélectionné en mode plein-écran (cliquer avec "
-"la souris pour en sortir.)"
+msgstr "Démo de l'économiseur d'écran sélectionné en mode plein-écran (cliquer avec la souris pour en sortir.)"
 
 #: driver/demo-Gtk-widgets.c:492 driver/xscreensaver-demo.glade.h:65
 msgid "Settings..."
 
 #: driver/demo-Gtk-widgets.c:492 driver/xscreensaver-demo.glade.h:65
 msgid "Settings..."
@@ -215,9 +208,7 @@ msgstr "\\/"
 msgid ""
 "Run the next screen saver in the list in full-screen mode (click the mouse "
 "to return.)"
 msgid ""
 "Run the next screen saver in the list in full-screen mode (click the mouse "
 "to return.)"
-msgstr ""
-"Lance l'économiseur d'écran suivant dans la liste en mode plein-écran "
-"(cliquer la souris pour revenir.)"
+msgstr "Lance l'économiseur d'écran suivant dans la liste en mode plein-écran (cliquer la souris pour revenir.)"
 
 #: driver/demo-Gtk-widgets.c:654
 msgid "/\\"
 
 #: driver/demo-Gtk-widgets.c:654
 msgid "/\\"
@@ -228,9 +219,7 @@ msgstr "/\\"
 msgid ""
 "Run the previous screen saver in the list in full-screen mode (click the "
 "mouse to return.)"
 msgid ""
 "Run the previous screen saver in the list in full-screen mode (click the "
 "mouse to return.)"
-msgstr ""
-"Lance l'économiseur d'écran précédent dans la liste en mode plein-écran "
-"(cliquer la souris pour revenir.)"
+msgstr "Lance l'économiseur d'écran précédent dans la liste en mode plein-écran (cliquer la souris pour revenir.)"
 
 #: driver/demo-Gtk-widgets.c:664 driver/demo-Gtk-widgets.c:1607
 #: driver/xscreensaver-demo.glade.h:22 driver/xscreensaver-demo.glade2.h:13
 
 #: driver/demo-Gtk-widgets.c:664 driver/demo-Gtk-widgets.c:1607
 #: driver/xscreensaver-demo.glade.h:22 driver/xscreensaver-demo.glade2.h:13
@@ -260,9 +249,7 @@ msgstr "Diagnostiques verbeux"
 msgid ""
 "Whether any error output of the display modes should be redirected to the "
 "screen."
 msgid ""
 "Whether any error output of the display modes should be redirected to the "
 "screen."
-msgstr ""
-"Les messages d'erreur des modes d'affichages doivent-ils Ãªtre redirigés vers "
-"l'écran."
+msgstr "Les messages d'erreur des modes d'affichages doivent-ils Ãªtre redirigés vers l'écran."
 
 #: driver/demo-Gtk-widgets.c:770 driver/xscreensaver-demo.glade.h:29
 msgid "Display Subprocess Errors"
 
 #: driver/demo-Gtk-widgets.c:770 driver/xscreensaver-demo.glade.h:29
 msgid "Display Subprocess Errors"
@@ -273,9 +260,7 @@ msgstr "Afficher les erreurs des sous-processus"
 msgid ""
 "Whether the splash screen (with the version number and `Help' button) should "
 "be momentarily displayed when the daemon first starts up."
 msgid ""
 "Whether the splash screen (with the version number and `Help' button) should "
 "be momentarily displayed when the daemon first starts up."
-msgstr ""
-"L'écran de démarrage (avec le numéro de version et le bouton 'Aide') doit-il "
-"être affiché momentanément au premier démarrage du démon."
+msgstr "L'écran de démarrage (avec le numéro de version et le bouton 'Aide') doit-il Ãªtre affiché momentanément au premier démarrage du démon."
 
 #: driver/demo-Gtk-widgets.c:787 driver/xscreensaver-demo.glade.h:28
 msgid "Display Splash Screen at Startup"
 
 #: driver/demo-Gtk-widgets.c:787 driver/xscreensaver-demo.glade.h:28
 msgid "Display Splash Screen at Startup"
@@ -291,9 +276,7 @@ msgstr "Palettes de couleurs"
 msgid ""
 "Whether to install a private colormap when running in 8-bit mode on the "
 "default Visual."
 msgid ""
 "Whether to install a private colormap when running in 8-bit mode on the "
 "default Visual."
-msgstr ""
-"Faut-il installer une palette de couleurs privée en mode 8-bits pour le "
-"visuel par défaut"
+msgstr "Faut-il installer une palette de couleurs privée en mode 8-bits pour le visuel par défaut"
 
 #: driver/demo-Gtk-widgets.c:842 driver/xscreensaver-demo.glade.h:48
 msgid "Install Colormap"
 
 #: driver/demo-Gtk-widgets.c:842 driver/xscreensaver-demo.glade.h:48
 msgid "Install Colormap"
@@ -304,8 +287,7 @@ msgstr "Installer une palette de couleur"
 msgid ""
 "Whether the screen should slowly fade to black when the screen saver "
 "activates."
 msgid ""
 "Whether the screen should slowly fade to black when the screen saver "
 "activates."
-msgstr ""
-"L'écran doit-il fondre lentement au noir quand l'économiseur d'écran s'active"
+msgstr "L'écran doit-il fondre lentement au noir quand l'économiseur d'écran s'active"
 
 #: driver/demo-Gtk-widgets.c:867 driver/xscreensaver-demo.glade.h:36
 msgid "Fade To Black When Blanking"
 
 #: driver/demo-Gtk-widgets.c:867 driver/xscreensaver-demo.glade.h:36
 msgid "Fade To Black When Blanking"
@@ -316,9 +298,7 @@ msgstr "Fondu au noir lors du verrouillage"
 msgid ""
 "Whether the screen should slowly fade in from black when the screen saver "
 "deactivates."
 msgid ""
 "Whether the screen should slowly fade in from black when the screen saver "
 "deactivates."
-msgstr ""
-"L'écran doit-il fondre lentement depuis le noir quand l'économiseur d'écran "
-"se désactive"
+msgstr "L'écran doit-il fondre lentement depuis le noir quand l'économiseur d'écran se désactive"
 
 #: driver/demo-Gtk-widgets.c:884 driver/xscreensaver-demo.glade.h:35
 msgid "Fade From Black When Unblanking"
 
 #: driver/demo-Gtk-widgets.c:884 driver/xscreensaver-demo.glade.h:35
 msgid "Fade From Black When Unblanking"
@@ -384,9 +364,7 @@ msgstr "Manipulation d'images"
 msgid ""
 "Whether the image-manipulating modes should be allowed to operate on an "
 "image of your desktop."
 msgid ""
 "Whether the image-manipulating modes should be allowed to operate on an "
 "image of your desktop."
-msgstr ""
-"Les modes qui manipulent des images sont-ils autorisé Ã  utiliser une image "
-"de votre bureau."
+msgstr "Les modes qui manipulent des images sont-ils autorisé Ã  utiliser une image de votre bureau."
 
 #: driver/demo-Gtk-widgets.c:1169 driver/xscreensaver-demo.glade.h:39
 msgid "Grab Desktop Images"
 
 #: driver/demo-Gtk-widgets.c:1169 driver/xscreensaver-demo.glade.h:39
 msgid "Grab Desktop Images"
@@ -396,9 +374,7 @@ msgstr "Capturer l'image du bureau"
 msgid ""
 "Whether the image-manipulating modes should operate on images captured from "
 "the system's video input (if there is one)."
 msgid ""
 "Whether the image-manipulating modes should operate on images captured from "
 "the system's video input (if there is one)."
-msgstr ""
-"Les modes qui manipulent des images sont-ils autorisé Ã  utiliser des images "
-"capturées par l'entrée vidéo du système (si il y en a une)."
+msgstr "Les modes qui manipulent des images sont-ils autorisé Ã  utiliser des images capturées par l'entrée vidéo du système (si il y en a une)."
 
 #: driver/demo-Gtk-widgets.c:1186 driver/xscreensaver-demo.glade.h:40
 msgid "Grab Video Frames"
 
 #: driver/demo-Gtk-widgets.c:1186 driver/xscreensaver-demo.glade.h:40
 msgid "Grab Video Frames"
@@ -409,9 +385,7 @@ msgstr "Capturer des trames vid
 msgid ""
 "Whether the image-manipulating modes should operate on random images loaded "
 "from disk."
 msgid ""
 "Whether the image-manipulating modes should operate on random images loaded "
 "from disk."
-msgstr ""
-"Les modes qui manipulent des images sont-ils autorisé Ã  utiliser des images "
-"chargées aléatoirement depuis le disque."
+msgstr "Les modes qui manipulent des images sont-ils autorisé Ã  utiliser des images chargées aléatoirement depuis le disque."
 
 #: driver/demo-Gtk-widgets.c:1203 driver/xscreensaver-demo.glade.h:12
 msgid "Choose Random Image:"
 
 #: driver/demo-Gtk-widgets.c:1203 driver/xscreensaver-demo.glade.h:12
 msgid "Choose Random Image:"
@@ -453,7 +427,7 @@ msgstr "Visuel :"
 #: driver/demo-Gtk.c:1533 driver/demo-Gtk.c:2856
 #: driver/xscreensaver-demo.glade.h:5 driver/xscreensaver-demo.glade2.h:3
 msgid "Any"
 #: driver/demo-Gtk.c:1533 driver/demo-Gtk.c:2856
 #: driver/xscreensaver-demo.glade.h:5 driver/xscreensaver-demo.glade2.h:3
 msgid "Any"
-msgstr "Tous"
+msgstr "N'importe"
 
 #: driver/demo-Gtk-widgets.c:1551 driver/xscreensaver-demo.glade.h:7
 #: driver/xscreensaver-demo.glade2.h:4
 
 #: driver/demo-Gtk-widgets.c:1551 driver/xscreensaver-demo.glade.h:7
 #: driver/xscreensaver-demo.glade2.h:4
@@ -519,9 +493,7 @@ msgstr "Monochrome"
 msgid ""
 "The X visual type that this demo will require.  If that visual is available "
 "it will be used, otherwise, this demo will not be run."
 msgid ""
 "The X visual type that this demo will require.  If that visual is available "
 "it will be used, otherwise, this demo will not be run."
-msgstr ""
-"Le visuel X11 nécessaire pour cette démo. S'il est disponible il sera "
-"utilisé, sinon cette démo ne fonctionnera pas."
+msgstr "Le visuel X11 nécessaire pour cette démo. S'il est disponible il sera utilisé, sinon cette démo ne fonctionnera pas."
 
 #: driver/demo-Gtk-widgets.c:1575 driver/xscreensaver-demo.glade.h:16
 msgid "Command Line:"
 
 #: driver/demo-Gtk-widgets.c:1575 driver/xscreensaver-demo.glade.h:16
 msgid "Command Line:"
@@ -533,8 +505,7 @@ msgstr "Documentation..."
 
 #: driver/demo-Gtk-widgets.c:1655 driver/xscreensaver-demo.glade.h:13
 msgid "Click here to read the manual for this display mode, if it has one."
 
 #: driver/demo-Gtk-widgets.c:1655 driver/xscreensaver-demo.glade.h:13
 msgid "Click here to read the manual for this display mode, if it has one."
-msgstr ""
-"Cliquer ici pour lire le manuel de ce mode d'affichage, s'il en possède un."
+msgstr "Cliquer ici pour lire le manuel de ce mode d'affichage, s'il en possède un."
 
 #: driver/demo-Gtk-widgets.c:1680 driver/xscreensaver-demo.glade.h:4
 msgid "Advanced >>"
 
 #: driver/demo-Gtk-widgets.c:1680 driver/xscreensaver-demo.glade.h:4
 msgid "Advanced >>"
@@ -563,9 +534,8 @@ msgstr "Annuler"
 
 #: driver/demo-Gtk.c:644
 msgid "For updates, check http://www.jwz.org/xscreensaver/"
 
 #: driver/demo-Gtk.c:644
 msgid "For updates, check http://www.jwz.org/xscreensaver/"
-msgstr ""
-"Pour les mises Ã  jour, voir Â«http://www.jwz.org/xscreensaver/»\n"
-"Traductions par Eric Lassauge Â«http://lassauge.free.fr/xscreensaver/»"
+msgstr "Traduction Â© 2004, Eric Lassauge http://lassauge.free.fr/xscreensaver/"
+"Pour les mises Ã  jour, vérifier sur http://www.jwz.org/xscreensaver/"
 
 #: driver/demo-Gtk.c:774
 msgid ""
 
 #: driver/demo-Gtk.c:774
 msgid ""
@@ -573,7 +543,7 @@ msgid ""
 "\n"
 "No Help URL has been specified.\n"
 msgstr ""
 "\n"
 "No Help URL has been specified.\n"
 msgstr ""
-"Erreur :\n"
+"Erreur:\n"
 "\n"
 "Aucune URL d'aide spécifiée.\n"
 
 "\n"
 "Aucune URL d'aide spécifiée.\n"
 
@@ -584,9 +554,10 @@ msgid ""
 "The xscreensaver daemon did not start up properly.\n"
 "\n"
 msgstr ""
 "The xscreensaver daemon did not start up properly.\n"
 "\n"
 msgstr ""
-"Erreur :\n"
+"Erreur:\n"
 "\n"
 "Le démon xscreensaver ne démarre pas correctement.\n"
 "\n"
 "Le démon xscreensaver ne démarre pas correctement.\n"
+"\n"
 
 #: driver/demo-Gtk.c:872
 msgid ""
 
 #: driver/demo-Gtk.c:872
 msgid ""
@@ -606,22 +577,21 @@ msgid ""
 "You shouldn't run X as root. Instead, you should log in as a\n"
 "normal user, and `su' as necessary."
 msgstr ""
 "You shouldn't run X as root. Instead, you should log in as a\n"
 "normal user, and `su' as necessary."
 msgstr ""
-"Vous lancez ce programme en temps qu'administrateur. Ceci signifie\n"
-"que xscreensaver est incapable de contacter le serveur X car le\n"
-"contrôle d'accès est actif. Essayez de lancer cette commande :\n"
+"Vous fonctionnez en tant que Â«root». Ceci signifie généralement que\n"
+"xscreensaver ne peut pas contacter le serveur X car les contrôles\n"
+"d'accès sont actifs. Essayez de lancer la commande:\n"
 "\n"
 "                        xhost +localhost\n"
 "\n"
 "\n"
 "                        xhost +localhost\n"
 "\n"
-"puis sélectionnez 'Fichier / Relancer le démon'.\n"
-"\n"
-"Notez bien que inactiver le contrôle d'accès permettra Ã  quiconque\n"
-"connecté Ã  cette machine d'accéder Ã  votre Ã©cran, ce qui peut Ãªtre\n"
-"considéré comme un problème de sécurité. Lisez le manuel et la FAQ\n"
-"de xscreensaver pour plus d'information.\n"
+"puis sélectionnez Â«Fichier / Redémarrer le démon».\n"
 "\n"
 "\n"
-"Vous ne devriez pas lancer X en tant qu'administrateur. En lieu et\n"
-"place il faut se connecter en tant qu'utilisateur normal et utiliser\n"
-"'su' si nécessaire."
+"Notez que inhiber les contrôles d'accès permettra Ã  quiconque\n"
+"sur cette machine d'accéder Ã  votre Ã©cran, ce qui peut Ãªtre\n"
+"considéré comme un problème de sécurité. Lisez le manuel et la\n"
+"documentation de xscreensaver pour plus d'informations.\n"
+"Vous ne devriez pas lancer X en tant que Â«root». A la place il faut\n"
+"se connecter en tant qu'utilisateur normal et utiliser\n" 
+"«su» si nécessaire."
 
 #: driver/demo-Gtk.c:888
 msgid "Please check your $PATH and permissions."
 
 #: driver/demo-Gtk.c:888
 msgid "Please check your $PATH and permissions."
@@ -633,7 +603,7 @@ msgid ""
 "\n"
 "Couldn't determine init file name!\n"
 msgstr ""
 "\n"
 "Couldn't determine init file name!\n"
 msgstr ""
-"Erreur :\n"
+"Erreur:\n"
 "\n"
 "Impossible de déterminer le nom du fichier d'init !\n"
 
 "\n"
 "Impossible de déterminer le nom du fichier d'init !\n"
 
@@ -644,7 +614,7 @@ msgid ""
 "\n"
 "Couldn't write %s\n"
 msgstr ""
 "\n"
 "Couldn't write %s\n"
 msgstr ""
-"Erreur :\n"
+"Erreur:\n"
 "\n"
 "Impossible d'écrire dans %s.\n"
 
 "\n"
 "Impossible d'écrire dans %s.\n"
 
@@ -654,7 +624,7 @@ msgid ""
 "\n"
 "no `manualCommand' resource set."
 msgstr ""
 "\n"
 "no `manualCommand' resource set."
 msgstr ""
-"Erreur :\n"
+"Erreur:\n"
 "\n"
 "La ressource Â«manualCommand» n'est pas renseignée."
 
 "\n"
 "La ressource Â«manualCommand» n'est pas renseignée."
 
@@ -665,7 +635,7 @@ msgid ""
 "\n"
 "Unparsable time format: \"%s\"\n"
 msgstr ""
 "\n"
 "Unparsable time format: \"%s\"\n"
 msgstr ""
-"Erreur :\n"
+"Erreur:\n"
 "\n"
 "Le format Â«%s» pour l'heure n'est pas exploitable.\n"
 
 "\n"
 "Le format Â«%s» pour l'heure n'est pas exploitable.\n"
 
@@ -676,7 +646,7 @@ msgid ""
 "\n"
 "Directory does not exist: \"%s\"\n"
 msgstr ""
 "\n"
 "Directory does not exist: \"%s\"\n"
 msgstr ""
-"Erreur :\n"
+"Erreur:\n"
 "\n"
 "Répertoire Â«%s» inexistant.\n"
 
 "\n"
 "Répertoire Â«%s» inexistant.\n"
 
@@ -690,7 +660,7 @@ msgstr "Aucune description disponible."
 
 #: driver/demo-Gtk.c:2808
 msgid "Blank Screen"
 
 #: driver/demo-Gtk.c:2808
 msgid "Blank Screen"
-msgstr "Verrouiller l'écran"
+msgstr "Économiser l'écran uniquement"
 
 #: driver/demo-Gtk.c:2814
 msgid "Screen Saver Disabled"
 
 #: driver/demo-Gtk.c:2814
 msgid "Screen Saver Disabled"
@@ -708,9 +678,9 @@ msgid ""
 "\n"
 "file \"%s\" has changed, reloading.\n"
 msgstr ""
 "\n"
 "file \"%s\" has changed, reloading.\n"
 msgstr ""
-"Attention :\n"
+"Attention:\n"
 "\n"
 "\n"
-"Le fichier \"%s\" a changé, rechargement.\n"
+"le fichier Â«%s» a changé, rechargement.\n"
 
 #: driver/demo-Gtk.c:3084
 msgid "No Preview"
 
 #: driver/demo-Gtk.c:3084
 msgid "No Preview"
@@ -736,11 +706,12 @@ msgid ""
 "The XScreenSaver daemon doesn't seem to be running\n"
 "on display \"%s\".  Launch it now?"
 msgstr ""
 "The XScreenSaver daemon doesn't seem to be running\n"
 "on display \"%s\".  Launch it now?"
 msgstr ""
-"Attention :\n"
+"Attention:\n"
 "\n"
 "\n"
-"Le démon XScreenSaver n'est pas actif pour l'écran \"%s\". Le lancer "
+"Le démon XScreenSaver n'est pas actif pour l'écran Â«%s». Le lancer "
 "maintenant ?"
 
 "maintenant ?"
 
+
 #: driver/demo-Gtk.c:3821
 #, c-format
 msgid ""
 #: driver/demo-Gtk.c:3821
 #, c-format
 msgid ""
@@ -760,15 +731,17 @@ msgid ""
 "Restart the xscreensaver daemon now?\n"
 msgstr ""
 "Attention:\n"
 "Restart the xscreensaver daemon now?\n"
 msgstr ""
 "Attention:\n"
-"%s est lancé par l'utilisateur \"%s\" sur la machine \"%s\".\n"
-"Mais le xscreensaver gérant l'écran \"%s\"\n"
-"est lancé par l'utilisateur \"%s\" sur la machine \"%s\".\n"
 "\n"
 "\n"
-"Comme il s'agit d'utilisateurs différents, alors %s ne fonctionnera\n"
+"%s est lancé par l'utilisateur Â«%s» sur la machine Â«%s».\n"
+"Cependant le xscreensaver gérant l'écran Â«%s»\n"
+"est lancé par l'utilisateur Â«%s»  sur la machine Â«%s».\n"
+"\n"
+"Comme ce sont des utilisateurs différents, ils ne vont pas lire/écrire\n"
+"le même fichier Â«~/.xscreensaver», donc %s ne fonctionnera\n"
 "pas correctement.\n"
 "\n"
 "pas correctement.\n"
 "\n"
-"Vous devez soit re-lancer %s en tant que \"%s\", ou re-lancer\n"
-"xscreensaver en tant que \"%s\".\n"
+"Vous devez soit relancer %s en tant que Â«%s», soit relancer\n"
+"xscreensaver en tant que Â«%s».\n"
 "\n"
 "Relancer le démon xscreensaver maintenant ?\n"
 
 "\n"
 "Relancer le démon xscreensaver maintenant ?\n"
 
@@ -788,15 +761,16 @@ msgid ""
 "Restart the daemon on \"%s\" as \"%s\" now?\n"
 msgstr ""
 "Attention:\n"
 "Restart the daemon on \"%s\" as \"%s\" now?\n"
 msgstr ""
 "Attention:\n"
-"%s est lancé par l'utilisateur \"%s\" sur la machine \"%s\".\n"
-"Mais le xscreensaver gérant l'écran \"%s\"\n"
-"est lancé par l'utilisateur \"%s\" sur la machine \"%s\".\n"
 "\n"
 "\n"
-"Si ces deux machines ne partagent pas le même système de fichier\n"
-"(c'est Ã  dire pas le même fichier ~%s/.xscreensaver) alors\n"
-"%s ne fonctionnera pas correctement.\n"
+"%s est lancé par l'utilisateur Â«%s» sur la machine Â«%s».\n"
+"Cependant le xscreensaver gérant l'écran Â«%s»\n"
+"est lancé par l'utilisateur Â«%s»  sur la machine Â«%s».\n"
+"\n"
+"Si ces deux machines ne partagent pas le système de fichier\n"
+"(c'est Ã  dire qu'elles ne voient pas le même fichier Â«~/.xscreensaver»)\n"
+"alors %s ne fonctionnera pas correctement.\n"
 "\n"
 "\n"
-"Relancer le démon sur \"%s\" en tant que \"%s\" maintenant ?\n"
+"Relancer le démon sur Â«%s» en tant que Â«%s» maintenant ?\n"
 
 #: driver/demo-Gtk.c:3868
 #, c-format
 
 #: driver/demo-Gtk.c:3868
 #, c-format
@@ -810,16 +784,17 @@ msgid ""
 "Restart the xscreensaver daemon now?\n"
 msgstr ""
 "Attention:\n"
 "Restart the xscreensaver daemon now?\n"
 msgstr ""
 "Attention:\n"
+"\n"
 "Ceci est %s version %s.\n"
 "Ceci est %s version %s.\n"
-"Mais le xscreensaver gérant l'écran \"%s\"\n"
-"est en version %s. Cela risque de causer des problèmes.\n"
+"Cependant le xscreensaver gérant l'écran Â«%s»\n"
+"est en version %s. Ceci peut causer des problèmes.\n"
 "\n"
 "Relancer le démon xscreensaver maintenant ?\n"
 
 #: driver/demo-Gtk.c:4325
 #, c-format
 msgid "%s: unknown option: %s\n"
 "\n"
 "Relancer le démon xscreensaver maintenant ?\n"
 
 #: driver/demo-Gtk.c:4325
 #, c-format
 msgid "%s: unknown option: %s\n"
-msgstr "%s: option inconnue: Â«%s»\n"
+msgstr "%s: option inconnue : %s\n"
 
 #: driver/demo-Gtk.c:4389
 msgid "Screensaver Preferences"
 
 #: driver/demo-Gtk.c:4389
 msgid "Screensaver Preferences"
@@ -875,8 +850,7 @@ msgstr "Captures des trames _vid
 
 #: driver/xscreensaver-demo.glade2.h:28
 msgid "How long after the screen blanks until a password will be required."
 
 #: driver/xscreensaver-demo.glade2.h:28
 msgid "How long after the screen blanks until a password will be required."
-msgstr ""
-"Combien de temps avant qu'il soit nécessaire de donner un mot de passe."
+msgstr "Combien de temps avant qu'il soit nécessaire de donner un mot de passe."
 
 #: driver/xscreensaver-demo.glade2.h:29
 msgid "How long before the screensaver activates."
 
 #: driver/xscreensaver-demo.glade2.h:29
 msgid "How long before the screensaver activates."
@@ -886,9 +860,7 @@ msgstr "Combien de temps avant l'activation de l'
 msgid ""
 "How long each display mode should run before choosing a new one (in Random "
 "mode.)"
 msgid ""
 "How long each display mode should run before choosing a new one (in Random "
 "mode.)"
-msgstr ""
-"Combien de temps avant l'activation d'un autre Ã©conomiseur d'écran (en mode "
-"aléatoire)"
+msgstr "Combien de temps avant l'activation d'un autre Ã©conomiseur d'écran (en mode aléatoire)"
 
 #: driver/xscreensaver-demo.glade2.h:32
 msgid "How long until the monitor goes completely black."
 
 #: driver/xscreensaver-demo.glade2.h:32
 msgid "How long until the monitor goes completely black."
@@ -926,9 +898,7 @@ msgstr "Sus_pend apr
 msgid ""
 "Whether the image-manipulating modes should operate on images captured from "
 "the system's video input (if there is one.)"
 msgid ""
 "Whether the image-manipulating modes should operate on images captured from "
 "the system's video input (if there is one.)"
-msgstr ""
-"Les modes qui manipulent des images sont-ils autorisés Ã  utiliser des images "
-"capturées par l'entrée vidéo du système (si il y en a une)."
+msgstr "Les modes qui manipulent des images sont-ils autorisés Ã  utiliser des images capturées par l'entrée vidéo du système (si il y en a une)."
 
 #: driver/xscreensaver-demo.glade2.h:67
 msgid "_Advanced"
 
 #: driver/xscreensaver-demo.glade2.h:67
 msgid "_Advanced"
@@ -1018,36 +988,37 @@ msgstr "aper
 msgid "Anemone"
 msgstr "Anémone"
 
 msgid "Anemone"
 msgstr "Anémone"
 
-#: hacks/config/anemone.xml.h:2
+#: hacks/config/anemone.xml.h:2 hacks/config/fuzzyflakes.xml.h:1
 msgid "Arms"
 msgstr "Bras"
 
 #: hacks/config/anemone.xml.h:3 hacks/config/ant.xml.h:6
 msgid "Arms"
 msgstr "Bras"
 
 #: hacks/config/anemone.xml.h:3 hacks/config/ant.xml.h:6
-#: hacks/config/antspotlight.xml.h:3 hacks/config/apollonian.xml.h:5
-#: hacks/config/atlantis.xml.h:4 hacks/config/attraction.xml.h:8
-#: hacks/config/atunnel.xml.h:3 hacks/config/barcode.xml.h:4
-#: hacks/config/blaster.xml.h:3 hacks/config/blinkbox.xml.h:5
-#: hacks/config/blitspin.xml.h:4 hacks/config/blocktube.xml.h:4
-#: hacks/config/bouboule.xml.h:3 hacks/config/bouncingcow.xml.h:6
-#: hacks/config/boxed.xml.h:4 hacks/config/braid.xml.h:4
-#: hacks/config/bubble3d.xml.h:3 hacks/config/bubbles.xml.h:8
-#: hacks/config/bumps.xml.h:3 hacks/config/cage.xml.h:2
-#: hacks/config/circuit.xml.h:4 hacks/config/cloudlife.xml.h:3
-#: hacks/config/compass.xml.h:3 hacks/config/coral.xml.h:7
-#: hacks/config/critical.xml.h:3 hacks/config/crystal.xml.h:6
-#: hacks/config/cubenetic.xml.h:8 hacks/config/cubestorm.xml.h:4
-#: hacks/config/cynosure.xml.h:4 hacks/config/dangerball.xml.h:3
-#: hacks/config/decayscreen.xml.h:2 hacks/config/deluxe.xml.h:4
-#: hacks/config/demon.xml.h:4 hacks/config/discrete.xml.h:2
-#: hacks/config/distort.xml.h:4 hacks/config/drift.xml.h:3
-#: hacks/config/endgame.xml.h:3 hacks/config/engine.xml.h:8
-#: hacks/config/epicycle.xml.h:5 hacks/config/eruption.xml.h:5
-#: hacks/config/euler2d.xml.h:3 hacks/config/extrusion.xml.h:3
-#: hacks/config/fadeplot.xml.h:4 hacks/config/flag.xml.h:2
-#: hacks/config/flame.xml.h:6 hacks/config/flipflop.xml.h:1
-#: hacks/config/flipscreen3d.xml.h:1 hacks/config/flow.xml.h:4
-#: hacks/config/fluidballs.xml.h:5 hacks/config/flyingtoasters.xml.h:5
-#: hacks/config/fontglide.xml.h:4 hacks/config/forest.xml.h:1
+#: hacks/config/antinspect.xml.h:4 hacks/config/antspotlight.xml.h:3
+#: hacks/config/apollonian.xml.h:5 hacks/config/atlantis.xml.h:4
+#: hacks/config/attraction.xml.h:8 hacks/config/atunnel.xml.h:3
+#: hacks/config/barcode.xml.h:4 hacks/config/blaster.xml.h:3
+#: hacks/config/blinkbox.xml.h:5 hacks/config/blitspin.xml.h:4
+#: hacks/config/blocktube.xml.h:4 hacks/config/bouboule.xml.h:3
+#: hacks/config/bouncingcow.xml.h:6 hacks/config/boxed.xml.h:4
+#: hacks/config/braid.xml.h:4 hacks/config/bubble3d.xml.h:3
+#: hacks/config/bubbles.xml.h:8 hacks/config/bumps.xml.h:3
+#: hacks/config/cage.xml.h:2 hacks/config/circuit.xml.h:4
+#: hacks/config/cloudlife.xml.h:3 hacks/config/compass.xml.h:3
+#: hacks/config/coral.xml.h:7 hacks/config/critical.xml.h:3
+#: hacks/config/crystal.xml.h:6 hacks/config/cubenetic.xml.h:8
+#: hacks/config/cubestorm.xml.h:4 hacks/config/cynosure.xml.h:4
+#: hacks/config/dangerball.xml.h:3 hacks/config/decayscreen.xml.h:2
+#: hacks/config/deluxe.xml.h:4 hacks/config/demon.xml.h:4
+#: hacks/config/discrete.xml.h:2 hacks/config/distort.xml.h:4
+#: hacks/config/drift.xml.h:3 hacks/config/endgame.xml.h:3
+#: hacks/config/engine.xml.h:8 hacks/config/epicycle.xml.h:5
+#: hacks/config/eruption.xml.h:5 hacks/config/euler2d.xml.h:3
+#: hacks/config/extrusion.xml.h:3 hacks/config/fadeplot.xml.h:4
+#: hacks/config/flag.xml.h:2 hacks/config/flame.xml.h:6
+#: hacks/config/flipflop.xml.h:1 hacks/config/flipscreen3d.xml.h:1
+#: hacks/config/flow.xml.h:4 hacks/config/fluidballs.xml.h:5
+#: hacks/config/flyingtoasters.xml.h:5 hacks/config/fontglide.xml.h:4
+#: hacks/config/forest.xml.h:1 hacks/config/fuzzyflakes.xml.h:6
 #: hacks/config/galaxy.xml.h:3 hacks/config/gears.xml.h:2
 #: hacks/config/gflux.xml.h:6 hacks/config/glblur.xml.h:4
 #: hacks/config/glforestfire.xml.h:4 hacks/config/glknots.xml.h:3
 #: hacks/config/galaxy.xml.h:3 hacks/config/gears.xml.h:2
 #: hacks/config/gflux.xml.h:6 hacks/config/glblur.xml.h:4
 #: hacks/config/glforestfire.xml.h:4 hacks/config/glknots.xml.h:3
@@ -1075,9 +1046,10 @@ msgstr "Bras"
 #: hacks/config/pacman.xml.h:1 hacks/config/penetrate.xml.h:3
 #: hacks/config/penrose.xml.h:6 hacks/config/petri.xml.h:5
 #: hacks/config/phosphor.xml.h:4 hacks/config/piecewise.xml.h:4
 #: hacks/config/pacman.xml.h:1 hacks/config/penetrate.xml.h:3
 #: hacks/config/penrose.xml.h:6 hacks/config/petri.xml.h:5
 #: hacks/config/phosphor.xml.h:4 hacks/config/piecewise.xml.h:4
-#: hacks/config/pipes.xml.h:5 hacks/config/polyominoes.xml.h:2
-#: hacks/config/polytopes.xml.h:11 hacks/config/pong.xml.h:1
-#: hacks/config/popsquares.xml.h:3 hacks/config/pulsar.xml.h:11
+#: hacks/config/pipes.xml.h:5 hacks/config/polyhedra.xml.h:18
+#: hacks/config/polyominoes.xml.h:2 hacks/config/polytopes.xml.h:11
+#: hacks/config/pong.xml.h:1 hacks/config/popsquares.xml.h:3
+#: hacks/config/providence.xml.h:2 hacks/config/pulsar.xml.h:11
 #: hacks/config/pyro.xml.h:4 hacks/config/qix.xml.h:7
 #: hacks/config/queens.xml.h:1 hacks/config/rd-bomb.xml.h:9
 #: hacks/config/ripples.xml.h:4 hacks/config/rocks.xml.h:4
 #: hacks/config/pyro.xml.h:4 hacks/config/qix.xml.h:7
 #: hacks/config/queens.xml.h:1 hacks/config/rd-bomb.xml.h:9
 #: hacks/config/ripples.xml.h:4 hacks/config/rocks.xml.h:4
@@ -1098,7 +1070,7 @@ msgstr "Bras"
 #: hacks/config/worm.xml.h:3 hacks/config/wormhole.xml.h:2
 #: hacks/config/xearth.xml.h:7 hacks/config/xfishtank.xml.h:3
 #: hacks/config/xflame.xml.h:4 hacks/config/xjack.xml.h:1
 #: hacks/config/worm.xml.h:3 hacks/config/wormhole.xml.h:2
 #: hacks/config/xearth.xml.h:7 hacks/config/xfishtank.xml.h:3
 #: hacks/config/xflame.xml.h:4 hacks/config/xjack.xml.h:1
-#: hacks/config/xmatrix.xml.h:5 hacks/config/xmountains.xml.h:1
+#: hacks/config/xmatrix.xml.h:5 hacks/config/xmountains.xml.h:13
 #: hacks/config/xplanet.xml.h:8 hacks/config/xrayswarm.xml.h:2
 #: hacks/config/zoom.xml.h:2
 msgid "Fast"
 #: hacks/config/xplanet.xml.h:8 hacks/config/xrayswarm.xml.h:2
 #: hacks/config/zoom.xml.h:2
 msgid "Fast"
@@ -1108,11 +1080,12 @@ msgstr "Rapide"
 #: hacks/config/bouboule.xml.h:4 hacks/config/coral.xml.h:8
 #: hacks/config/cubenetic.xml.h:9 hacks/config/eruption.xml.h:6
 #: hacks/config/euler2d.xml.h:4 hacks/config/flame.xml.h:7
 #: hacks/config/bouboule.xml.h:4 hacks/config/coral.xml.h:8
 #: hacks/config/cubenetic.xml.h:9 hacks/config/eruption.xml.h:6
 #: hacks/config/euler2d.xml.h:4 hacks/config/flame.xml.h:7
-#: hacks/config/fluidballs.xml.h:6 hacks/config/kaleidescope.xml.h:3
-#: hacks/config/lisa.xml.h:3 hacks/config/pedal.xml.h:4
-#: hacks/config/petri.xml.h:7 hacks/config/qix.xml.h:8
-#: hacks/config/thornbird.xml.h:3 hacks/config/whirlwindwarp.xml.h:1
-#: hacks/config/wormhole.xml.h:3 hacks/config/xfishtank.xml.h:4
+#: hacks/config/fluidballs.xml.h:6 hacks/config/fuzzyflakes.xml.h:7
+#: hacks/config/kaleidescope.xml.h:3 hacks/config/lisa.xml.h:3
+#: hacks/config/pedal.xml.h:4 hacks/config/petri.xml.h:7
+#: hacks/config/qix.xml.h:8 hacks/config/thornbird.xml.h:3
+#: hacks/config/whirlwindwarp.xml.h:1 hacks/config/wormhole.xml.h:3
+#: hacks/config/xfishtank.xml.h:4
 msgid "Few"
 msgstr "Peu"
 
 msgid "Few"
 msgstr "Peu"
 
@@ -1129,29 +1102,29 @@ msgstr "Peu"
 #: hacks/config/fadeplot.xml.h:6 hacks/config/flag.xml.h:5
 #: hacks/config/flame.xml.h:11 hacks/config/flow.xml.h:8
 #: hacks/config/fluidballs.xml.h:13 hacks/config/forest.xml.h:3
 #: hacks/config/fadeplot.xml.h:6 hacks/config/flag.xml.h:5
 #: hacks/config/flame.xml.h:11 hacks/config/flow.xml.h:8
 #: hacks/config/fluidballs.xml.h:13 hacks/config/forest.xml.h:3
-#: hacks/config/galaxy.xml.h:6 hacks/config/grav.xml.h:4
-#: hacks/config/halo.xml.h:4 hacks/config/hopalong.xml.h:15
-#: hacks/config/ifs.xml.h:3 hacks/config/imsmap.xml.h:9
-#: hacks/config/interference.xml.h:14 hacks/config/julia.xml.h:6
-#: hacks/config/kaleidescope.xml.h:5 hacks/config/laser.xml.h:6
-#: hacks/config/lightning.xml.h:3 hacks/config/lisa.xml.h:5
-#: hacks/config/lissie.xml.h:6 hacks/config/loop.xml.h:4
-#: hacks/config/metaballs.xml.h:6 hacks/config/mismunch.xml.h:4
-#: hacks/config/moire.xml.h:5 hacks/config/moire2.xml.h:3
-#: hacks/config/mountain.xml.h:4 hacks/config/nerverot.xml.h:15
-#: hacks/config/pedal.xml.h:6 hacks/config/penrose.xml.h:7
-#: hacks/config/petri.xml.h:11 hacks/config/polyominoes.xml.h:5
-#: hacks/config/qix.xml.h:14 hacks/config/rd-bomb.xml.h:12
-#: hacks/config/ripples.xml.h:7 hacks/config/rocks.xml.h:5
-#: hacks/config/rotor.xml.h:6 hacks/config/shadebobs.xml.h:5
-#: hacks/config/sierpinski.xml.h:4 hacks/config/slip.xml.h:4
-#: hacks/config/sphere.xml.h:3 hacks/config/spiral.xml.h:6
-#: hacks/config/squiral.xml.h:9 hacks/config/starfish.xml.h:5
-#: hacks/config/strange.xml.h:2 hacks/config/swirl.xml.h:3
-#: hacks/config/thornbird.xml.h:4 hacks/config/triangle.xml.h:3
-#: hacks/config/vines.xml.h:2 hacks/config/whirlwindwarp.xml.h:4
-#: hacks/config/worm.xml.h:4 hacks/config/xearth.xml.h:12
-#: hacks/config/xfishtank.xml.h:8
+#: hacks/config/fuzzyflakes.xml.h:11 hacks/config/galaxy.xml.h:6
+#: hacks/config/grav.xml.h:4 hacks/config/halo.xml.h:4
+#: hacks/config/hopalong.xml.h:15 hacks/config/ifs.xml.h:3
+#: hacks/config/imsmap.xml.h:9 hacks/config/interference.xml.h:14
+#: hacks/config/julia.xml.h:6 hacks/config/kaleidescope.xml.h:5
+#: hacks/config/laser.xml.h:6 hacks/config/lightning.xml.h:3
+#: hacks/config/lisa.xml.h:5 hacks/config/lissie.xml.h:6
+#: hacks/config/loop.xml.h:4 hacks/config/metaballs.xml.h:6
+#: hacks/config/mismunch.xml.h:4 hacks/config/moire.xml.h:5
+#: hacks/config/moire2.xml.h:3 hacks/config/mountain.xml.h:4
+#: hacks/config/nerverot.xml.h:15 hacks/config/pedal.xml.h:6
+#: hacks/config/penrose.xml.h:7 hacks/config/petri.xml.h:11
+#: hacks/config/polyominoes.xml.h:5 hacks/config/qix.xml.h:14
+#: hacks/config/rd-bomb.xml.h:12 hacks/config/ripples.xml.h:7
+#: hacks/config/rocks.xml.h:5 hacks/config/rotor.xml.h:6
+#: hacks/config/shadebobs.xml.h:5 hacks/config/sierpinski.xml.h:4
+#: hacks/config/slip.xml.h:4 hacks/config/sphere.xml.h:3
+#: hacks/config/spiral.xml.h:6 hacks/config/squiral.xml.h:9
+#: hacks/config/starfish.xml.h:5 hacks/config/strange.xml.h:2
+#: hacks/config/swirl.xml.h:3 hacks/config/thornbird.xml.h:4
+#: hacks/config/triangle.xml.h:3 hacks/config/vines.xml.h:2
+#: hacks/config/whirlwindwarp.xml.h:4 hacks/config/worm.xml.h:4
+#: hacks/config/xearth.xml.h:12 hacks/config/xfishtank.xml.h:8
 msgid "Many"
 msgstr "Beaucoup"
 
 msgid "Many"
 msgstr "Beaucoup"
 
@@ -1198,31 +1171,32 @@ msgid "Rarely"
 msgstr "Rarement"
 
 #: hacks/config/anemone.xml.h:9 hacks/config/ant.xml.h:15
 msgstr "Rarement"
 
 #: hacks/config/anemone.xml.h:9 hacks/config/ant.xml.h:15
-#: hacks/config/antspotlight.xml.h:5 hacks/config/apollonian.xml.h:11
-#: hacks/config/atlantis.xml.h:13 hacks/config/attraction.xml.h:26
-#: hacks/config/atunnel.xml.h:6 hacks/config/barcode.xml.h:6
-#: hacks/config/blaster.xml.h:8 hacks/config/blinkbox.xml.h:7
-#: hacks/config/blitspin.xml.h:7 hacks/config/blocktube.xml.h:9
-#: hacks/config/bouboule.xml.h:8 hacks/config/bouncingcow.xml.h:10
-#: hacks/config/boxed.xml.h:6 hacks/config/braid.xml.h:11
-#: hacks/config/bubble3d.xml.h:5 hacks/config/bubbles.xml.h:10
-#: hacks/config/bumps.xml.h:4 hacks/config/cage.xml.h:4
-#: hacks/config/circuit.xml.h:10 hacks/config/cloudlife.xml.h:11
-#: hacks/config/compass.xml.h:4 hacks/config/coral.xml.h:12
-#: hacks/config/critical.xml.h:6 hacks/config/crystal.xml.h:11
-#: hacks/config/cubenetic.xml.h:22 hacks/config/cubestorm.xml.h:8
-#: hacks/config/cynosure.xml.h:9 hacks/config/dangerball.xml.h:5
-#: hacks/config/decayscreen.xml.h:17 hacks/config/deluxe.xml.h:8
-#: hacks/config/demon.xml.h:8 hacks/config/discrete.xml.h:7
-#: hacks/config/distort.xml.h:11 hacks/config/drift.xml.h:12
-#: hacks/config/endgame.xml.h:5 hacks/config/engine.xml.h:15
-#: hacks/config/epicycle.xml.h:10 hacks/config/eruption.xml.h:19
-#: hacks/config/euler2d.xml.h:14 hacks/config/extrusion.xml.h:11
-#: hacks/config/fadeplot.xml.h:8 hacks/config/flag.xml.h:7
-#: hacks/config/flame.xml.h:14 hacks/config/flipflop.xml.h:5
-#: hacks/config/flipscreen3d.xml.h:6 hacks/config/flow.xml.h:13
-#: hacks/config/fluidballs.xml.h:18 hacks/config/flyingtoasters.xml.h:11
-#: hacks/config/fontglide.xml.h:13 hacks/config/forest.xml.h:5
+#: hacks/config/antinspect.xml.h:6 hacks/config/antspotlight.xml.h:5
+#: hacks/config/apollonian.xml.h:11 hacks/config/atlantis.xml.h:13
+#: hacks/config/attraction.xml.h:26 hacks/config/atunnel.xml.h:6
+#: hacks/config/barcode.xml.h:6 hacks/config/blaster.xml.h:8
+#: hacks/config/blinkbox.xml.h:7 hacks/config/blitspin.xml.h:7
+#: hacks/config/blocktube.xml.h:9 hacks/config/bouboule.xml.h:8
+#: hacks/config/bouncingcow.xml.h:10 hacks/config/boxed.xml.h:6
+#: hacks/config/braid.xml.h:11 hacks/config/bubble3d.xml.h:5
+#: hacks/config/bubbles.xml.h:10 hacks/config/bumps.xml.h:4
+#: hacks/config/cage.xml.h:4 hacks/config/circuit.xml.h:10
+#: hacks/config/cloudlife.xml.h:11 hacks/config/compass.xml.h:4
+#: hacks/config/coral.xml.h:12 hacks/config/critical.xml.h:6
+#: hacks/config/crystal.xml.h:11 hacks/config/cubenetic.xml.h:22
+#: hacks/config/cubestorm.xml.h:8 hacks/config/cynosure.xml.h:9
+#: hacks/config/dangerball.xml.h:5 hacks/config/decayscreen.xml.h:17
+#: hacks/config/deluxe.xml.h:8 hacks/config/demon.xml.h:8
+#: hacks/config/discrete.xml.h:7 hacks/config/distort.xml.h:11
+#: hacks/config/drift.xml.h:12 hacks/config/endgame.xml.h:5
+#: hacks/config/engine.xml.h:15 hacks/config/epicycle.xml.h:10
+#: hacks/config/eruption.xml.h:19 hacks/config/euler2d.xml.h:14
+#: hacks/config/extrusion.xml.h:11 hacks/config/fadeplot.xml.h:8
+#: hacks/config/flag.xml.h:7 hacks/config/flame.xml.h:14
+#: hacks/config/flipflop.xml.h:5 hacks/config/flipscreen3d.xml.h:6
+#: hacks/config/flow.xml.h:13 hacks/config/fluidballs.xml.h:18
+#: hacks/config/flyingtoasters.xml.h:11 hacks/config/fontglide.xml.h:13
+#: hacks/config/forest.xml.h:5 hacks/config/fuzzyflakes.xml.h:13
 #: hacks/config/galaxy.xml.h:10 hacks/config/gears.xml.h:7
 #: hacks/config/gflux.xml.h:12 hacks/config/glblur.xml.h:14
 #: hacks/config/glforestfire.xml.h:14 hacks/config/glknots.xml.h:17
 #: hacks/config/galaxy.xml.h:10 hacks/config/gears.xml.h:7
 #: hacks/config/gflux.xml.h:12 hacks/config/glblur.xml.h:14
 #: hacks/config/glforestfire.xml.h:14 hacks/config/glknots.xml.h:17
@@ -1250,9 +1224,10 @@ msgstr "Rarement"
 #: hacks/config/pacman.xml.h:5 hacks/config/penetrate.xml.h:6
 #: hacks/config/penrose.xml.h:11 hacks/config/petri.xml.h:23
 #: hacks/config/phosphor.xml.h:7 hacks/config/piecewise.xml.h:9
 #: hacks/config/pacman.xml.h:5 hacks/config/penetrate.xml.h:6
 #: hacks/config/penrose.xml.h:11 hacks/config/petri.xml.h:23
 #: hacks/config/phosphor.xml.h:7 hacks/config/piecewise.xml.h:9
-#: hacks/config/pipes.xml.h:15 hacks/config/polyominoes.xml.h:10
-#: hacks/config/polytopes.xml.h:20 hacks/config/pong.xml.h:4
-#: hacks/config/popsquares.xml.h:5 hacks/config/pulsar.xml.h:15
+#: hacks/config/pipes.xml.h:15 hacks/config/polyhedra.xml.h:119
+#: hacks/config/polyominoes.xml.h:10 hacks/config/polytopes.xml.h:20
+#: hacks/config/pong.xml.h:4 hacks/config/popsquares.xml.h:5
+#: hacks/config/providence.xml.h:5 hacks/config/pulsar.xml.h:15
 #: hacks/config/pyro.xml.h:13 hacks/config/qix.xml.h:19
 #: hacks/config/queens.xml.h:4 hacks/config/rd-bomb.xml.h:17
 #: hacks/config/ripples.xml.h:11 hacks/config/rocks.xml.h:9
 #: hacks/config/pyro.xml.h:13 hacks/config/qix.xml.h:19
 #: hacks/config/queens.xml.h:4 hacks/config/rd-bomb.xml.h:17
 #: hacks/config/ripples.xml.h:11 hacks/config/rocks.xml.h:9
@@ -1273,35 +1248,35 @@ msgstr "Rarement"
 #: hacks/config/worm.xml.h:7 hacks/config/wormhole.xml.h:5
 #: hacks/config/xearth.xml.h:22 hacks/config/xfishtank.xml.h:10
 #: hacks/config/xflame.xml.h:5 hacks/config/xjack.xml.h:2
 #: hacks/config/worm.xml.h:7 hacks/config/wormhole.xml.h:5
 #: hacks/config/xearth.xml.h:22 hacks/config/xfishtank.xml.h:10
 #: hacks/config/xflame.xml.h:5 hacks/config/xjack.xml.h:2
-#: hacks/config/xmatrix.xml.h:15 hacks/config/xmountains.xml.h:4
-#: hacks/config/xplanet.xml.h:59 hacks/config/xrayswarm.xml.h:3
-#: hacks/config/zoom.xml.h:6
+#: hacks/config/xmatrix.xml.h:15 hacks/config/xplanet.xml.h:59
+#: hacks/config/xrayswarm.xml.h:3 hacks/config/zoom.xml.h:6
 msgid "Slow"
 msgstr "Lent(e)"
 
 #: hacks/config/anemone.xml.h:10 hacks/config/ant.xml.h:17
 msgid "Slow"
 msgstr "Lent(e)"
 
 #: hacks/config/anemone.xml.h:10 hacks/config/ant.xml.h:17
-#: hacks/config/antspotlight.xml.h:6 hacks/config/apollonian.xml.h:12
-#: hacks/config/attraction.xml.h:28 hacks/config/atunnel.xml.h:7
-#: hacks/config/barcode.xml.h:7 hacks/config/blaster.xml.h:9
-#: hacks/config/blinkbox.xml.h:8 hacks/config/blocktube.xml.h:11
-#: hacks/config/bouboule.xml.h:9 hacks/config/braid.xml.h:12
-#: hacks/config/bubble3d.xml.h:6 hacks/config/bubbles.xml.h:11
-#: hacks/config/bumps.xml.h:5 hacks/config/cage.xml.h:6
-#: hacks/config/circuit.xml.h:11 hacks/config/cloudlife.xml.h:13
-#: hacks/config/compass.xml.h:5 hacks/config/coral.xml.h:14
-#: hacks/config/critical.xml.h:7 hacks/config/crystal.xml.h:12
-#: hacks/config/cubenetic.xml.h:24 hacks/config/cynosure.xml.h:10
-#: hacks/config/dangerball.xml.h:6 hacks/config/decayscreen.xml.h:18
-#: hacks/config/deluxe.xml.h:9 hacks/config/demon.xml.h:10
-#: hacks/config/discrete.xml.h:9 hacks/config/distort.xml.h:13
-#: hacks/config/drift.xml.h:13 hacks/config/endgame.xml.h:6
-#: hacks/config/engine.xml.h:16 hacks/config/epicycle.xml.h:11
-#: hacks/config/eruption.xml.h:20 hacks/config/euler2d.xml.h:15
-#: hacks/config/extrusion.xml.h:13 hacks/config/fadeplot.xml.h:10
-#: hacks/config/flag.xml.h:9 hacks/config/flame.xml.h:15
-#: hacks/config/flipflop.xml.h:7 hacks/config/flipscreen3d.xml.h:7
-#: hacks/config/flow.xml.h:16 hacks/config/fluidballs.xml.h:20
-#: hacks/config/forest.xml.h:6 hacks/config/galaxy.xml.h:11
+#: hacks/config/antinspect.xml.h:7 hacks/config/antspotlight.xml.h:6
+#: hacks/config/apollonian.xml.h:12 hacks/config/attraction.xml.h:28
+#: hacks/config/atunnel.xml.h:7 hacks/config/barcode.xml.h:7
+#: hacks/config/blaster.xml.h:9 hacks/config/blinkbox.xml.h:8
+#: hacks/config/blocktube.xml.h:11 hacks/config/bouboule.xml.h:9
+#: hacks/config/braid.xml.h:12 hacks/config/bubble3d.xml.h:6
+#: hacks/config/bubbles.xml.h:11 hacks/config/bumps.xml.h:5
+#: hacks/config/cage.xml.h:6 hacks/config/circuit.xml.h:11
+#: hacks/config/cloudlife.xml.h:13 hacks/config/compass.xml.h:5
+#: hacks/config/coral.xml.h:14 hacks/config/critical.xml.h:7
+#: hacks/config/crystal.xml.h:12 hacks/config/cubenetic.xml.h:24
+#: hacks/config/cynosure.xml.h:10 hacks/config/dangerball.xml.h:6
+#: hacks/config/decayscreen.xml.h:18 hacks/config/deluxe.xml.h:9
+#: hacks/config/demon.xml.h:10 hacks/config/discrete.xml.h:9
+#: hacks/config/distort.xml.h:13 hacks/config/drift.xml.h:13
+#: hacks/config/endgame.xml.h:6 hacks/config/engine.xml.h:16
+#: hacks/config/epicycle.xml.h:11 hacks/config/eruption.xml.h:20
+#: hacks/config/euler2d.xml.h:15 hacks/config/extrusion.xml.h:13
+#: hacks/config/fadeplot.xml.h:10 hacks/config/flag.xml.h:9
+#: hacks/config/flame.xml.h:15 hacks/config/flipflop.xml.h:7
+#: hacks/config/flipscreen3d.xml.h:7 hacks/config/flow.xml.h:16
+#: hacks/config/fluidballs.xml.h:20 hacks/config/forest.xml.h:6
+#: hacks/config/fuzzyflakes.xml.h:15 hacks/config/galaxy.xml.h:11
 #: hacks/config/glblur.xml.h:17 hacks/config/glforestfire.xml.h:15
 #: hacks/config/glplanet.xml.h:8 hacks/config/gltext.xml.h:15
 #: hacks/config/goop.xml.h:11 hacks/config/grav.xml.h:9
 #: hacks/config/glblur.xml.h:17 hacks/config/glforestfire.xml.h:15
 #: hacks/config/glplanet.xml.h:8 hacks/config/gltext.xml.h:15
 #: hacks/config/goop.xml.h:11 hacks/config/grav.xml.h:9
@@ -1325,25 +1300,25 @@ msgstr "Lent(e)"
 #: hacks/config/petri.xml.h:25 hacks/config/phosphor.xml.h:8
 #: hacks/config/piecewise.xml.h:11 hacks/config/pipes.xml.h:16
 #: hacks/config/polyominoes.xml.h:11 hacks/config/pong.xml.h:5
 #: hacks/config/petri.xml.h:25 hacks/config/phosphor.xml.h:8
 #: hacks/config/piecewise.xml.h:11 hacks/config/pipes.xml.h:16
 #: hacks/config/polyominoes.xml.h:11 hacks/config/pong.xml.h:5
-#: hacks/config/popsquares.xml.h:6 hacks/config/pulsar.xml.h:17
-#: hacks/config/qix.xml.h:22 hacks/config/queens.xml.h:6
-#: hacks/config/rotor.xml.h:12 hacks/config/rubik.xml.h:11
-#: hacks/config/sballs.xml.h:14 hacks/config/shadebobs.xml.h:10
-#: hacks/config/sierpinski.xml.h:9 hacks/config/sierpinski3d.xml.h:10
-#: hacks/config/slidescreen.xml.h:7 hacks/config/slip.xml.h:9
-#: hacks/config/speedmine.xml.h:15 hacks/config/sphere.xml.h:6
-#: hacks/config/spheremonics.xml.h:22 hacks/config/spiral.xml.h:10
-#: hacks/config/spotlight.xml.h:5 hacks/config/sproingies.xml.h:8
-#: hacks/config/squiral.xml.h:16 hacks/config/stairs.xml.h:5
-#: hacks/config/starfish.xml.h:9 hacks/config/strange.xml.h:5
-#: hacks/config/superquadrics.xml.h:10 hacks/config/swirl.xml.h:7
-#: hacks/config/t3d.xml.h:13 hacks/config/thornbird.xml.h:8
-#: hacks/config/triangle.xml.h:6 hacks/config/truchet.xml.h:3
-#: hacks/config/twang.xml.h:10 hacks/config/vines.xml.h:5
-#: hacks/config/webcollage.xml.h:8 hacks/config/whirlygig.xml.h:13
-#: hacks/config/worm.xml.h:8 hacks/config/xearth.xml.h:25
-#: hacks/config/xflame.xml.h:6 hacks/config/xjack.xml.h:3
-#: hacks/config/xmatrix.xml.h:18 hacks/config/xmountains.xml.h:5
+#: hacks/config/popsquares.xml.h:6 hacks/config/providence.xml.h:6
+#: hacks/config/pulsar.xml.h:17 hacks/config/qix.xml.h:22
+#: hacks/config/queens.xml.h:6 hacks/config/rotor.xml.h:12
+#: hacks/config/rubik.xml.h:11 hacks/config/sballs.xml.h:14
+#: hacks/config/shadebobs.xml.h:10 hacks/config/sierpinski.xml.h:9
+#: hacks/config/sierpinski3d.xml.h:10 hacks/config/slidescreen.xml.h:7
+#: hacks/config/slip.xml.h:9 hacks/config/speedmine.xml.h:15
+#: hacks/config/sphere.xml.h:6 hacks/config/spheremonics.xml.h:22
+#: hacks/config/spiral.xml.h:10 hacks/config/spotlight.xml.h:5
+#: hacks/config/sproingies.xml.h:8 hacks/config/squiral.xml.h:16
+#: hacks/config/stairs.xml.h:5 hacks/config/starfish.xml.h:9
+#: hacks/config/strange.xml.h:5 hacks/config/superquadrics.xml.h:10
+#: hacks/config/swirl.xml.h:7 hacks/config/t3d.xml.h:13
+#: hacks/config/thornbird.xml.h:8 hacks/config/triangle.xml.h:6
+#: hacks/config/truchet.xml.h:3 hacks/config/twang.xml.h:10
+#: hacks/config/vines.xml.h:5 hacks/config/webcollage.xml.h:8
+#: hacks/config/whirlygig.xml.h:13 hacks/config/worm.xml.h:8
+#: hacks/config/xearth.xml.h:25 hacks/config/xflame.xml.h:6
+#: hacks/config/xjack.xml.h:3 hacks/config/xmatrix.xml.h:18
 #: hacks/config/xplanet.xml.h:60 hacks/config/xrayswarm.xml.h:4
 #: hacks/config/zoom.xml.h:7
 msgid "Speed"
 #: hacks/config/xplanet.xml.h:60 hacks/config/xrayswarm.xml.h:4
 #: hacks/config/zoom.xml.h:7
 msgid "Speed"
@@ -1354,21 +1329,24 @@ msgid "Tentacles"
 msgstr "Tentacules"
 
 #: hacks/config/anemone.xml.h:12 hacks/config/cubestorm.xml.h:11
 msgstr "Tentacules"
 
 #: hacks/config/anemone.xml.h:12 hacks/config/cubestorm.xml.h:11
-#: hacks/config/deluxe.xml.h:10 hacks/config/glknots.xml.h:19
-#: hacks/config/lmorph.xml.h:13 hacks/config/pong.xml.h:7
-#: hacks/config/starfish.xml.h:11 hacks/config/thornbird.xml.h:9
+#: hacks/config/deluxe.xml.h:10 hacks/config/fuzzyflakes.xml.h:16
+#: hacks/config/glknots.xml.h:19 hacks/config/lmorph.xml.h:13
+#: hacks/config/pong.xml.h:7 hacks/config/starfish.xml.h:11
+#: hacks/config/thornbird.xml.h:9
 msgid "Thick"
 msgstr "Épais(se)"
 
 msgid "Thick"
 msgstr "Épais(se)"
 
-#: hacks/config/anemone.xml.h:13 hacks/config/glknots.xml.h:20
-#: hacks/config/moire2.xml.h:8 hacks/config/thornbird.xml.h:10
+#: hacks/config/anemone.xml.h:13 hacks/config/fuzzyflakes.xml.h:17
+#: hacks/config/glknots.xml.h:20 hacks/config/moire2.xml.h:8
+#: hacks/config/thornbird.xml.h:10
 msgid "Thickness"
 msgstr "Épaisseur"
 
 #: hacks/config/anemone.xml.h:14 hacks/config/cubestorm.xml.h:12
 msgid "Thickness"
 msgstr "Épaisseur"
 
 #: hacks/config/anemone.xml.h:14 hacks/config/cubestorm.xml.h:12
-#: hacks/config/deluxe.xml.h:11 hacks/config/glknots.xml.h:21
-#: hacks/config/lmorph.xml.h:14 hacks/config/pong.xml.h:8
-#: hacks/config/starfish.xml.h:12 hacks/config/thornbird.xml.h:11
+#: hacks/config/deluxe.xml.h:11 hacks/config/fuzzyflakes.xml.h:18
+#: hacks/config/glknots.xml.h:21 hacks/config/lmorph.xml.h:14
+#: hacks/config/pong.xml.h:8 hacks/config/starfish.xml.h:12
+#: hacks/config/thornbird.xml.h:11
 msgid "Thin"
 msgstr "Fin(e)"
 
 msgid "Thin"
 msgstr "Fin(e)"
 
@@ -1423,12 +1401,7 @@ msgid ""
 "heads (``ants'') walk along the screen, they change pixel values in their "
 "path. Then, as they pass over changed pixels, their behavior is influenced. "
 "Written by David Bagley."
 "heads (``ants'') walk along the screen, they change pixel values in their "
 "path. Then, as they pass over changed pixels, their behavior is influenced. "
 "Written by David Bagley."
-msgstr ""
-"Un automate cellulaire qui est en fait une machine de Turing "
-"bidimensionnelle: Ã  mesure que les têtes («fourmis») marchent le long de "
-"l'écran, elles changent la valeur des pixels sur leur chemin. Ensuite, leur "
-"comportement est influencé lorsqu'elles passent sur les pixels modifiés. "
-"Écrit par David Bagley."
+msgstr "Un automate cellulaire qui est en fait une machine de Turing bidimensionnelle: Ã  mesure que les têtes («fourmis») marchent le long de l'écran, elles changent la valeur des pixels sur leur chemin. Ensuite, leur comportement est influencé lorsqu'elles passent sur les pixels modifiés. Ã‰crit par David Bagley."
 
 #: hacks/config/ant.xml.h:2
 msgid "Ant"
 
 #: hacks/config/ant.xml.h:2
 msgid "Ant"
@@ -1455,14 +1428,14 @@ msgstr "Cellules 
 #: hacks/config/demon.xml.h:5 hacks/config/discrete.xml.h:3
 #: hacks/config/distort.xml.h:5 hacks/config/fadeplot.xml.h:5
 #: hacks/config/flag.xml.h:4 hacks/config/flow.xml.h:7
 #: hacks/config/demon.xml.h:5 hacks/config/discrete.xml.h:3
 #: hacks/config/distort.xml.h:5 hacks/config/fadeplot.xml.h:5
 #: hacks/config/flag.xml.h:4 hacks/config/flow.xml.h:7
-#: hacks/config/fluidballs.xml.h:12 hacks/config/gleidescope.xml.h:7
-#: hacks/config/halftone.xml.h:8 hacks/config/hopalong.xml.h:13
-#: hacks/config/interference.xml.h:11 hacks/config/julia.xml.h:5
-#: hacks/config/lissie.xml.h:4 hacks/config/loop.xml.h:2
-#: hacks/config/moire.xml.h:4 hacks/config/piecewise.xml.h:5
-#: hacks/config/rd-bomb.xml.h:11 hacks/config/rorschach.xml.h:5
-#: hacks/config/rubik.xml.h:4 hacks/config/sierpinski.xml.h:3
-#: hacks/config/slip.xml.h:3
+#: hacks/config/fluidballs.xml.h:12 hacks/config/fuzzyflakes.xml.h:9
+#: hacks/config/gleidescope.xml.h:7 hacks/config/halftone.xml.h:8
+#: hacks/config/hopalong.xml.h:13 hacks/config/interference.xml.h:11
+#: hacks/config/julia.xml.h:5 hacks/config/lissie.xml.h:4
+#: hacks/config/loop.xml.h:2 hacks/config/moire.xml.h:4
+#: hacks/config/piecewise.xml.h:5 hacks/config/rd-bomb.xml.h:11
+#: hacks/config/rorschach.xml.h:5 hacks/config/rubik.xml.h:4
+#: hacks/config/sierpinski.xml.h:3 hacks/config/slip.xml.h:3
 msgid "Large"
 msgstr "Important(e)"
 
 msgid "Large"
 msgstr "Important(e)"
 
@@ -1487,14 +1460,15 @@ msgstr "Cellules 
 #: hacks/config/demon.xml.h:9 hacks/config/discrete.xml.h:8
 #: hacks/config/distort.xml.h:12 hacks/config/fadeplot.xml.h:9
 #: hacks/config/flag.xml.h:8 hacks/config/flow.xml.h:15
 #: hacks/config/demon.xml.h:9 hacks/config/discrete.xml.h:8
 #: hacks/config/distort.xml.h:12 hacks/config/fadeplot.xml.h:9
 #: hacks/config/flag.xml.h:8 hacks/config/flow.xml.h:15
-#: hacks/config/fluidballs.xml.h:19 hacks/config/gleidescope.xml.h:12
-#: hacks/config/halftone.xml.h:14 hacks/config/hopalong.xml.h:22
-#: hacks/config/interference.xml.h:18 hacks/config/julia.xml.h:9
-#: hacks/config/lissie.xml.h:10 hacks/config/loop.xml.h:8
-#: hacks/config/metaballs.xml.h:14 hacks/config/moire.xml.h:9
-#: hacks/config/piecewise.xml.h:10 hacks/config/rd-bomb.xml.h:18
-#: hacks/config/rorschach.xml.h:8 hacks/config/rubik.xml.h:10
-#: hacks/config/sierpinski.xml.h:8 hacks/config/slip.xml.h:8
+#: hacks/config/fluidballs.xml.h:19 hacks/config/fuzzyflakes.xml.h:14
+#: hacks/config/gleidescope.xml.h:12 hacks/config/halftone.xml.h:14
+#: hacks/config/hopalong.xml.h:22 hacks/config/interference.xml.h:18
+#: hacks/config/julia.xml.h:9 hacks/config/lissie.xml.h:10
+#: hacks/config/loop.xml.h:8 hacks/config/metaballs.xml.h:14
+#: hacks/config/moire.xml.h:9 hacks/config/piecewise.xml.h:10
+#: hacks/config/rd-bomb.xml.h:18 hacks/config/rorschach.xml.h:8
+#: hacks/config/rubik.xml.h:10 hacks/config/sierpinski.xml.h:8
+#: hacks/config/slip.xml.h:8
 msgid "Small"
 msgstr "Faible"
 
 msgid "Small"
 msgstr "Faible"
 
@@ -1519,6 +1493,52 @@ msgstr "Lignes de Truchet"
 msgid "Twelve Sided Cells"
 msgstr "Cellules Ã  12 côtés"
 
 msgid "Twelve Sided Cells"
 msgstr "Cellules Ã  12 côtés"
 
+#: hacks/config/antinspect.xml.h:1
+msgid "AntInspect"
+msgstr "Inspection des fourmis"
+
+#: hacks/config/antinspect.xml.h:2
+msgid "Draw Shadows"
+msgstr "Dessiner les ombres"
+
+#: hacks/config/antinspect.xml.h:3
+msgid ""
+"Draws a trio of ants moving their spheres around a circle. Written by Blair "
+"Tennessy."
+msgstr ""
+"Dessine un trio de fourmis déplacant une sphère en cercle. Ã‰crit pas Blair Tennessy."
+
+#: hacks/config/antinspect.xml.h:5 hacks/config/antspotlight.xml.h:4
+#: hacks/config/atlantis.xml.h:11 hacks/config/atunnel.xml.h:5
+#: hacks/config/blocktube.xml.h:8 hacks/config/boxed.xml.h:5
+#: hacks/config/bubble3d.xml.h:4 hacks/config/cage.xml.h:3
+#: hacks/config/circuit.xml.h:9 hacks/config/cubenetic.xml.h:21
+#: hacks/config/cubestorm.xml.h:7 hacks/config/dangerball.xml.h:4
+#: hacks/config/endgame.xml.h:4 hacks/config/engine.xml.h:14
+#: hacks/config/extrusion.xml.h:10 hacks/config/flipflop.xml.h:4
+#: hacks/config/flipscreen3d.xml.h:5 hacks/config/fluidballs.xml.h:17
+#: hacks/config/flurry.xml.h:9 hacks/config/flyingtoasters.xml.h:10
+#: hacks/config/gears.xml.h:6 hacks/config/gflux.xml.h:11
+#: hacks/config/glblur.xml.h:13 hacks/config/gleidescope.xml.h:10
+#: hacks/config/glforestfire.xml.h:13 hacks/config/glknots.xml.h:16
+#: hacks/config/glmatrix.xml.h:17 hacks/config/glplanet.xml.h:5
+#: hacks/config/glslideshow.xml.h:18 hacks/config/glsnake.xml.h:10
+#: hacks/config/gltext.xml.h:12 hacks/config/hypertorus.xml.h:12
+#: hacks/config/jigglypuff.xml.h:15 hacks/config/klein.xml.h:6
+#: hacks/config/lament.xml.h:5 hacks/config/lavalite.xml.h:26
+#: hacks/config/menger.xml.h:15 hacks/config/mirrorblob.xml.h:18
+#: hacks/config/moebius.xml.h:6 hacks/config/molecule.xml.h:21
+#: hacks/config/morph3d.xml.h:5 hacks/config/noof.xml.h:4
+#: hacks/config/pipes.xml.h:14 hacks/config/polyhedra.xml.h:118
+#: hacks/config/polytopes.xml.h:18 hacks/config/providence.xml.h:4
+#: hacks/config/pulsar.xml.h:14 hacks/config/queens.xml.h:3
+#: hacks/config/rubik.xml.h:6 hacks/config/sballs.xml.h:12
+#: hacks/config/sierpinski3d.xml.h:6 hacks/config/spheremonics.xml.h:18
+#: hacks/config/sproingies.xml.h:4 hacks/config/stairs.xml.h:2
+#: hacks/config/starwars.xml.h:11 hacks/config/superquadrics.xml.h:7
+msgid "Show Frames-per-Second"
+msgstr "Afficher Â«trames par seconde» (FPS)"
+
 #: hacks/config/antspotlight.xml.h:1
 msgid "AntSpotlight"
 msgstr "Faisceau lumineux"
 #: hacks/config/antspotlight.xml.h:1
 msgid "AntSpotlight"
 msgstr "Faisceau lumineux"
@@ -1529,36 +1549,6 @@ msgid ""
 "your desktop or other image. Written by Blair Tennessy."
 msgstr ""
 
 "your desktop or other image. Written by Blair Tennessy."
 msgstr ""
 
-#: hacks/config/antspotlight.xml.h:4 hacks/config/atlantis.xml.h:11
-#: hacks/config/atunnel.xml.h:5 hacks/config/blocktube.xml.h:8
-#: hacks/config/boxed.xml.h:5 hacks/config/bubble3d.xml.h:4
-#: hacks/config/cage.xml.h:3 hacks/config/circuit.xml.h:9
-#: hacks/config/cubenetic.xml.h:21 hacks/config/cubestorm.xml.h:7
-#: hacks/config/dangerball.xml.h:4 hacks/config/endgame.xml.h:4
-#: hacks/config/engine.xml.h:14 hacks/config/extrusion.xml.h:10
-#: hacks/config/flipflop.xml.h:4 hacks/config/flipscreen3d.xml.h:5
-#: hacks/config/fluidballs.xml.h:17 hacks/config/flurry.xml.h:9
-#: hacks/config/flyingtoasters.xml.h:10 hacks/config/gears.xml.h:6
-#: hacks/config/gflux.xml.h:11 hacks/config/glblur.xml.h:13
-#: hacks/config/gleidescope.xml.h:10 hacks/config/glforestfire.xml.h:13
-#: hacks/config/glknots.xml.h:16 hacks/config/glmatrix.xml.h:17
-#: hacks/config/glplanet.xml.h:5 hacks/config/glslideshow.xml.h:18
-#: hacks/config/glsnake.xml.h:10 hacks/config/gltext.xml.h:12
-#: hacks/config/hypertorus.xml.h:12 hacks/config/jigglypuff.xml.h:15
-#: hacks/config/klein.xml.h:6 hacks/config/lament.xml.h:5
-#: hacks/config/lavalite.xml.h:26 hacks/config/menger.xml.h:15
-#: hacks/config/mirrorblob.xml.h:18 hacks/config/moebius.xml.h:6
-#: hacks/config/molecule.xml.h:21 hacks/config/morph3d.xml.h:5
-#: hacks/config/noof.xml.h:4 hacks/config/pipes.xml.h:14
-#: hacks/config/polytopes.xml.h:18 hacks/config/pulsar.xml.h:14
-#: hacks/config/queens.xml.h:3 hacks/config/rubik.xml.h:6
-#: hacks/config/sballs.xml.h:12 hacks/config/sierpinski3d.xml.h:6
-#: hacks/config/spheremonics.xml.h:18 hacks/config/sproingies.xml.h:4
-#: hacks/config/stairs.xml.h:2 hacks/config/starwars.xml.h:11
-#: hacks/config/superquadrics.xml.h:7
-msgid "Show Frames-per-Second"
-msgstr "Afficher Â«trames par seconde» (FPS)"
-
 #: hacks/config/apollonian.xml.h:1
 msgid "Apollonian"
 msgstr "Apollonien"
 #: hacks/config/apollonian.xml.h:1
 msgid "Apollonian"
 msgstr "Apollonien"
@@ -1583,9 +1573,7 @@ msgstr "Inclure les g
 msgid ""
 "Packs a large circle with smaller circles, demonstrating the Descartes "
 "Circle Theorem. Written by Allan R. Wilks and David Bagley."
 msgid ""
 "Packs a large circle with smaller circles, demonstrating the Descartes "
 "Circle Theorem. Written by Allan R. Wilks and David Bagley."
-msgstr ""
-"Remplit un grand cercle de cercles plus petits et démontre ainsi le théorème "
-"des cercles de Descartes. Ã‰crit par Allan R. Wilks et David Bagley."
+msgstr "Remplit un grand cercle de cercles plus petits et démontre ainsi le théorème des cercles de Descartes. Ã‰crit par Allan R. Wilks et David Bagley."
 
 #: hacks/config/apollonian.xml.h:10
 msgid "Shallow"
 
 #: hacks/config/apollonian.xml.h:10
 msgid "Shallow"
@@ -1614,15 +1602,7 @@ msgid ""
 "limitations of the Apple ][ display hardware. (Six available colors in hi-"
 "res mode!) In \"Basic Programming Mode\", a simulated user types in a BASIC "
 "program and runs it. By Trevor Blackwell."
 "limitations of the Apple ][ display hardware. (Six available colors in hi-"
 "res mode!) In \"Basic Programming Mode\", a simulated user types in a BASIC "
 "program and runs it. By Trevor Blackwell."
-msgstr ""
-"Simule une machine Apple ][ Plus dans toute sa gloire de 1979. Il reproduit "
-"également l'affichage d'une télévision couleur de l'époque. En mode \"Texte"
-"\", il affiche la sortie d'une commande (p.ex. \"fortune\"). En Mode "
-"\"diaporama\", il choisis des images depuis la source d'image configurée "
-"dans XScreenSaver et les affiche avec les limitations de l'écran de l'Apple ]"
-"[ (seulement 6 couleurs en mode haute résolution!). Dans le mode "
-"\"Programmation en BASIC\", un utilisateur simulé tape des commandes BASIC "
-"et lance le programme. Par Trevor Blackwell."
+msgstr "Simule une machine Apple ][ Plus dans toute sa gloire de 1979. Il reproduit Ã©galement l'affichage d'une télévision couleur de l'époque. En mode \"Texte\", il affiche la sortie d'une commande (p.ex. \"fortune\"). En Mode \"diaporama\", il choisis des images depuis la source d'image configurée dans XScreenSaver et les affiche avec les limitations de l'écran de l'Apple ][ (seulement 6 couleurs en mode haute résolution!). Dans le mode \"Programmation en BASIC\", un utilisateur simulé tape des commandes BASIC et lance le programme. Par Trevor Blackwell."
 
 #: hacks/config/apple2.xml.h:5
 msgid "Slideshow Mode"
 
 #: hacks/config/apple2.xml.h:5
 msgid "Slideshow Mode"
@@ -1678,16 +1658,16 @@ msgstr "Eau miroitante"
 msgid "Shy"
 msgstr "Timide"
 
 msgid "Shy"
 msgstr "Timide"
 
-#: hacks/config/atlantis.xml.h:14 hacks/config/boxed.xml.h:7
-#: hacks/config/cage.xml.h:5 hacks/config/extrusion.xml.h:12
-#: hacks/config/gears.xml.h:8 hacks/config/glblur.xml.h:15
-#: hacks/config/glplanet.xml.h:7 hacks/config/glsnake.xml.h:13
-#: hacks/config/gltext.xml.h:14 hacks/config/menger.xml.h:17
-#: hacks/config/mismunch.xml.h:11 hacks/config/molecule.xml.h:23
-#: hacks/config/munch.xml.h:8 hacks/config/sierpinski3d.xml.h:9
-#: hacks/config/speedmine.xml.h:14 hacks/config/spheremonics.xml.h:21
-#: hacks/config/sproingies.xml.h:7 hacks/config/stairs.xml.h:4
-#: hacks/config/stonerview.xml.h:2 hacks/config/superquadrics.xml.h:9
+#: hacks/config/atlantis.xml.h:14 hacks/config/cage.xml.h:5
+#: hacks/config/extrusion.xml.h:12 hacks/config/gears.xml.h:8
+#: hacks/config/glblur.xml.h:15 hacks/config/glplanet.xml.h:7
+#: hacks/config/glsnake.xml.h:13 hacks/config/gltext.xml.h:14
+#: hacks/config/menger.xml.h:17 hacks/config/mismunch.xml.h:11
+#: hacks/config/molecule.xml.h:23 hacks/config/munch.xml.h:8
+#: hacks/config/sierpinski3d.xml.h:9 hacks/config/speedmine.xml.h:14
+#: hacks/config/spheremonics.xml.h:21 hacks/config/sproingies.xml.h:7
+#: hacks/config/stairs.xml.h:4 hacks/config/stonerview.xml.h:2
+#: hacks/config/superquadrics.xml.h:9
 msgid "Solid"
 msgstr "Plein"
 
 msgid "Solid"
 msgstr "Plein"
 
@@ -1696,10 +1676,7 @@ msgid ""
 "This is xfishtank writ large: a GL animation of a number of sharks, "
 "dolphins, and whales. The swimming motions are great. Originally written by "
 "Mark Kilgard."
 "This is xfishtank writ large: a GL animation of a number of sharks, "
 "dolphins, and whales. The swimming motions are great. Originally written by "
 "Mark Kilgard."
-msgstr ""
-"Voici un aquarium grand format: une animation GL avec des requins, des "
-"dauphins et des baleines. Les mouvements de nage sont magnifiques. "
-"Initialement Ã©crit par Mark Kilgard (porté par Eric Lassauge pour xlock)."
+msgstr "Voici un aquarium grand format: une animation GL avec des requins, des dauphins et des baleines. Les mouvements de nage sont magnifiques. Initialement Ã©crit par Mark Kilgard (porté par Eric Lassauge pour xlock)."
 
 #: hacks/config/atlantis.xml.h:16
 msgid "Whale Speed"
 
 #: hacks/config/atlantis.xml.h:16
 msgid "Whale Speed"
@@ -1707,17 +1684,17 @@ msgstr "Vitesse des baleines"
 
 #: hacks/config/atlantis.xml.h:17 hacks/config/atunnel.xml.h:10
 #: hacks/config/blinkbox.xml.h:9 hacks/config/blocktube.xml.h:13
 
 #: hacks/config/atlantis.xml.h:17 hacks/config/atunnel.xml.h:10
 #: hacks/config/blinkbox.xml.h:9 hacks/config/blocktube.xml.h:13
-#: hacks/config/boxed.xml.h:8 hacks/config/cage.xml.h:8
-#: hacks/config/cubestorm.xml.h:14 hacks/config/dangerball.xml.h:11
-#: hacks/config/extrusion.xml.h:19 hacks/config/flipflop.xml.h:8
-#: hacks/config/flyingtoasters.xml.h:14 hacks/config/gears.xml.h:11
-#: hacks/config/glblur.xml.h:20 hacks/config/glforestfire.xml.h:20
-#: hacks/config/glknots.xml.h:23 hacks/config/glplanet.xml.h:11
-#: hacks/config/glsnake.xml.h:15 hacks/config/gltext.xml.h:18
-#: hacks/config/jigglypuff.xml.h:25 hacks/config/lament.xml.h:9
-#: hacks/config/lavalite.xml.h:32 hacks/config/menger.xml.h:21
-#: hacks/config/mirrorblob.xml.h:24 hacks/config/moebius.xml.h:11
-#: hacks/config/molecule.xml.h:26 hacks/config/pulsar.xml.h:20
+#: hacks/config/cage.xml.h:8 hacks/config/cubestorm.xml.h:14
+#: hacks/config/dangerball.xml.h:11 hacks/config/extrusion.xml.h:19
+#: hacks/config/flipflop.xml.h:8 hacks/config/flyingtoasters.xml.h:14
+#: hacks/config/gears.xml.h:11 hacks/config/glblur.xml.h:20
+#: hacks/config/glforestfire.xml.h:20 hacks/config/glknots.xml.h:23
+#: hacks/config/glplanet.xml.h:11 hacks/config/glsnake.xml.h:15
+#: hacks/config/gltext.xml.h:18 hacks/config/jigglypuff.xml.h:25
+#: hacks/config/lament.xml.h:9 hacks/config/lavalite.xml.h:32
+#: hacks/config/menger.xml.h:21 hacks/config/mirrorblob.xml.h:24
+#: hacks/config/moebius.xml.h:11 hacks/config/molecule.xml.h:26
+#: hacks/config/polyhedra.xml.h:173 hacks/config/pulsar.xml.h:20
 #: hacks/config/sballs.xml.h:18 hacks/config/sierpinski3d.xml.h:12
 #: hacks/config/speedmine.xml.h:18 hacks/config/spheremonics.xml.h:26
 #: hacks/config/sproingies.xml.h:10 hacks/config/stairs.xml.h:7
 #: hacks/config/sballs.xml.h:18 hacks/config/sierpinski3d.xml.h:12
 #: hacks/config/speedmine.xml.h:18 hacks/config/spheremonics.xml.h:26
 #: hacks/config/sproingies.xml.h:10 hacks/config/stairs.xml.h:7
@@ -1773,6 +1750,7 @@ msgstr "Rayons pleins"
 #: hacks/config/spiral.xml.h:4 hacks/config/squiral.xml.h:6
 #: hacks/config/superquadrics.xml.h:5 hacks/config/t3d.xml.h:7
 #: hacks/config/twang.xml.h:5 hacks/config/wander.xml.h:8
 #: hacks/config/spiral.xml.h:4 hacks/config/squiral.xml.h:6
 #: hacks/config/superquadrics.xml.h:5 hacks/config/t3d.xml.h:7
 #: hacks/config/twang.xml.h:5 hacks/config/wander.xml.h:8
+#: hacks/config/xmountains.xml.h:17
 msgid "High"
 msgstr "Haut(e)"
 
 msgid "High"
 msgstr "Haut(e)"
 
@@ -1796,18 +1774,7 @@ msgid ""
 "tight orbit around each other, to be interrupted later by a third, or by the "
 "edge of the screen. It looks quite chaotic. Written by Jamie Zawinski, based "
 "on Lisp code by John Pezaris."
 "tight orbit around each other, to be interrupted later by a third, or by the "
 "edge of the screen. It looks quite chaotic. Written by Jamie Zawinski, based "
 "on Lisp code by John Pezaris."
-msgstr ""
-"Comme qix, il utilise un modèle de mouvement simple pour générer de nombreux "
-"modes d'affichage différents. Les points de contrôle s'attirent jusqu'à une "
-"certaine distance, puis commencent Ã  se repousser. Le rapport d'attraction/"
-"répulsion est proportionnel Ã  la distance entre deux particules, Ã  l'instar "
-"des forces nucléaires fortes et faibles. Il est particulièrement intéressant "
-"de regarder ce hack simplement sous la forme de balles qui rebondissent, car "
-"leurs mouvements et leurs interactions sont très Ã©tranges. Il arrive parfois "
-"que deux balles entrent en orbite l'une avec l'autre, avant d'être "
-"interrompues par une troisième ou par le bord de l'écran. L'ensemble est "
-"assez chaotique. Ã‰crit par Jamie Zawinski, sur la base d'un code Lisp de "
-"John Pezaris."
+msgstr "Comme qix, il utilise un modèle de mouvement simple pour générer de nombreux modes d'affichage différents. Les points de contrôle s'attirent jusqu'à une certaine distance, puis commencent Ã  se repousser. Le rapport d'attraction/répulsion est proportionnel Ã  la distance entre deux particules, Ã  l'instar des forces nucléaires fortes et faibles. Il est particulièrement intéressant de regarder ce hack simplement sous la forme de balles qui rebondissent, car leurs mouvements et leurs interactions sont très Ã©tranges. Il arrive parfois que deux balles entrent en orbite l'une avec l'autre, avant d'être interrompues par une troisième ou par le bord de l'écran. L'ensemble est assez chaotique. Ã‰crit par Jamie Zawinski, sur la base d'un code Lisp de John Pezaris."
 
 #: hacks/config/attraction.xml.h:15 hacks/config/deluxe.xml.h:5
 #: hacks/config/lmorph.xml.h:7 hacks/config/pedal.xml.h:5
 
 #: hacks/config/attraction.xml.h:15 hacks/config/deluxe.xml.h:5
 #: hacks/config/lmorph.xml.h:7 hacks/config/pedal.xml.h:5
@@ -1860,8 +1827,8 @@ msgstr "Ext
 msgid "Polygons"
 msgstr "Polygones"
 
 msgid "Polygons"
 msgstr "Polygones"
 
-#: hacks/config/attraction.xml.h:23 hacks/config/spotlight.xml.h:3
-#: hacks/config/xplanet.xml.h:55
+#: hacks/config/attraction.xml.h:23 hacks/config/fuzzyflakes.xml.h:12
+#: hacks/config/spotlight.xml.h:3 hacks/config/xplanet.xml.h:55
 msgid "Radius"
 msgstr "Rayon"
 
 msgid "Radius"
 msgstr "Rayon"
 
@@ -1906,10 +1873,7 @@ msgid ""
 "Draws an animation of a textured tunnel in GL. Requires OpenGL, and a "
 "machine with fast hardware support for texture maps. Written by Eric "
 "Lassauge and Roman Podobedov."
 "Draws an animation of a textured tunnel in GL. Requires OpenGL, and a "
 "machine with fast hardware support for texture maps. Written by Eric "
 "Lassauge and Roman Podobedov."
-msgstr ""
-"Dessine une animation d'un tunnel texturé en 3D. Nécessite OpenGL et une "
-"machine avec un support matériel puissant pour les textures. Ã‰crit par Eric "
-"Lassauge &lt;lassauge@free.fr&gt; et Roman Podobedov."
+msgstr "Dessine une animation d'un tunnel texturé en 3D. Nécessite OpenGL et une machine avec un support matériel puissant pour les textures. Ã‰crit par Eric Lassauge &lt;lassauge@users.sourceforge.net&gt; et Roman Podobedov."
 
 #: hacks/config/atunnel.xml.h:4 hacks/config/distort.xml.h:9
 #: hacks/config/glforestfire.xml.h:10 hacks/config/lament.xml.h:4
 
 #: hacks/config/atunnel.xml.h:4 hacks/config/distort.xml.h:9
 #: hacks/config/glforestfire.xml.h:10 hacks/config/lament.xml.h:4
@@ -1957,10 +1921,7 @@ msgid ""
 "Draws a simulation of flying space-combat robots (cleverly disguised as "
 "colored circles) doing battle in front of a moving star field. Written by "
 "Jonathan Lin."
 "Draws a simulation of flying space-combat robots (cleverly disguised as "
 "colored circles) doing battle in front of a moving star field. Written by "
 "Jonathan Lin."
-msgstr ""
-"Dessine une simulation de robots de combat volants (ingénieusement déguisés "
-"en cercles colorés) en guerre sur un fond de champ stellaire animé. Ã‰crit "
-"par Jonathan Lin."
+msgstr "Dessine une simulation de robots de combat volants (ingénieusement déguisés en cercles colorés) en guerre sur un fond de champ stellaire animé. Ã‰crit par Jonathan Lin."
 
 #: hacks/config/blaster.xml.h:5 hacks/config/penetrate.xml.h:4
 msgid "Lasers"
 
 #: hacks/config/blaster.xml.h:5 hacks/config/penetrate.xml.h:4
 msgid "Lasers"
@@ -2027,17 +1988,7 @@ msgid ""
 "dissolve into static and then reconstitute itself, but rotated. You can "
 "provide the image to use, as an XBM or XPM file, or tell it to grab a screen "
 "image and rotate that."
 "dissolve into static and then reconstitute itself, but rotated. You can "
 "provide the image to use, as an XBM or XPM file, or tell it to grab a screen "
 "image and rotate that."
-msgstr ""
-"Le mode Rotation Bitmap fait pivoter Ã  plusieurs reprises un bitmap de 90° Ã  "
-"l'aide d'opérations logiques: le bitmap est divisé en quadrants, qui "
-"pivotent dans le sens horaire. La même opération est répétée avec des "
-"quadrants progressivement plus petits, Ã  ceci près que tous les sous-"
-"quadrants d'une certaine taille pivotent parallèlement. Ã‰crit par Jamie "
-"Zawinski sur la base d'un super code SmallTalk trouvé dans Byte Magazine en "
-"1981. Lorsque vous la regardez, l'image semble se dissoudre en parasites "
-"puis se reconstituer avec une rotation. Vous pouvez fournir l'image Ã  "
-"utiliser, au format XBM ou XPM, ou effectuer une capture d'écran et la faire "
-"pivoter."
+msgstr "Le mode Rotation Bitmap fait pivoter Ã  plusieurs reprises un bitmap de 90° Ã  l'aide d'opérations logiques: le bitmap est divisé en quadrants, qui pivotent dans le sens horaire. La même opération est répétée avec des quadrants progressivement plus petits, Ã  ceci près que tous les sous-quadrants d'une certaine taille pivotent parallèlement. Ã‰crit par Jamie Zawinski sur la base d'un super code SmallTalk trouvé dans Byte Magazine en 1981. Lorsque vous la regardez, l'image semble se dissoudre en parasites puis se reconstituer avec une rotation. Vous pouvez fournir l'image Ã  utiliser, au format XBM ou XPM, ou effectuer une capture d'écran et la faire pivoter."
 
 #: hacks/config/blocktube.xml.h:1
 msgid "BlockTube"
 
 #: hacks/config/blocktube.xml.h:1
 msgid "BlockTube"
@@ -2081,24 +2032,21 @@ msgstr "Nombre de taches"
 msgid ""
 "This draws what looks like a spinning, deforming balloon with varying-sized "
 "spots painted on its invisible surface. Written by Jeremie Petit."
 msgid ""
 "This draws what looks like a spinning, deforming balloon with varying-sized "
 "spots painted on its invisible surface. Written by Jeremie Petit."
-msgstr ""
-"Dessine une sorte de ballon qui tournoie et se déforme. Des taches de taille "
-"variable sont peintes sur sa surface invisible. Ã‰crit par Jeremie Petit."
+msgstr "Dessine une sorte de ballon qui tournoie et se déforme. Des taches de taille variable sont peintes sur sa surface invisible. Ã‰crit par Jeremie Petit."
 
 #: hacks/config/bouncingcow.xml.h:1
 msgid "A Cow. A Trampoline. Together, they fight crime. By Jamie Zawinski."
 
 #: hacks/config/bouncingcow.xml.h:1
 msgid "A Cow. A Trampoline. Together, they fight crime. By Jamie Zawinski."
-msgstr ""
-"Une vache. Un trampoline. Ensemble ils combattent le crime. Ã‰crit par Jamie "
-"Zawinski."
+msgstr "Une vache. Un trampoline. Ensemble ils combattent le crime. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/bouncingcow.xml.h:2 hacks/config/boxed.xml.h:1
 #: hacks/config/cubestorm.xml.h:1 hacks/config/flyingtoasters.xml.h:3
 #: hacks/config/fontglide.xml.h:1 hacks/config/gears.xml.h:1
 #: hacks/config/gflux.xml.h:1 hacks/config/glknots.xml.h:1
 #: hacks/config/glmatrix.xml.h:1 hacks/config/jigglypuff.xml.h:1
 
 #: hacks/config/bouncingcow.xml.h:2 hacks/config/boxed.xml.h:1
 #: hacks/config/cubestorm.xml.h:1 hacks/config/flyingtoasters.xml.h:3
 #: hacks/config/fontglide.xml.h:1 hacks/config/gears.xml.h:1
 #: hacks/config/gflux.xml.h:1 hacks/config/glknots.xml.h:1
 #: hacks/config/glmatrix.xml.h:1 hacks/config/jigglypuff.xml.h:1
-#: hacks/config/pyro.xml.h:1 hacks/config/rd-bomb.xml.h:6
-#: hacks/config/rocks.xml.h:1 hacks/config/starwars.xml.h:1
-#: hacks/config/wormhole.xml.h:1 hacks/config/xfishtank.xml.h:1
+#: hacks/config/polyhedra.xml.h:3 hacks/config/pyro.xml.h:1
+#: hacks/config/rd-bomb.xml.h:6 hacks/config/rocks.xml.h:1
+#: hacks/config/starwars.xml.h:1 hacks/config/wormhole.xml.h:1
+#: hacks/config/xfishtank.xml.h:1
 msgid "Animation Speed"
 msgstr "Vitesse d'animation"
 
 msgid "Animation Speed"
 msgstr "Vitesse d'animation"
 
@@ -2138,9 +2086,7 @@ msgstr "En bo
 msgid ""
 "Draws a box full of 3D bouncing balls that explode. Written by Sander van "
 "Grieken."
 msgid ""
 "Draws a box full of 3D bouncing balls that explode. Written by Sander van "
 "Grieken."
-msgstr ""
-"Dessine une boîte remplie de balles 3D qui explosent. Ã‰crit par Sander van "
-"Grieken."
+msgstr "Dessine une boîte remplie de balles 3D qui explosent. Ã‰crit par Sander van Grieken."
 
 #: hacks/config/braid.xml.h:1
 msgid "Braid"
 
 #: hacks/config/braid.xml.h:1
 msgid "Braid"
@@ -2150,9 +2096,7 @@ msgstr "Entrelacement"
 msgid ""
 "Draws random color-cycling inter-braided concentric circles. Written by John "
 "Neil."
 msgid ""
 "Draws random color-cycling inter-braided concentric circles. Written by John "
 "Neil."
-msgstr ""
-"Dessine des cercles concentriques aléatoires entrelacés, avec des cycles de "
-"couleurs. Ã‰crit par John Neil."
+msgstr "Dessine des cercles concentriques aléatoires entrelacés, avec des cycles de couleurs. Ã‰crit par John Neil."
 
 #: hacks/config/braid.xml.h:3 hacks/config/bsod.xml.h:9
 #: hacks/config/ccurve.xml.h:7 hacks/config/coral.xml.h:6
 
 #: hacks/config/braid.xml.h:3 hacks/config/bsod.xml.h:9
 #: hacks/config/ccurve.xml.h:7 hacks/config/coral.xml.h:6
@@ -2167,12 +2111,12 @@ msgstr ""
 #: hacks/config/mismunch.xml.h:1 hacks/config/moire.xml.h:3
 #: hacks/config/molecule.xml.h:9 hacks/config/munch.xml.h:2
 #: hacks/config/nerverot.xml.h:8 hacks/config/pedal.xml.h:3
 #: hacks/config/mismunch.xml.h:1 hacks/config/moire.xml.h:3
 #: hacks/config/molecule.xml.h:9 hacks/config/munch.xml.h:2
 #: hacks/config/nerverot.xml.h:8 hacks/config/pedal.xml.h:3
-#: hacks/config/penrose.xml.h:5 hacks/config/polyominoes.xml.h:1
-#: hacks/config/rorschach.xml.h:3 hacks/config/rotzoomer.xml.h:5
-#: hacks/config/shadebobs.xml.h:2 hacks/config/sierpinski3d.xml.h:1
-#: hacks/config/spheremonics.xml.h:4 hacks/config/starfish.xml.h:2
-#: hacks/config/vidwhacker.xml.h:3 hacks/config/wander.xml.h:7
-#: hacks/config/xspirograph.xml.h:3
+#: hacks/config/penrose.xml.h:5 hacks/config/polyhedra.xml.h:17
+#: hacks/config/polyominoes.xml.h:1 hacks/config/rorschach.xml.h:3
+#: hacks/config/rotzoomer.xml.h:5 hacks/config/shadebobs.xml.h:2
+#: hacks/config/sierpinski3d.xml.h:1 hacks/config/spheremonics.xml.h:4
+#: hacks/config/starfish.xml.h:2 hacks/config/vidwhacker.xml.h:3
+#: hacks/config/wander.xml.h:7 hacks/config/xspirograph.xml.h:3
 msgid "Duration"
 msgstr "Durée"
 
 msgid "Duration"
 msgstr "Durée"
 
@@ -2219,10 +2163,7 @@ msgid ""
 "BSOD stands for ``Blue Screen of Death.'' The finest in personal computer "
 "emulation, this hack simulates popular screen savers from a number of less "
 "robust operating systems. Written by Jamie Zawinski."
 "BSOD stands for ``Blue Screen of Death.'' The finest in personal computer "
 "emulation, this hack simulates popular screen savers from a number of less "
 "robust operating systems. Written by Jamie Zawinski."
-msgstr ""
-"BSOD signifie Â«Blue Screen of Death» (écran bleu de la mort). Fine fleur de "
-"l'émulation PC, ce hack simule des Ã©conomiseurs d'écran de plusieurs "
-"systèmes d'exploitation moins puissants. Ã‰crit par Jamie Zawinski."
+msgstr "BSOD signifie Â«Blue Screen of Death» (écran bleu de la mort). Fine fleur de l'émulation PC, ce hack simule des Ã©conomiseurs d'écran de plusieurs systèmes d'exploitation moins puissants. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/bsod.xml.h:10
 msgid "HPUX"
 
 #: hacks/config/bsod.xml.h:10
 msgid "HPUX"
@@ -2237,54 +2178,58 @@ msgid "Linux"
 msgstr "Linux"
 
 #: hacks/config/bsod.xml.h:13
 msgstr "Linux"
 
 #: hacks/config/bsod.xml.h:13
+msgid "MS-DOS"
+msgstr "M$-DOS"
+
+#: hacks/config/bsod.xml.h:14
 msgid "Mac Bomb"
 msgstr "Bombe Mac"
 
 msgid "Mac Bomb"
 msgstr "Bombe Mac"
 
-#: hacks/config/bsod.xml.h:14
+#: hacks/config/bsod.xml.h:15
 msgid "MacOS X"
 msgstr "MacOS X"
 
 msgid "MacOS X"
 msgstr "MacOS X"
 
-#: hacks/config/bsod.xml.h:15
+#: hacks/config/bsod.xml.h:16
 msgid "MacsBug"
 msgstr "Bogue Mac"
 
 msgid "MacsBug"
 msgstr "Bogue Mac"
 
-#: hacks/config/bsod.xml.h:16
+#: hacks/config/bsod.xml.h:17
 msgid "NCD X Terminal"
 msgstr "Terminal NCD X"
 
 msgid "NCD X Terminal"
 msgstr "Terminal NCD X"
 
-#: hacks/config/bsod.xml.h:17
+#: hacks/config/bsod.xml.h:18
 msgid "OS/390"
 msgstr "OS/390"
 
 msgid "OS/390"
 msgstr "OS/390"
 
-#: hacks/config/bsod.xml.h:18
+#: hacks/config/bsod.xml.h:19
 msgid "SCO"
 msgstr "SCO"
 
 msgid "SCO"
 msgstr "SCO"
 
-#: hacks/config/bsod.xml.h:19
+#: hacks/config/bsod.xml.h:20
 msgid "Sad Mac"
 msgstr "Mac Triste"
 
 msgid "Sad Mac"
 msgstr "Mac Triste"
 
-#: hacks/config/bsod.xml.h:20
+#: hacks/config/bsod.xml.h:21
 msgid "Solaris"
 msgstr "Solaris"
 
 msgid "Solaris"
 msgstr "Solaris"
 
-#: hacks/config/bsod.xml.h:21
+#: hacks/config/bsod.xml.h:22
 msgid "Sparc Linux"
 msgstr "Sparc Linux"
 
 msgid "Sparc Linux"
 msgstr "Sparc Linux"
 
-#: hacks/config/bsod.xml.h:22
+#: hacks/config/bsod.xml.h:23
 msgid "VMS"
 msgstr "VMS"
 
 msgid "VMS"
 msgstr "VMS"
 
-#: hacks/config/bsod.xml.h:23
+#: hacks/config/bsod.xml.h:24
 msgid "Windows 2000"
 msgstr "Windows 2000"
 
 msgid "Windows 2000"
 msgstr "Windows 2000"
 
-#: hacks/config/bsod.xml.h:24
+#: hacks/config/bsod.xml.h:25
 msgid "Windows 3.1"
 msgstr "Windows 3.1"
 
 msgid "Windows 3.1"
 msgstr "Windows 3.1"
 
-#: hacks/config/bsod.xml.h:25
+#: hacks/config/bsod.xml.h:26
 msgid "Windows NT"
 msgstr "Windows NT"
 
 msgid "Windows NT"
 msgstr "Windows NT"
 
@@ -2296,9 +2241,7 @@ msgstr "Bulles 3D"
 msgid ""
 "Draws a stream of rising, undulating 3D bubbles, rising toward the top of "
 "the screen, with nice specular reflections. Written by Richard Jones."
 msgid ""
 "Draws a stream of rising, undulating 3D bubbles, rising toward the top of "
 "the screen, with nice specular reflections. Written by Richard Jones."
-msgstr ""
-"Dessine un flux de bulles 3D ondulantes, qui montent vers le haut de "
-"l'écran, avec de belles réflexions spéculaires. Ã‰crit par Richard Jones."
+msgstr "Dessine un flux de bulles 3D ondulantes, qui montent vers le haut de l'écran, avec de belles réflexions spéculaires. Ã‰crit par Richard Jones."
 
 #: hacks/config/bubbles.xml.h:1 hacks/config/xfishtank.xml.h:2
 msgid "Bubbles"
 
 #: hacks/config/bubbles.xml.h:1 hacks/config/xfishtank.xml.h:2
 msgid "Bubbles"
@@ -2337,22 +2280,14 @@ msgid ""
 "This simulates the kind of bubble formation that happens when water boils:"
 "small bubbles appear, and as they get closer to each other, they combine to "
 "form larger bubbles, which eventually pop. Written by James Macnicol."
 "This simulates the kind of bubble formation that happens when water boils:"
 "small bubbles appear, and as they get closer to each other, they combine to "
 "form larger bubbles, which eventually pop. Written by James Macnicol."
-msgstr ""
-"Simule le type de formation de bulles qui se produit lorsque de l'eau entre "
-"en Ã©bullition: de petites bulles apparaissent et, lorsqu'elles se "
-"rapprochent, elles se combinent pour former de plus grandes bulles, qui "
-"finissent par Ã©clater. Ã‰crit par James Macnicol."
+msgstr "Simule le type de formation de bulles qui se produit lorsque de l'eau entre en Ã©bullition: de petites bulles apparaissent et, lorsqu'elles se rapprochent, elles se combinent pour former de plus grandes bulles, qui finissent par Ã©clater. Ã‰crit par James Macnicol."
 
 #: hacks/config/bumps.xml.h:1
 msgid ""
 "A bit like `Spotlight', except that instead of merely exposing part of your "
 "desktop, it creates a bump map from it. Basically, it 3D-izes a roaming "
 "section of your desktop, based on color intensity. Written by Shane Smit."
 
 #: hacks/config/bumps.xml.h:1
 msgid ""
 "A bit like `Spotlight', except that instead of merely exposing part of your "
 "desktop, it creates a bump map from it. Basically, it 3D-izes a roaming "
 "section of your desktop, based on color intensity. Written by Shane Smit."
-msgstr ""
-"Un peu comme Â«Faisceau lumineux», Ã  ceci près qu'au lieu d'exposer "
-"simplement une partie du bureau, il en crée un placage de relief. En fait, "
-"il met en 3 dimensions une section variable du bureau, en fonction de "
-"l'intensité des couleurs. Ã‰crit par Shane Smit."
+msgstr "Un peu comme Â«Faisceau lumineux», Ã  ceci près qu'au lieu d'exposer simplement une partie du bureau, il en crée un placage de relief. En fait, il met en 3 dimensions une section variable du bureau, en fonction de l'intensité des couleurs. Ã‰crit par Shane Smit."
 
 #: hacks/config/bumps.xml.h:2
 msgid "Bumps"
 
 #: hacks/config/bumps.xml.h:2
 msgid "Bumps"
@@ -2366,9 +2301,7 @@ msgstr "Cage"
 msgid ""
 "This draws Escher's ``Impossible Cage,'' a 3d analog of a moebius strip, and "
 "rotates it in three dimensions. Written by Marcelo Vianna."
 msgid ""
 "This draws Escher's ``Impossible Cage,'' a 3d analog of a moebius strip, and "
 "rotates it in three dimensions. Written by Marcelo Vianna."
-msgstr ""
-"Dessine la Â«Cage impossible» d'Escher, une analogie en 3D d'un ruban de "
-"Moebius, et la fait pivoter en 3 dimensions. Ã‰crit par Marcelo Vianna."
+msgstr "Dessine la Â«Cage impossible» d'Escher, une analogie en 3D d'un ruban de Moebius, et la fait pivoter en 3 dimensions. Ã‰crit par Marcelo Vianna."
 
 #: hacks/config/ccurve.xml.h:1
 msgid "0 seconds"
 
 #: hacks/config/ccurve.xml.h:1
 msgid "0 seconds"
@@ -2379,6 +2312,7 @@ msgid "1 minute"
 msgstr "1 minute"
 
 #: hacks/config/ccurve.xml.h:3 hacks/config/epicycle.xml.h:2
 msgstr "1 minute"
 
 #: hacks/config/ccurve.xml.h:3 hacks/config/epicycle.xml.h:2
+#: hacks/config/polyhedra.xml.h:1
 msgid "1 second"
 msgstr "1 seconde"
 
 msgid "1 second"
 msgstr "1 seconde"
 
@@ -2386,7 +2320,7 @@ msgstr "1 seconde"
 msgid "C Curve"
 msgstr "Courbe C"
 
 msgid "C Curve"
 msgstr "Courbe C"
 
-#: hacks/config/ccurve.xml.h:5
+#: hacks/config/ccurve.xml.h:5 hacks/config/fuzzyflakes.xml.h:3
 msgid "Delay"
 msgstr "Délai"
 
 msgid "Delay"
 msgstr "Délai"
 
@@ -2401,9 +2335,7 @@ msgstr "Densit
 msgid ""
 "Generates self-similar linear fractals, including the classic ``C Curve.'' "
 "Written by Rick Campbell."
 msgid ""
 "Generates self-similar linear fractals, including the classic ``C Curve.'' "
 "Written by Rick Campbell."
-msgstr ""
-"Génère des fractales linéaires auto-similaires, notamment la fameuse Â«courbe "
-"C». Ã‰crit par Rick Campbell."
+msgstr "Génère des fractales linéaires auto-similaires, notamment la fameuse Â«courbe C». Ã‰crit par Rick Campbell."
 
 #: hacks/config/circuit.xml.h:1
 msgid "Animates a number of 3D electronic components. Written by Ben Buxton."
 
 #: hacks/config/circuit.xml.h:1
 msgid "Animates a number of 3D electronic components. Written by Ben Buxton."
@@ -2480,9 +2412,10 @@ msgid "Compass"
 msgstr "Boussole"
 
 #: hacks/config/compass.xml.h:2 hacks/config/deluxe.xml.h:3
 msgstr "Boussole"
 
 #: hacks/config/compass.xml.h:2 hacks/config/deluxe.xml.h:3
-#: hacks/config/fontglide.xml.h:3 hacks/config/interference.xml.h:6
-#: hacks/config/kumppa.xml.h:2 hacks/config/nerverot.xml.h:6
-#: hacks/config/piecewise.xml.h:3 hacks/config/pipes.xml.h:4
+#: hacks/config/fontglide.xml.h:3 hacks/config/fuzzyflakes.xml.h:4
+#: hacks/config/interference.xml.h:6 hacks/config/kumppa.xml.h:2
+#: hacks/config/nerverot.xml.h:6 hacks/config/piecewise.xml.h:3
+#: hacks/config/pipes.xml.h:4
 msgid "Double Buffer"
 msgstr "Double tampon"
 
 msgid "Double Buffer"
 msgstr "Double tampon"
 
@@ -2490,9 +2423,7 @@ msgstr "Double tampon"
 msgid ""
 "This draws a compass, with all elements spinning about randomly, for that "
 "``lost and nauseous'' feeling. Written by Jamie Zawinski."
 msgid ""
 "This draws a compass, with all elements spinning about randomly, for that "
 "``lost and nauseous'' feeling. Written by Jamie Zawinski."
-msgstr ""
-"Dessine une boussole, dont tous les Ã©léments tournent de manière aléatoire, "
-"pour obtenir ce sentiment de Â«mal de mer». Ã‰crit par Jamie Zawinski."
+msgstr "Dessine une boussole, dont tous les Ã©léments tournent de manière aléatoire, pour obtenir ce sentiment de Â«mal de mer». Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/coral.xml.h:1 hacks/config/deco.xml.h:1
 #: hacks/config/helix.xml.h:1 hacks/config/imsmap.xml.h:1
 
 #: hacks/config/coral.xml.h:1 hacks/config/deco.xml.h:1
 #: hacks/config/helix.xml.h:1 hacks/config/imsmap.xml.h:1
@@ -2559,10 +2490,7 @@ msgstr "Critique"
 msgid ""
 "Draws a system of self-organizing lines. It starts out as random squiggles, "
 "but after a few iterations, order begins to appear. Written by Martin Pool."
 msgid ""
 "Draws a system of self-organizing lines. It starts out as random squiggles, "
 "but after a few iterations, order begins to appear. Written by Martin Pool."
-msgstr ""
-"Dessine un système de lignes auto-organisées. Elles commencent sous la forme "
-"de gribouillis aléatoires, mais, après quelques itérations, l'ordre commence "
-"à apparaître. Ã‰crit par Martin Pool."
+msgstr "Dessine un système de lignes auto-organisées. Elles commencent sous la forme de gribouillis aléatoires, mais, après quelques itérations, l'ordre commence Ã  apparaître. Ã‰crit par Martin Pool."
 
 #: hacks/config/crystal.xml.h:1
 msgid "Center on Screen"
 
 #: hacks/config/crystal.xml.h:1
 msgid "Center on Screen"
@@ -2605,9 +2533,7 @@ msgstr "Sym
 msgid ""
 "Moving polygons, similar to a kaleidescope (more like a kaleidescope than "
 "the hack called `kaleid,' actually.) This one by Jouk Jansen."
 msgid ""
 "Moving polygons, similar to a kaleidescope (more like a kaleidescope than "
 "the hack called `kaleid,' actually.) This one by Jouk Jansen."
-msgstr ""
-"Polygones animés, semblables Ã  un kaléidoscope (plus semblables Ã  un "
-"kaléïdoscope que le hack Â«kaleid», en fait.) Par Jouk Jansen."
+msgstr "Polygones animés, semblables Ã  un kaléidoscope (plus semblables Ã  un kaléïdoscope que le hack Â«kaleid», en fait.) Par Jouk Jansen."
 
 #: hacks/config/crystal.xml.h:14
 msgid "Vertical Symmetries"
 
 #: hacks/config/crystal.xml.h:14
 msgid "Vertical Symmetries"
@@ -2636,7 +2562,8 @@ msgstr "Fil de fer"
 #: hacks/config/cubenetic.xml.h:6 hacks/config/glblur.xml.h:3
 #: hacks/config/glknots.xml.h:2 hacks/config/gltext.xml.h:2
 #: hacks/config/lavalite.xml.h:7 hacks/config/menger.xml.h:1
 #: hacks/config/cubenetic.xml.h:6 hacks/config/glblur.xml.h:3
 #: hacks/config/glknots.xml.h:2 hacks/config/gltext.xml.h:2
 #: hacks/config/lavalite.xml.h:7 hacks/config/menger.xml.h:1
-#: hacks/config/molecule.xml.h:4 hacks/config/spheremonics.xml.h:1
+#: hacks/config/molecule.xml.h:4 hacks/config/polyhedra.xml.h:16
+#: hacks/config/spheremonics.xml.h:1
 msgid "Don't Rotate"
 msgstr "Ne pas pivoter"
 
 msgid "Don't Rotate"
 msgstr "Ne pas pivoter"
 
@@ -2650,49 +2577,56 @@ msgstr ""
 #: hacks/config/cubenetic.xml.h:14 hacks/config/glblur.xml.h:6
 #: hacks/config/glknots.xml.h:8 hacks/config/gltext.xml.h:5
 #: hacks/config/lavalite.xml.h:19 hacks/config/menger.xml.h:7
 #: hacks/config/cubenetic.xml.h:14 hacks/config/glblur.xml.h:6
 #: hacks/config/glknots.xml.h:8 hacks/config/gltext.xml.h:5
 #: hacks/config/lavalite.xml.h:19 hacks/config/menger.xml.h:7
-#: hacks/config/molecule.xml.h:14 hacks/config/spheremonics.xml.h:10
+#: hacks/config/molecule.xml.h:14 hacks/config/polyhedra.xml.h:110
+#: hacks/config/spheremonics.xml.h:10
 msgid "Rotate around X and Y axes"
 msgstr "Rotation autour des axes X et Y"
 
 #: hacks/config/cubenetic.xml.h:15 hacks/config/glblur.xml.h:7
 #: hacks/config/glknots.xml.h:9 hacks/config/gltext.xml.h:6
 #: hacks/config/lavalite.xml.h:20 hacks/config/menger.xml.h:8
 msgid "Rotate around X and Y axes"
 msgstr "Rotation autour des axes X et Y"
 
 #: hacks/config/cubenetic.xml.h:15 hacks/config/glblur.xml.h:7
 #: hacks/config/glknots.xml.h:9 hacks/config/gltext.xml.h:6
 #: hacks/config/lavalite.xml.h:20 hacks/config/menger.xml.h:8
-#: hacks/config/molecule.xml.h:15 hacks/config/spheremonics.xml.h:11
+#: hacks/config/molecule.xml.h:15 hacks/config/polyhedra.xml.h:111
+#: hacks/config/spheremonics.xml.h:11
 msgid "Rotate around X and Z axes"
 msgstr "Rotation autour des axes X et Z"
 
 #: hacks/config/cubenetic.xml.h:16 hacks/config/glblur.xml.h:8
 #: hacks/config/glknots.xml.h:10 hacks/config/gltext.xml.h:7
 #: hacks/config/lavalite.xml.h:21 hacks/config/menger.xml.h:9
 msgid "Rotate around X and Z axes"
 msgstr "Rotation autour des axes X et Z"
 
 #: hacks/config/cubenetic.xml.h:16 hacks/config/glblur.xml.h:8
 #: hacks/config/glknots.xml.h:10 hacks/config/gltext.xml.h:7
 #: hacks/config/lavalite.xml.h:21 hacks/config/menger.xml.h:9
-#: hacks/config/molecule.xml.h:16 hacks/config/spheremonics.xml.h:12
+#: hacks/config/molecule.xml.h:16 hacks/config/polyhedra.xml.h:112
+#: hacks/config/spheremonics.xml.h:12
 msgid "Rotate around X axis"
 msgstr "Rotation autour de l'axe X"
 
 #: hacks/config/cubenetic.xml.h:17 hacks/config/glblur.xml.h:9
 #: hacks/config/glknots.xml.h:11 hacks/config/gltext.xml.h:8
 #: hacks/config/lavalite.xml.h:22 hacks/config/menger.xml.h:10
 msgid "Rotate around X axis"
 msgstr "Rotation autour de l'axe X"
 
 #: hacks/config/cubenetic.xml.h:17 hacks/config/glblur.xml.h:9
 #: hacks/config/glknots.xml.h:11 hacks/config/gltext.xml.h:8
 #: hacks/config/lavalite.xml.h:22 hacks/config/menger.xml.h:10
-#: hacks/config/molecule.xml.h:17 hacks/config/spheremonics.xml.h:13
+#: hacks/config/molecule.xml.h:17 hacks/config/polyhedra.xml.h:113
+#: hacks/config/spheremonics.xml.h:13
 msgid "Rotate around Y and Z axes"
 msgstr "Rotation autour des axes Y et Z"
 
 #: hacks/config/cubenetic.xml.h:18 hacks/config/glblur.xml.h:10
 #: hacks/config/glknots.xml.h:12 hacks/config/gltext.xml.h:9
 #: hacks/config/lavalite.xml.h:23 hacks/config/menger.xml.h:11
 msgid "Rotate around Y and Z axes"
 msgstr "Rotation autour des axes Y et Z"
 
 #: hacks/config/cubenetic.xml.h:18 hacks/config/glblur.xml.h:10
 #: hacks/config/glknots.xml.h:12 hacks/config/gltext.xml.h:9
 #: hacks/config/lavalite.xml.h:23 hacks/config/menger.xml.h:11
-#: hacks/config/molecule.xml.h:18 hacks/config/spheremonics.xml.h:14
+#: hacks/config/molecule.xml.h:18 hacks/config/polyhedra.xml.h:114
+#: hacks/config/spheremonics.xml.h:14
 msgid "Rotate around Y axis"
 msgstr "Rotation autour de l'axe Y"
 
 #: hacks/config/cubenetic.xml.h:19 hacks/config/glblur.xml.h:11
 #: hacks/config/glknots.xml.h:13 hacks/config/gltext.xml.h:10
 #: hacks/config/lavalite.xml.h:24 hacks/config/menger.xml.h:12
 msgid "Rotate around Y axis"
 msgstr "Rotation autour de l'axe Y"
 
 #: hacks/config/cubenetic.xml.h:19 hacks/config/glblur.xml.h:11
 #: hacks/config/glknots.xml.h:13 hacks/config/gltext.xml.h:10
 #: hacks/config/lavalite.xml.h:24 hacks/config/menger.xml.h:12
-#: hacks/config/molecule.xml.h:19 hacks/config/spheremonics.xml.h:15
+#: hacks/config/molecule.xml.h:19 hacks/config/polyhedra.xml.h:115
+#: hacks/config/spheremonics.xml.h:15
 msgid "Rotate around Z axis"
 msgstr "Rotation autour de l'axe Z"
 
 #: hacks/config/cubenetic.xml.h:20 hacks/config/glblur.xml.h:12
 #: hacks/config/glknots.xml.h:14 hacks/config/gltext.xml.h:11
 #: hacks/config/lavalite.xml.h:25 hacks/config/menger.xml.h:13
 msgid "Rotate around Z axis"
 msgstr "Rotation autour de l'axe Z"
 
 #: hacks/config/cubenetic.xml.h:20 hacks/config/glblur.xml.h:12
 #: hacks/config/glknots.xml.h:14 hacks/config/gltext.xml.h:11
 #: hacks/config/lavalite.xml.h:25 hacks/config/menger.xml.h:13
-#: hacks/config/molecule.xml.h:20 hacks/config/spheremonics.xml.h:16
+#: hacks/config/molecule.xml.h:20 hacks/config/polyhedra.xml.h:116
+#: hacks/config/spheremonics.xml.h:16
 msgid "Rotate around all three axes"
 msgstr "Rotation autour des trois axes"
 
 msgid "Rotate around all three axes"
 msgstr "Rotation autour des trois axes"
 
@@ -2713,8 +2647,8 @@ msgstr "Vitesse de changement des mod
 #: hacks/config/glblur.xml.h:19 hacks/config/glforestfire.xml.h:19
 #: hacks/config/glknots.xml.h:22 hacks/config/gltext.xml.h:17
 #: hacks/config/lavalite.xml.h:31 hacks/config/menger.xml.h:20
 #: hacks/config/glblur.xml.h:19 hacks/config/glforestfire.xml.h:19
 #: hacks/config/glknots.xml.h:22 hacks/config/gltext.xml.h:17
 #: hacks/config/lavalite.xml.h:31 hacks/config/menger.xml.h:20
-#: hacks/config/molecule.xml.h:25 hacks/config/spheremonics.xml.h:25
-#: hacks/config/wander.xml.h:15
+#: hacks/config/molecule.xml.h:25 hacks/config/polyhedra.xml.h:172
+#: hacks/config/spheremonics.xml.h:25 hacks/config/wander.xml.h:15
 msgid "Wander"
 msgstr "Déplacement"
 
 msgid "Wander"
 msgstr "Déplacement"
 
@@ -2729,7 +2663,7 @@ msgid ""
 msgstr ""
 
 #: hacks/config/cubestorm.xml.h:5 hacks/config/fontglide.xml.h:9
 msgstr ""
 
 #: hacks/config/cubestorm.xml.h:5 hacks/config/fontglide.xml.h:9
-#: hacks/config/glknots.xml.h:6
+#: hacks/config/glknots.xml.h:6 hacks/config/polyhedra.xml.h:85
 msgid "Motion Speed"
 msgstr "Vitesse de déplacement"
 
 msgid "Motion Speed"
 msgstr "Vitesse de déplacement"
 
@@ -2747,11 +2681,7 @@ msgid ""
 "was by Stephen Linhart; then Ozymandias G. Desiderata wrote a Java applet "
 "clone. That clone was discovered by Jamie Zawinski, and ported to C for "
 "inclusion here."
 "was by Stephen Linhart; then Ozymandias G. Desiderata wrote a Java applet "
 "clone. That clone was discovered by Jamie Zawinski, and ported to C for "
 "inclusion here."
-msgstr ""
-"Un hack similaire Ã  Â«greynetic», en moins frénétique. La première mise en "
-"oeuvre Ã©tait par Stephen Linhart; ensuite, Ozymandias G. Desiderata a Ã©crit "
-"un clone de l'applet Java. Il a Ã©té découvert par Jamie Zawinski et porté "
-"sur C pour Ãªtre inclus ici."
+msgstr "Un hack similaire Ã  Â«greynetic», en moins frénétique. La première mise en oeuvre Ã©tait par Stephen Linhart; ensuite, Ozymandias G. Desiderata a Ã©crit un clone de l'applet Java. Il a Ã©té découvert par Jamie Zawinski et porté sur C pour Ãªtre inclus ici."
 
 #: hacks/config/cynosure.xml.h:2
 msgid "Cynosure"
 
 #: hacks/config/cynosure.xml.h:2
 msgid "Cynosure"
@@ -2765,9 +2695,7 @@ msgstr "Balle dangereuse"
 msgid ""
 "Draws a ball that periodically extrudes many random spikes. Ouch! Written by "
 "Jamie Zawinski."
 msgid ""
 "Draws a ball that periodically extrudes many random spikes. Ouch! Written by "
 "Jamie Zawinski."
-msgstr ""
-"Dessine une balle qui se hérisse régulièrement de nombreux picots "
-"aléatoires. Ouille ! Ã‰crit par Jamie Zawinski."
+msgstr "Dessine une balle qui se hérisse régulièrement de nombreux picots aléatoires. Ouille ! Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/dangerball.xml.h:7
 msgid "Spike Count"
 
 #: hacks/config/dangerball.xml.h:7
 msgid "Spike Count"
@@ -2848,12 +2776,7 @@ msgid ""
 "best if there's something colorful visible. Warning, if the effect continues "
 "after the screen saver is off, seek medical attention. Written by David "
 "Wald, Vivek Khera, Jamie Zawinski, and Vince Levey."
 "best if there's something colorful visible. Warning, if the effect continues "
 "after the screen saver is off, seek medical attention. Written by David "
 "Wald, Vivek Khera, Jamie Zawinski, and Vince Levey."
-msgstr ""
-"Fait fondre une image. Vous avez certainement déjà vu cet effet, mais aucun "
-"programme d'économiseurs d'écran ne pourrait s'en passer. Il fonctionne "
-"particulièrement bien si l'image est colorée. Attention, si l'effet se "
-"poursuit après désactivation de l'économiseur, cherchez de l'aide. Ã‰crit par "
-"David Wald et Vivek Khera."
+msgstr "Fait fondre une image. Vous avez certainement déjà vu cet effet, mais aucun programme d'économiseurs d'écran ne pourrait s'en passer. Il fonctionne particulièrement bien si l'image est colorée. Attention, si l'effet se poursuit après désactivation de l'économiseur, cherchez de l'aide. Ã‰crit par David Wald et Vivek Khera."
 
 #: hacks/config/deco.xml.h:3
 msgid "Deco"
 
 #: hacks/config/deco.xml.h:3
 msgid "Deco"
@@ -2874,11 +2797,7 @@ msgid ""
 "Brady-Bunch-era rec-room wall paneling. (Raven says: ``this screensaver is "
 "ugly enough to peel paint.'') Written by Jamie Zawinski, inspired by Java "
 "code by Michael Bayne."
 "Brady-Bunch-era rec-room wall paneling. (Raven says: ``this screensaver is "
 "ugly enough to peel paint.'') Written by Jamie Zawinski, inspired by Java "
 "code by Michael Bayne."
-msgstr ""
-"Subdivise et colore des rectangles de manière aléatoire. Ca ressemble Ã  une "
-"sorte de papier peint seventies. (Raven a dit : Â«Cet Ã©conomiseur d'écran est "
-"tellement moche qu'il fait craqueler la peinture.») Ã‰crit par Jamie "
-"Zawinski, inspiré par un code Java de Michael Bayne."
+msgstr "Subdivise et colore des rectangles de manière aléatoire. Ca ressemble Ã  une sorte de papier peint seventies. (Raven a dit : Â«Cet Ã©conomiseur d'écran est tellement moche qu'il fait craqueler la peinture.») Ã‰crit par Jamie Zawinski, inspiré par un code Java de Michael Bayne."
 
 #: hacks/config/deco.xml.h:11 hacks/config/rd-bomb.xml.h:23
 #: hacks/config/whirlygig.xml.h:20 hacks/config/xearth.xml.h:33
 
 #: hacks/config/deco.xml.h:11 hacks/config/rd-bomb.xml.h:23
 #: hacks/config/whirlygig.xml.h:20 hacks/config/xearth.xml.h:33
@@ -2896,11 +2815,7 @@ msgid ""
 "better if it was faster, but as far as I can tell, there is no way to make "
 "this be both: fast, and flicker-free. Yet another reason X sucks. Written by "
 "Jamie Zawinski."
 "better if it was faster, but as far as I can tell, there is no way to make "
 "this be both: fast, and flicker-free. Yet another reason X sucks. Written by "
 "Jamie Zawinski."
-msgstr ""
-"Dessine une séquence pulsatile d'étoiles, de cercles et de lignes. Il serait "
-"plus beau s'il Ã©tait plus rapide, mais Ã  ma connaissance, il est impossible "
-"de le rendre rapide sans scintillement. Encore un mauvais point pour X. "
-"Écrit par Jamie Zawinski."
+msgstr "Dessine une séquence pulsatile d'étoiles, de cercles et de lignes. Il serait plus beau s'il Ã©tait plus rapide, mais Ã  ma connaissance, il est impossible de le rendre rapide sans scintillement. Encore un mauvais point pour X. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/deluxe.xml.h:13
 msgid "Transparency"
 
 #: hacks/config/deluxe.xml.h:13
 msgid "Transparency"
@@ -2910,9 +2825,7 @@ msgstr "Transparence"
 msgid ""
 "A cellular automaton that starts with a random field, and organizes it into "
 "stripes and spirals. Written by David Bagley."
 msgid ""
 "A cellular automaton that starts with a random field, and organizes it into "
 "stripes and spirals. Written by David Bagley."
-msgstr ""
-"Automate cellulaire qui commence par un champ aléatoire et s'organise en "
-"bandes et spirales. Ã‰crit par David Bagley."
+msgstr "Automate cellulaire qui commence par un champ aléatoire et s'organise en bandes et spirales. Ã‰crit par David Bagley."
 
 #: hacks/config/demon.xml.h:3
 msgid "Demon"
 
 #: hacks/config/demon.xml.h:3
 msgid "Demon"
@@ -2930,9 +2843,7 @@ msgstr "Discret"
 msgid ""
 "More ``discrete map'' systems, including new variants of Hopalong and Julia, "
 "and a few others. Written by Tim Auckland."
 msgid ""
 "More ``discrete map'' systems, including new variants of Hopalong and Julia, "
 "and a few others. Written by Tim Auckland."
-msgstr ""
-"Autres systèmes de Â«cartes discrètes», comprenant de nouvelles variantes de "
-"Hopalong et Julia, ainsi que quelques autres. Ã‰crit par Tim Auckland."
+msgstr "Autres systèmes de Â«cartes discrètes», comprenant de nouvelles variantes de Hopalong et Julia, ainsi que quelques autres. Ã‰crit par Tim Auckland."
 
 #: hacks/config/distort.xml.h:1
 msgid "Black Hole"
 
 #: hacks/config/distort.xml.h:1
 msgid "Black Hole"
@@ -2971,9 +2882,7 @@ msgid ""
 "This hack grabs an image of the screen, and then lets a transparent lens "
 "wander around the screen, magnifying whatever is underneath. Written by "
 "Jonas Munsin."
 "This hack grabs an image of the screen, and then lets a transparent lens "
 "wander around the screen, magnifying whatever is underneath. Written by "
 "Jonas Munsin."
-msgstr ""
-"Ce hack capture une image de l'écran et laisse une lentille transparente s'y "
-"promener en agrandissant ce qu'elle réfléchit. Ã‰crit par Jonas Munsin."
+msgstr "Ce hack capture une image de l'écran et laisse une lentille transparente s'y promener en agrandissant ce qu'elle réfléchit. Ã‰crit par Jonas Munsin."
 
 #: hacks/config/distort.xml.h:16 hacks/config/moire.xml.h:12
 #: hacks/config/rd-bomb.xml.h:21 hacks/config/ripples.xml.h:15
 
 #: hacks/config/distort.xml.h:16 hacks/config/moire.xml.h:12
 #: hacks/config/rd-bomb.xml.h:21 hacks/config/ripples.xml.h:15
@@ -3003,9 +2912,7 @@ msgid ""
 "How could one possibly describe this except as ``drifting recursive fractal "
 "cosmic flames?'' Another fine hack from the Scott Draves collection of fine "
 "hacks."
 "How could one possibly describe this except as ``drifting recursive fractal "
 "cosmic flames?'' Another fine hack from the Scott Draves collection of fine "
 "hacks."
-msgstr ""
-"Comment décrire ceci sinon comme des Â«flammes cosmiques fractales récursives "
-"à la dérive ?» Un nouveau chouette hack de la collection de Scott Draves."
+msgstr "Comment décrire ceci sinon comme des Â«flammes cosmiques fractales récursives Ã  la dérive ?» Un nouveau chouette hack de la collection de Scott Draves."
 
 #: hacks/config/drift.xml.h:7
 msgid "Lissojous Figures"
 
 #: hacks/config/drift.xml.h:7
 msgid "Lissojous Figures"
@@ -3088,9 +2995,7 @@ msgstr "Dodge Viper (10 cylindres en V)"
 msgid ""
 "Draws a simple model of an engine that floats around the screen. Written by "
 "Ben Buxton and Ed Beroset."
 msgid ""
 "Draws a simple model of an engine that floats around the screen. Written by "
 "Ben Buxton and Ed Beroset."
-msgstr ""
-"Dessine un modèle simplifié de moteur qui flotte sur l'écran. Ã‰crit par Ben "
-"Buxton et Ed Beroset."
+msgstr "Dessine un modèle simplifié de moteur qui flotte sur l'écran. Ã‰crit par Ben Buxton et Ed Beroset."
 
 #: hacks/config/engine.xml.h:7
 msgid "Engine"
 
 #: hacks/config/engine.xml.h:7
 msgid "Engine"
@@ -3138,11 +3043,7 @@ msgid ""
 "That circle rotates around a point on the rim of another circle, and so on, "
 "several times. These were the basis for the pre-heliocentric model of "
 "planetary motion. Written by James Youngman."
 "That circle rotates around a point on the rim of another circle, and so on, "
 "several times. These were the basis for the pre-heliocentric model of "
 "planetary motion. Written by James Youngman."
-msgstr ""
-"Ce programme dessine le chemin tracé par un point sur le bord d'un cercle. "
-"Ce cercle pivote autour d'un point sur le pourtour d'un autre cercle, et "
-"ainsi de suite, plusieurs fois. Il s'agit de la base du modèle pré-"
-"héliocentrique de révolution planétaire. Ã‰crit par James Youngman."
+msgstr "Ce programme dessine le chemin tracé par un point sur le bord d'un cercle. Ce cercle pivote autour d'un point sur le pourtour d'un autre cercle, et ainsi de suite, plusieurs fois. Il s'agit de la base du modèle pré-héliocentrique de révolution planétaire. Ã‰crit par James Youngman."
 
 #: hacks/config/eruption.xml.h:1
 msgid "An exposive version of XFlame. By W.P. van Paassen."
 
 #: hacks/config/eruption.xml.h:1
 msgid "An exposive version of XFlame. By W.P. van Paassen."
@@ -3205,19 +3106,14 @@ msgstr "Puissance"
 msgid ""
 "Simulates two dimensional Incompressible Inviscid Fluid Flow. Written by "
 "Stephen Montgomery-Smith."
 msgid ""
 "Simulates two dimensional Incompressible Inviscid Fluid Flow. Written by "
 "Stephen Montgomery-Smith."
-msgstr ""
-"Simule un flux fluide non-visqueux incompressible bidimensionnel. Ã‰crit par "
-"Stephen Montgomery-Smith."
+msgstr "Simule un flux fluide non-visqueux incompressible bidimensionnel. Ã‰crit par Stephen Montgomery-Smith."
 
 #: hacks/config/extrusion.xml.h:1
 msgid ""
 "Draws various rotating extruded shapes that twist around, lengthen, and turn "
 "inside out. Created by David Konerding from the samples that come with the "
 "GL Extrusion library by Linas Vepstas."
 
 #: hacks/config/extrusion.xml.h:1
 msgid ""
 "Draws various rotating extruded shapes that twist around, lengthen, and turn "
 "inside out. Created by David Konerding from the samples that come with the "
 "GL Extrusion library by Linas Vepstas."
-msgstr ""
-"Dessine diverses formes extrudées en rotation qui se tournent, s'allongent "
-"et se retournent. Créé par David Konerding Ã  partir des exemples fournis "
-"avec la bibliothèque GL Extrusion de Linas Vepstas."
+msgstr "Dessine diverses formes extrudées en rotation qui se tournent, s'allongent et se retournent. Créé par David Konerding Ã  partir des exemples fournis avec la bibliothèque GL Extrusion de Linas Vepstas."
 
 #: hacks/config/extrusion.xml.h:2
 msgid "Extrusion"
 
 #: hacks/config/extrusion.xml.h:2
 msgid "Extrusion"
@@ -3272,9 +3168,7 @@ msgstr "Utiliser l'
 msgid ""
 "Draws what looks like a waving ribbon following a sinusoidal path. Written "
 "by Bas van Gaalen and Charles Vidal."
 msgid ""
 "Draws what looks like a waving ribbon following a sinusoidal path. Written "
 "by Bas van Gaalen and Charles Vidal."
-msgstr ""
-"Dessine une sorte de ruban ondulant suivant un chemin sinusoïdal. Ã‰crit par "
-"Bas van Gaalen et Charles Vidal."
+msgstr "Dessine une sorte de ruban ondulant suivant un chemin sinusoïdal. Ã‰crit par Bas van Gaalen et Charles Vidal."
 
 #: hacks/config/fadeplot.xml.h:3
 msgid "FadePlot"
 
 #: hacks/config/fadeplot.xml.h:3
 msgid "FadePlot"
@@ -3473,12 +3367,7 @@ msgid ""
 "displays either the current system name and OS type, or a picture of "
 "``Bob,'' but you can replace the text or the image with a command-line "
 "option. Written by Charles Vidal and Jamie Zawinski."
 "displays either the current system name and OS type, or a picture of "
 "``Bob,'' but you can replace the text or the image with a command-line "
 "option. Written by Charles Vidal and Jamie Zawinski."
-msgstr ""
-"Dessine un drapeau coloré qui ondule sur l'écran. Il peut contenir un texte "
-"et des images arbitraires. Par défaut, il affiche le nom système et le type "
-"de système d'exploitation en cours ou une photo de Â«Bob», mais vous pouvez "
-"remplacer le texte ou l'image Ã  l'aide d'une option de ligne de commande. "
-"Écrit par Charles Vidal et Jamie Zawinski."
+msgstr "Dessine un drapeau coloré qui ondule sur l'écran. Il peut contenir un texte et des images arbitraires. Par défaut, il affiche le nom système et le type de système d'exploitation en cours ou une photo de Â«Bob», mais vous pouvez remplacer le texte ou l'image Ã  l'aide d'une option de ligne de commande. Ã‰crit par Charles Vidal et Jamie Zawinski."
 
 #: hacks/config/flame.xml.h:1 hacks/config/jigsaw.xml.h:1
 #: hacks/config/maze.xml.h:1 hacks/config/rotzoomer.xml.h:1
 
 #: hacks/config/flame.xml.h:1 hacks/config/jigsaw.xml.h:1
 #: hacks/config/maze.xml.h:1 hacks/config/rotzoomer.xml.h:1
@@ -3540,9 +3429,7 @@ msgstr "Autoriser les attracteurs 2D"
 msgid ""
 "Another series of strange attractors: a flowing series of points, making "
 "strange rotational shapes. Written by Jeff Butterworth."
 msgid ""
 "Another series of strange attractors: a flowing series of points, making "
 "strange rotational shapes. Written by Jeff Butterworth."
-msgstr ""
-"Une autre série d'attracteurs Ã©tranges : une série flottante de points, "
-"constituant d'étranges formes rotatives. Ã‰crit par Jeff Butterworth."
+msgstr "Une autre série d'attracteurs Ã©tranges : une série flottante de points, constituant d'étranges formes rotatives. Ã‰crit par Jeff Butterworth."
 
 #: hacks/config/flow.xml.h:5
 msgid "Flow"
 
 #: hacks/config/flow.xml.h:5
 msgid "Flow"
@@ -3746,9 +3633,25 @@ msgstr "For
 msgid ""
 "This draws fractal trees. Written by Peter Baumung. Everybody loves "
 "fractals, right?"
 msgid ""
 "This draws fractal trees. Written by Peter Baumung. Everybody loves "
 "fractals, right?"
+msgstr "Dessine des arbres fractals. Ã‰crit par Peter Baumung. Tout le monde aime les fractales, n'est-ce pas ?"
+
+#: hacks/config/fuzzyflakes.xml.h:2
+msgid "Border Thickness"
+msgstr "Épaisseur de la bordure"
+
+#: hacks/config/fuzzyflakes.xml.h:5
+msgid ""
+"Falling pastel colored snowflake/flower shapes. Inspired by the credits of "
+"the anime \"Azumanga Daioh\". Written by Barry Dmytro."
+msgstr ""
+
+#: hacks/config/fuzzyflakes.xml.h:8
+msgid "FuzzyFlakes"
 msgstr ""
 msgstr ""
-"Dessine des arbres fractals. Ã‰crit par Peter Baumung. Tout le monde aime les "
-"fractales, n'est-ce pas ?"
+
+#: hacks/config/fuzzyflakes.xml.h:10 hacks/config/xspirograph.xml.h:4
+msgid "Layers"
+msgstr "Couches"
 
 #: hacks/config/galaxy.xml.h:4
 msgid "Galaxy"
 
 #: hacks/config/galaxy.xml.h:4
 msgid "Galaxy"
@@ -3768,10 +3671,7 @@ msgid ""
 "This draws spinning galaxies, which then collide and scatter their stars to "
 "the, uh, four winds or something. Originally an Amiga program by Uli "
 "Siegmund."
 "This draws spinning galaxies, which then collide and scatter their stars to "
 "the, uh, four winds or something. Originally an Amiga program by Uli "
 "Siegmund."
-msgstr ""
-"Dessine des galaxies tournoyantes, qui entrent en collision et dispersent "
-"leurs Ã©toiles aux quatre vents (en quelque sorte). Initialement un programme "
-"Amiga d'Uli Siegmund."
+msgstr "Dessine des galaxies tournoyantes, qui entrent en collision et dispersent leurs Ã©toiles aux quatre vents (en quelque sorte). Initialement un programme Amiga d'Uli Siegmund."
 
 #: hacks/config/gears.xml.h:3
 msgid "Gears"
 
 #: hacks/config/gears.xml.h:3
 msgid "Gears"
@@ -3790,9 +3690,7 @@ msgid ""
 "This draws sets of turning, interlocking gears, rotating in three "
 "dimensions. Another GL hack, by Danny Sung, Brian Paul, Ed Mackey, and Jamie "
 "Zawinski."
 "This draws sets of turning, interlocking gears, rotating in three "
 "dimensions. Another GL hack, by Danny Sung, Brian Paul, Ed Mackey, and Jamie "
 "Zawinski."
-msgstr ""
-"Dessine des engrenages qui s'emboîtent et pivotent en trois dimensions. Un "
-"autre hack GL de Danny Sung, Brian Paul, Ed Mackey et Jamie Zawinski."
+msgstr "Dessine des engrenages qui s'emboîtent et pivotent en trois dimensions. Un autre hack GL de Danny Sung, Brian Paul, Ed Mackey et Jamie Zawinski."
 
 #: hacks/config/gears.xml.h:10
 msgid "Three Gear System"
 
 #: hacks/config/gears.xml.h:10
 msgid "Three Gear System"
@@ -3806,9 +3704,7 @@ msgstr "
 msgid ""
 "Draws a rippling waves on a rotating wireframe grid, using GL. Written by "
 "Josiah Pease."
 msgid ""
 "Draws a rippling waves on a rotating wireframe grid, using GL. Written by "
 "Josiah Pease."
-msgstr ""
-"Dessine des vagues ondulantes sur une grille en rotation en utilisant GL. "
-"Écrit par Josiah Pease."
+msgstr "Dessine des vagues ondulantes sur une grille en rotation en utilisant GL. Ã‰crit par Josiah Pease."
 
 #: hacks/config/gflux.xml.h:7
 msgid "Flat Lighting"
 
 #: hacks/config/gflux.xml.h:7
 msgid "Flat Lighting"
@@ -3901,11 +3797,9 @@ msgstr "D
 msgid ""
 "Draws an animation of sprinkling fire-like 3D triangles in a landscape "
 "filled with trees. Requires OpenGL, and a machine with fast hardware support "
 msgid ""
 "Draws an animation of sprinkling fire-like 3D triangles in a landscape "
 "filled with trees. Requires OpenGL, and a machine with fast hardware support "
-"for texture maps. Written by Eric Lassauge &lt;lassauge@free.fr&gt;."
-msgstr ""
-"Dessine une animation d'un pseudo-feu avec des triangles 3D dans un paysage "
-"arboré. Nécessite OpenGL et une machine avec un support matériel puissant "
-"pour les textures. Ã‰crit par Eric Lassauge &lt;lassauge@free.fr&gt;."
+"for texture maps. Written by Eric Lassauge &lt;lassauge@users.sourceforge."
+"net&gt;."
+msgstr "Dessine une animation d'un pseudo-feu avec des triangles 3D dans un paysage arboré. Nécessite OpenGL et une machine avec un support matériel puissant pour les textures. Ã‰crit par Eric Lassauge &lt;lassauge@users.sourceforge.net&gt;."
 
 #: hacks/config/glforestfire.xml.h:5 hacks/config/glmatrix.xml.h:9
 msgid "Fog"
 
 #: hacks/config/glforestfire.xml.h:5 hacks/config/glmatrix.xml.h:9
 msgid "Fog"
@@ -3955,6 +3849,7 @@ msgid "Segmented"
 msgstr "Segmenté"
 
 #: hacks/config/glknots.xml.h:18 hacks/config/lavalite.xml.h:28
 msgstr "Segmenté"
 
 #: hacks/config/glknots.xml.h:18 hacks/config/lavalite.xml.h:28
+#: hacks/config/xmountains.xml.h:25
 msgid "Smooth"
 msgstr "Lisse"
 
 msgid "Smooth"
 msgstr "Lisse"
 
@@ -4016,11 +3911,7 @@ msgid ""
 "built-in image is a map of the earth (extracted from `xearth'), but you can "
 "wrap any texture around the sphere, e.g., the planetary textures that come "
 "with `ssystem'."
 "built-in image is a map of the earth (extracted from `xearth'), but you can "
 "wrap any texture around the sphere, e.g., the planetary textures that come "
 "with `ssystem'."
-msgstr ""
-"Dessine une planète qui rebondit dans l'espace. Ã‰crit par David Konerding. "
-"L'image intégrée est un planisphère (extrait de Â«xearth»), mais vous pouvez "
-"entourer la sphère d'une texture quelconque, p. ex., les textures "
-"planétaires fournies avec Â«ssystem»."
+msgstr "Dessine une planète qui rebondit dans l'espace. Ã‰crit par David Konerding. L'image intégrée est un planisphère (extrait de Â«xearth»), mais vous pouvez entourer la sphère d'une texture quelconque, p. ex., les textures planétaires fournies avec Â«ssystem»."
 
 #: hacks/config/glplanet.xml.h:3
 msgid "GLPlanet"
 
 #: hacks/config/glplanet.xml.h:3
 msgid "GLPlanet"
@@ -4098,9 +3989,7 @@ msgstr "Vitesse angulaire"
 msgid ""
 "Draws a simulation of the Rubik's Snake puzzle. Written by Jamie Wilkinson, "
 "Andrew Bennetts, and Peter Aylett."
 msgid ""
 "Draws a simulation of the Rubik's Snake puzzle. Written by Jamie Wilkinson, "
 "Andrew Bennetts, and Peter Aylett."
-msgstr ""
-"Dessine une simulation du serpent Rubik. Ã‰crit par Jamie Wilkinson, Andrew "
-"Bennetts et Peter Aylett."
+msgstr "Dessine une simulation du serpent Rubik. Ã‰crit par Jamie Wilkinson, Andrew Bennetts et Peter Aylett."
 
 #: hacks/config/glsnake.xml.h:7
 msgid "GlSnake"
 
 #: hacks/config/glsnake.xml.h:7
 msgid "GlSnake"
@@ -4134,9 +4023,7 @@ msgstr "Vitesse angulaire en Z"
 msgid ""
 "Displays a few lines of text spinning around in a solid 3D font. Written by "
 "Jamie Zawinski."
 msgid ""
 "Displays a few lines of text spinning around in a solid 3D font. Written by "
 "Jamie Zawinski."
-msgstr ""
-"Affiche quelques lignes de texte qui tournoient dans une police 3D unie. "
-"Écrit par Jamie Zawinski."
+msgstr "Affiche quelques lignes de texte qui tournoient dans une police 3D unie. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/gltext.xml.h:4
 msgid "GLText"
 
 #: hacks/config/gltext.xml.h:4
 msgid "GLText"
@@ -4193,15 +4080,7 @@ msgid ""
 "for this from a cool mouse pad I have, which achieves the same kind of "
 "effect in real life by having several layers plastic with colored oil "
 "between them. Written by Jamie Zawinski."
 "for this from a cool mouse pad I have, which achieves the same kind of "
 "effect in real life by having several layers plastic with colored oil "
 "between them. Written by Jamie Zawinski."
-msgstr ""
-"Dessine un ensemble de taches transparentes, animées, semblables Ã  des "
-"amibes. Les taches changent de forme en se déplaçant sur l'écran et sont "
-"translucides,  ce qui permet de voir les taches d'arrière-plan Ã  travers "
-"celles d'avant-plan. Lorsqu'une tache passe au-dessus d'une autre, leurs "
-"couleurs fusionnent. Ã‰crit par Jamie Zawinski. C'est un super tapis de "
-"souris qui m'en a donné l'idée. Il obtient le même type d'effet en Ã©tant "
-"composé de plusieurs couches de plastique séparées par  de l'huile colorée. "
-"Écrit par Jamie Zawinski."
+msgstr "Dessine un ensemble de taches transparentes, animées, semblables Ã  des amibes. Les taches changent de forme en se déplaçant sur l'écran et sont translucides,  ce qui permet de voir les taches d'arrière-plan Ã  travers celles d'avant-plan. Lorsqu'une tache passe au-dessus d'une autre, leurs couleurs fusionnent. Ã‰crit par Jamie Zawinski. C'est un super tapis de souris qui m'en a donné l'idée. Il obtient le même type d'effet en Ã©tant composé de plusieurs couches de plastique séparées par  de l'huile colorée. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/goop.xml.h:15
 msgid "Transparent Blobs"
 
 #: hacks/config/goop.xml.h:15
 msgid "Transparent Blobs"
@@ -4227,10 +4106,7 @@ msgstr "D
 msgid ""
 "This program draws a simple orbital simulation. If you turn on trails, it "
 "looks kind of like a cloud-chamber photograph. Written by Greg Bowering."
 msgid ""
 "This program draws a simple orbital simulation. If you turn on trails, it "
 "looks kind of like a cloud-chamber photograph. Written by Greg Bowering."
-msgstr ""
-"Ce programme crée une simple simulation orbitale. Si vous activez les "
-"traînées, il ressemble Ã  une sorte de photographie de chambre Ã  brouillard. "
-"Écrit par Greg Bowering."
+msgstr "Ce programme crée une simple simulation orbitale. Si vous activez les traînées, il ressemble Ã  une sorte de photographie de chambre Ã  brouillard. Ã‰crit par Greg Bowering."
 
 #: hacks/config/greynetic.xml.h:2
 msgid "Greynetic"
 
 #: hacks/config/greynetic.xml.h:2
 msgid "Greynetic"
@@ -4239,9 +4115,7 @@ msgstr "Rectangles de couleur"
 #: hacks/config/greynetic.xml.h:5
 msgid ""
 "This draws random colored and stippled rectangles. Written by Jamie Zawinski."
 #: hacks/config/greynetic.xml.h:5
 msgid ""
 "This draws random colored and stippled rectangles. Written by Jamie Zawinski."
-msgstr ""
-"Dessine des rectangles colorés et pointillés de manière aléatoire. Ã‰crit par "
-"Jamie Zawinski."
+msgstr "Dessine des rectangles colorés et pointillés de manière aléatoire. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/halftone.xml.h:1
 msgid "Delay (Large = low cpu load)"
 
 #: hacks/config/halftone.xml.h:1
 msgid "Delay (Large = low cpu load)"
@@ -4312,10 +4186,7 @@ msgid ""
 "This draws trippy psychedelic circular patterns that hurt to look at. It can "
 "also animate the control-points, but that takes a lot of CPU and bandwidth. "
 "Written by Jamie Zawinski."
 "This draws trippy psychedelic circular patterns that hurt to look at. It can "
 "also animate the control-points, but that takes a lot of CPU and bandwidth. "
 "Written by Jamie Zawinski."
-msgstr ""
-"Dessine des motifs circulaires psychédéliques qui font mal aux yeux. Il peut "
-"aussi animer les points de contrôle, mais cette option utilise beaucoup de "
-"ressources processeur et de bande passante. Ã‰crit par Jamie Zawinski."
+msgstr "Dessine des motifs circulaires psychédéliques qui font mal aux yeux. Il peut aussi animer les points de contrôle, mais cette option utilise beaucoup de ressources processeur et de bande passante. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/helix.xml.h:4
 msgid "Helix"
 
 #: hacks/config/helix.xml.h:4
 msgid "Helix"
@@ -4379,10 +4250,7 @@ msgstr "Sinus"
 msgid ""
 "This draws lacy fractal patterns, based on iteration in the imaginary plane, "
 "from a 1986 Scientific American article. Mostly written by Patrick Naughton."
 msgid ""
 "This draws lacy fractal patterns, based on iteration in the imaginary plane, "
 "from a 1986 Scientific American article. Mostly written by Patrick Naughton."
-msgstr ""
-"Dessine des motifs fractals dentelés, basés sur une itération sur le plan "
-"imaginaire, d'un article scientifique américain de 1986. Principalement "
-"écrit par Patrick Naughton."
+msgstr "Dessine des motifs fractals dentelés, basés sur une itération sur le plan imaginaire, d'un article scientifique américain de 1986. Principalement Ã©crit par Patrick Naughton."
 
 #: hacks/config/hyperball.xml.h:1 hacks/config/hypercube.xml.h:1
 msgid "Far"
 
 #: hacks/config/hyperball.xml.h:1 hacks/config/hypercube.xml.h:1
 msgid "Far"
@@ -4399,10 +4267,7 @@ msgid ""
 "analog to the dodecahedron. Technically, it is a \"120 cell polytope.\" "
 "Written by Joe Keane. See also the \"polytopes\" hack for a more general "
 "version of this using OpenGL."
 "analog to the dodecahedron. Technically, it is a \"120 cell polytope.\" "
 "Written by Joe Keane. See also the \"polytopes\" hack for a more general "
 "version of this using OpenGL."
-msgstr ""
-"L'hyperballe est Ã  l'hypercube ce que le dodécaèdre est au cube : il affiche "
-"une projection en 2D de la séquence d'objets 3D qui sont les projections de "
-"l'analogie 4D du dodécaèdre. Ã‰crit par Joe Keane."
+msgstr "L'hyperballe est Ã  l'hypercube ce que le dodécaèdre est au cube : il affiche une projection en 2D de la séquence d'objets 3D qui sont les projections de l'analogie 4D du dodécaèdre. Ã‰crit par Joe Keane."
 
 #: hacks/config/hyperball.xml.h:7 hacks/config/hypercube.xml.h:6
 msgid "Near"
 
 #: hacks/config/hyperball.xml.h:7 hacks/config/hypercube.xml.h:6
 msgid "Near"
@@ -4447,15 +4312,7 @@ msgid ""
 "brain will melt. Written by Joe Keane, Fritz Mueller, and Jamie Zawinski. "
 "See also the \"polytopes\" hack for a more general version of this using "
 "OpenGL."
 "brain will melt. Written by Joe Keane, Fritz Mueller, and Jamie Zawinski. "
 "See also the \"polytopes\" hack for a more general version of this using "
 "OpenGL."
-msgstr ""
-"Affiche des projections 2D de la séquence d'objets 3D qui sont les "
-"projections de l'analogie 4D du cube : un carré est composé de quatre "
-"lignes, chacune touchant les deux autres; un cube est composé de six "
-"carrés,  chacun touchant les quatre autres et un hypercube est composé de "
-"huit cubes,  chacun touchant les six autres. Pour visualiser la rotation "
-"plus facilement, il utilise une couleur différente pour les bords de chaque "
-"face. N'y réfléchissez pas trop longtemps, votre cerveau pourrait fondre. "
-"Écrit par Joe Keane, Fritz Mueller et Jamie Zawinski."
+msgstr "Affiche des projections 2D de la séquence d'objets 3D qui sont les projections de l'analogie 4D du cube : un carré est composé de quatre lignes, chacune touchant les deux autres; un cube est composé de six carrés,  chacun touchant les quatre autres et un hypercube est composé de huit cubes,  chacun touchant les six autres. Pour visualiser la rotation plus facilement, il utilise une couleur différente pour les bords de chaque face. N'y réfléchissez pas trop longtemps, votre cerveau pourrait fondre. Ã‰crit par Joe Keane, Fritz Mueller et Jamie Zawinski."
 
 #: hacks/config/hypertorus.xml.h:1 hacks/config/polytopes.xml.h:1
 msgid "-4.0"
 
 #: hacks/config/hypertorus.xml.h:1 hacks/config/polytopes.xml.h:1
 msgid "-4.0"
@@ -4558,9 +4415,7 @@ msgstr "IFS"
 msgid ""
 "This one draws spinning, colliding iterated-function-system images. Written "
 "by Massimino Pascal."
 msgid ""
 "This one draws spinning, colliding iterated-function-system images. Written "
 "by Massimino Pascal."
-msgstr ""
-"Dessine des images de système de fonctions itérées, qui tournent et entrent "
-"en collision. Ã‰crit par Massimino Pascal."
+msgstr "Dessine des images de système de fonctions itérées, qui tournent et entrent en collision. Ã‰crit par Massimino Pascal."
 
 #: hacks/config/imsmap.xml.h:3
 msgid "Brightness Gradients"
 
 #: hacks/config/imsmap.xml.h:3
 msgid "Brightness Gradients"
@@ -4590,18 +4445,7 @@ msgid ""
 "``brightness'' mode tends to yield cloudlike patterns, and the others tend "
 "to generate images that look like heat-maps or CAT-scans. Written by Juergen "
 "Nickelsen and Jamie Zawinski."
 "``brightness'' mode tends to yield cloudlike patterns, and the others tend "
 "to generate images that look like heat-maps or CAT-scans. Written by Juergen "
 "Nickelsen and Jamie Zawinski."
-msgstr ""
-"Génère des motifs nuageux aléatoires. Son apparence en mode monochrome et "
-"couleur est assez différente. L'idée de base consiste Ã  prendre quatre "
-"points sur le bord de l'image et Ã  leur attribuer une 'élévation' aléatoire. "
-"Ensuite, il trouve le point situé entre eux et lui attribue une valeur qui "
-"correspond Ã  la moyenne des quatre autres, plus un petit décalage aléatoire. "
-"La coloration s'effectue alors en fonction de l'élévation. La sélection de "
-"couleur est basée sur l'association de l'élévation Ã  la teinte, la "
-"saturation ou la luminosité, des valeurs aléatoires Ã©tant attribuées aux "
-"autres paramètres. Le mode ''luminosité'' tend Ã  produire des motifs nuageux "
-"et les autres, Ã  générer des images qui ressemblent Ã  des cartes thermiques "
-"ou des tomodensitogrammes. Ã‰crit par Juergen Nickelsen et Jamie Zawinski."
+msgstr "Génère des motifs nuageux aléatoires. Son apparence en mode monochrome et couleur est assez différente. L'idée de base consiste Ã  prendre quatre points sur le bord de l'image et Ã  leur attribuer une 'élévation' aléatoire. Ensuite, il trouve le point situé entre eux et lui attribue une valeur qui correspond Ã  la moyenne des quatre autres, plus un petit décalage aléatoire. La coloration s'effectue alors en fonction de l'élévation. La sélection de couleur est basée sur l'association de l'élévation Ã  la teinte, la saturation ou la luminosité, des valeurs aléatoires Ã©tant attribuées aux autres paramètres. Le mode ''luminosité'' tend Ã  produire des motifs nuageux et les autres, Ã  générer des images qui ressemblent Ã  des cartes thermiques ou des tomodensitogrammes. Ã‰crit par Juergen Nickelsen et Jamie Zawinski."
 
 #: hacks/config/interference.xml.h:1
 msgid "0"
 
 #: hacks/config/interference.xml.h:1
 msgid "0"
@@ -4620,11 +4464,7 @@ msgid ""
 "Another color-field hack, this one works by computing decaying sinusoidal "
 "waves, and allowing them to interfere with each other as their origins move. "
 "Written by Hannu Mallat."
 "Another color-field hack, this one works by computing decaying sinusoidal "
 "waves, and allowing them to interfere with each other as their origins move. "
 "Written by Hannu Mallat."
-msgstr ""
-"Un autre hack basé sur des champs de couleur, qui fonctionne en calculant "
-"des vagues sinusoïdales qui se désintègrent et en leur permettant "
-"d'interagir Ã  mesure du déplacement de leurs origines. Ã‰crit par Hannu "
-"Mallat."
+msgstr "Un autre hack basé sur des champs de couleur, qui fonctionne en calculant des vagues sinusoïdales qui se désintègrent et en leur permettant d'interagir Ã  mesure du déplacement de leurs origines. Ã‰crit par Hannu Mallat."
 
 #: hacks/config/interference.xml.h:9
 msgid "Hue"
 
 #: hacks/config/interference.xml.h:9
 msgid "Hue"
@@ -4691,7 +4531,8 @@ msgstr ""
 msgid "Spoooooky"
 msgstr ""
 
 msgid "Spoooooky"
 msgstr ""
 
-#: hacks/config/jigglypuff.xml.h:21 hacks/config/sballs.xml.h:16
+#: hacks/config/jigglypuff.xml.h:21 hacks/config/polyhedra.xml.h:155
+#: hacks/config/sballs.xml.h:16
 msgid "Tetrahedron"
 msgstr "Tétraèdre"
 
 msgid "Tetrahedron"
 msgstr "Tétraèdre"
 
@@ -4751,13 +4592,7 @@ msgid ""
 "I guess this is generally true...) When it is grabbing a video image, it is "
 "sometimes pretty hard to guess what the image is going to look like once the "
 "puzzle is solved. Written by Jamie Zawinski."
 "I guess this is generally true...) When it is grabbing a video image, it is "
 "sometimes pretty hard to guess what the image is going to look like once the "
 "puzzle is solved. Written by Jamie Zawinski."
-msgstr ""
-"Capture l'écran, le découpe en pièces de puzzle, qu'il mélange, puis remet "
-"en ordre. Fonctionne particulièrement bien lorsque l'image capturée provient "
-"d'un signal vidéo externe et non de l'écran (en fait, je crois que c'est "
-"généralement le cas...). Lorsqu'il capture une image vidéo, il est parfois "
-"assez difficile de deviner l'apparence de l'image  une fois le puzzle "
-"résolu. Ã‰crit par Jamie Zawinski."
+msgstr "Capture l'écran, le découpe en pièces de puzzle, qu'il mélange, puis remet en ordre. Fonctionne particulièrement bien lorsque l'image capturée provient d'un signal vidéo externe et non de l'écran (en fait, je crois que c'est généralement le cas...). Lorsqu'il capture une image vidéo, il est parfois assez difficile de deviner l'apparence de l'image  une fois le puzzle résolu. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/juggle.xml.h:1
 msgid "Checkered Balls"
 
 #: hacks/config/juggle.xml.h:1
 msgid "Checkered Balls"
@@ -4787,13 +4622,7 @@ msgid ""
 "interesting thing is that there is a small swinging dot passing in front of "
 "the image, which indicates the control point from which the rest of the "
 "image was generated. Written by Sean McCullough."
 "interesting thing is that there is a small swinging dot passing in front of "
 "the image, which indicates the control point from which the rest of the "
 "image was generated. Written by Sean McCullough."
-msgstr ""
-"Dessine des explorations tournoyantes et animées (distinguez-vous déjà un "
-"motif ?) de la courbe de Julia. Vous avez probablement déjà vu des images "
-"statiques de cette forme fractale, mais c'est aussi très sympa en forme "
-"animée. L'élément intéressant est un petit point animé qui passe devant "
-"l'image et qui indique le point de contrôle Ã  partir duquel le reste de "
-"l'image a Ã©té généré. Ã‰crit par Sean McCullough."
+msgstr "Dessine des explorations tournoyantes et animées (distinguez-vous déjà un motif ?) de la courbe de Julia. Vous avez probablement déjà vu des images statiques de cette forme fractale, mais c'est aussi très sympa en forme animée. L'élément intéressant est un petit point animé qui passe devant l'image et qui indique le point de contrôle Ã  partir duquel le reste de l'image a Ã©té généré. Ã‰crit par Sean McCullough."
 
 #: hacks/config/kaleidescope.xml.h:1
 msgid ""
 
 #: hacks/config/kaleidescope.xml.h:1
 msgid ""
@@ -4801,12 +4630,7 @@ msgid ""
 "motion of colored lines. This one is by Ron Tapia. The motion is nice, but I "
 "think it needs more solids, or perhaps just brighter colors. More variations "
 "in the rotational speed might help, too."
 "motion of colored lines. This one is by Ron Tapia. The motion is nice, but I "
 "think it needs more solids, or perhaps just brighter colors. More variations "
 "in the rotational speed might help, too."
-msgstr ""
-"Un autre clone d'un ancien même, principalement constitué de mouvements "
-"rotatifs frénétiques de lignes colorées. Par Ron Tapia. Les mouvements sont "
-"bien, mais je pense qu'il devrait comporter plus de couleurs unies ou "
-"simplement des couleurs plus vives. Davantage de variations de la vitesse de "
-"rotation seraient aussi appréciables."
+msgstr "Un autre clone d'un ancien même, principalement constitué de mouvements rotatifs frénétiques de lignes colorées. Par Ron Tapia. Les mouvements sont bien, mais je pense qu'il devrait comporter plus de couleurs unies ou simplement des couleurs plus vives. Davantage de variations de la vitesse de rotation seraient aussi appréciables."
 
 #: hacks/config/kaleidescope.xml.h:4
 msgid "Kaleidescope"
 
 #: hacks/config/kaleidescope.xml.h:4
 msgid "Kaleidescope"
@@ -4854,20 +4678,14 @@ msgstr "Al
 msgid ""
 "Spiraling, spinning, and very, very fast splashes of color rush toward the "
 "screen. Written by Teemu Suutari."
 msgid ""
 "Spiraling, spinning, and very, very fast splashes of color rush toward the "
 "screen. Written by Teemu Suutari."
-msgstr ""
-"Des taches de couleur très, très rapides foncent vers l'écran en tournoyant "
-"et en formant des spirales. Ã‰crit par Teemu Suutari."
+msgstr "Des taches de couleur très, très rapides foncent vers l'écran en tournoyant et en formant des spirales. Ã‰crit par Teemu Suutari."
 
 #: hacks/config/lament.xml.h:1
 msgid ""
 "Animates a simulation of Lemarchand's Box, repeatedly solving itself. "
 "Requires OpenGL, and a machine with fast hardware support for texture maps. "
 "Warning: occasionally opens doors. Written by Jamie Zawinski."
 
 #: hacks/config/lament.xml.h:1
 msgid ""
 "Animates a simulation of Lemarchand's Box, repeatedly solving itself. "
 "Requires OpenGL, and a machine with fast hardware support for texture maps. "
 "Warning: occasionally opens doors. Written by Jamie Zawinski."
-msgstr ""
-"Anime une simulation du cube de Lemarchand, qui se résout sans cesse. "
-"Nécessite OpenGL et une machine avec prise en charge matérielle rapide des "
-"mappes de texture. Attention : risque d'ouvrir des portes. Ã‰crit par Jamie "
-"Zawinski."
+msgstr "Anime une simulation du cube de Lemarchand, qui se résout sans cesse. Nécessite OpenGL et une machine avec prise en charge matérielle rapide des mappes de texture. Attention : risque d'ouvrir des portes. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/lament.xml.h:3
 msgid "Lament"
 
 #: hacks/config/lament.xml.h:3
 msgid "Lament"
@@ -4881,11 +4699,9 @@ msgstr "Laser"
 msgid ""
 "Moving radiating lines, that look vaguely like scanning laser beams. Written "
 "by Pascal Pensa. (Frankie say: relax.)"
 msgid ""
 "Moving radiating lines, that look vaguely like scanning laser beams. Written "
 "by Pascal Pensa. (Frankie say: relax.)"
-msgstr ""
-"Lignes de radiation animées, qui ressemblent vaguement Ã  des faisceaux "
-"laser . Ã‰crit par Pascal Pensa. (Frankie a dit : relax.)"
+msgstr "Lignes de radiation animées, qui ressemblent vaguement Ã  des faisceaux laser . Ã‰crit par Pascal Pensa. (Frankie a dit : relax.)"
 
 
-#: hacks/config/lavalite.xml.h:2
+#: hacks/config/lavalite.xml.h:2 hacks/config/xmountains.xml.h:2
 msgid "10"
 msgstr "10"
 
 msgid "10"
 msgstr "10"
 
@@ -4945,9 +4761,7 @@ msgstr "
 msgid ""
 "This one draws crackling fractal lightning bolts. It's simple, direct, and "
 "to the point. If only it had sound... Written by Keith Romberg."
 msgid ""
 "This one draws crackling fractal lightning bolts. It's simple, direct, and "
 "to the point. If only it had sound... Written by Keith Romberg."
-msgstr ""
-"Dessine des Ã©clairs fractals. C'est simple, direct et sans fioritures. Si "
-"seulement il avait du son... Ã‰crit par Keith Romberg."
+msgstr "Dessine des Ã©clairs fractals. C'est simple, direct et sans fioritures. Si seulement il avait du son... Ã‰crit par Keith Romberg."
 
 #: hacks/config/lisa.xml.h:4
 msgid "Lisa"
 
 #: hacks/config/lisa.xml.h:4
 msgid "Lisa"
@@ -4962,18 +4776,13 @@ msgid ""
 "This draws Lisajous loops, by Caleb Cullen. Remember that device they had "
 "the Phantom Zone prisoners in during their trial in Superman? I think that "
 "was one of these."
 "This draws Lisajous loops, by Caleb Cullen. Remember that device they had "
 "the Phantom Zone prisoners in during their trial in Superman? I think that "
 "was one of these."
-msgstr ""
-"Trace des boucles de Lissajous, par Caleb Cullen. Vous vous souvenez de "
-"l'appareil des prisonniers de la zone fantôme pendant leur procès dans "
-"Superman ? Je crois que c'était quelque chose comme Ã§a."
+msgstr "Trace des boucles de Lissajous, par Caleb Cullen. Vous vous souvenez de l'appareil des prisonniers de la zone fantôme pendant leur procès dans Superman ? Je crois que c'était quelque chose comme Ã§a."
 
 #: hacks/config/lissie.xml.h:1
 msgid ""
 "Another Lissajous figure. This one draws the progress of circular shapes "
 "along a path. Written by Alexander Jolk."
 
 #: hacks/config/lissie.xml.h:1
 msgid ""
 "Another Lissajous figure. This one draws the progress of circular shapes "
 "along a path. Written by Alexander Jolk."
-msgstr ""
-"Une autre figure de Lissajous. Elle trace la progression de formes "
-"circulaires le long d'un chemin. Ã‰crit par Alexander Jolk."
+msgstr "Une autre figure de Lissajous. Elle trace la progression de formes circulaires le long d'un chemin. Ã‰crit par Alexander Jolk."
 
 #: hacks/config/lissie.xml.h:5
 msgid "Lissie"
 
 #: hacks/config/lissie.xml.h:5
 msgid "Lissie"
@@ -5015,9 +4824,7 @@ msgstr "Figures ouvertes et ferm
 msgid ""
 "This generates random spline-ish line drawings and morphs between them. "
 "Written by Sverre H. Huseby and Glenn T. Lines."
 msgid ""
 "This generates random spline-ish line drawings and morphs between them. "
 "Written by Sverre H. Huseby and Glenn T. Lines."
-msgstr ""
-"Génère des dessins en trait aléatoires et crée des morphings. Ã‰crit par "
-"Sverre H. Huseby et Glenn T. Lines."
+msgstr "Génère des dessins en trait aléatoires et crée des morphings. Ã‰crit par Sverre H. Huseby et Glenn T. Lines."
 
 #: hacks/config/loop.xml.h:3
 msgid "Loop"
 
 #: hacks/config/loop.xml.h:3
 msgid "Loop"
@@ -5027,9 +4834,7 @@ msgstr "Boucles"
 msgid ""
 "This one produces loop-shaped colonies that spawn, age, and eventually die. "
 "Written by David Bagley."
 msgid ""
 "This one produces loop-shaped colonies that spawn, age, and eventually die. "
 "Written by David Bagley."
-msgstr ""
-"Produit des colonies en forme de boucles qui se reproduisent, vieillissent "
-"et meurent. Ã‰crit par David Bagley."
+msgstr "Produit des colonies en forme de boucles qui se reproduisent, vieillissent et meurent. Ã‰crit par David Bagley."
 
 #: hacks/config/maze.xml.h:3
 msgid "Backtracking Generator"
 
 #: hacks/config/maze.xml.h:3
 msgid "Backtracking Generator"
@@ -5080,11 +4885,7 @@ msgid ""
 "This is the ancient X maze demo, modified to work with xscreensaver. It "
 "generates a random maze, then solves it with visual feedback. Originally by "
 "Jim Randell; modified by a cast of thousands."
 "This is the ancient X maze demo, modified to work with xscreensaver. It "
 "generates a random maze, then solves it with visual feedback. Originally by "
 "Jim Randell; modified by a cast of thousands."
-msgstr ""
-"Il s'agit de l'ancienne démo du labyrinthe X, modifiée pour fonctionner avec "
-"xscreensaver. Elle génère un labyrinthe aléatoire, puis le résout avec un "
-"feedback visuel. Initialement par Jim Randell; modifié par des milliers de "
-"gens."
+msgstr "Il s'agit de l'ancienne démo du labyrinthe X, modifiée pour fonctionner avec xscreensaver. Elle génère un labyrinthe aléatoire, puis le résout avec un feedback visuel. Initialement par Jim Randell; modifié par des milliers de gens."
 
 #: hacks/config/menger.xml.h:6
 msgid "Menger"
 
 #: hacks/config/menger.xml.h:6
 msgid "Menger"
@@ -5095,10 +4896,7 @@ msgid ""
 "This draws the three-dimensional variant of the recursive Menger Gasket, a "
 "cube-based fractal object analagous to the Sierpinski Tetrahedron. Written "
 "by Jamie Zawinski."
 "This draws the three-dimensional variant of the recursive Menger Gasket, a "
 "cube-based fractal object analagous to the Sierpinski Tetrahedron. Written "
 "by Jamie Zawinski."
-msgstr ""
-"Dessine une variante tridimensionnelle du tamis récursif de Menger, un objet "
-"fractal cubique analogue au tétraèdre de Sierpinski. Ã‰crit par Jamie "
-"Zawinski."
+msgstr "Dessine une variante tridimensionnelle du tamis récursif de Menger, un objet fractal cubique analogue au tétraèdre de Sierpinski. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/metaballs.xml.h:1
 msgid "Big"
 
 #: hacks/config/metaballs.xml.h:1
 msgid "Big"
@@ -5211,9 +5009,7 @@ msgstr "XOR"
 msgid ""
 "Another M. C. Escher hack by Marcelo Vianna, this one draws ``Moebius Strip "
 "II,'' a GL image of ants walking along the surface of a moebius strip."
 msgid ""
 "Another M. C. Escher hack by Marcelo Vianna, this one draws ``Moebius Strip "
 "II,'' a GL image of ants walking along the surface of a moebius strip."
-msgstr ""
-"Un autre hack de M. C. Escher par Marcelo Vianna. Trace le Â«ruban de Moebius "
-"II», une image GL de fourmis marchant sur la surface d'un ruban de Moebius."
+msgstr "Un autre hack de M. C. Escher par Marcelo Vianna. Trace le Â«ruban de Moebius II», une image GL de fourmis marchant sur la surface d'un ruban de Moebius."
 
 #: hacks/config/moebius.xml.h:2
 msgid "Draw Ants"
 
 #: hacks/config/moebius.xml.h:2
 msgid "Draw Ants"
@@ -5252,14 +5048,7 @@ msgid ""
 "this one is that the heart of the display algorithm can be expressed with "
 "just a pair of loops and a handful of arithmetic, giving it a high ``display "
 "hack metric''."
 "this one is that the heart of the display algorithm can be expressed with "
 "just a pair of loops and a handful of arithmetic, giving it a high ``display "
 "hack metric''."
-msgstr ""
-"Trace de jolis motifs d'interférences circulaires. La plupart des cercles "
-"affichés ne sont pas rendus de manière explicite, mais s'affichent comme "
-"résultat d'interactions entre les autres pixels dessinés. Ã‰crit par Jamie "
-"Zawinski, sur la base d'un code Java de Michael Bayne. Comme il l'a "
-"souligné, la beauté de ce hackréside dans le fait que le coeur de "
-"l'algorithme d'affichage peut Ãªtre exprimé avec quelques boucles et "
-"opérations arithmétiques, ce qui lui assure une grande valeur esthétique."
+msgstr "Trace de jolis motifs d'interférences circulaires. La plupart des cercles affichés ne sont pas rendus de manière explicite, mais s'affichent comme résultat d'interactions entre les autres pixels dessinés. Ã‰crit par Jamie Zawinski, sur la base d'un code Java de Michael Bayne. Comme il l'a souligné, la beauté de ce hackréside dans le fait que le coeur de l'algorithme d'affichage peut Ãªtre exprimé avec quelques boucles et opérations arithmétiques, ce qui lui assure une grande valeur esthétique."
 
 #: hacks/config/moire2.xml.h:1
 msgid ""
 
 #: hacks/config/moire2.xml.h:1
 msgid ""
@@ -5268,12 +5057,7 @@ msgid ""
 "planes with various operations. The planes are moving independently of one "
 "another, causing the interference lines to ``spray.'' Written by Jamie "
 "Zawinski."
 "planes with various operations. The planes are moving independently of one "
 "another, causing the interference lines to ``spray.'' Written by Jamie "
 "Zawinski."
-msgstr ""
-"Un autre exemple de l'amusement qu'offrent les motifs d'interférences "
-"moirés; ce hack génère des champs de cercles ou ovales concentriques et "
-"associe les plans par différentes opérations. Les plans se déplacent "
-"indépendamment, ce qui entraîne un 'jaillissement' des lignes "
-"d'interférence. Ã‰crit par Jamie Zawinski."
+msgstr "Un autre exemple de l'amusement qu'offrent les motifs d'interférences moirés; ce hack génère des champs de cercles ou ovales concentriques et associe les plans par différentes opérations. Les plans se déplacent indépendamment, ce qui entraîne un 'jaillissement' des lignes d'interférence. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/moire2.xml.h:4
 msgid "Moire2"
 
 #: hacks/config/moire2.xml.h:4
 msgid "Moire2"
@@ -5300,10 +5084,7 @@ msgid ""
 "Draws several different representations of molecules. Some common molecules "
 "are built in, and it can also read PDB (Protein Data Base) files as input. "
 "Written by Jamie Zawinski."
 "Draws several different representations of molecules. Some common molecules "
 "are built in, and it can also read PDB (Protein Data Base) files as input. "
 "Written by Jamie Zawinski."
-msgstr ""
-"Dessine différentes représentations de molécules. Certaines molécules "
-"courantes sont intégrées et le programme peut lire des fichiers PDB (banque "
-"protéique). Ã‰crit par Jamie Zawinski."
+msgstr "Dessine différentes représentations de molécules. Certaines molécules courantes sont intégrées et le programme peut lire des fichiers PDB (banque protéique). Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/molecule.xml.h:11
 msgid "Label Atoms"
 
 #: hacks/config/molecule.xml.h:11
 msgid "Label Atoms"
@@ -5321,10 +5102,7 @@ msgstr "Fichier PDB ou r
 msgid ""
 "Another 3d shape-changing GL hack, by Marcelo Vianna. It has the same shiny-"
 "plastic feel as Superquadrics, as many computer-generated objects do..."
 msgid ""
 "Another 3d shape-changing GL hack, by Marcelo Vianna. It has the same shiny-"
 "plastic feel as Superquadrics, as many computer-generated objects do..."
-msgstr ""
-"Un autre hack GL 3D Ã  forme changeante, par Marcelo Vianna. Il a le même "
-"aspect plastique luisantque Superquadriques, comme beaucoup d'objets générés "
-"par ordinateur..."
+msgstr "Un autre hack GL 3D Ã  forme changeante, par Marcelo Vianna. Il a le même aspect plastique luisantque Superquadriques, comme beaucoup d'objets générés par ordinateur..."
 
 #: hacks/config/morph3d.xml.h:4
 msgid "Morph3D"
 
 #: hacks/config/morph3d.xml.h:4
 msgid "Morph3D"
@@ -5334,9 +5112,7 @@ msgstr "Morph3D"
 msgid ""
 "Generates random 3d plots that look vaguely mountainous. Written by Pascal "
 "Pensa."
 msgid ""
 "Generates random 3d plots that look vaguely mountainous. Written by Pascal "
 "Pensa."
-msgstr ""
-"Génère des graphiques 3D aléatoires d'apparence vaguement montagneuse. Ã‰crit "
-"par Pascal Pensa."
+msgstr "Génère des graphiques 3D aléatoires d'apparence vaguement montagneuse. Ã‰crit par Pascal Pensa."
 
 #: hacks/config/mountain.xml.h:5
 msgid "Mountain"
 
 #: hacks/config/mountain.xml.h:5
 msgid "Mountain"
@@ -5348,11 +5124,7 @@ msgid ""
 "Jackson Wright wrote the above PDP-1 code. That code still lives on in this "
 "screenhack, some 35 years later. The number of lines of enclosing code has "
 "increased substantially, however. This version is by Tim Showalter."
 "Jackson Wright wrote the above PDP-1 code. That code still lives on in this "
 "screenhack, some 35 years later. The number of lines of enclosing code has "
 "increased substantially, however. This version is by Tim Showalter."
-msgstr ""
-"DATAI 2 ADDB 1,2 ROTC 2,-22 XOR 1,2 JRST .-4 Comme signalé par HAKMEM, en "
-"1962, Jackson Wright a Ã©crit le code PDP-1 ci-dessus. Ce code est toujours "
-"présent dans ce hack, quelque 35 ans plus tard. Le nombre de lignes de code "
-"a toutefois considérablement augmenté. Cette version est de Tim Showalter."
+msgstr "DATAI 2 ADDB 1,2 ROTC 2,-22 XOR 1,2 JRST .-4 Comme signalé par HAKMEM, en 1962, Jackson Wright a Ã©crit le code PDP-1 ci-dessus. Ce code est toujours présent dans ce hack, quelque 35 ans plus tard. Le nombre de lignes de code a toutefois considérablement augmenté. Cette version est de Tim Showalter."
 
 #: hacks/config/munch.xml.h:5
 msgid "Munch"
 
 #: hacks/config/munch.xml.h:5
 msgid "Munch"
@@ -5378,9 +5150,7 @@ msgstr ""
 msgid ""
 "Draws different shapes composed of nervously vibrating squiggles, as if seen "
 "through a camera operated by a monkey on crack. By Dan Bornstein."
 msgid ""
 "Draws different shapes composed of nervously vibrating squiggles, as if seen "
 "through a camera operated by a monkey on crack. By Dan Bornstein."
-msgstr ""
-"Trace différentes formes composées de gribouillis vibrants et nerveux, comme "
-"s'ils Ã©taient filmés par un singe sous amphétamines. Par Dan Bornstein."
+msgstr "Trace différentes formes composées de gribouillis vibrants et nerveux, comme s'ils Ã©taient filmés par un singe sous amphétamines. Par Dan Bornstein."
 
 #: hacks/config/nerverot.xml.h:10
 msgid "Frequent"
 
 #: hacks/config/nerverot.xml.h:10
 msgid "Frequent"
@@ -5416,11 +5186,7 @@ msgid ""
 "things which he says can come from a file, or from an external program like "
 "`zippy' or `fortune'. This was extracted from `xnlock' by Dan Heller. "
 "Colorized by Jamie Zawinski."
 "things which he says can come from a file, or from an external program like "
 "`zippy' or `fortune'. This was extracted from `xnlock' by Dan Heller. "
 "Colorized by Jamie Zawinski."
-msgstr ""
-"Un petit bonhomme avec un gros nez se promène sur l'écran en disant des "
-"choses. Ce qu'il dit peut provenir d'un fichier ou d'un programme externe "
-"comme 'zippy' ou 'fortune'. Extrait de 'xnlock' par Dan Heller. Colorisé par "
-"Jamie Zawinski."
+msgstr "Un petit bonhomme avec un gros nez se promène sur l'écran en disant des choses. Ce qu'il dit peut provenir d'un fichier ou d'un programme externe comme 'zippy' ou 'fortune'. Extrait de 'xnlock' par Dan Heller. Colorisé par Jamie Zawinski."
 
 #: hacks/config/noseguy.xml.h:2
 msgid "Get Text from File"
 
 #: hacks/config/noseguy.xml.h:2
 msgid "Get Text from File"
@@ -5466,11 +5232,7 @@ msgid ""
 "complex polygon, and lets the X server do the bulk of the work by giving it "
 "an even/odd winding rule. Written by Dale Moore, based on some ancient PDP-"
 "11 code."
 "complex polygon, and lets the X server do the bulk of the work by giving it "
 "an even/odd winding rule. Written by Dale Moore, based on some ancient PDP-"
 "11 code."
-msgstr ""
-"Sorte de combinaison de spirographe/art pauvre. Génère un grand polygone "
-"complexe et laisse le serveur X faire le plus gros du travail en lui donnant "
-"une règle WIND_EVEN_ODD. Ã‰crit par Dale Moore, basé sur un ancien code PDP-"
-"11."
+msgstr "Sorte de combinaison de spirographe/art pauvre. Génère un grand polygone complexe et laisse le serveur X faire le plus gros du travail en lui donnant une règle WIND_EVEN_ODD. Ã‰crit par Dale Moore, basé sur un ancien code PDP-11."
 
 #: hacks/config/penetrate.xml.h:1
 msgid "Always play well"
 
 #: hacks/config/penetrate.xml.h:1
 msgid "Always play well"
@@ -5492,9 +5254,7 @@ msgstr "Mal commencer, mais apprendre"
 msgid ""
 "This hack simulates the classic arcade game Missile Command. Written by Adam "
 "Miller."
 msgid ""
 "This hack simulates the classic arcade game Missile Command. Written by Adam "
 "Miller."
-msgstr ""
-"Ce hack simule le jeu d'arcade classique Missile Command. Ã‰crit par Adam "
-"Miller."
+msgstr "Ce hack simule le jeu d'arcade classique Missile Command. Ã‰crit par Adam Miller."
 
 #: hacks/config/penrose.xml.h:3
 msgid "Draw Ammann Lines"
 
 #: hacks/config/penrose.xml.h:3
 msgid "Draw Ammann Lines"
@@ -5513,19 +5273,7 @@ msgid ""
 "population of Great Britain being invited by a multinational to wipe their "
 "bottoms on what appears to be the work of a Knight of the Realm, then a last "
 "stand must be taken.'' As reported by News of the Weird #491, 4-jul-1997."
 "population of Great Britain being invited by a multinational to wipe their "
 "bottoms on what appears to be the work of a Knight of the Realm, then a last "
 "stand must be taken.'' As reported by News of the Weird #491, 4-jul-1997."
-msgstr ""
-"Dessine des carreaux quasi-périodiques; pensez aux implications pour la "
-"technologie moderne du formica. Ã‰crit par Timo Korvola. En avril 1997, Sir "
-"Roger Penrose, un professeur de math britannique qui a travaillé avec "
-"Stephen Hawking sur des sujets tels que la relativité, les trous noirs et "
-"l'existence d'un début du temps, a intenté un procès en violation de "
-"copyright Ã  l'encontre de Kimberly-Clark Corporation, qui, selon Penrose, a "
-"copié un motif qu'il avait créé (qui démontrait qu'un ''motif non répétitif "
-"pouvait exister dans la nature'') pour son papier toilette Kleenex Ã  "
-"carreaux. Penrose a déclaré qu'il n'aimait pas les litiges, mais que ''Si la "
-"population de Grande-Bretagne est invitée par une multinationale Ã  s'essuyer "
-"les fesses sur ce qui semble Ãªtre l'oeuvre d'un Chevalier du Royaume, des "
-"mesures s'imposent.'' Rapporté par News of the Weird n°491, 4-jul-1997."
+msgstr "Dessine des carreaux quasi-périodiques; pensez aux implications pour la technologie moderne du formica. Ã‰crit par Timo Korvola. En avril 1997, Sir Roger Penrose, un professeur de math britannique qui a travaillé avec Stephen Hawking sur des sujets tels que la relativité, les trous noirs et l'existence d'un début du temps, a intenté un procès en violation de copyright Ã  l'encontre de Kimberly-Clark Corporation, qui, selon Penrose, a copié un motif qu'il avait créé (qui démontrait qu'un ''motif non répétitif pouvait exister dans la nature'') pour son papier toilette Kleenex Ã  carreaux. Penrose a déclaré qu'il n'aimait pas les litiges, mais que ''Si la population de Grande-Bretagne est invitée par une multinationale Ã  s'essuyer les fesses sur ce qui semble Ãªtre l'oeuvre d'un Chevalier du Royaume, des mesures s'imposent.'' Rapporté par News of the Weird n°491, 4-jul-1997."
 
 #: hacks/config/penrose.xml.h:9
 msgid "Penrose"
 
 #: hacks/config/penrose.xml.h:9
 msgid "Penrose"
@@ -5600,24 +5348,18 @@ msgid ""
 "This simulates colonies of mold growing in a petri dish. Growing colored "
 "circles overlap and leave spiral interference in their wake. Written by Dan "
 "Bornstein."
 "This simulates colonies of mold growing in a petri dish. Growing colored "
 "circles overlap and leave spiral interference in their wake. Written by Dan "
 "Bornstein."
-msgstr ""
-"Simule des colonies de moisissures qui poussent dans une boîte de Petri. Des "
-"cercles colorés grandissent, se chevauchent et laissent des interférences en "
-"spirale Ã  leur suite. Ã‰crit par Dan Bornstein."
+msgstr "Simule des colonies de moisissures qui poussent dans une boîte de Petri. Des cercles colorés grandissent, se chevauchent et laissent des interférences en spirale Ã  leur suite. Ã‰crit par Dan Bornstein."
 
 #: hacks/config/phosphor.xml.h:1
 msgid ""
 "Draws a simulation of an old terminal, with large pixels and long-sustain "
 "phosphor. It can run any program as a source of the text it displays. "
 "Written by Jamie Zawinski."
 
 #: hacks/config/phosphor.xml.h:1
 msgid ""
 "Draws a simulation of an old terminal, with large pixels and long-sustain "
 "phosphor. It can run any program as a source of the text it displays. "
 "Written by Jamie Zawinski."
-msgstr ""
-"Dessine une simulation d'un vieux terminal, avec de grands pixels et du "
-"phosphore de longue durée. Il peut exécuter n'importe quel programme comme "
-"source du texte qu'il affiche. Ã‰crit par Jamie Zawinski."
+msgstr "Dessine une simulation d'un vieux terminal, avec de grands pixels et du phosphore de longue durée. Il peut exécuter n'importe quel programme comme source du texte qu'il affiche. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/phosphor.xml.h:2
 msgid "Dump pipe"
 
 #: hacks/config/phosphor.xml.h:2
 msgid "Dump pipe"
-msgstr ""
+msgstr "Pipe simple"
 
 #: hacks/config/phosphor.xml.h:5
 msgid "Phosphor"
 
 #: hacks/config/phosphor.xml.h:5
 msgid "Phosphor"
@@ -5677,9 +5419,7 @@ msgstr "Gadgets"
 msgid ""
 "If you've ever been in the same room with a Windows NT machine, you've "
 "probably seen this GL hack. This version is by Marcelo Vianna."
 msgid ""
 "If you've ever been in the same room with a Windows NT machine, you've "
 "probably seen this GL hack. This version is by Marcelo Vianna."
-msgstr ""
-"Si vous avez déjà croisé la route d'une machine Windows NT, vous avez "
-"certainement déjà vu ce hack GL. Cette version est de Marcelo Vianna."
+msgstr "Si vous avez déjà croisé la route d'une machine Windows NT, vous avez certainement déjà vu ce hack GL. Cette version est de Marcelo Vianna."
 
 #: hacks/config/pipes.xml.h:9 hacks/config/wormhole.xml.h:4
 msgid "Lots"
 
 #: hacks/config/pipes.xml.h:9 hacks/config/wormhole.xml.h:4
 msgid "Lots"
@@ -5701,121 +5441,753 @@ msgstr "Canalisations"
 msgid "System Length"
 msgstr "Longueur du système"
 
 msgid "System Length"
 msgstr "Longueur du système"
 
-#: hacks/config/polyominoes.xml.h:3
-msgid "Identical Pieces"
-msgstr "Pièces identiques"
+#: hacks/config/polyhedra.xml.h:2
+msgid "30 seconds"
+msgstr "30 secondes"
 
 
-#: hacks/config/polyominoes.xml.h:7
-msgid "Polyominoes"
-msgstr "Polyominos"
+#: hacks/config/polyhedra.xml.h:4 hacks/config/sballs.xml.h:1
+msgid "Cube"
+msgstr "Cube"
 
 
-#: hacks/config/polyominoes.xml.h:8
-msgid ""
-"Repeatedly attempts to completely fill a rectangle with irregularly-shaped "
-"puzzle pieces. Written by Stephen Montgomery-Smith."
+#: hacks/config/polyhedra.xml.h:5
+msgid "Cubitruncated Cuboctahedron"
 msgstr ""
 msgstr ""
-"Tente sans cesse de remplir entièrement un rectangle Ã  l'aide de pièces de "
-"puzzle de formes irrégulières. Ã‰crit par Stephen Montgomery-Smith."
-
-#: hacks/config/polytopes.xml.h:2
-msgid "120-Cell"
-msgstr "120 cellules"
-
-#: hacks/config/polytopes.xml.h:3
-msgid "16-Cell (Hyper-Octahedron)"
-msgstr "16 cellules (Hyper-Octahèdre)"
 
 
-#: hacks/config/polytopes.xml.h:4
-msgid "24-Cell"
-msgstr "24 cellules"
+#: hacks/config/polyhedra.xml.h:6
+msgid "Cuboctahedron"
+msgstr ""
 
 
-#: hacks/config/polytopes.xml.h:6
-msgid "5-Cell (Hyper-Tetrahedron)"
-msgstr "5 cellules (Hyper-Tétrahèdre)"
+#: hacks/config/polyhedra.xml.h:7
+msgid "Cubohemioctahedron"
+msgstr ""
 
 
-#: hacks/config/polytopes.xml.h:7
-msgid "600-Cell"
-msgstr "600 cellules"
+#: hacks/config/polyhedra.xml.h:8
+msgid "Deltoidal Hexecontahedron"
+msgstr ""
 
 
-#: hacks/config/polytopes.xml.h:8
-msgid "8-Cell (Hypercube / Tesseract)"
-msgstr "8 cellules (Hypercube / Tesseract)"
+#: hacks/config/polyhedra.xml.h:9
+msgid "Deltoidal Icositetrahedron"
+msgstr ""
 
 
-#: hacks/config/polytopes.xml.h:9
-msgid "Colors By 4D Depth"
-msgstr "Couleur en profondeur 4D"
+#: hacks/config/polyhedra.xml.h:10
+msgid "Disdyakisdodecahedron"
+msgstr ""
 
 
-#: hacks/config/polytopes.xml.h:17
-msgid "Regular 4D Polytopes"
-msgstr "Polytupes 4D réguliers"
+#: hacks/config/polyhedra.xml.h:11
+msgid "Disdyakistriacontahedron"
+msgstr ""
 
 
-#: hacks/config/polytopes.xml.h:19
-msgid "Single Color"
-msgstr "Couleur unique"
+#: hacks/config/polyhedra.xml.h:12
+msgid "Display Random Polyhedron"
+msgstr ""
 
 
-#: hacks/config/polytopes.xml.h:22
+#: hacks/config/polyhedra.xml.h:13
 msgid ""
 msgid ""
-"This program shows one of the six regular 4D polytopes rotating in 4D. "
-"Written by Carsten Steger, inspired by H.S.M Coxeter's book \"Regular "
-"Polytopes\", 3rd Edition, Dover Publications, Inc., 1973, and Thomas "
-"Banchoff's book \"Beyond the Third Dimension: Geometry, Computer Graphics, "
-"and Higher Dimensions\", Scientific American Library, 1990."
+"Displays different 3D solids and some information about each. A new solid is "
+"chosen every few seconds. There are 75 uniform polyhedra, plus 5 inifite "
+"sets of prisms and antiprisms; including their duals brings the total to "
+"160. Written by Dr. Zvi Har'El and Jamie Zawinski."
 msgstr ""
 
 msgstr ""
 
-#: hacks/config/pong.xml.h:2
-msgid "Pong"
-msgstr "Pong"
+#: hacks/config/polyhedra.xml.h:14
+msgid "Ditrigonal Dodecadodecahedron"
+msgstr ""
 
 
-#: hacks/config/pong.xml.h:6
-msgid ""
-"The pong program simulates an ancient Pong home video game, as well as "
-"various artifacts from displaying it on a color TV set. Written by Jeremy "
-"English and Trevor Blackwell."
+#: hacks/config/polyhedra.xml.h:15 hacks/config/sballs.xml.h:2
+msgid "Dodecahedron"
+msgstr "Dodécaèdre"
+
+#: hacks/config/polyhedra.xml.h:19
+msgid "Great Cubicuboctahedron"
 msgstr ""
 
 msgstr ""
 
-#: hacks/config/popsquares.xml.h:1
-msgid "Border"
-msgstr "Bordure"
+#: hacks/config/polyhedra.xml.h:20
+msgid "Great Deltoidal Hexecontahedron"
+msgstr ""
 
 
-#: hacks/config/popsquares.xml.h:2
-msgid "End color"
-msgstr "Couleur de fin"
+#: hacks/config/polyhedra.xml.h:21
+msgid "Great Deltoidal Icositetrahedron"
+msgstr ""
 
 
-#: hacks/config/popsquares.xml.h:7
-msgid "Start color"
-msgstr "Couleur de début"
+#: hacks/config/polyhedra.xml.h:22
+msgid "Great Dirhombicosidodecacron"
+msgstr ""
 
 
-#: hacks/config/popsquares.xml.h:8
-msgid "Subdivision"
-msgstr "Sub-division"
+#: hacks/config/polyhedra.xml.h:23
+msgid "Great Dirhombicosidodecahedron"
+msgstr ""
 
 
-#: hacks/config/popsquares.xml.h:9
-msgid ""
-"This draws a pop-art-ish looking grid of pulsing colors. By Levi Burton."
+#: hacks/config/polyhedra.xml.h:24
+msgid "Great Disdyakisdodecahedron"
 msgstr ""
 
 msgstr ""
 
-#: hacks/config/popsquares.xml.h:10
-msgid "Twitch"
-msgstr "Mouvement compulsif"
+#: hacks/config/polyhedra.xml.h:25
+msgid "Great Disdyakistriacontahedron"
+msgstr ""
 
 
-#: hacks/config/popsquares.xml.h:11
-msgid "popsquares"
-msgstr "Carrés pop-art"
+#: hacks/config/polyhedra.xml.h:26
+msgid "Great Ditrigonal Dodecacronic Hexecontahedron"
+msgstr ""
 
 
-#: hacks/config/pulsar.xml.h:1
-msgid "Anti-alias Lines"
-msgstr "Lignes anti-aliasées"
+#: hacks/config/polyhedra.xml.h:27
+msgid "Great Ditrigonal Dodecicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:28
+msgid "Great Ditrigonal Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:29
+msgid "Great Dodecacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:30
+msgid "Great Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:31
+msgid "Great Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:32
+msgid "Great Dodecahemicosacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:33
+msgid "Great Dodecahemicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:34
+msgid "Great Dodecahemidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:35
+msgid "Great Dodecahemidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:36
+msgid "Great Dodecicosacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:37
+msgid "Great Dodecicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:38
+msgid "Great Dodecicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:39
+msgid "Great Hexacronic Icositetrahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:40
+msgid "Great Hexagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:41
+msgid "Great Icosacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:42
+msgid "Great Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:43
+msgid "Great Icosicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:44
+msgid "Great Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:45
+msgid "Great Icosihemidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:46
+msgid "Great Icosihemidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:47
+msgid "Great Inverted Pentagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:48
+msgid "Great Inverted Snub Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:49
+msgid "Great Pentagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:50
+msgid "Great Pentagrammic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:51
+msgid "Great Pentakisdodekahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:52
+msgid "Great Retrosnub Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:53
+msgid "Great Rhombic Triacontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:54
+msgid "Great Rhombicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:55
+msgid "Great Rhombicuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:56
+msgid "Great Rhombidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:57
+msgid "Great Rhombidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:58
+msgid "Great Rhombihexacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:59
+msgid "Great Rhombihexahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:60
+msgid "Great Snub Dodecicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:61
+msgid "Great Snub Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:62
+msgid "Great Stellapentakisdodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:63
+msgid "Great Stellated Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:64
+msgid "Great Stellated Truncated Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:65
+msgid "Great Triakisicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:66
+msgid "Great Triakisoctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:67
+msgid "Great Triambic Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:68
+msgid "Great Truncated Cuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:69
+msgid "Great Truncated Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:70
+msgid "Great Truncated Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:71
+msgid "Hexahemioctacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:72 hacks/config/sballs.xml.h:5
+msgid "Icosahedron"
+msgstr "Icosaèdre"
+
+#: hacks/config/polyhedra.xml.h:73
+msgid "Icosidodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:74
+msgid "Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:75
+msgid "Icositruncated Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:76
+msgid "Inverted Snub Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:77
+msgid "Medial Deltoidal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:78
+msgid "Medial Disdyakistriacontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:79
+msgid "Medial Hexagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:80
+msgid "Medial Icosacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:81
+msgid "Medial Inverted Pentagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:82
+msgid "Medial Pentagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:83
+msgid "Medial Rhombic Triacontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:84
+msgid "Medial Triambic Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:86 hacks/config/sballs.xml.h:7
+msgid "Octahedron"
+msgstr "Octaèdre"
+
+#: hacks/config/polyhedra.xml.h:87
+msgid "Octahemioctacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:88
+msgid "Octahemioctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:89
+msgid "Pentagonal Antiprism"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:90
+msgid "Pentagonal Deltohedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:91
+msgid "Pentagonal Dipyramid"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:92
+msgid "Pentagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:93
+msgid "Pentagonal Icositetrahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:94
+msgid "Pentagonal Prism"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:95
+msgid "Pentagrammic Antiprism"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:96
+msgid "Pentagrammic Concave Deltohedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:97
+msgid "Pentagrammic Crossed Antiprism"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:98
+msgid "Pentagrammic Deltohedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:99
+msgid "Pentagrammic Dipyramid"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:100
+msgid "Pentagrammic Prism"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:101
+msgid "Pentakisdodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:102
+msgid "Polyhedra"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:103
+msgid "Rhombic Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:104
+msgid "Rhombic Triacontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:105
+msgid "Rhombicosacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:106
+msgid "Rhombicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:107
+msgid "Rhombicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:108
+msgid "Rhombicuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:109
+msgid "Rhombidodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:117
+msgid "Show Description"
+msgstr "Affiche la description"
+
+#: hacks/config/polyhedra.xml.h:120
+msgid "Small Cubicuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:121
+msgid "Small Ditrigonal Dodecacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:122
+msgid "Small Ditrigonal Dodecicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:123
+msgid "Small Ditrigonal Icosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:124
+msgid "Small Dodecacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:125
+msgid "Small Dodecahemicosacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:126
+msgid "Small Dodecahemicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:127
+msgid "Small Dodecahemidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:128
+msgid "Small Dodecahemidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:129
+msgid "Small Dodecicosacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:130
+msgid "Small Dodecicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:131
+msgid "Small Dodecicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:132
+msgid "Small Hexacronic Icositetrahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:133
+msgid "Small Hexagonal Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:134
+msgid "Small Hexagrammic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:135
+msgid "Small Icosacronic Hexecontahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:136
+msgid "Small Icosicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:137
+msgid "Small Icosihemidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:138
+msgid "Small Icosihemidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:139
+msgid "Small Retrosnub Icosicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:140
+msgid "Small Rhombidodecacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:141
+msgid "Small Rhombidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:142
+msgid "Small Rhombihexacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:143
+msgid "Small Rhombihexahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:144
+msgid "Small Snub Icosicosidodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:145
+msgid "Small Stellapentakisdodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:146
+msgid "Small Stellated Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:147
+msgid "Small Stellated Truncated Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:148
+msgid "Small Triambic Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:149
+msgid "Snub Cube"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:150
+msgid "Snub Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:151
+msgid "Snub Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:152
+msgid "Snub Icosidodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:153
+msgid "Stellated Truncated Hexahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:154
+msgid "Tetradyakishexahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:156
+msgid "Tetrahemihexacron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:157
+msgid "Tetrahemihexahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:158
+msgid "Tetrakishexahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:159
+msgid "Triakisicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:160
+msgid "Triakisoctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:161
+msgid "Triakistetrahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:162
+msgid "Tridyakisicosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:163
+msgid "Truncated Cube"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:164
+msgid "Truncated Cuboctahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:165
+msgid "Truncated Dodecadodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:166
+msgid "Truncated Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:167
+msgid "Truncated Great Dodecahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:168
+msgid "Truncated Icosahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:169
+msgid "Truncated Icosidodechedon"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:170
+msgid "Truncated Octahedron"
+msgstr ""
+
+#: hacks/config/polyhedra.xml.h:171
+msgid "Truncated Tetrahedron"
+msgstr ""
+
+#: hacks/config/polyominoes.xml.h:3
+msgid "Identical Pieces"
+msgstr "Pièces identiques"
+
+#: hacks/config/polyominoes.xml.h:7
+msgid "Polyominoes"
+msgstr "Polyominos"
+
+#: hacks/config/polyominoes.xml.h:8
+msgid ""
+"Repeatedly attempts to completely fill a rectangle with irregularly-shaped "
+"puzzle pieces. Written by Stephen Montgomery-Smith."
+msgstr "Tente sans cesse de remplir entièrement un rectangle Ã  l'aide de pièces de puzzle de formes irrégulières. Ã‰crit par Stephen Montgomery-Smith."
+
+#: hacks/config/polytopes.xml.h:2
+msgid "120-Cell"
+msgstr "120 cellules"
+
+#: hacks/config/polytopes.xml.h:3
+msgid "16-Cell (Hyper-Octahedron)"
+msgstr "16 cellules (Hyper-Octahèdre)"
+
+#: hacks/config/polytopes.xml.h:4
+msgid "24-Cell"
+msgstr "24 cellules"
+
+#: hacks/config/polytopes.xml.h:6
+msgid "5-Cell (Hyper-Tetrahedron)"
+msgstr "5 cellules (Hyper-Tétrahèdre)"
+
+#: hacks/config/polytopes.xml.h:7
+msgid "600-Cell"
+msgstr "600 cellules"
+
+#: hacks/config/polytopes.xml.h:8
+msgid "8-Cell (Hypercube / Tesseract)"
+msgstr "8 cellules (Hypercube / Tesseract)"
+
+#: hacks/config/polytopes.xml.h:9
+msgid "Colors By 4D Depth"
+msgstr "Couleur en profondeur 4D"
+
+#: hacks/config/polytopes.xml.h:17
+msgid "Regular 4D Polytopes"
+msgstr "Polytupes 4D réguliers"
+
+#: hacks/config/polytopes.xml.h:19
+msgid "Single Color"
+msgstr "Couleur unique"
+
+#: hacks/config/polytopes.xml.h:22
+msgid ""
+"This program shows one of the six regular 4D polytopes rotating in 4D. "
+"Written by Carsten Steger, inspired by H.S.M Coxeter's book \"Regular "
+"Polytopes\", 3rd Edition, Dover Publications, Inc., 1973, and Thomas "
+"Banchoff's book \"Beyond the Third Dimension: Geometry, Computer Graphics, "
+"and Higher Dimensions\", Scientific American Library, 1990."
+msgstr ""
+
+#: hacks/config/pong.xml.h:2
+msgid "Pong"
+msgstr "Pong"
+
+#: hacks/config/pong.xml.h:6
+msgid ""
+"The pong program simulates an ancient Pong home video game, as well as "
+"various artifacts from displaying it on a color TV set. Written by Jeremy "
+"English and Trevor Blackwell."
+msgstr ""
+
+#: hacks/config/popsquares.xml.h:1
+msgid "Border"
+msgstr "Bordure"
+
+#: hacks/config/popsquares.xml.h:2
+msgid "End color"
+msgstr "Couleur de fin"
+
+#: hacks/config/popsquares.xml.h:7
+msgid "Start color"
+msgstr "Couleur de début"
+
+#: hacks/config/popsquares.xml.h:8
+msgid "Subdivision"
+msgstr "Sub-division"
+
+#: hacks/config/popsquares.xml.h:9
+msgid ""
+"This draws a pop-art-ish looking grid of pulsing colors. By Levi Burton."
+msgstr ""
+
+#: hacks/config/popsquares.xml.h:10
+msgid "Twitch"
+msgstr "Mouvement compulsif"
+
+#: hacks/config/popsquares.xml.h:11
+msgid "popsquares"
+msgstr "Carrés pop-art"
+
+#: hacks/config/providence.xml.h:1
+msgid "Draw Eye"
+msgstr "Dessiner des yeux"
+
+#: hacks/config/providence.xml.h:3
+msgid "Providence"
+msgstr "Providence"
+
+#: hacks/config/providence.xml.h:7
+msgid ""
+"The providence code displays an eye, shrouded in glory, set upon the base of "
+"a pyramid. Written by Blair Tennessy."
+msgstr ""
+
+#: hacks/config/pulsar.xml.h:1
+msgid "Anti-alias Lines"
+msgstr "Lignes anti-aliasées"
 
 #: hacks/config/pulsar.xml.h:3
 msgid ""
 "Draws some intersecting planes, making use of alpha blending, fog, textures, "
 "and mipmaps, plus a ``frames per second'' meter so that you can tell how "
 "fast your graphics card is... Requires OpenGL. Written by David Konerding."
 
 #: hacks/config/pulsar.xml.h:3
 msgid ""
 "Draws some intersecting planes, making use of alpha blending, fog, textures, "
 "and mipmaps, plus a ``frames per second'' meter so that you can tell how "
 "fast your graphics card is... Requires OpenGL. Written by David Konerding."
-msgstr ""
-"Dessine des plans en intersection en utilisant le mélange de valeurs alpha, "
-"le brouillard, des textures, et des mipmaps, plus une mesure ''images par "
-"seconde'' pour que vous puissiez calculer la rapidité de votre carte "
-"graphique... Nécessite OpenGL. Ã‰crit par David Konerding."
+msgstr "Dessine des plans en intersection en utilisant le mélange de valeurs alpha, le brouillard, des textures, et des mipmaps, plus une mesure ''images par seconde'' pour que vous puissiez calculer la rapidité de votre carte graphique... Nécessite OpenGL. Ã‰crit par David Konerding."
 
 #: hacks/config/pulsar.xml.h:4
 msgid "Enable Blending"
 
 #: hacks/config/pulsar.xml.h:4
 msgid "Enable Blending"
@@ -5876,9 +6248,7 @@ msgstr "Pyro"
 #: hacks/config/pyro.xml.h:11
 msgid ""
 "Pyro draws exploding fireworks. Blah blah blah. Written by Jamie Zawinski."
 #: hacks/config/pyro.xml.h:11
 msgid ""
 "Pyro draws exploding fireworks. Blah blah blah. Written by Jamie Zawinski."
-msgstr ""
-"Pyro dessine des feux d'artifices en explosion. Bla bla. Ã‰crit par Jamie "
-"Zawinski."
+msgstr "Pyro dessine des feux d'artifices en explosion. Bla bla. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/qix.xml.h:1
 msgid "Additive Colors"
 
 #: hacks/config/qix.xml.h:1
 msgid "Additive Colors"
@@ -5918,12 +6288,7 @@ msgid ""
 "segments around the screen, and uses variations on this basic motion pattern "
 "to produce all sorts of different presentations: line segments, filled "
 "polygons, overlapping translucent areas... Written by Jamie Zawinski."
 "segments around the screen, and uses variations on this basic motion pattern "
 "to produce all sorts of different presentations: line segments, filled "
 "polygons, overlapping translucent areas... Written by Jamie Zawinski."
-msgstr ""
-"La tronçonneuse suisse des programmes qix. Fait rebondir une série de "
-"segments de lignes sur l'écran et utilise des variations de ce modèle de "
-"mouvement de base pour produire toutes sortes de présentations différentes : "
-"segments de ligne, polygones pleins, zones translucides superposées... Ã‰crit "
-"par Jamie Zawinski."
+msgstr "La tronçonneuse suisse des programmes qix. Fait rebondir une série de segments de lignes sur l'écran et utilise des variations de ce modèle de mouvement de base pour produire toutes sortes de présentations différentes : segments de ligne, polygones pleins, zones translucides superposées... Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/qix.xml.h:25
 msgid "Transparent"
 
 #: hacks/config/qix.xml.h:25
 msgid "Transparent"
@@ -5954,10 +6319,7 @@ msgid ""
 "Another variation of the `Bomb' program by Scott Draves. This draws a grid "
 "of growing square-like shapes that, once they overtake each other, react in "
 "unpredictable ways. ``RD'' stands for reaction-diffusion."
 "Another variation of the `Bomb' program by Scott Draves. This draws a grid "
 "of growing square-like shapes that, once they overtake each other, react in "
 "unpredictable ways. ``RD'' stands for reaction-diffusion."
-msgstr ""
-"Une autre variation du programme Â«Bomb» de Scott Draves. Dessine une grille "
-"de formes carrées croissantes qui, une fois qu'elles se rejoignent, "
-"réagissent de façon imprévisible. 'RD' signifie réaction-diffusion."
+msgstr "Une autre variation du programme Â«Bomb» de Scott Draves. Dessine une grille de formes carrées croissantes qui, une fois qu'elles se rejoignent, réagissent de façon imprévisible. 'RD' signifie réaction-diffusion."
 
 #: hacks/config/rd-bomb.xml.h:8
 msgid "Epoch"
 
 #: hacks/config/rd-bomb.xml.h:8
 msgid "Epoch"
@@ -6032,10 +6394,7 @@ msgid ""
 "This draws rippling interference patterns like splashing water. With the -"
 "water option, it manipulates your desktop image to look like something is "
 "dripping into it. Written by Tom Hammersley."
 "This draws rippling interference patterns like splashing water. With the -"
 "water option, it manipulates your desktop image to look like something is "
 "dripping into it. Written by Tom Hammersley."
-msgstr ""
-"Dessine des motifs d'interférences ondulants qui ressemblent Ã  des "
-"éclaboussures d'eau. Avec l'option '-water', manipule votre image bureau "
-"pour que quelque chose ait l'air de l'éclabousser. Ã‰crit par Tom Hammersley."
+msgstr "Dessine des motifs d'interférences ondulants qui ressemblent Ã  des Ã©claboussures d'eau. Avec l'option '-water', manipule votre image bureau pour que quelque chose ait l'air de l'éclabousser. Ã‰crit par Tom Hammersley."
 
 #: hacks/config/rocks.xml.h:7
 msgid "Rocks"
 
 #: hacks/config/rocks.xml.h:7
 msgid "Rocks"
@@ -6054,10 +6413,7 @@ msgid ""
 "This draws an animation of flight through an asteroid field, with changes in "
 "rotation and direction. It can also display 3D separations for red/blue "
 "glasses! Mostly written by Jamie Zawinski."
 "This draws an animation of flight through an asteroid field, with changes in "
 "rotation and direction. It can also display 3D separations for red/blue "
 "glasses! Mostly written by Jamie Zawinski."
-msgstr ""
-"Dessine une animation de vol dans un champ d'astéroïdes, dont la  rotation "
-"et la direction changent. Peut Ã©galement afficher des séparations 3D pour "
-"les verres rouges/bleus ! Principalement Ã©crit par Jamie Zawinski."
+msgstr "Dessine une animation de vol dans un champ d'astéroïdes, dont la  rotation et la direction changent. Peut Ã©galement afficher des séparations 3D pour les verres rouges/bleus ! Principalement Ã©crit par Jamie Zawinski."
 
 #: hacks/config/rocks.xml.h:13
 msgid "Velocity"
 
 #: hacks/config/rocks.xml.h:13
 msgid "Velocity"
@@ -6074,12 +6430,7 @@ msgid ""
 "then reflects the image horizontally, vertically, or both. Any deep-seated "
 "neurotic tendencies which this program reveals are your own problem. Written "
 "by Jamie Zawinski."
 "then reflects the image horizontally, vertically, or both. Any deep-seated "
 "neurotic tendencies which this program reveals are your own problem. Written "
 "by Jamie Zawinski."
-msgstr ""
-"Génère des motifs de taches d'encre aléatoires. L'algorithme est "
-"incroyablement simple pour un si bon fonctionnement; il déplace simplement "
-"un point sur l'écran au hasard et reflète l'image horizontalement et/ou "
-"verticalement. Vous Ãªtes responsable de toutes les tendances névrotiques "
-"enfouies que ce programme pourrait révéler. Ã‰crit par Jamie Zawinski."
+msgstr "Génère des motifs de taches d'encre aléatoires. L'algorithme est incroyablement simple pour un si bon fonctionnement; il déplace simplement un point sur l'écran au hasard et reflète l'image horizontalement et/ou verticalement. Vous Ãªtes responsable de toutes les tendances névrotiques enfouies que ce programme pourrait révéler. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/rorschach.xml.h:10
 msgid "With X Symmetry"
 
 #: hacks/config/rorschach.xml.h:10
 msgid "With X Symmetry"
@@ -6111,9 +6462,7 @@ msgstr "Animer"
 msgid ""
 "Creates a collage of rotated and scaled portions of the screen. Written by "
 "Claudio Matsuoka."
 msgid ""
 "Creates a collage of rotated and scaled portions of the screen. Written by "
 "Claudio Matsuoka."
-msgstr ""
-"Crée un collage de portions pivotées et mises Ã  l'échelle de l'écran. Ã‰crit "
-"par Claudio Matsuoka."
+msgstr "Crée un collage de portions pivotées et mises Ã  l'échelle de l'écran. Ã‰crit par Claudio Matsuoka."
 
 #: hacks/config/rotzoomer.xml.h:6
 msgid "Rectangle Count"
 
 #: hacks/config/rotzoomer.xml.h:6
 msgid "Rectangle Count"
@@ -6139,9 +6488,7 @@ msgstr "Rectangles mobiles"
 msgid ""
 "Draws a Rubik's Cube that rotates in three dimensions and repeatedly "
 "shuffles and solves itself. Another fine GL hack by Marcelo Vianna."
 msgid ""
 "Draws a Rubik's Cube that rotates in three dimensions and repeatedly "
 "shuffles and solves itself. Another fine GL hack by Marcelo Vianna."
-msgstr ""
-"Dessine un Rubik's Cube qui pivote en trois dimensions et  se mélange et se "
-"résout sans cesse. Un autre beau hack GL de Marcelo Vianna."
+msgstr "Dessine un Rubik's Cube qui pivote en trois dimensions et  se mélange et se résout sans cesse. Un autre beau hack GL de Marcelo Vianna."
 
 #: hacks/config/rubik.xml.h:5
 msgid "Rubik"
 
 #: hacks/config/rubik.xml.h:5
 msgid "Rubik"
@@ -6151,31 +6498,12 @@ msgstr "Rubik"
 msgid "Show Shuffling"
 msgstr "Afficher le mélange"
 
 msgid "Show Shuffling"
 msgstr "Afficher le mélange"
 
-#: hacks/config/sballs.xml.h:1
-msgid "Cube"
-msgstr "Cube"
-
-#: hacks/config/sballs.xml.h:2
-msgid "Dodecahedron"
-msgstr "Dodécaèdre"
-
 #: hacks/config/sballs.xml.h:3
 msgid ""
 "Draws an animation of textured balls spinning like crazy in GL. Requires "
 "OpenGL, and a machine with fast hardware support for texture maps. Written "
 #: hacks/config/sballs.xml.h:3
 msgid ""
 "Draws an animation of textured balls spinning like crazy in GL. Requires "
 "OpenGL, and a machine with fast hardware support for texture maps. Written "
-"by Eric Lassauge &lt;lassauge@free.fr&gt;."
-msgstr ""
-"Dessine une animation de balles texturées qui tournent comme des folles en "
-"GL. Nécessite OpenGL et une machine avec un support matériel puissant pour "
-"les textures. Ã‰crit par Eric Lassauge &lt;lassauge@free.fr&gt;."
-
-#: hacks/config/sballs.xml.h:5
-msgid "Icosahedron"
-msgstr "Icosaèdre"
-
-#: hacks/config/sballs.xml.h:7
-msgid "Octahedron"
-msgstr "Octaèdre"
+"by Eric Lassauge &lt;lassauge@users.sourceforge.net&gt;."
+msgstr "Dessine une animation de balles texturées qui tournent comme des folles en GL. Nécessite OpenGL et une machine avec un support matériel puissant pour les textures. Ã‰crit par Eric Lassauge &lt;lassauge@users.sourceforge.net&gt;."
 
 #: hacks/config/sballs.xml.h:8
 msgid "Plane"
 
 #: hacks/config/sballs.xml.h:8
 msgid "Plane"
@@ -6201,9 +6529,7 @@ msgstr "ShadeBobs"
 msgid ""
 "This draws smoothly-shaded oscillating oval patterns, that look something "
 "like vapor trails or neon tubes. Written by Shane Smit."
 msgid ""
 "This draws smoothly-shaded oscillating oval patterns, that look something "
 "like vapor trails or neon tubes. Written by Shane Smit."
-msgstr ""
-"Dessine des formes ovoïdes oscillantes et d'aspect lisse, qui ressemblent un "
-"peu Ã  des traînées de vapeur ou des tubes au néon. Ã‰crit par Shane Smit."
+msgstr "Dessine des formes ovoïdes oscillantes et d'aspect lisse, qui ressemblent un peu Ã  des traînées de vapeur ou des tubes au néon. Ã‰crit par Shane Smit."
 
 #: hacks/config/sierpinski.xml.h:6
 msgid "Sierpinski"
 
 #: hacks/config/sierpinski.xml.h:6
 msgid "Sierpinski"
@@ -6213,9 +6539,7 @@ msgstr "Sierpinski"
 msgid ""
 "This draws the two-dimensional variant of the recursive Sierpinski triangle "
 "fractal. Written by Desmond Daignault."
 msgid ""
 "This draws the two-dimensional variant of the recursive Sierpinski triangle "
 "fractal. Written by Desmond Daignault."
-msgstr ""
-"Dessine la variante bidimensionnelle de la fractale triangulaire récursive "
-"de Sierpinski. Ã‰crit par Desmond Daignault."
+msgstr "Dessine la variante bidimensionnelle de la fractale triangulaire récursive de Sierpinski. Ã‰crit par Desmond Daignault."
 
 #: hacks/config/sierpinski3d.xml.h:7
 msgid "Sierpinski3D"
 
 #: hacks/config/sierpinski3d.xml.h:7
 msgid "Sierpinski3D"
@@ -6225,9 +6549,7 @@ msgstr "Sierpinski3D"
 msgid ""
 "This draws the three-dimensional variant of the recursive Sierpinski "
 "triangle fractal, using GL. Written by Tim Robinson and Jamie Zawinski."
 msgid ""
 "This draws the three-dimensional variant of the recursive Sierpinski "
 "triangle fractal, using GL. Written by Tim Robinson and Jamie Zawinski."
-msgstr ""
-"Dessine la variante tridimensionnelle de la fractale triangulaire récursive "
-"de Sierpinski, Ã  l'aide de GL. Ã‰crit par Tim Robinson et Jamie Zawinski."
+msgstr "Dessine la variante tridimensionnelle de la fractale triangulaire récursive de Sierpinski, Ã  l'aide de GL. Ã‰crit par Tim Robinson et Jamie Zawinski."
 
 #: hacks/config/slidescreen.xml.h:1 hacks/config/twang.xml.h:1
 #: hacks/config/zoom.xml.h:1
 
 #: hacks/config/slidescreen.xml.h:1 hacks/config/twang.xml.h:1
 #: hacks/config/zoom.xml.h:1
@@ -6249,11 +6571,7 @@ msgid ""
 "there is a grid of squares, one of which is missing. I hate trying to solve "
 "those puzzles, but watching one permute itself is more amusing. Written by "
 "Jamie Zawinski."
 "there is a grid of squares, one of which is missing. I hate trying to solve "
 "those puzzles, but watching one permute itself is more amusing. Written by "
 "Jamie Zawinski."
-msgstr ""
-"Prend une image, la divise pour former une grille et mélange au hasard les "
-"carrés comme l'un de ces jeux ennuyeux comprenant une grille de carrés dont "
-"l'un est manquant. Je déteste essayer de résoudre ces puzzles, mais c'est "
-"plus amusant d'en voir un se résoudre lui-même. Ã‰crit par Jamie Zawinski."
+msgstr "Prend une image, la divise pour former une grille et mélange au hasard les carrés comme l'un de ces jeux ennuyeux comprenant une grille de carrés dont l'un est manquant. Je déteste essayer de résoudre ces puzzles, mais c'est plus amusant d'en voir un se résoudre lui-même. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/slip.xml.h:6
 msgid "Slip"
 
 #: hacks/config/slip.xml.h:6
 msgid "Slip"
@@ -6268,53 +6586,70 @@ msgid ""
 "image like taffy, or (this is my addition) grab an image of your current "
 "desktop to chew on. Originally written by Scott Draves; whacked on by Jamie "
 "Zawinski."
 "image like taffy, or (this is my addition) grab an image of your current "
 "desktop to chew on. Originally written by Scott Draves; whacked on by Jamie "
 "Zawinski."
-msgstr ""
-"Ce programme affiche des Ã©léments aléatoires Ã  l'écran, puis les aspire dans "
-"un réacteur et les fait ressortir. Pour ne pas réduire complètement l'image "
-"en bouillie, il injectera de temps en temps des taches de couleur dans la "
-"scène, entamera un cycle d'essorage, Ã©tendra l'image comme un caramel ou (ma "
-"touche personnelle) capturera l'image de votre bureau actuel pour la "
-"retourner. Initialement Ã©crit par Scott Draves ; bouleversé par Jamie "
-"Zawinski."
+msgstr "Ce programme affiche des Ã©léments aléatoires Ã  l'écran, puis les aspire dans un réacteur et les fait ressortir. Pour ne pas réduire complètement l'image en bouillie, il injectera de temps en temps des taches de couleur dans la scène, entamera un cycle d'essorage, Ã©tendra l'image comme un caramel ou (ma touche personnelle) capturera l'image de votre bureau actuel pour la retourner. Initialement Ã©crit par Scott Draves ; bouleversé par Jamie Zawinski."
 
 #: hacks/config/sonar.xml.h:1
 
 #: hacks/config/sonar.xml.h:1
-msgid "Ping Subnet"
-msgstr "Sous-réseau ping"
+msgid "Ping known hosts"
+msgstr "Ping des machines connues"
 
 #: hacks/config/sonar.xml.h:2
 
 #: hacks/config/sonar.xml.h:2
+msgid "Ping mode..."
+msgstr "Mode de ping ..."
+
+#: hacks/config/sonar.xml.h:3
+msgid "Ping subnet/24 (254 hosts)"
+msgstr "Ping sous-réseau/24 (254 hôtes)"
+
+#: hacks/config/sonar.xml.h:4
+msgid "Ping subnet/25 (126 hosts)"
+msgstr "Ping sous-réseau/25 (126 hôtes)"
+
+#: hacks/config/sonar.xml.h:5
+msgid "Ping subnet/26 (62 hosts)"
+msgstr "Ping sous-réseau/26 (62 hôtes)"
+
+#: hacks/config/sonar.xml.h:6
+msgid "Ping subnet/27 (31 hosts)"
+msgstr "Ping sous-réseau/27 (31 hôtes)"
+
+#: hacks/config/sonar.xml.h:7
+msgid "Ping subnet/28 (14 hosts)"
+msgstr "Ping sous-réseau/28 (14 hôtes)"
+
+#: hacks/config/sonar.xml.h:8
+msgid "Ping subnet/29 (6 hosts)"
+msgstr "Ping sous-réseau/29 (6 hôtes)"
+
+#: hacks/config/sonar.xml.h:9
+msgid "Ping subnet/30 (2 hosts)"
+msgstr "Ping sous-réseau/30 (2 hôtes)"
+
+#: hacks/config/sonar.xml.h:10
 msgid "Simulation Team Members"
 msgstr "Membres de l'équipe simulation"
 
 msgid "Simulation Team Members"
 msgstr "Membres de l'équipe simulation"
 
-#: hacks/config/sonar.xml.h:3
+#: hacks/config/sonar.xml.h:11
 msgid "Sonar"
 msgstr "Sonar"
 
 msgid "Sonar"
 msgstr "Sonar"
 
-#: hacks/config/sonar.xml.h:4
+#: hacks/config/sonar.xml.h:12
 msgid "Team A Name"
 msgstr "Nom de l'équipe A"
 
 msgid "Team A Name"
 msgstr "Nom de l'équipe A"
 
-#: hacks/config/sonar.xml.h:5
+#: hacks/config/sonar.xml.h:13
 msgid "Team B Name"
 msgstr "Nom de l'équipe B"
 
 msgid "Team B Name"
 msgstr "Nom de l'équipe B"
 
-#: hacks/config/sonar.xml.h:6
+#: hacks/config/sonar.xml.h:14
 msgid ""
 msgid ""
-"This program draws a simulation of a sonar screen. Written by default, it "
-"displays a random assortment of ``bogies'' on the screen, but if compiled "
-"properly, it can ping (pun intended) your local network, and actually plot "
-"the proximity of the other hosts on your network to you. It would be easy to "
-"make it monitor other sources of data, too. (Processes? Active network "
-"connections? CPU usage per user?) Written by Stephen Martin."
-msgstr ""
-"Ce programme dessine une simulation d'un Ã©cran de sonar. Ã‰crit par défaut, "
-"il affiche un assortiment aléatoire de 'trucs' Ã  l'écran, mais, s'il est "
-"compilé correctement, il peut effectuer un ping sur votre réseau local et "
-"calculer  la proximité des autres hôtes du réseau par rapport Ã  vous. Il "
-"serait facile de lui faire aussi surveiller d'autres sources de données. "
-"(Processus ? Connexions au réseau actif ? Utilisation du processeur par "
-"utilisateur ?) Ã‰crit par Stephen Martin."
+"This program draws a simulation of a sonar screen. By default, it displays a "
+"random assortment of ``bogies'' on the screen, but if installed as \"setuid "
+"root\", it can ping (pun intended) your local network, and actually plot the "
+"proximity of the other hosts on your network to you. Written by Stephen "
+"Martin and Jamie Zawinski."
+msgstr "Ce programme dessine une simulation d'un Ã©cran de sonar. Par défaut, il affiche un assortiment aléatoire de 'trucs' Ã  l'écran, mais, s'il est installé \"setuid root\", il peut effectuer un ping sur votre réseau local et calculer  la proximité des autres hôtes du réseau par rapport Ã  vous.Écrit par Stephen Martin et Jamie Zawinski."
 
 
-#: hacks/config/sonar.xml.h:7
+#: hacks/config/sonar.xml.h:15
 msgid "vs."
 msgstr "contre"
 
 msgid "vs."
 msgstr "contre"
 
@@ -6346,9 +6681,7 @@ msgstr "Parois rocheuses"
 msgid ""
 "Simulates speeding down a rocky mineshaft, or a funky dancing worm. Written "
 "by Conrad Parker."
 msgid ""
 "Simulates speeding down a rocky mineshaft, or a funky dancing worm. Written "
 "by Conrad Parker."
-msgstr ""
-"Simule la descente dans un puits de mine rocheux ou affiche un ver funky "
-"dansant. Ã‰crit par Conrad Parker."
+msgstr "Simule la descente dans un puits de mine rocheux ou affiche un ver funky dansant. Ã‰crit par Conrad Parker."
 
 #: hacks/config/speedmine.xml.h:16
 msgid "SpeedMine"
 
 #: hacks/config/speedmine.xml.h:16
 msgid "SpeedMine"
@@ -6367,16 +6700,13 @@ msgid ""
 "Another of the classic screenhacks of the distant past, this one draws "
 "shaded spheres in multiple colors. This hack traces its lineage back to Tom "
 "Duff in 1982."
 "Another of the classic screenhacks of the distant past, this one draws "
 "shaded spheres in multiple colors. This hack traces its lineage back to Tom "
 "Duff in 1982."
-msgstr ""
-"Un autre hack classique d'une Ã©poque lointaine. Il dessine des sphères "
-"ombrées en plusieurs couleurs. Son arbre généalogique remonte Ã  Tom Duff en "
-"1982."
+msgstr "Un autre hack classique d'une Ã©poque lointaine. Il dessine des sphères ombrées en plusieurs couleurs. Son arbre généalogique remonte Ã  Tom Duff en 1982."
 
 
-#: hacks/config/sphereEversion.xml.h:1
+#: hacks/config/sphereeversion.xml.h:1
 msgid "SphereEversion"
 msgstr "SphereEversion"
 
 msgid "SphereEversion"
 msgstr "SphereEversion"
 
-#: hacks/config/sphereEversion.xml.h:2
+#: hacks/config/sphereeversion.xml.h:2
 msgid ""
 "SphereEversion draws an animation of a sphere being turned inside out. A "
 "sphere can be turned inside out, without any tears, sharp creases or "
 msgid ""
 "SphereEversion draws an animation of a sphere being turned inside out. A "
 "sphere can be turned inside out, without any tears, sharp creases or "
@@ -6393,7 +6723,7 @@ msgstr "Lignes liss
 
 #: hacks/config/spheremonics.xml.h:23
 msgid "Spheremonics"
 
 #: hacks/config/spheremonics.xml.h:23
 msgid "Spheremonics"
-msgstr ""
+msgstr "Sphèremonics"
 
 #: hacks/config/spheremonics.xml.h:24
 msgid ""
 
 #: hacks/config/spheremonics.xml.h:24
 msgid ""
@@ -6411,9 +6741,7 @@ msgstr "Fr
 msgid ""
 "Moving circular patterns, by Peter Schmitzberger. Moving circular patterns "
 "means moire; interference patterns, of course."
 msgid ""
 "Moving circular patterns, by Peter Schmitzberger. Moving circular patterns "
 "means moire; interference patterns, of course."
-msgstr ""
-"Motifs circulaires mobiles, par Peter Schmitzberger. Les motifs circulaires "
-"mobiles sont synonymes de moiré ; des motifs d'interférences, Ã©videmment."
+msgstr "Motifs circulaires mobiles, par Peter Schmitzberger. Les motifs circulaires mobiles sont synonymes de moiré ; des motifs d'interférences, Ã©videmment."
 
 #: hacks/config/spiral.xml.h:11
 msgid "Spiral"
 
 #: hacks/config/spiral.xml.h:11
 msgid "Spiral"
@@ -6423,9 +6751,7 @@ msgstr "Spirale"
 msgid ""
 "Draws a spotlight scanning across a black screen, illuminating the "
 "underlying desktop when it passes. Written by Rick Schultz."
 msgid ""
 "Draws a spotlight scanning across a black screen, illuminating the "
 "underlying desktop when it passes. Written by Rick Schultz."
-msgstr ""
-"Trace un faisceau lumineux qui parcourt un Ã©cran noir et illumine le bureau "
-"sous-jacent. Ã‰crit par Rick Schultz."
+msgstr "Trace un faisceau lumineux qui parcourt un Ã©cran noir et illumine le bureau sous-jacent. Ã‰crit par Rick Schultz."
 
 #: hacks/config/spotlight.xml.h:6
 msgid "Spotlight"
 
 #: hacks/config/spotlight.xml.h:6
 msgid "Spotlight"
@@ -6444,10 +6770,7 @@ msgid ""
 "Draws a set of interacting, square-spiral-producing automata. The spirals "
 "grow outward until they hit something, then they go around it. Written by "
 "Jeff Epler."
 "Draws a set of interacting, square-spiral-producing automata. The spirals "
 "grow outward until they hit something, then they go around it. Written by "
 "Jeff Epler."
-msgstr ""
-"Dessine un ensemble d'automates qui interagissent et produisent des spirales "
-"carrées. Les spirales grandissent jusqu'à ce qu'elles heurtent un obstacle, "
-"qu'elles contournent. Ã‰crit par Jeff Epler."
+msgstr "Dessine un ensemble d'automates qui interagissent et produisent des spirales carrées. Les spirales grandissent jusqu'à ce qu'elles heurtent un obstacle, qu'elles contournent. Ã‰crit par Jeff Epler."
 
 #: hacks/config/squiral.xml.h:5
 msgid "Handedness"
 
 #: hacks/config/squiral.xml.h:5
 msgid "Handedness"
@@ -6496,9 +6819,7 @@ msgstr "Escaliers"
 msgid ""
 "by Marcelo Vianna's third Escher GL hack, this one draws an ``infinite'' "
 "staircase."
 msgid ""
 "by Marcelo Vianna's third Escher GL hack, this one draws an ``infinite'' "
 "staircase."
-msgstr ""
-"Le troisième hack GL de Marcelo Vianna d'après Escher, cette fois "
-"«l'escalier infini»."
+msgstr "Le troisième hack GL de Marcelo Vianna d'après Escher, cette fois Â«l'escalier infini»."
 
 #: hacks/config/starfish.xml.h:1
 msgid "Color Gradients"
 
 #: hacks/config/starfish.xml.h:1
 msgid "Color Gradients"
@@ -6518,11 +6839,7 @@ msgid ""
 "pulsate, rotate, and turn inside out. Another display mode uses these shapes "
 "to lay down a field of colors, which are then cycled. The motion is very "
 "organic. Written by Jamie Zawinski."
 "pulsate, rotate, and turn inside out. Another display mode uses these shapes "
 "to lay down a field of colors, which are then cycled. The motion is very "
 "organic. Written by Jamie Zawinski."
-msgstr ""
-"Génère une séquence de motifs ondulants en forme d'étoiles qui pulsent, "
-"pivotent et se retournent. Un autre mode d'affichage utilise ces formes pour "
-"créer un champ de couleurs, qui présente des cycles. Le mouvement est très "
-"organique. Ã‰crit par Jamie Zawinski."
+msgstr "Génère une séquence de motifs ondulants en forme d'étoiles qui pulsent, pivotent et se retournent. Un autre mode d'affichage utilise ces formes pour créer un champ de couleurs, qui présente des cycles. Le mouvement est très organique. Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/starwars.xml.h:2
 msgid "Anti-aliased Lines"
 
 #: hacks/config/starwars.xml.h:2
 msgid "Anti-aliased Lines"
@@ -6537,9 +6854,7 @@ msgid ""
 "Draws a stream of text slowly scrolling into the distance at an angle, over "
 "a star field, like at the beginning of the movie of the same name. Written "
 "by Jamie Zawinski and Claudio Matauoka."
 "Draws a stream of text slowly scrolling into the distance at an angle, over "
 "a star field, like at the beginning of the movie of the same name. Written "
 "by Jamie Zawinski and Claudio Matauoka."
-msgstr ""
-"Fait défiler lentement un texte en diagonale sur un champ stellaire, comme "
-"au début du film du même nom. Ã‰crit par Jamie Zawinski et Claudio Matauoka."
+msgstr "Fait défiler lentement un texte en diagonale sur un champ stellaire, comme au début du film du même nom. Ã‰crit par Jamie Zawinski et Claudio Matauoka."
 
 #: hacks/config/starwars.xml.h:5
 msgid "Fade Out"
 
 #: hacks/config/starwars.xml.h:5
 msgid "Fade Out"
@@ -6590,10 +6905,7 @@ msgid ""
 "Chains of colorful squares dance around each other in complex spiral "
 "patterns. Written by Andrew Plotkin, based on SGI's `electropaint' "
 "screensaver."
 "Chains of colorful squares dance around each other in complex spiral "
 "patterns. Written by Andrew Plotkin, based on SGI's `electropaint' "
 "screensaver."
-msgstr ""
-"Des chaînes de carrés colorés dansent les unes autour des autres  en formant "
-"des spirales complexes. Ã‰crit par Andrew Plotkin, basé sur l'économiseur "
-"d'écran Â«electropaint» de SGI."
+msgstr "Des chaînes de carrés colorés dansent les unes autour des autres  en formant des spirales complexes. Ã‰crit par Andrew Plotkin, basé sur l'économiseur d'écran Â«electropaint» de SGI."
 
 #: hacks/config/stonerview.xml.h:3
 msgid "StonerView"
 
 #: hacks/config/stonerview.xml.h:3
 msgid "StonerView"
@@ -6608,21 +6920,14 @@ msgid ""
 "This draws strange attractors: it's a colorful, unpredictably-animating "
 "field of dots that swoops and twists around. The motion is very nice. "
 "Written by Massimino Pascal."
 "This draws strange attractors: it's a colorful, unpredictably-animating "
 "field of dots that swoops and twists around. The motion is very nice. "
 "Written by Massimino Pascal."
-msgstr ""
-"Dessine d'étranges attracteurs : ils ressemblent Ã  des champs de points "
-"colorés qui tournent et se tortillent de manière imprévisible. Le mouvement "
-"est très beau. Ã‰crit par Massimino Pascal."
+msgstr "Dessine d'étranges attracteurs : ils ressemblent Ã  des champs de points colorés qui tournent et se tortillent de manière imprévisible. Le mouvement est très beau. Ã‰crit par Massimino Pascal."
 
 #: hacks/config/superquadrics.xml.h:3
 msgid ""
 "Ed Mackey reports that he wrote the first version of this program in BASIC "
 "on a Commodore 64 in 1987, as a 320x200 black and white wireframe. Now it is "
 "GL and has specular reflections."
 
 #: hacks/config/superquadrics.xml.h:3
 msgid ""
 "Ed Mackey reports that he wrote the first version of this program in BASIC "
 "on a Commodore 64 in 1987, as a 320x200 black and white wireframe. Now it is "
 "GL and has specular reflections."
-msgstr ""
-"Ed Mackey déclare avoir Ã©crit la première version de ce programme en langage "
-"BASIC sur un Commodore 64 en 1987, sous la forme d'un maillage graphique "
-"320x200 noir et blanc. Il est désormais en GL et présente des réflexions "
-"spéculaires."
+msgstr "Ed Mackey déclare avoir Ã©crit la première version de ce programme en langage BASIC sur un Commodore 64 en 1987, sous la forme d'un maillage graphique 320x200 noir et blanc. Il est désormais en GL et présente des réflexions spéculaires."
 
 #: hacks/config/superquadrics.xml.h:11
 msgid "Superquadrics"
 
 #: hacks/config/superquadrics.xml.h:11
 msgid "Superquadrics"
@@ -6633,11 +6938,7 @@ msgid ""
 "More flowing, swirly patterns. This version is by M. Dobie and R. Taylor, "
 "but you might have seen a Mac program similar to this called FlowFazer. "
 "There is also a cool Java applet of a similar concept."
 "More flowing, swirly patterns. This version is by M. Dobie and R. Taylor, "
 "but you might have seen a Mac program similar to this called FlowFazer. "
 "There is also a cool Java applet of a similar concept."
-msgstr ""
-"Autre motifs fluides et tourbillonnants. Cette version est de M. Dobie et R. "
-"Taylor, mais vous avez peut-être déjà vu un programme Mac similaire appelé "
-"FlowFazer. Il existe aussi une chouette applet Java avec un concept "
-"apparenté."
+msgstr "Autre motifs fluides et tourbillonnants. Cette version est de M. Dobie et R. Taylor, mais vous avez peut-être déjà vu un programme Mac similaire appelé FlowFazer. Il existe aussi une chouette applet Java avec un concept apparenté."
 
 #: hacks/config/swirl.xml.h:8
 msgid "Swirl"
 
 #: hacks/config/swirl.xml.h:8
 msgid "Swirl"
@@ -6679,9 +6980,7 @@ msgstr "T3D"
 msgid ""
 "This draws a working analog clock composed of floating, throbbing bubbles. "
 "Written by Bernd Paysan."
 msgid ""
 "This draws a working analog clock composed of floating, throbbing bubbles. "
 "Written by Bernd Paysan."
-msgstr ""
-"Dessine une horloge analogique composée de bulles flottantes et pulsatiles. "
-"Écrit par Bernd Paysan."
+msgstr "Dessine une horloge analogique composée de bulles flottantes et pulsatiles. Ã‰crit par Bernd Paysan."
 
 #: hacks/config/t3d.xml.h:16
 msgid "Turn Side-to-Side"
 
 #: hacks/config/t3d.xml.h:16
 msgid "Turn Side-to-Side"
@@ -6695,9 +6994,7 @@ msgstr "Oscillation"
 msgid ""
 "Displays a view of the ``Bird in a Thornbush'' fractal. Written by Tim "
 "Auckland."
 msgid ""
 "Displays a view of the ``Bird in a Thornbush'' fractal. Written by Tim "
 "Auckland."
-msgstr ""
-"Affiche la fractale de l'«oiseau dans un buisson Ã©pineux». Ã‰crit par Tim "
-"Auckland."
+msgstr "Affiche la fractale de l'«oiseau dans un buisson Ã©pineux». Ã‰crit par Tim Auckland."
 
 #: hacks/config/thornbird.xml.h:6
 msgid "Points"
 
 #: hacks/config/thornbird.xml.h:6
 msgid "Points"
@@ -6711,9 +7008,7 @@ msgstr "Buisson 
 msgid ""
 "Generates random mountain ranges using iterative subdivision of triangles. "
 "Written by Tobias Gloth."
 msgid ""
 "Generates random mountain ranges using iterative subdivision of triangles. "
 "Written by Tobias Gloth."
-msgstr ""
-"Génère des chaînes de montagne aléatoires en utilisant la subdivision "
-"itérative de triangles. Ã‰crit par Tobias Gloth."
+msgstr "Génère des chaînes de montagne aléatoires en utilisant la subdivision itérative de triangles. Ã‰crit par Tobias Gloth."
 
 #: hacks/config/triangle.xml.h:7
 msgid "Triangle"
 
 #: hacks/config/triangle.xml.h:7
 msgid "Triangle"
@@ -6723,9 +7018,7 @@ msgstr "Triangle"
 msgid ""
 "This draws line- and arc-based Truchet patterns that tile the screen. "
 "Written by Adrian Likins."
 msgid ""
 "This draws line- and arc-based Truchet patterns that tile the screen. "
 "Written by Adrian Likins."
-msgstr ""
-"Dessine des motifs de Truchet basés sur des lignes et des arcs, qui "
-"recouvrent l'écran. Ã‰crit par Adrian Likins."
+msgstr "Dessine des motifs de Truchet basés sur des lignes et des arcs, qui recouvrent l'écran. Ã‰crit par Adrian Likins."
 
 #: hacks/config/truchet.xml.h:5
 msgid "Truchet"
 
 #: hacks/config/truchet.xml.h:5
 msgid "Truchet"
@@ -6734,9 +7027,7 @@ msgstr "Truchet"
 #: hacks/config/twang.xml.h:2
 msgid ""
 "Divides the screen into a grid, and plucks them. Written by Dan Bornstein."
 #: hacks/config/twang.xml.h:2
 msgid ""
 "Divides the screen into a grid, and plucks them. Written by Dan Bornstein."
-msgstr ""
-"Divise l'écran en petits rectangles, qui sont ensuite enlevés. Ã‰crit par Dan "
-"Bornstein."
+msgstr "Divise l'écran en petits rectangles, qui sont ensuite enlevés. Ã‰crit par Dan Bornstein."
 
 #: hacks/config/twang.xml.h:6
 msgid "Jumpy"
 
 #: hacks/config/twang.xml.h:6
 msgid "Jumpy"
@@ -6778,13 +7069,7 @@ msgid ""
 "subtracting the image from a rotated version of itself, etc.) Then it "
 "displays that image for a few seconds, and does it again. This works really "
 "well if you just feed broadcast television into it."
 "subtracting the image from a rotated version of itself, etc.) Then it "
 "displays that image for a few seconds, and does it again. This works really "
 "well if you just feed broadcast television into it."
-msgstr ""
-"Il s'agit d'un simple script shell qui capture une image depuis l'entrée "
-"vidéo du système et utilise des filtres PBM (choisis au hasard) pour  "
-"manipuler et reformer l'image vidéo de diverses manières (détection des "
-"contours, soustraction de l'image d'une version pivotée d'elle-même, etc.) "
-"Ensuite, il  affiche cette image pendant quelques secondes et recommence. Ce "
-"programme fonctionne très bien si vous le reliez Ã  un téléviseur."
+msgstr "Il s'agit d'un simple script shell qui capture une image depuis l'entrée vidéo du système et utilise des filtres PBM (choisis au hasard) pour  manipuler et reformer l'image vidéo de diverses manières (détection des contours, soustraction de l'image d'une version pivotée d'elle-même, etc.) Ensuite, il  affiche cette image pendant quelques secondes et recommence. Ce programme fonctionne très bien si vous le reliez Ã  un téléviseur."
 
 #: hacks/config/vidwhacker.xml.h:6
 msgid "VidWhacker"
 
 #: hacks/config/vidwhacker.xml.h:6
 msgid "VidWhacker"
@@ -6795,10 +7080,7 @@ msgid ""
 "This one generates a continuous sequence of small, curvy geometric patterns. "
 "It scatters them around your screen until it fills up, then it clears the "
 "screen and starts over. Written by Tracy Camp and David Hansen."
 "This one generates a continuous sequence of small, curvy geometric patterns. "
 "It scatters them around your screen until it fills up, then it clears the "
 "screen and starts over. Written by Tracy Camp and David Hansen."
-msgstr ""
-"Génère une séquence continue de petits motifs géométriques et arrondis. Ils "
-"remplissent l'écran, puis s'effacent avant de recommencer l'opération. Ã‰crit "
-"par Tracy Camp et David Hansen."
+msgstr "Génère une séquence continue de petits motifs géométriques et arrondis. Ils remplissent l'écran, puis s'effacent avant de recommencer l'opération. Ã‰crit par Tracy Camp et David Hansen."
 
 #: hacks/config/vines.xml.h:8
 msgid "Vines"
 
 #: hacks/config/vines.xml.h:8
 msgid "Vines"
@@ -6811,9 +7093,7 @@ msgstr "Dessiner des taches"
 #: hacks/config/wander.xml.h:6
 msgid ""
 "Draws a colorful random-walk, in various forms. Written by Rick Campbell."
 #: hacks/config/wander.xml.h:6
 msgid ""
 "Draws a colorful random-walk, in various forms. Written by Rick Campbell."
-msgstr ""
-"Dessine une promenade aléatoire colorée, sous plusieurs formes. Ã‰crit par "
-"Rick Campbell."
+msgstr "Dessine une promenade aléatoire colorée, sous plusieurs formes. Ã‰crit par Rick Campbell."
 
 #: hacks/config/wander.xml.h:14
 msgid "Sustain"
 
 #: hacks/config/wander.xml.h:14
 msgid "Sustain"
@@ -6840,15 +7120,7 @@ msgid ""
 "great. (Note that most of the images it finds are text, and not pictures. "
 "This is because most of the web is pictures of text. Which is pretty sad.) "
 "Written by Jamie Zawinski."
 "great. (Note that most of the images it finds are text, and not pictures. "
 "This is because most of the web is pictures of text. Which is pretty sad.) "
 "Written by Jamie Zawinski."
-msgstr ""
-"Ce programme effectue des collages Ã  partir d'images extraites au hasard "
-"depuis le World Wide Web. Il les trouve en faisant des recherches aléatoires "
-"sur le Web et en  extrayant les images des pages trouvées. Il peut Ã©galement "
-"être configuré pour filtrer les images via le programme 'VidWhacker' ci-"
-"dessus, pour obtenir des résultats stupéfiants. (Notez que la plupart des "
-"images trouvées sont en fait du texte et non des images proprement dites. "
-"Cela est dû au fait que la plupart des images du Web contiennent du texte, "
-"ce qui est assez désolant.) Ã‰crit par Jamie Zawinski."
+msgstr "Ce programme effectue des collages Ã  partir d'images extraites au hasard depuis le World Wide Web. Il les trouve en faisant des recherches aléatoires sur le Web et en  extrayant les images des pages trouvées. Il peut Ã©galement Ãªtre configuré pour filtrer les images via le programme 'VidWhacker' ci-dessus, pour obtenir des résultats stupéfiants. (Notez que la plupart des images trouvées sont en fait du texte et non des images proprement dites. Cela est dû au fait que la plupart des images du Web contiennent du texte, ce qui est assez désolant.) Ã‰crit par Jamie Zawinski."
 
 #: hacks/config/webcollage.xml.h:10
 msgid "URL Timeout"
 
 #: hacks/config/webcollage.xml.h:10
 msgid "URL Timeout"
@@ -6863,11 +7135,7 @@ msgid ""
 "Floating stars are acted upon by a mixture of simple 2D forcefields. The "
 "strength of each forcefield changes continuously, and it is also switched on "
 "and off at random. By Paul 'Joey' Clark."
 "Floating stars are acted upon by a mixture of simple 2D forcefields. The "
 "strength of each forcefield changes continuously, and it is also switched on "
 "and off at random. By Paul 'Joey' Clark."
-msgstr ""
-"Des Ã©toiles flottantes sont influencées par un mélange de simples champs de "
-"forces 2D. La puissance de chaque champ de forces change continuellement. "
-"Les champs sont Ã©galement  activés et désactivés au hasard. Par Paul 'Joey' "
-"Clark."
+msgstr "Des Ã©toiles flottantes sont influencées par un mélange de simples champs de forces 2D. La puissance de chaque champ de forces change continuellement. Les champs sont Ã©galement  activés et désactivés au hasard. Par Paul 'Joey' Clark."
 
 #: hacks/config/whirlwindwarp.xml.h:7
 msgid "Trail Size"
 
 #: hacks/config/whirlwindwarp.xml.h:7
 msgid "Trail Size"
@@ -6887,8 +7155,7 @@ msgstr "Cercle"
 
 #: hacks/config/whirlygig.xml.h:3
 msgid "Draws zooming chains of sinusoidal spots. Written by Ashton Trey Belew."
 
 #: hacks/config/whirlygig.xml.h:3
 msgid "Draws zooming chains of sinusoidal spots. Written by Ashton Trey Belew."
-msgstr ""
-"Dessine des chaînes de taches sinusoïdales. Ã‰crit par Ashton Trey Belew."
+msgstr "Dessine des chaînes de taches sinusoïdales. Ã‰crit par Ashton Trey Belew."
 
 #: hacks/config/whirlygig.xml.h:4
 msgid "Explain modes"
 
 #: hacks/config/whirlygig.xml.h:4
 msgid "Explain modes"
@@ -6943,9 +7210,7 @@ msgid ""
 "An ancient xlock hack that draws multicolored worms that crawl around the "
 "screen. Written by Brad Taylor, Dave Lemke, Boris Putanec, and Henrik "
 "Theiling."
 "An ancient xlock hack that draws multicolored worms that crawl around the "
 "screen. Written by Brad Taylor, Dave Lemke, Boris Putanec, and Henrik "
 "Theiling."
-msgstr ""
-"Ancien hack xlock qui dessine des vers multicolores rampant sur l'écran. "
-"Écrit par Brad Taylor, Dave Lemke, Boris Putanec et Henrik Theiling."
+msgstr "Ancien hack xlock qui dessine des vers multicolores rampant sur l'écran. Ã‰crit par Brad Taylor, Dave Lemke, Boris Putanec et Henrik Theiling."
 
 #: hacks/config/wormhole.xml.h:6
 msgid "Star speed"
 
 #: hacks/config/wormhole.xml.h:6
 msgid "Star speed"
@@ -7155,10 +7420,7 @@ msgstr "Fichier bitmap"
 msgid ""
 "Draws a simulation of pulsing fire. It can also take an arbitrary image and "
 "set it on fire too. Written by Carsten Haitzler, hacked on by many others."
 msgid ""
 "Draws a simulation of pulsing fire. It can also take an arbitrary image and "
 "set it on fire too. Written by Carsten Haitzler, hacked on by many others."
-msgstr ""
-"Dessine une simulation de feu rougeoyant. Il peut Ã©galement choisir une "
-"image arbitraire et lui mettre le feu. Ã‰crit par Carsten Haitzler, avec de "
-"nombreuses contributions."
+msgstr "Dessine une simulation de feu rougeoyant. Il peut Ã©galement choisir une image arbitraire et lui mettre le feu. Ã‰crit par Carsten Haitzler, avec de nombreuses contributions."
 
 #: hacks/config/xflame.xml.h:3
 msgid "Enable Blooming"
 
 #: hacks/config/xflame.xml.h:3
 msgid "Enable Blooming"
@@ -7174,11 +7436,7 @@ msgid ""
 "Jamie Zawinski. If you haven't seen Stanley Kubrick's masterpiece, ``The "
 "Shining,'' you won't get it. Those who have describe this hack as "
 "``inspired.''"
 "Jamie Zawinski. If you haven't seen Stanley Kubrick's masterpiece, ``The "
 "Shining,'' you won't get it. Those who have describe this hack as "
 "``inspired.''"
-msgstr ""
-"Ce programme a un comportement schizophrène et effectue de nombreuses "
-"coquilles. Ã‰crit par Jamie Zawinski. Si vous n'avez pas vu le chef-d'oeuvre "
-"de Stanley Kubrick, Â«Shining», vous n'y comprendrez rien. Ceux qui l'ont vu "
-"considèrent ce hack comme Â«inspiré»."
+msgstr "Ce programme a un comportement schizophrène et effectue de nombreuses coquilles. Ã‰crit par Jamie Zawinski. Si vous n'avez pas vu le chef-d'oeuvre de Stanley Kubrick, Â«Shining», vous n'y comprendrez rien. Ceux qui l'ont vu considèrent ce hack comme Â«inspiré»."
 
 #: hacks/config/xjack.xml.h:5
 msgid "Xjack"
 
 #: hacks/config/xjack.xml.h:5
 msgid "Xjack"
@@ -7189,10 +7447,7 @@ msgid ""
 "This generates pretty fractal pictures by doing funky math involving the "
 "``Lyapunov exponent.'' It has a cool interactive mode, too. Written by Ron "
 "Record."
 "This generates pretty fractal pictures by doing funky math involving the "
 "``Lyapunov exponent.'' It has a cool interactive mode, too. Written by Ron "
 "Record."
-msgstr ""
-"Génère de jolies fractales en effectuant de géniales opérations de math "
-"utilisant ''l'exposant de Lyapunov''. Il possède aussi un mode interactif. "
-"Écrit par Ron Record."
+msgstr "Génère de jolies fractales en effectuant de géniales opérations de math utilisant ''l'exposant de Lyapunov''. Il possède aussi un mode interactif. Ã‰crit par Ron Record."
 
 #: hacks/config/xlyap.xml.h:2
 msgid "Xlyap"
 
 #: hacks/config/xlyap.xml.h:2
 msgid "Xlyap"
@@ -7238,32 +7493,147 @@ msgstr "Algorithme synergique"
 msgid "Xmatrix"
 msgstr "Xmatrix"
 
 msgid "Xmatrix"
 msgstr "Xmatrix"
 
-#: hacks/config/xmountains.xml.h:2
+#: hacks/config/xmountains.xml.h:1
+msgid "1.0"
+msgstr "1.0"
+
+#: hacks/config/xmountains.xml.h:3
+msgid "14"
+msgstr "14"
+
+#: hacks/config/xmountains.xml.h:4
+msgid "7"
+msgstr "7"
+
+#: hacks/config/xmountains.xml.h:5
+msgid "Altitude  Low"
+msgstr "Amplitude basse"
+
+#: hacks/config/xmountains.xml.h:6
+msgid "Ambient  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:7
+msgid "Angle of Light"
+msgstr "Angle lumière"
+
+#: hacks/config/xmountains.xml.h:8
+msgid "Contour  Low"
+msgstr "Contour bas"
+
+#: hacks/config/xmountains.xml.h:9
+msgid "Contrast  Low"
+msgstr "Contraste bas"
+
+#: hacks/config/xmountains.xml.h:10
+msgid "Craggy"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:11
+msgid "Cross Update"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:12
+msgid "Distance  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:14
+msgid "Foreground"
+msgstr "Avant-plan"
+
+#: hacks/config/xmountains.xml.h:15
+msgid "Fractal Options"
+msgstr "Options fractales"
+
+#: hacks/config/xmountains.xml.h:16
+msgid "Height  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:18
+msgid "Horizontal  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:19
+msgid "Iteration  0"
+msgstr "Itération 0"
+
+#: hacks/config/xmountains.xml.h:20
+msgid "Light Level"
+msgstr "Niveau de lumière"
+
+#: hacks/config/xmountains.xml.h:21
+msgid "Recursion  0"
+msgstr "Récursion 0"
+
+#: hacks/config/xmountains.xml.h:22
 msgid "Reflections"
 msgstr "Réflexions"
 
 msgid "Reflections"
 msgstr "Réflexions"
 
-#: hacks/config/xmountains.xml.h:3
+#: hacks/config/xmountains.xml.h:23
+msgid "Sea Level  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:24
 msgid "Side View"
 msgstr "Vue latérale"
 
 msgid "Side View"
 msgstr "Vue latérale"
 
-#: hacks/config/xmountains.xml.h:6
+#: hacks/config/xmountains.xml.h:26
+msgid "Smoothing  0"
+msgstr "Lissage 0"
+
+#: hacks/config/xmountains.xml.h:27
+msgid "Speed  Slow"
+msgstr "Vitesse lente"
+
+#: hacks/config/xmountains.xml.h:28
+msgid "Terrain"
+msgstr "Terrain"
+
+#: hacks/config/xmountains.xml.h:29
 msgid "Top View"
 msgstr "Vue plongeante"
 
 msgid "Top View"
 msgstr "Vue plongeante"
 
-#: hacks/config/xmountains.xml.h:7
+#: hacks/config/xmountains.xml.h:30
+msgid "V. Shift  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:31
+msgid "V. Stretch  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:32
+msgid "Variance  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:33
+msgid "Vertical  Low"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:34
+msgid "Viewpoint"
+msgstr "Point de vue"
+
+#: hacks/config/xmountains.xml.h:35
 msgid ""
 "XMountains generates realistic-looking fractal terrains of snow-capped "
 "mountains near water, with either a top view or a side view. Written by "
 "Stephen Booth. This is not included with the XScreenSaver package, but if "
 "you don't have it already, you can find it at &lt;http://www.epcc.ed.ac.uk/"
 msgid ""
 "XMountains generates realistic-looking fractal terrains of snow-capped "
 "mountains near water, with either a top view or a side view. Written by "
 "Stephen Booth. This is not included with the XScreenSaver package, but if "
 "you don't have it already, you can find it at &lt;http://www.epcc.ed.ac.uk/"
-"~spb/xmountains/&gt;. Be sure to compile it with -DVROOT or it won't work "
-"right when launched by the xscreensaver daemon."
+"~spb/xmountains/&gt;. (Make sure you have version 2.7 or newer!)"
 msgstr ""
 
 msgstr ""
 
-#: hacks/config/xmountains.xml.h:8
+#: hacks/config/xmountains.xml.h:36
+msgid "Xf  0.0"
+msgstr ""
+
+#: hacks/config/xmountains.xml.h:37
 msgid "Xmountains"
 msgstr "Xmountains"
 
 msgid "Xmountains"
 msgstr "Xmountains"
 
+#: hacks/config/xmountains.xml.h:38
+msgid "Yf  0.0"
+msgstr ""
+
 #: hacks/config/xplanet.xml.h:2
 #, no-c-format
 msgid "0%"
 #: hacks/config/xplanet.xml.h:2
 #, no-c-format
 msgid "0%"
@@ -7463,15 +7833,15 @@ msgstr "Voir Callisto"
 
 #: hacks/config/xplanet.xml.h:66
 msgid "View Charon"
 
 #: hacks/config/xplanet.xml.h:66
 msgid "View Charon"
-msgstr ""
+msgstr "Voir Charon"
 
 #: hacks/config/xplanet.xml.h:67
 msgid "View Deimos"
 
 #: hacks/config/xplanet.xml.h:67
 msgid "View Deimos"
-msgstr ""
+msgstr "Voir Deimos"
 
 #: hacks/config/xplanet.xml.h:68
 msgid "View Dione"
 
 #: hacks/config/xplanet.xml.h:68
 msgid "View Dione"
-msgstr ""
+msgstr "Voir Dione"
 
 #: hacks/config/xplanet.xml.h:69
 msgid "View Earth"
 
 #: hacks/config/xplanet.xml.h:69
 msgid "View Earth"
@@ -7479,27 +7849,27 @@ msgstr "Voir la Terre"
 
 #: hacks/config/xplanet.xml.h:70
 msgid "View Enceladus"
 
 #: hacks/config/xplanet.xml.h:70
 msgid "View Enceladus"
-msgstr ""
+msgstr "Voir Enceladus"
 
 #: hacks/config/xplanet.xml.h:71
 msgid "View Europa"
 
 #: hacks/config/xplanet.xml.h:71
 msgid "View Europa"
-msgstr ""
+msgstr "Voir Europe"
 
 #: hacks/config/xplanet.xml.h:72
 msgid "View Ganymede"
 
 #: hacks/config/xplanet.xml.h:72
 msgid "View Ganymede"
-msgstr ""
+msgstr "Voir Ganymède"
 
 #: hacks/config/xplanet.xml.h:73
 msgid "View Hyperion"
 
 #: hacks/config/xplanet.xml.h:73
 msgid "View Hyperion"
-msgstr ""
+msgstr "Voir Hyperion"
 
 #: hacks/config/xplanet.xml.h:74
 msgid "View Iapetus"
 
 #: hacks/config/xplanet.xml.h:74
 msgid "View Iapetus"
-msgstr ""
+msgstr "Voir Iapetus"
 
 #: hacks/config/xplanet.xml.h:75
 msgid "View Io"
 
 #: hacks/config/xplanet.xml.h:75
 msgid "View Io"
-msgstr ""
+msgstr "Voir Io"
 
 #: hacks/config/xplanet.xml.h:76
 msgid "View Jupiter"
 
 #: hacks/config/xplanet.xml.h:76
 msgid "View Jupiter"
@@ -7507,23 +7877,23 @@ msgstr "Voir Jupiter"
 
 #: hacks/config/xplanet.xml.h:77
 msgid "View Major"
 
 #: hacks/config/xplanet.xml.h:77
 msgid "View Major"
-msgstr ""
+msgstr "Voir Major"
 
 #: hacks/config/xplanet.xml.h:78
 msgid "View Mars"
 
 #: hacks/config/xplanet.xml.h:78
 msgid "View Mars"
-msgstr ""
+msgstr "Voir Mars"
 
 #: hacks/config/xplanet.xml.h:79
 msgid "View Mercury"
 
 #: hacks/config/xplanet.xml.h:79
 msgid "View Mercury"
-msgstr ""
+msgstr "Voir Mercure"
 
 #: hacks/config/xplanet.xml.h:80
 msgid "View Mimas"
 
 #: hacks/config/xplanet.xml.h:80
 msgid "View Mimas"
-msgstr ""
+msgstr "Voir Minas"
 
 #: hacks/config/xplanet.xml.h:81
 msgid "View Miranda"
 
 #: hacks/config/xplanet.xml.h:81
 msgid "View Miranda"
-msgstr ""
+msgstr "Voir Miranda"
 
 #: hacks/config/xplanet.xml.h:82
 msgid "View Moon"
 
 #: hacks/config/xplanet.xml.h:82
 msgid "View Moon"
@@ -7531,27 +7901,27 @@ msgstr "Voir la Lune"
 
 #: hacks/config/xplanet.xml.h:83
 msgid "View Neptune"
 
 #: hacks/config/xplanet.xml.h:83
 msgid "View Neptune"
-msgstr ""
+msgstr "Voir Neptune"
 
 #: hacks/config/xplanet.xml.h:84
 msgid "View Nereid"
 
 #: hacks/config/xplanet.xml.h:84
 msgid "View Nereid"
-msgstr ""
+msgstr "Voir Nereid"
 
 #: hacks/config/xplanet.xml.h:85
 msgid "View Oberon"
 
 #: hacks/config/xplanet.xml.h:85
 msgid "View Oberon"
-msgstr ""
+msgstr "Voir Obéron"
 
 #: hacks/config/xplanet.xml.h:86
 msgid "View Phobos"
 
 #: hacks/config/xplanet.xml.h:86
 msgid "View Phobos"
-msgstr ""
+msgstr "Voir Phobos"
 
 #: hacks/config/xplanet.xml.h:87
 msgid "View Phoebe"
 
 #: hacks/config/xplanet.xml.h:87
 msgid "View Phoebe"
-msgstr ""
+msgstr "Voir Phoebe"
 
 #: hacks/config/xplanet.xml.h:88
 msgid "View Pluto"
 
 #: hacks/config/xplanet.xml.h:88
 msgid "View Pluto"
-msgstr ""
+msgstr "Voir Pluton"
 
 #: hacks/config/xplanet.xml.h:89
 msgid "View Random"
 
 #: hacks/config/xplanet.xml.h:89
 msgid "View Random"
@@ -7559,11 +7929,11 @@ msgstr "Voir un corps c
 
 #: hacks/config/xplanet.xml.h:90
 msgid "View Rhea"
 
 #: hacks/config/xplanet.xml.h:90
 msgid "View Rhea"
-msgstr ""
+msgstr "Voir Rhéa"
 
 #: hacks/config/xplanet.xml.h:91
 msgid "View Saturn"
 
 #: hacks/config/xplanet.xml.h:91
 msgid "View Saturn"
-msgstr ""
+msgstr "Voir Saturne"
 
 #: hacks/config/xplanet.xml.h:92
 msgid "View Sun"
 
 #: hacks/config/xplanet.xml.h:92
 msgid "View Sun"
@@ -7571,31 +7941,31 @@ msgstr "Voir le Soleil"
 
 #: hacks/config/xplanet.xml.h:93
 msgid "View Tethys"
 
 #: hacks/config/xplanet.xml.h:93
 msgid "View Tethys"
-msgstr ""
+msgstr "Voir Thethys"
 
 #: hacks/config/xplanet.xml.h:94
 msgid "View Titan"
 
 #: hacks/config/xplanet.xml.h:94
 msgid "View Titan"
-msgstr ""
+msgstr "Voir Titan"
 
 #: hacks/config/xplanet.xml.h:95
 msgid "View Titania"
 
 #: hacks/config/xplanet.xml.h:95
 msgid "View Titania"
-msgstr ""
+msgstr "Voir Titania"
 
 #: hacks/config/xplanet.xml.h:96
 msgid "View Triton"
 
 #: hacks/config/xplanet.xml.h:96
 msgid "View Triton"
-msgstr ""
+msgstr "Voir Triton"
 
 #: hacks/config/xplanet.xml.h:97
 msgid "View Umbriel"
 
 #: hacks/config/xplanet.xml.h:97
 msgid "View Umbriel"
-msgstr ""
+msgstr "Voir Umbriel"
 
 #: hacks/config/xplanet.xml.h:98
 msgid "View Uranus"
 
 #: hacks/config/xplanet.xml.h:98
 msgid "View Uranus"
-msgstr ""
+msgstr "Voir Uranus"
 
 #: hacks/config/xplanet.xml.h:99
 msgid "View Venus"
 
 #: hacks/config/xplanet.xml.h:99
 msgid "View Venus"
-msgstr ""
+msgstr "Voir Vénus"
 
 #: hacks/config/xplanet.xml.h:100
 msgid "Xplanet"
 
 #: hacks/config/xplanet.xml.h:100
 msgid "Xplanet"
@@ -7614,9 +7984,7 @@ msgstr ""
 msgid ""
 "Draws a few swarms of critters flying around the screen, with nicely faded "
 "color trails behind them. Written by Chris Leger."
 msgid ""
 "Draws a few swarms of critters flying around the screen, with nicely faded "
 "color trails behind them. Written by Chris Leger."
-msgstr ""
-"Dessine quelques nuées de bestioles qui volent sur l'écran, avec de jolies "
-"traînées dans des fondus de couleur. Ã‰crit par Chris Leger."
+msgstr "Dessine quelques nuées de bestioles qui volent sur l'écran, avec de jolies traînées dans des fondus de couleur. Ã‰crit par Chris Leger."
 
 #: hacks/config/xrayswarm.xml.h:5
 msgid "XRaySwarm"
 
 #: hacks/config/xrayswarm.xml.h:5
 msgid "XRaySwarm"
@@ -7632,17 +8000,11 @@ msgstr ""
 msgid "Xsnow"
 msgstr "Xsnow"
 
 msgid "Xsnow"
 msgstr "Xsnow"
 
-#: hacks/config/xspirograph.xml.h:4
-msgid "Layers"
-msgstr "Couches"
-
 #: hacks/config/xspirograph.xml.h:5
 msgid ""
 "Simulates that pen-in-nested-plastic-gears toy from your childhood. By Rohit "
 "Singh."
 #: hacks/config/xspirograph.xml.h:5
 msgid ""
 "Simulates that pen-in-nested-plastic-gears toy from your childhood. By Rohit "
 "Singh."
-msgstr ""
-"Simule le célèbre jouet de notre enfance, constitué d'un stylo logé dans un "
-"engrenage en plastique. Par Rohit Singh."
+msgstr "Simule le célèbre jouet de notre enfance, constitué d'un stylo logé dans un engrenage en plastique. Par Rohit Singh."
 
 #: hacks/config/xspirograph.xml.h:6
 msgid "XSpiroGraph"
 
 #: hacks/config/xspirograph.xml.h:6
 msgid "XSpiroGraph"
@@ -7672,9 +8034,7 @@ msgstr "XTeeVee"
 msgid ""
 "XTeeVee simulates various television problems, including static, loss of "
 "vertical hold, and a test pattern. By Greg Knauss."
 msgid ""
 "XTeeVee simulates various television problems, including static, loss of "
 "vertical hold, and a test pattern. By Greg Knauss."
-msgstr ""
-"XTeeVee simule différents problèmes de télévision comme les parasites, la "
-"perte de stabilité verticale et la mire. Par Greg Knauss."
+msgstr "XTeeVee simule différents problèmes de télévision comme les parasites, la perte de stabilité verticale et la mire. Par Greg Knauss."
 
 #: hacks/config/zoom.xml.h:3
 msgid "Lens Offset"
 
 #: hacks/config/zoom.xml.h:3
 msgid "Lens Offset"
@@ -7689,7 +8049,4 @@ msgid ""
 "Zooms in on a part of the screen and then moves around. With the -lenses "
 "option the result is like looking through many overlapping lenses rather "
 "than just a simple zoom. Written by James Macnicol."
 "Zooms in on a part of the screen and then moves around. With the -lenses "
 "option the result is like looking through many overlapping lenses rather "
 "than just a simple zoom. Written by James Macnicol."
-msgstr ""
-"Zoome sur une partie de l'écran et se déplace. Avec l'option '-lenses', le "
-"résultat ressemble Ã  la superposition de lentilles plutôt qu'à un simple "
-"zoom. Ã‰rit par James Macnicol."
+msgstr "Zoome sur une partie de l'écran et se déplace. Avec l'option '-lenses', le résultat ressemble Ã  la superposition de lentilles plutôt qu'à un simple zoom. Ã‰crit par James Macnicol."
index 29d6225561a884f7cdc25c9b9415444e54c0f23e..9523f5f37789d9433b97963e5081ed77f32f1a71 100644 (file)
--- a/setup.com
+++ b/setup.com
@@ -4,6 +4,7 @@ $ set def [.HACKS]
 $ mydisk = f$trnlmn("SYS$DISK")
 $ mydir  = mydisk+f$directory()
 $ anemone      :== $'mydir'anemone
 $ mydisk = f$trnlmn("SYS$DISK")
 $ mydir  = mydisk+f$directory()
 $ anemone      :== $'mydir'anemone
+$ anemotaxis   :== $'mydir'anemotaxis
 $ ant          :== $'mydir'ant
 $ apollonian   :== $'mydir'apollonian
 $ apple2       :== $'mydir'apple2
 $ ant          :== $'mydir'ant
 $ apollonian   :== $'mydir'apollonian
 $ apple2       :== $'mydir'apple2
@@ -66,6 +67,7 @@ $ lissie      :== $'mydir'lissie
 $ lmorph       :== $'mydir'lmorph
 $ loop         :== $'mydir'loop
 $ maze         :== $'mydir'maze
 $ lmorph       :== $'mydir'lmorph
 $ loop         :== $'mydir'loop
 $ maze         :== $'mydir'maze
+$ memscroller  :== $'mydir'memscroller
 $ metaballs    :== $'mydir'metaballs
 $ mismunch     :== $'mydir'mismunch
 $ moire2       :== $'mydir'moire2
 $ metaballs    :== $'mydir'metaballs
 $ mismunch     :== $'mydir'mismunch
 $ moire2       :== $'mydir'moire2
index 7b5298dffd156f653653a550fae454f332de4dab..628617348b733c2f43bd326fc85abf35a6bc521a 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 1998, 2001, 2003
+/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 1998, 2001, 2003, 2004
  *  Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  *  Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
@@ -26,6 +26,9 @@
 #include "vroot.h"
 #include <X11/Xatom.h>
 
 #include "vroot.h"
 #include <X11/Xatom.h>
 
+#include <X11/Intrinsic.h>   /* for XtInputId, etc */
+
+
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif
@@ -35,6 +38,7 @@
 
 
 extern char *progname;
 
 
 extern char *progname;
+extern XtAppContext app;
 
 
 static Bool error_handler_hit_p = False;
 
 
 static Bool error_handler_hit_p = False;
@@ -76,12 +80,12 @@ xscreensaver_window_p (Display *dpy, Window window)
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
-  char *version;
+  unsigned char *version;
   if (XGetWindowProperty (dpy, window,
                          XInternAtom (dpy, "_SCREENSAVER_VERSION", False),
                          0, 1, False, XA_STRING,
                          &type, &format, &nitems, &bytesafter,
   if (XGetWindowProperty (dpy, window,
                          XInternAtom (dpy, "_SCREENSAVER_VERSION", False),
                          0, 1, False, XA_STRING,
                          &type, &format, &nitems, &bytesafter,
-                         (unsigned char **) &version)
+                         &version)
       == Success
       && type != None)
     return True;
       == Success
       && type != None)
     return True;
@@ -164,6 +168,27 @@ checkerboard (Screen *screen, Drawable drawable)
       }
 }
 
       }
 }
 
+
+static char *
+get_name (Display *dpy, Window window)
+{
+  Atom type;
+  int format;
+  unsigned long nitems, bytesafter;
+  unsigned char *name = 0;
+  Atom atom = XInternAtom (dpy, XA_XSCREENSAVER_IMAGE_FILENAME, False);
+  if (XGetWindowProperty (dpy, window, atom,
+                          0, 1024, False, XA_STRING,
+                          &type, &format, &nitems, &bytesafter,
+                          &name)
+      == Success
+      && type != None)
+    return strdup((char *) name);
+  else
+    return 0;
+}
+
+
 static void
 hack_subproc_environment (Display *dpy)
 {
 static void
 hack_subproc_environment (Display *dpy)
 {
@@ -234,12 +259,127 @@ fork_exec_wait (const char *command)
 }
 
 
 }
 
 
+typedef struct {
+  void (*callback) (Screen *, Window, Drawable,
+                    const char *name, void *closure);
+  Screen *screen;
+  Window window;
+  Drawable drawable;
+  void *closure;
+  FILE *read_pipe;
+  FILE *write_pipe;
+  XtInputId pipe_id;
+} grabclient_data;
+
+
+static void finalize_cb (XtPointer closure, int *fd, XtIntervalId *id);
+
+static void
+fork_exec_cb (const char *command,
+              Screen *screen, Window window, Drawable drawable,
+              void (*callback) (Screen *, Window, Drawable,
+                                const char *name, void *closure),
+              void *closure)
+{
+  grabclient_data *data;
+  char buf [255];
+  pid_t forked;
+
+  int fds [2];
+
+  if (pipe (fds))
+    {
+      sprintf (buf, "%s: creating pipe", progname);
+      perror (buf);
+      exit (1);
+    }
+
+  data = (grabclient_data *) calloc (1, sizeof(*data));
+  data->callback   = callback;
+  data->closure    = closure;
+  data->screen     = screen;
+  data->window     = window;
+  data->drawable   = drawable;
+  data->read_pipe  = fdopen (fds[0], "r");
+  data->write_pipe = fdopen (fds[1], "w");
+
+  if (!data->read_pipe || !data->write_pipe)
+    {
+      sprintf (buf, "%s: fdopen", progname);
+      perror (buf);
+      exit (1);
+    }
+
+  data->pipe_id =
+    XtAppAddInput (app, fileno (data->read_pipe),
+                   (XtPointer) (XtInputReadMask | XtInputExceptMask),
+                   finalize_cb, (XtPointer) data);
+
+  switch ((int) (forked = fork ()))
+    {
+    case -1:
+      sprintf (buf, "%s: couldn't fork", progname);
+      perror (buf);
+      return;
+
+    case 0:                                    /* child */
+
+      fclose (data->read_pipe);
+      data->read_pipe = 0;
+
+      /* clone the write pipe onto stdout so that it gets closed
+         when the fork exits.  This will shut down the pipe and
+         signal the parent.
+       */
+      close (fileno (stdout));
+      dup2 (fds[1], fileno (stdout));
+      close (fds[1]);
+
+      close (fileno (stdin)); /* for kicks */
+
+      exec_simple_command (command);
+      exit (1);  /* exits child fork */
+      break;
+
+    default:                                   /* parent */
+      fclose (data->write_pipe);
+      data->write_pipe = 0;
+      break;
+    }
+}
+
+
+/* Called in the parent when the forked process dies.
+   Runs the caller's callback, and cleans up.
+ */
+static void
+finalize_cb (XtPointer closure, int *fd, XtIntervalId *id)
+{
+  grabclient_data *data = (grabclient_data *) closure;
+  char *name;
+
+  XtRemoveInput (*id);
+
+  name = get_name (DisplayOfScreen (data->screen), data->window);
+  data->callback (data->screen, data->window, data->drawable,
+                  name, data->closure);
+  free (name);
+
+  fclose (data->read_pipe);
+  memset (data, 0, sizeof (*data));
+  free (data);
+}
+
+
 /* Loads an image into the Drawable.
    When grabbing desktop images, the Window will be unmapped first.
  */
 /* Loads an image into the Drawable.
    When grabbing desktop images, the Window will be unmapped first.
  */
-void
-load_random_image (Screen *screen, Window window, Drawable drawable,
-                   char **name_ret)
+static void
+load_random_image_1 (Screen *screen, Window window, Drawable drawable,
+                     void (*callback) (Screen *, Window, Drawable,
+                                       const char *name, void *closure),
+                     void *closure,
+                     char **name_ret)
 {
   Display *dpy = DisplayOfScreen (screen);
   char *grabber = get_string_resource ("desktopGrabber", "DesktopGrabber");
 {
   Display *dpy = DisplayOfScreen (screen);
   char *grabber = get_string_resource ("desktopGrabber", "DesktopGrabber");
@@ -274,27 +414,90 @@ load_random_image (Screen *screen, Window window, Drawable drawable,
 
   XSync (dpy, True);
   hack_subproc_environment (dpy);
 
   XSync (dpy, True);
   hack_subproc_environment (dpy);
-  fork_exec_wait (cmd);
+
+  if (callback)
+    {
+      /* Start the image loading in another fork and return immediately.
+         Invoke the callback function when done.
+       */
+      if (name_ret) abort();
+      fork_exec_cb (cmd, screen, window, drawable, callback, closure);
+    }
+  else
+    {
+      /* Wait for the image to load, and return it immediately.
+       */
+      fork_exec_wait (cmd);
+      if (name_ret)
+        *name_ret = get_name (dpy, window);
+    }
+
   free (cmd);
   XSync (dpy, True);
   free (cmd);
   XSync (dpy, True);
+}
 
 
-  if (name_ret) 
+
+/* Loads an image into the Drawable in the background;
+   when the image is fully loaded, runs the callback.
+   When grabbing desktop images, the Window will be unmapped first.
+ */
+void
+fork_load_random_image (Screen *screen, Window window, Drawable drawable,
+                        void (*callback) (Screen *, Window, Drawable,
+                                          const char *name, void *closure),
+                        void *closure)
+{
+  load_random_image_1 (screen, window, drawable, callback, closure, 0);
+}
+
+
+#ifndef DEBUG
+
+/* Loads an image into the Drawable, returning once the image is loaded.
+   When grabbing desktop images, the Window will be unmapped first.
+ */
+void
+load_random_image (Screen *screen, Window window, Drawable drawable,
+                   char **name_ret)
+{
+  load_random_image_1 (screen, window, drawable, 0, 0, name_ret);
+}
+
+#else  /* DEBUG */
+
+typedef struct {
+  char **name_ret;
+  Bool done;
+} debug_closure;
+
+static void
+debug_cb (Screen *screen, Window window, Drawable drawable,
+          const char *name, void *closure)
+{
+  debug_closure *data = (debug_closure *) closure;
+  fprintf (stderr, "%s: GRAB DEBUG: callback\n", progname);
+  if (data->name_ret)
+    *data->name_ret = (name ? strdup (name) : 0);
+  data->done = True;
+}
+
+void
+load_random_image (Screen *screen, Window window, Drawable drawable,
+                   char **name_ret)
+{
+  debug_closure data;
+  data.name_ret = name_ret;
+  data.done = False;
+  fprintf (stderr, "%s: GRAB DEBUG: forking\n", progname);
+  fork_load_random_image (screen, window, drawable, debug_cb, &data);
+  while (! data.done)
     {
     {
-      Atom type;
-      int format;
-      unsigned long nitems, bytesafter;
-      char *name=NULL;
-
-      *name_ret = NULL;
-
-      if (XGetWindowProperty (dpy, window,
-                              XInternAtom (dpy, XA_XSCREENSAVER_IMAGE_FILENAME,
-                                           False),
-                              0, 1024, False, XA_STRING,
-                              &type, &format, &nitems, &bytesafter,
-                              (unsigned char **) &name)
-          == Success
-          && type != None)
-        *name_ret = strdup(name);
+      fprintf (stderr, "%s: GRAB DEBUG: waiting\n", progname);
+      if (XtAppPending (app) & XtIMAlternateInput)
+        XtAppProcessEvent (app, XtIMAlternateInput);
+      usleep (50000);
     }
     }
+  fprintf (stderr, "%s: GRAB DEBUG: done\n", progname);
 }
 }
+
+#endif /* DEBUG */
index f9ce753c7a2337746e64de145aca8b81033d8718..cc5b57522de05d06d31e8cee2811fc4eae033797 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 1998, 2003
+/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 1998, 2003, 2004
  *  Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  *  Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
@@ -117,12 +117,12 @@ xscreensaver_window_p (Display *dpy, Window window)
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
   Atom type;
   int format;
   unsigned long nitems, bytesafter;
-  char *version;
+  unsigned char *version;
   if (XGetWindowProperty (dpy, window,
                          XInternAtom (dpy, "_SCREENSAVER_VERSION", False),
                          0, 1, False, XA_STRING,
                          &type, &format, &nitems, &bytesafter,
   if (XGetWindowProperty (dpy, window,
                          XInternAtom (dpy, "_SCREENSAVER_VERSION", False),
                          0, 1, False, XA_STRING,
                          &type, &format, &nitems, &bytesafter,
-                         (unsigned char **) &version)
+                         &version)
       == Success
       && type != None)
     return True;
       == Success
       && type != None)
     return True;
index 3d9b16eb9e2cf92ed86e5c6ff3dddc2ae39a5b6e..19d01e2aa2e165df4add8aeb37cf9426d1e98875 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 2001, 2003
+/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 2001, 2003, 2004
  *  Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  *  Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
@@ -36,6 +36,18 @@ extern void load_random_image (Screen *screen,
                                Drawable target_window_or_pixmap, 
                                char **filename_return);
 
                                Drawable target_window_or_pixmap, 
                                char **filename_return);
 
+/* Like the above, but loads the image in the background and runs the
+   given callback once it has been loaded.
+ */
+extern void fork_load_random_image (Screen *screen, Window window,
+                                    Drawable drawable,
+                                    void (*callback) (Screen *, Window,
+                                                      Drawable,
+                                                      const char *name,
+                                                      void *closure),
+                                    void *closure);
+
+
 /* Whether one should use GCSubwindowMode when drawing on this window
    (assuming a screen image has been grabbed onto it.)  Yes, this is a
    total kludge. */
 /* Whether one should use GCSubwindowMode when drawing on this window
    (assuming a screen image has been grabbed onto it.)  Yes, this is a
    total kludge. */
index 8569903846d9b5d123e373eef07f0d47eb143377..0f42dcdb3faabe84fb4ca067c758d4cc57ff623b 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1997, 2001 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997, 2001, 2004 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -81,7 +81,7 @@ get_overlay_prop (Screen *screen, struct overlay_data **data_ret)
   Atom actual_type;
   int actual_format;
   unsigned long nitems, bytes_after;
   Atom actual_type;
   int actual_format;
   unsigned long nitems, bytes_after;
-  struct overlay_data *data = 0;
+  unsigned char *data = 0;
   Display *dpy = DisplayOfScreen(screen);
   Window window = RootWindowOfScreen(screen);
   Atom XA_SERVER_OVERLAY_VISUALS =
   Display *dpy = DisplayOfScreen(screen);
   Window window = RootWindowOfScreen(screen);
   Atom XA_SERVER_OVERLAY_VISUALS =
@@ -93,7 +93,7 @@ get_overlay_prop (Screen *screen, struct overlay_data **data_ret)
                               XA_SERVER_OVERLAY_VISUALS,
                               &actual_type, &actual_format,
                               &nitems, &bytes_after,
                               XA_SERVER_OVERLAY_VISUALS,
                               &actual_type, &actual_format,
                               &nitems, &bytes_after,
-                              (unsigned char **) &data);
+                              &data);
   if (result != Success ||
       actual_type != XA_SERVER_OVERLAY_VISUALS ||
       actual_format != 32 ||
   if (result != Success ||
       actual_type != XA_SERVER_OVERLAY_VISUALS ||
       actual_format != 32 ||
@@ -104,8 +104,9 @@ get_overlay_prop (Screen *screen, struct overlay_data **data_ret)
     }
   else
     {
     }
   else
     {
-      *data_ret = data;
-      return nitems / (sizeof(*data) / sizeof(CARD32));
+      struct overlay_data *d = (struct overlay_data *) data;
+      *data_ret = d;
+      return nitems / (sizeof(*d) / sizeof(CARD32));
     }
 }
 
     }
 }
 
index 7774d8dc93b61fb2d5275ea4157500f1ab37f7bf..98c9ef7b15e58905a98cc999bead4ece6ca8eccb 100644 (file)
@@ -1,2 +1,2 @@
 static const char screensaver_id[] =
 static const char screensaver_id[] =
-       "@(#)xscreensaver 4.16 (12-May-2004), by Jamie Zawinski (jwz@jwz.org)";
+       "@(#)xscreensaver 4.18 (14-Aug-2004), by Jamie Zawinski (jwz@jwz.org)";
index ef41073a96aab0b797dbf32bb8c1d47b60e693a7..dd4a7291a910d15cc56e2f4a480d41718b50b222 100644 (file)
@@ -116,15 +116,15 @@ VirtualRootWindowOfScreen(screen) Screen *screen;
                                Atom actual_type;
                                int actual_format;
                                unsigned long nitems, bytesafter;
                                Atom actual_type;
                                int actual_format;
                                unsigned long nitems, bytesafter;
-                               Window *newRoot = (Window *)0;
+                               unsigned char *newRoot = 0;
 
                                if (XGetWindowProperty(dpy, children[i],
                                        __SWM_VROOT, 0, 1, False, XA_WINDOW,
                                        &actual_type, &actual_format,
                                        &nitems, &bytesafter,
 
                                if (XGetWindowProperty(dpy, children[i],
                                        __SWM_VROOT, 0, 1, False, XA_WINDOW,
                                        &actual_type, &actual_format,
                                        &nitems, &bytesafter,
-                                       (unsigned char **) &newRoot) == Success
+                                       &newRoot) == Success
                                    && newRoot) {
                                    && newRoot) {
-                                   root = *newRoot;
+                                   root = (Window) *newRoot;
                                    break;
                                }
                        }
                                    break;
                                }
                        }
index 6cd6f465f0070fb058599b2c4e045c8fb8e495fb..2f273d469c370ae8761b232130b82871b5464bf0 100644 (file)
@@ -167,10 +167,7 @@ ERROR! Unsupported release of X11
 
 #else  /* HAVE_XMU */
 
 
 #else  /* HAVE_XMU */
 
-# ifdef __osf__
-  /* Stupid alpha 3.2 compiler returns a FAILURE exit code if compiling
-     an empty file.  Fake it out with a file-private variable. */
-  static const int digital_unix_compiler_sucks;
-# endif /* __osf__ */
+/* Shut up the stupid "gcc -pedantic" warning */
+int _I_dont_care_that_ISO_C_forbids_an_empty_source_file_ = 1;
 
 #endif /* HAVE_XMU */
 
 #endif /* HAVE_XMU */
index ec8187d2228029bf375534a529a254f0b5a13e1f..b46a44d9a7d8de453bd7c2f0fdfc98711edabe0a 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title:          xscreensaver
 Begin3
 Title:          xscreensaver
-Version:        4.16
-Entered-date:   12MAY04
+Version:        4.18
+Entered-date:   14AUG04
 Description:    A modular screen saver and locker for the X Window System.
                 Highly customizable: allows the use of any program that
                 can draw on the root window as a display mode.
 Description:    A modular screen saver and locker for the X Window System.
                 Highly customizable: allows the use of any program that
                 can draw on the root window as a display mode.
@@ -10,16 +10,16 @@ Keywords:       screen saver, screen lock, lock, xlock, X11
 Author:         jwz@jwz.org (Jamie Zawinski)
 Maintained-by:  jwz@jwz.org (Jamie Zawinski)
 Primary-site:   http://www.jwz.org/xscreensaver/
 Author:         jwz@jwz.org (Jamie Zawinski)
 Maintained-by:  jwz@jwz.org (Jamie Zawinski)
 Primary-site:   http://www.jwz.org/xscreensaver/
-                4209K xscreensaver-4.16.tar.gz
-                68K   xscreensaver.README
+                4251K xscreensaver-4.18.tar.gz
+                69K   xscreensaver.README
                 1K    xscreensaver.lsm
 Alternate-site: sunsite.unc.edu /pub/Linux/X11/screensavers/
                 1K    xscreensaver.lsm
 Alternate-site: sunsite.unc.edu /pub/Linux/X11/screensavers/
-                4209K xscreensaver-4.16.tar.gz
-                68K   xscreensaver.README
+                4251K xscreensaver-4.18.tar.gz
+                69K   xscreensaver.README
                 1K    xscreensaver.lsm
 Alternate-site: ftp.x.org /contrib/applications/
                 1K    xscreensaver.lsm
 Alternate-site: ftp.x.org /contrib/applications/
-                4209K xscreensaver-4.16.tar.gz
-                68K   xscreensaver.README
+                4251K xscreensaver-4.18.tar.gz
+                69K   xscreensaver.README
                 1K    xscreensaver.lsm
 Platforms:      Linux, Irix, SunOS, Solaris, HPUX, AIX, FreeBSD, NetBSD,
                 BSDI, SCO, OSF1, Ultrix, VMS.
                 1K    xscreensaver.lsm
 Platforms:      Linux, Irix, SunOS, Solaris, HPUX, AIX, FreeBSD, NetBSD,
                 BSDI, SCO, OSF1, Ultrix, VMS.
index 9ebdd4931536d7c5de4cf7c9845b22a19e26d8a7..6660f7de064d80b844901e80c1dca68a6991268a 100644 (file)
@@ -1,5 +1,5 @@
 %define        name            xscreensaver
 %define        name            xscreensaver
-%define        version         4.16
+%define        version         4.18
 %define        release         1
 %define        epoch           1
 %define        x11_prefix      /usr/X11R6
 %define        release         1
 %define        epoch           1
 %define        x11_prefix      /usr/X11R6