diff --git a/README b/README
index cb5f23e417b98adffe62197ba80354910ea5f84e..0174c3291c60763f846808f93e53490f06024f2e 100644
--- a/README
+++ b/README
@@ -1,33 +1,28 @@
+
 This is Gmsh, an automatic three-dimensional finite element mesh
 generator, primarily Delaunay, with built-in pre- and post-processing
 facilities.
 
+To install Gmsh, type
 
-./configure --with-fltk-prefix=/path/to/fltk
+./configure --with-fltk-prefix=/path/to/fltk-1.1.x
 make
 make install
 
-This requires FLTK 1.1, GSL and OPENGL to be installed... If not in
-default locations, use the --with-...-prefix. You can also ...
-Also possible to define FLTK_DIR, GSL_DIR, GL_DIR
+This requires the Fast Light Tool Kit (FLTK, http://www.fltk.org)
+version 1.1 or above, the GNU Scientific Library (GSL,
+http://sources.redhat.com/gsl/) and OpenGL (for a free implementation,
+see http://www.mesa3d.org) to be installed on your system. If not in
+default locations, you can either use the --with-fltk-prefix,
+--with-gsl-prefix and --with-gl-prefix configure options, or you can
+set the environment variables FLTK_DIR, GSL_DIR and GL_DIR.
 
-To build a non-graphical version...
+To install a non-graphical version of Gmsh (that does not require
+FLTK nor OpenGL), type
 
 ./configure --disable-gui
-
-
-
-
-
-
-Gmsh is free software. See the file doc/COPYING for copying
-permission. Parts of Gmsh are distributed with additional license
-requirements. Check individual files for more information. Most
-notably, if you incorporate the Triangle/ library, Gmsh can only be
-redistributed if no compensation is received.
-
-Type 'make' to build Gmsh. This requires FLTK version 1.1.x to be
-installed in $(HOME)/SOURCES/fltk-1.1
+make
+make install
 
 See the doc/ and tutorial/ directories for documentation.
 
diff --git a/configure b/configure
index bce9fd8fe2f149de28e89f91b71f3f344bff6031..04db300256d0265d7b6cf4eb7a8d105e52b79880 100755
--- a/configure
+++ b/configure
@@ -760,6 +760,10 @@ ac_env_CPP_set=${CPP+set}
 ac_env_CPP_value=$CPP
 ac_cv_env_CPP_set=${CPP+set}
 ac_cv_env_CPP_value=$CPP
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
 
 #
 # Report the --help message.
@@ -856,6 +860,7 @@ Some influential environment variables:
   CXX         C++ compiler command
   CXXFLAGS    C++ compiler flags
   CPP         C preprocessor
+  CXXCPP      C++ preprocessor
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1256,6 +1261,13 @@ if test "x${UNAME}" = "xIRIX64"; then
 fi
 
 
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -2008,11 +2020,11 @@ else
 cat conftest.$ac_ext >&5
 fi
 rm -f conftest.$ac_objext conftest.$ac_ext
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
 ac_ext=cc
 ac_cpp='$CXXCPP $CPPFLAGS'
@@ -2332,11 +2344,11 @@ if test -n "$ac_declaration"; then
   echo '#endif'             >>confdefs.h
 fi
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
 
 ac_ext=c
@@ -2533,11 +2545,11 @@ echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
@@ -2673,6 +2685,18 @@ GMSH_DIRS="Common DataStr Geo Mesh Numeric Parallel Parser Plugin"
 if test "x$enable_gui" != "xno"; then
   GMSH_DIRS="${GMSH_DIRS} Graphics Fltk jpeg"
   GMSH_LIBS="-Llib -lGmshFltk -lGmshParser -lGmshGraphics -lGmshMesh -lGmshGeo -lGmshNumeric -lGmshCommon -lGmshDataStr -lGmshJpeg -lGmshPlugin -lGmshParallel"
+
+#  dnl We should check for FLTK like this:
+#  AC_PATH_PROG(FLTKCONFIG,fltk-config)
+#
+#  if test "x$FLTKCONFIG" = x; then
+#    AC_MSG_ERROR([Sorry, flphoto requires FLTK 1.1.x.])
+#  else
+#    CFLAGS="`$FLTKCONFIG --cflags` $CFLAGS"
+#    CXXFLAGS="`$FLTKCONFIG --cflags` $CXXFLAGS"
+#    LIBS="`$FLTKCONFIG --use-images --ldflags` $LIBS"
+#  fi
+
   VERSION_FLAGS="-D_FLTK"
   if test "x${FLTK_PREFIX}" != "x"; then
     FLTK_LIB_PREFIX="-L${FLTK_PREFIX}/lib"
@@ -2755,6 +2779,202 @@ case "$UNAME" in
   *)
     if test "x$enable_gui" != "xno"; then
 
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # 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"
+#include "confdefs.h"
+#include <assert.h>
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Broken: fails on valid input.
+continue
+fi
+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
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # 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"
+#include "confdefs.h"
+#include <assert.h>
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Broken: fails on valid input.
+continue
+fi
+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
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
 
 echo "$as_me:$LINENO: checking for X" >&5
 echo $ECHO_N "checking for X... $ECHO_C" >&6
@@ -2867,7 +3087,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
   else
     ac_cpp_err=
   fi
@@ -3956,7 +4176,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
   else
     ac_cpp_err=
   fi
@@ -4187,7 +4407,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
   else
     ac_cpp_err=
   fi
@@ -4413,7 +4633,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
   else
     ac_cpp_err=
   fi
@@ -4732,7 +4952,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
   else
     ac_cpp_err=
   fi
@@ -5381,6 +5601,7 @@ s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
 s,@AR@,$AR,;t t
 s,@VERSION_FLAGS@,$VERSION_FLAGS,;t t
 s,@GUI_INCLUDE@,$GUI_INCLUDE,;t t
+s,@CXXCPP@,$CXXCPP,;t t
 s,@X_CFLAGS@,$X_CFLAGS,;t t
 s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t
 s,@X_LIBS@,$X_LIBS,;t t
diff --git a/configure.in b/configure.in
index 215ec93940d469dba4dcf1330512783dcc273147..9b57f7838d18a39b2e2571fd485bcc460044a914 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-dnl "$Id: configure.in,v 1.3 2003-02-11 08:54:55 geuzaine Exp $"
+dnl "$Id: configure.in,v 1.4 2003-02-11 17:55:23 geuzaine Exp $"
 dnl
 dnl Machine independent configuration script for Gmsh.
 dnl
@@ -61,6 +61,9 @@ if test "x${UNAME}" = "xIRIX64"; then
 fi
 AC_SUBST(UNAME)
 
+dnl Use C++ for configure tests
+AC_LANG(C++)
+
 dnl Check for default compilers
 AC_PROG_CC
 AC_PROG_CXX
@@ -86,6 +89,18 @@ dnl Choose blackbox or GUI version
 if test "x$enable_gui" != "xno"; then
   GMSH_DIRS="${GMSH_DIRS} Graphics Fltk jpeg"
   GMSH_LIBS="-Llib -lGmshFltk -lGmshParser -lGmshGraphics -lGmshMesh -lGmshGeo -lGmshNumeric -lGmshCommon -lGmshDataStr -lGmshJpeg -lGmshPlugin -lGmshParallel"
+
+#  dnl We should check for FLTK like this:
+#  AC_PATH_PROG(FLTKCONFIG,fltk-config)
+#
+#  if test "x$FLTKCONFIG" = x; then
+#    AC_MSG_ERROR([Sorry, flphoto requires FLTK 1.1.x.])
+#  else
+#    CFLAGS="`$FLTKCONFIG --cflags` $CFLAGS"
+#    CXXFLAGS="`$FLTKCONFIG --cflags` $CXXFLAGS"
+#    LIBS="`$FLTKCONFIG --use-images --ldflags` $LIBS"
+#  fi
+
   VERSION_FLAGS="-D_FLTK"
   if test "x${FLTK_PREFIX}" != "x"; then
     FLTK_LIB_PREFIX="-L${FLTK_PREFIX}/lib"
diff --git a/doc/README.cvs b/doc/README.cvs
index 04d19fa2aad315453931d2464fe6506ad8ac5bd1..863d51814045c589e609e023baa4198d822ed0a5 100644
--- a/doc/README.cvs
+++ b/doc/README.cvs
@@ -1,22 +1,20 @@
 
-To download the latset full source by CVS, type
+0) Set the variable CVS_RHS to ssh ('export CVS_RHS=ssh' with bash, or
+   'setenv CVS_RHS ssh' with tcsh)
+   
+1) The first time you want to download the latest full source by
+   CVS, type:
 
-cvs -d :pserver:YOUR_NAME@MACHINE:CVSROOT COMMAND
+   cvs -d username@cvs.geuz.org:/cvsroot ckeckout gmsh
 
-where YOUR_NAME is your username on MACHINE, and where COMMAND is
-first 'login' (you will be prompted for a password), and then
-'checkout gmsh'. When this is done, you can use 'logout' to exit.
+   where username is your login on cvs.geuz.org
 
-To update your local tree to the latest version in the current branch,
-type
+2) To update your local version to the latest and greatest, go in the
+   gmsh directory and type:
+ 
+   cvs update -dPA
 
-cvs update -dP
-
-To update to the very latest code available, type
-
-cvs update -dPA
-
-To submit your changes, type
-
-cvs commit
+3) To commit your changes to the central repository, go in the gmsh
+   directory and type:
 
+   cvs commit
diff --git a/doc/README.leaks b/doc/README.leaks
index 5f138056b35b93c84017dcd7190f866cd883d95c..1e197d2a04080d003b97e8a049d9fe42579c1413 100644
--- a/doc/README.leaks
+++ b/doc/README.leaks
@@ -1,6 +1,10 @@
 * LIBNJAMD
 
-export LD_PRELOAD=libnjamd.so
+  export LD_PRELOAD=libnjamd.so
+  kill -USR1
 
- kill -USR1
+* valgrind
 
+* purify
+
+* memprof