user debian-rele...@lists.debian.org
usertags <bugnumber> bsp-2017-04-ca-montreal
thanks

Hi all,

I was sad too to not have drgeo in Debian Edu so I've made this patch to make it compatible with Guile 2.0 and 2.2. It needs to run autoreconf so I added dh_autoreconf to the build phase in the rules file.
Also I've deactivated undo/redo  because it was segfaulting.

If it works for you, I'll do a nmu and try to get a sponsor for it.

Regards,

Patrick
Seulement dans ../drgeo-1.1.0/: compile
Seulement dans ../drgeo-1.1.0/: config.rpath
diff -ur drgeo-1.1.0/configure.ac ../drgeo-1.1.0/configure.ac
--- drgeo-1.1.0/configure.ac	2005-07-17 17:24:30.000000000 -0400
+++ ../drgeo-1.1.0/configure.ac	2017-04-14 15:05:35.773811254 -0400
@@ -4,7 +4,7 @@
 
 AC_PROG_INTLTOOL
 
-AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
+AM_INIT_AUTOMAKE
 AM_CONFIG_HEADER(config.h)
 
 AM_MAINTAINER_MODE
@@ -31,14 +31,10 @@
 PKG_CHECK_MODULES(DRGEO,gtk+-2.0 libglade-2.0 libxml-2.0)
 AC_SUBST(DRGEO_CFLAGS)
 AC_SUBST(DRGEO_LIBS)
+GUILE_PKG([2.2 2.0])
 GUILE_PROGS
-
-dnl **********************************************************************
-dnl * 	DEFINE EXTRA 
-dnl **********************************************************************
-
 GUILE_FLAGS
-
+GUILE_SITE_DIR
 
 dnl **********************************************************************
 dnl *	CREATE OUTPUT VARIABLE 						 *
diff -ur drgeo-1.1.0/debian/rules ../drgeo-1.1.0/debian/rules
--- drgeo-1.1.0/debian/rules	2014-09-07 14:03:04.000000000 -0400
+++ ../drgeo-1.1.0/debian/rules	2017-04-16 08:29:14.625061078 -0400
@@ -25,6 +25,7 @@
 build-stamp:
 	dh_testdir
 	cp -vf /usr/share/misc/config.sub /usr/share/misc/config.guess .
+	dh_autoreconf
 	CFLAGS="${EXTRACFLAGS}" ./configure --prefix=/usr
 	$(MAKE)
 	touch build-stamp
@@ -33,6 +34,7 @@
 	dh_testdir
 	dh_testroot
 	rm -f build-stamp config.guess config.sub
+	dh_autoreconf_clean
 	[ ! -f Makefile ] || $(MAKE) distclean
 
 	dh_clean
diff -ur drgeo-1.1.0/drgenius_config.cc ../drgeo-1.1.0/drgenius_config.cc
--- drgeo-1.1.0/drgenius_config.cc	2003-11-24 16:24:11.000000000 -0500
+++ ../drgeo-1.1.0/drgenius_config.cc	2017-04-15 18:35:02.381072441 -0400
@@ -46,7 +46,7 @@
   scm = g_strconcat ("(set! ",conf, " (drgeoConfigSet '",
 		     attr, " \"", value, "\" ", conf, "))",
 		     NULL);
-  gh_eval_str (scm);
+  scm_c_eval_string (scm);
   g_free (scm);
 
 }
@@ -77,10 +77,10 @@
   scm = g_strconcat ("(drgeoConfigGet '",
 		     attr, "  userConf)",
 		     NULL);
-  ret = gh_eval_str (scm);
+  ret = scm_c_eval_string (scm);
   g_free (scm);
   g_free(value);
-  value = gh_scm2newstr (ret, NULL);
+  value = scm_to_locale_string (ret);
   return value;
 }
 
@@ -195,7 +195,7 @@
 		       "/preferences.scm\" \"", filename, "\"))", NULL);
     
   
-  gh_eval_str (scm);
+  scm_c_eval_string (scm);
   g_free (scm);
 
   g_free (filename);
@@ -212,7 +212,7 @@
   
   scm = g_strconcat ("(drgeoConfigSave \"", filename, "\" userConf)", NULL);
 
-  gh_eval_str (scm);
+  scm_c_eval_string (scm);
   g_free (scm);
   g_free (filename);
 }
@@ -223,7 +223,7 @@
   GtkWidget *w;
 
   /* First set a copy of the user preferences */
-  gh_eval_str ("(define dialogConf userConf)");
+  scm_c_eval_string ("(define dialogConf userConf)");
   
 
   /***********/
@@ -403,7 +403,7 @@
 {
   GtkWidget *w;
 
-  gh_eval_str ("(define userConf dialogConf)");
+  scm_c_eval_string ("(define userConf dialogConf)");
 
   cachePreferedValue ();
 
diff -ur drgeo-1.1.0/drgenius_config.h ../drgeo-1.1.0/drgenius_config.h
--- drgeo-1.1.0/drgenius_config.h	2004-04-29 16:05:20.000000000 -0400
+++ ../drgeo-1.1.0/drgenius_config.h	2017-04-14 14:47:16.363178919 -0400
@@ -25,7 +25,7 @@
 #ifndef DRGENIUS_CONFIG_H
 #define DRGENIUS_CONFIG_H
 
-#include <guile/gh.h>
+#include <libguile.h>
 #include <glade/glade.h>
 #include <gtk/gtk.h>
 #include <gmodule.h>
diff -ur drgeo-1.1.0/drgenius_main.cc ../drgeo-1.1.0/drgenius_main.cc
--- drgeo-1.1.0/drgenius_main.cc	2004-04-09 16:00:04.000000000 -0400
+++ ../drgeo-1.1.0/drgenius_main.cc	2017-04-15 18:24:18.000604742 -0400
@@ -25,7 +25,7 @@
 #include <config.h>
 #include <gtk/gtk.h>
 #include <glade/glade.h>
-#include <guile/gh.h>
+#include <libguile.h>
 #include <libintl.h>
 #include <string.h>
 
@@ -60,7 +60,7 @@
 
 
 void
-main_prog (int argc, char *argv[])
+main_prog (void *data, int argc, char *argv[])
 {
   int arg;
 
@@ -84,62 +84,62 @@
   loadUserPreferences ();
 
   /* declare drgeo API in guile */
-  gh_new_procedure ("move", (SCM (*) ()) drgeo_scm_move, 2, 0, 0);
-  gh_new_procedure ("getAbscissa", (SCM (*) ()) drgeo_scm_getAbscissa, 1, 0, 0);
-  gh_new_procedure ("setAbscissa", (SCM (*) ()) drgeo_scm_setAbscissa, 2, 0, 0);
-  gh_new_procedure ("getCoordinates", (SCM (*) ()) drgeo_scm_getCoordinates, 1, 0, 0);
-  gh_new_procedure ("setCoordinates", (SCM (*) ()) drgeo_scm_setCoordinates, 2, 0, 0);
-  gh_new_procedure ("getUnit", (SCM (*) ()) drgeo_scm_getUnit, 1, 0, 0);
-  gh_new_procedure ("getNormal", (SCM (*) ()) drgeo_scm_getNormal, 1, 0, 0);
-  gh_new_procedure ("getSlope", (SCM (*) ()) drgeo_scm_getSlope, 1, 0, 0);
-  gh_new_procedure ("getNorm", (SCM (*) ()) drgeo_scm_getNorm, 1, 0, 0);
-  gh_new_procedure ("getLength", (SCM (*) ()) drgeo_scm_getLength, 1, 0, 0);
-  gh_new_procedure ("getCenter", (SCM (*) ()) drgeo_scm_getCenter, 1, 0, 0);
-  gh_new_procedure ("getRadius", (SCM (*) ()) drgeo_scm_getRadius, 1, 0, 0);
-  gh_new_procedure ("getValue", (SCM (*) ()) drgeo_scm_getValue, 1, 0, 0);
-  gh_new_procedure ("setValue", (SCM (*) ()) drgeo_scm_setValue, 2, 0, 0);
-  gh_new_procedure ("getAngle", (SCM (*) ()) drgeo_scm_getAngle, 1, 0, 0);
+  scm_c_define_gsubr ("move", 2, 0, 0, (void*) drgeo_scm_move);
+  scm_c_define_gsubr ("getAbscissa", 1, 0, 0, (void*) drgeo_scm_getAbscissa);
+  scm_c_define_gsubr ("setAbscissa", 2, 0, 0, (void*) drgeo_scm_setAbscissa);
+  scm_c_define_gsubr ("getCoordinates", 1, 0, 0, (void*) drgeo_scm_getCoordinates);
+  scm_c_define_gsubr ("setCoordinates", 2, 0, 0, (void*) drgeo_scm_setCoordinates);
+  scm_c_define_gsubr ("getUnit", 1, 0, 0, (void*) drgeo_scm_getUnit);
+  scm_c_define_gsubr ("getNormal", 1, 0, 0, (void*) drgeo_scm_getNormal);
+  scm_c_define_gsubr ("getSlope", 1, 0, 0, (void*) drgeo_scm_getSlope);
+  scm_c_define_gsubr ("getNorm", 1, 0, 0, (void*) drgeo_scm_getNorm);
+  scm_c_define_gsubr ("getLength", 1, 0, 0, (void*) drgeo_scm_getLength);
+  scm_c_define_gsubr ("getCenter", 1, 0, 0, (void*) drgeo_scm_getCenter);
+  scm_c_define_gsubr ("getRadius", 1, 0, 0, (void*) drgeo_scm_getRadius);
+  scm_c_define_gsubr ("getValue", 1, 0, 0, (void*) drgeo_scm_getValue);
+  scm_c_define_gsubr ("setValue", 2, 0, 0, (void*) drgeo_scm_setValue);
+  scm_c_define_gsubr ("getAngle", 1, 0, 0, (void*) drgeo_scm_getAngle);
 
   /* declare the drgeo interface in Guile */
-  gh_new_procedure ("drgeoMake-figure", (SCM (*) ()) drgeo_scm_make_figure, 1, 0, 0);
-  gh_new_procedure ("drgeoMake-freePoint", (SCM (*) ()) drgeo_scm_make_freePoint, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-pointOnCurve", (SCM (*) ()) drgeo_scm_make_pointOnCurve, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-middle2Points", (SCM (*) ()) drgeo_scm_make_middle2Points, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-middleSegment", (SCM (*) ()) drgeo_scm_make_middleSegment, 3, 0, 0);
-  gh_new_procedure ("drgeoMake-intersection", (SCM (*) ()) drgeo_scm_make_intersection, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-segmentExtremity", (SCM (*) ()) drgeo_scm_make_segmentExtremity, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-line", (SCM (*) ()) drgeo_scm_make_line, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-parallel", (SCM (*) ()) drgeo_scm_make_parallel, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-orthogonal", (SCM (*) ()) drgeo_scm_make_orthogonal, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-ray", (SCM (*) ()) drgeo_scm_make_ray, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-vector", (SCM (*) ()) drgeo_scm_make_vector, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-circle2Points", (SCM (*) ()) drgeo_scm_make_circle2Points, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-circleRadius", (SCM (*) ()) drgeo_scm_make_circleRadius, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-circleSegment", (SCM (*) ()) drgeo_scm_make_circleSegment, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-arc", (SCM (*) ()) drgeo_scm_make_arc, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-locus", (SCM (*) ()) drgeo_scm_make_locus, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-polygon", (SCM (*) ()) drgeo_scm_make_polygon, 3, 0, 0);
-  gh_new_procedure ("drgeoMake-freeValue", (SCM (*) ()) drgeo_scm_make_freeValue, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-segmentLength", (SCM (*) ()) drgeo_scm_make_segmentLength, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-vectorNorm", (SCM (*) ()) drgeo_scm_make_vectorNorm, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-distancePointCircle", (SCM (*) ()) drgeo_scm_make_distancePointCircle, 6, 0, 0);
-  gh_new_procedure ("drgeoMake-distancePointLine", (SCM (*) ()) drgeo_scm_make_distancePointLine, 6, 0, 0);
-  gh_new_procedure ("drgeoMake-distancePointPoint", (SCM (*) ()) drgeo_scm_make_distancePointPoint, 6, 0, 0);
-  gh_new_procedure ("drgeoMake-circleLength", (SCM (*) ()) drgeo_scm_make_circleLength, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-lineSlope", (SCM (*) ()) drgeo_scm_make_lineSlope, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-arcLength", (SCM (*) ()) drgeo_scm_make_arcLength, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-geometricAngle", (SCM (*) ()) drgeo_scm_make_geometricAngle, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-orientedAngle", (SCM (*) ()) drgeo_scm_make_orientedAngle, 6, 0, 0);
-
-  gh_new_procedure ("drgeoMake-rotation", (SCM (*) ()) drgeo_scm_make_rotation, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-scale", (SCM (*) ()) drgeo_scm_make_scale, 5, 0, 0);
-  gh_new_procedure ("drgeoMake-symmetry", (SCM (*) ()) drgeo_scm_make_symmetry, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-reflexion", (SCM (*) ()) drgeo_scm_make_reflexion, 4, 0, 0);
-  gh_new_procedure ("drgeoMake-translation", (SCM (*) ()) drgeo_scm_make_translation, 4, 0, 0);
-  gh_new_procedure ("change-color", (SCM (*) ()) drgeo_scm_change_color, 3, 0, 0);
-  gh_new_procedure ("change-thickness", (SCM (*) ()) drgeo_scm_change_thickness, 3, 0, 0);
-  gh_new_procedure ("change-pointShape", (SCM (*) ()) drgeo_scm_change_pointShape, 3, 0, 0);
-  gh_new_procedure ("change-masked", (SCM (*) ()) drgeo_scm_change_masked, 2, 0, 0);
+  scm_c_define_gsubr ("drgeoMake-figure", 1, 0, 0, (void*) drgeo_scm_make_figure);
+  scm_c_define_gsubr ("drgeoMake-freePoint", 4, 0, 0, (void*) drgeo_scm_make_freePoint);
+  scm_c_define_gsubr ("drgeoMake-pointOnCurve", 4, 0, 0, (void*) drgeo_scm_make_pointOnCurve);
+  scm_c_define_gsubr ("drgeoMake-middle2Points", 4, 0, 0, (void*) drgeo_scm_make_middle2Points);
+  scm_c_define_gsubr ("drgeoMake-middleSegment", 3, 0, 0, (void*) drgeo_scm_make_middleSegment);
+  scm_c_define_gsubr ("drgeoMake-intersection", 5, 0, 0, (void*) drgeo_scm_make_intersection);
+  scm_c_define_gsubr ("drgeoMake-segmentExtremity", 4, 0, 0, (void*) drgeo_scm_make_segmentExtremity);
+  scm_c_define_gsubr ("drgeoMake-line", 4, 0, 0, (void*) drgeo_scm_make_line);
+  scm_c_define_gsubr ("drgeoMake-parallel", 4, 0, 0, (void*) drgeo_scm_make_parallel);
+  scm_c_define_gsubr ("drgeoMake-orthogonal", 4, 0, 0, (void*) drgeo_scm_make_orthogonal);
+  scm_c_define_gsubr ("drgeoMake-ray", 4, 0, 0, (void*) drgeo_scm_make_ray);
+  scm_c_define_gsubr ("drgeoMake-vector", 4, 0, 0, (void*) drgeo_scm_make_vector);
+  scm_c_define_gsubr ("drgeoMake-circle2Points", 4, 0, 0, (void*) drgeo_scm_make_circle2Points);
+  scm_c_define_gsubr ("drgeoMake-circleRadius", 4, 0, 0, (void*) drgeo_scm_make_circleRadius);
+  scm_c_define_gsubr ("drgeoMake-circleSegment", 4, 0, 0, (void*) drgeo_scm_make_circleSegment);
+  scm_c_define_gsubr ("drgeoMake-arc", 5, 0, 0, (void*) drgeo_scm_make_arc);
+  scm_c_define_gsubr ("drgeoMake-locus", 4, 0, 0, (void*) drgeo_scm_make_locus);
+  scm_c_define_gsubr ("drgeoMake-polygon", 3, 0, 0, (void*) drgeo_scm_make_polygon);
+  scm_c_define_gsubr ("drgeoMake-freeValue", 5, 0, 0, (void*) drgeo_scm_make_freeValue);
+  scm_c_define_gsubr ("drgeoMake-segmentLength", 5, 0, 0, (void*) drgeo_scm_make_segmentLength);
+  scm_c_define_gsubr ("drgeoMake-vectorNorm", 5, 0, 0, (void*) drgeo_scm_make_vectorNorm);
+  scm_c_define_gsubr ("drgeoMake-distancePointCircle", 6, 0, 0, (void*) drgeo_scm_make_distancePointCircle);
+  scm_c_define_gsubr ("drgeoMake-distancePointLine", 6, 0, 0, (void*) drgeo_scm_make_distancePointLine);
+  scm_c_define_gsubr ("drgeoMake-distancePointPoint", 6, 0, 0, (void*) drgeo_scm_make_distancePointPoint);
+  scm_c_define_gsubr ("drgeoMake-circleLength", 5, 0, 0, (void*) drgeo_scm_make_circleLength);
+  scm_c_define_gsubr ("drgeoMake-lineSlope", 5, 0, 0, (void*) drgeo_scm_make_lineSlope);
+  scm_c_define_gsubr ("drgeoMake-arcLength", 5, 0, 0, (void*) drgeo_scm_make_arcLength);
+  scm_c_define_gsubr ("drgeoMake-geometricAngle", 5, 0, 0, (void*) drgeo_scm_make_geometricAngle);
+  scm_c_define_gsubr ("drgeoMake-orientedAngle", 6, 0, 0, (void*) drgeo_scm_make_orientedAngle);
+
+  scm_c_define_gsubr ("drgeoMake-rotation", 5, 0, 0, (void*) drgeo_scm_make_rotation);
+  scm_c_define_gsubr ("drgeoMake-scale", 5, 0, 0, (void*) drgeo_scm_make_scale);
+  scm_c_define_gsubr ("drgeoMake-symmetry", 4, 0, 0, (void*) drgeo_scm_make_symmetry);
+  scm_c_define_gsubr ("drgeoMake-reflexion", 4, 0, 0, (void*) drgeo_scm_make_reflexion);
+  scm_c_define_gsubr ("drgeoMake-translation", 4, 0, 0, (void*) drgeo_scm_make_translation);
+  scm_c_define_gsubr ("change-color", 3, 0, 0, (void*) drgeo_scm_change_color);
+  scm_c_define_gsubr ("change-thickness", 3, 0, 0, (void*) drgeo_scm_change_thickness);
+  scm_c_define_gsubr ("change-pointShape", 3, 0, 0, (void*) drgeo_scm_change_pointShape);
+  scm_c_define_gsubr ("change-masked", 2, 0, 0, (void*) drgeo_scm_change_masked);
 
   /* not in texmacs mode by default */
   texmacsMode = false;
@@ -209,7 +209,7 @@
 int
 main (int argc, char *argv[])
 {
-  gh_enter (argc, argv, main_prog);
+  scm_boot_guile (argc, argv, main_prog, 0);
   return 0;
 }
 
diff -ur drgeo-1.1.0/drgenius_mdi.cc ../drgeo-1.1.0/drgenius_mdi.cc
--- drgeo-1.1.0/drgenius_mdi.cc	2005-07-15 04:30:24.000000000 -0400
+++ ../drgeo-1.1.0/drgenius_mdi.cc	2017-04-15 18:27:28.563192472 -0400
@@ -207,7 +207,10 @@
   /* Just evaluate the scheme figure. All specifics stuffs as creating
      the tabs figures are handle from the scheme definition */
 
-  gh_eval_file_with_catch (filename, standard_handler);
+  scm_internal_catch (SCM_BOOL_T, (scm_t_catch_body)
+                            scm_c_eval_string, filename, 
+                            (scm_t_catch_handler) standard_handler, filename);
+
   reconcile_grayout_widget ();
 }
 
diff -ur drgeo-1.1.0/drgeo_init.cc ../drgeo-1.1.0/drgeo_init.cc
--- drgeo-1.1.0/drgeo_init.cc	2004-01-20 17:14:46.000000000 -0500
+++ ../drgeo-1.1.0/drgeo_init.cc	2017-04-15 19:08:51.433203937 -0400
@@ -22,7 +22,7 @@
  * 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include <guile/gh.h>
+#include <libguile.h>
 #include <glib.h>
 
 void
@@ -30,15 +30,15 @@
 {
   SCM ret;
   // Code to handle user configurations
-  ret = gh_load (DRGEO_SCMDIR"/drgeo_config.scm");
+  ret = scm_c_primitive_load (DRGEO_SCMDIR"/drgeo_config.scm");
   // The Dr. Geo Scheme interface
-  ret = gh_load (DRGEO_SCMDIR"/drgeo_scm_interface.scm");
+  ret = scm_c_primitive_load (DRGEO_SCMDIR"/drgeo_scm_interface.scm");
   // The Scheme interface constants and synonymes and their
   // translations in other national language
-  ret = gh_load (DRGEO_SCMDIR"/drgeo_scm_interface_constant.scm");
-  ret = gh_load (DRGEO_SCMDIR"/drgeo_scm_interface_constant_fr.scm");
-  ret = gh_load (DRGEO_SCMDIR"/drgeo_scm_interface_constant_sr.scm");
-  ret = gh_load (DRGEO_SCMDIR"/drgeo_scm_interface_constant_es.scm");
-  ret = gh_load (DRGEO_SCMDIR"/drgeo_scm_interface_constant_nl.scm");
+  ret = scm_c_primitive_load (DRGEO_SCMDIR"/drgeo_scm_interface_constant.scm");
+  ret = scm_c_primitive_load (DRGEO_SCMDIR"/drgeo_scm_interface_constant_fr.scm");
+//  ret = scm_c_primitive_load (DRGEO_SCMDIR"/drgeo_scm_interface_constant_sr.scm");
+  ret = scm_c_primitive_load (DRGEO_SCMDIR"/drgeo_scm_interface_constant_es.scm");
+  ret = scm_c_primitive_load (DRGEO_SCMDIR"/drgeo_scm_interface_constant_nl.scm");
 }
 
diff -ur drgeo-1.1.0/geo/drgeo_dialog.cc ../drgeo-1.1.0/geo/drgeo_dialog.cc
--- drgeo-1.1.0/geo/drgeo_dialog.cc	2017-04-16 08:32:13.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_dialog.cc	2017-04-15 18:36:23.926147714 -0400
@@ -38,7 +38,13 @@
 // Used in the style dialod callback, I know it's ugly, but so easy
 static drgeoFigure *selected_figure;
 
-DialogData drgeoDialogData;
+struct drgeoDialogData
+{
+  drgeoPoint mouse;
+  drgeoFigure *figure;
+}
+drgeoDialogData;
+
 
 static void drgeo_edit_dialog_cb (GtkWidget * dialog,
 				  gint button, gpointer entry);
diff -ur drgeo-1.1.0/geo/drgeo_dialog.h ../drgeo-1.1.0/geo/drgeo_dialog.h
--- drgeo-1.1.0/geo/drgeo_dialog.h	2017-04-16 08:32:13.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_dialog.h	2017-04-14 16:07:41.077821800 -0400
@@ -34,11 +34,4 @@
 }
 
 #endif				/* __cplusplus */
-
-typedef struct
-{
-  drgeoPoint mouse;
-  drgeoFigure *figure;
-} DialogData;
-
 #endif
diff -ur drgeo-1.1.0/geo/drgeo_figure.cc ../drgeo-1.1.0/geo/drgeo_figure.cc
--- drgeo-1.1.0/geo/drgeo_figure.cc	2017-04-16 08:32:13.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_figure.cc	2017-04-15 19:28:13.377797902 -0400
@@ -48,7 +48,12 @@
 #include "drgeo_dialog.h"
 #include "traite.h"
 
-extern DialogData drgeoDialogData;
+extern struct drgeoDialogData
+{
+  drgeoPoint mouse;
+  drgeoFigure *figure;
+}
+drgeoDialogData;
 
 typedef struct drgeoSearchValue
 {
@@ -1156,7 +1161,7 @@
   emptyUndoQueueEnd ();
   command = new drgeoRemoveItemCommand (this, item);
   command->execute ();
-  addToUndoQueue (command);
+  //addToUndoQueue (command);
   area->updateUndoState ();
   area->refresh ();
 }
@@ -1170,7 +1175,7 @@
 
   command = new drgeoCreateItemCommand (this, item);
   command->execute ();
-  addToUndoQueue (command);
+  //addToUndoQueue (command);
   area->updateUndoState ();
   area->refresh ();
 }
@@ -1187,7 +1192,7 @@
     item = (geometricObject *) selection.lire (1);
   /* use the selection list as items to move */
   command = new drgeoMoveItemCommand (this, item, t);
-  addToUndoQueue (command);
+  //addToUndoQueue (command);
   area->updateUndoState ();
   area->refresh ();
 }
@@ -1202,7 +1207,7 @@
   emptyUndoQueueEnd ();
   command = new drgeoSetItemAttributeCommand (this, item, attr, value);
   command->execute ();
-  addToUndoQueue (command);
+  //addToUndoQueue (command);
   area->updateUndoState ();
   area->refresh ();
 }
@@ -1304,7 +1309,7 @@
 gint
 drgeoFigure::preferedUndoLevel ()
 {
-  return atoi (drgeoConfigGet (":undoLevel"));
+  atoi (drgeoConfigGet (":undoLevel"));
 }
 
 void
diff -ur drgeo-1.1.0/geo/drgeo_scm_api.cc ../drgeo-1.1.0/geo/drgeo_scm_api.cc
--- drgeo-1.1.0/geo/drgeo_scm_api.cc	2003-09-23 16:21:47.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_scm_api.cc	2017-04-14 16:50:28.621548008 -0400
@@ -61,11 +61,11 @@
 {
   static gdouble d;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & FREE_PT_ON_CURVE)
     {
       d = ((point *) item)->getAbscissa ();
-      return gh_double2scm (d);
+      return scm_from_double (d);
     }
   /* This is not a point object */
   return SCM_UNSPECIFIED;
@@ -82,9 +82,9 @@
 SCM
 drgeo_scm_setAbscissa (SCM object, SCM x)
 {
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & FREE_PT_ON_CURVE)
-    ((point *) item)->setAbscissa (gh_scm2double (x));
+    ((point *) item)->setAbscissa (scm_to_double (x));
   return SCM_UNSPECIFIED;
 }
 
@@ -101,7 +101,7 @@
 {
   static drgeoPoint p;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & POINT)
     {
       p = ((point *) item)->getCoordinate ();
@@ -128,7 +128,7 @@
 {
   static drgeoVector v;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & DIRECTION)
     {
       v = ((direction *) item)->getDirection ();
@@ -151,7 +151,7 @@
 {
   static drgeoVector v;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & DIRECTION)
     {
       v = ((direction *) item)->getNormal ();
@@ -172,7 +172,7 @@
 SCM
 drgeo_scm_setCoordinates (SCM object, SCM coord)
 {
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & FREE_PT)
     ((point *) item)->setCoordinate (scmList2drgeoVector (coord));
   return SCM_UNSPECIFIED;
@@ -191,14 +191,14 @@
   static drgeoVector v;
   static gdouble p;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & DIRECTION)
     {
       v = ((direction *) item)->getDirection ();
       if (v.getX () != 0)
 	{
 	  p = v.getY () / v.getX ();
-	  return gh_double2scm (p);
+	  return scm_from_double (p);
 	}
     }
   return SCM_UNSPECIFIED;
@@ -217,11 +217,11 @@
 {
   static gdouble p;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & VECTOR)
     {
       p = ((vector *) item)->getDirection ().norm ();
-      return gh_double2scm (p);
+      return scm_from_double (p);
     }
   return SCM_UNSPECIFIED;
 }
@@ -239,22 +239,22 @@
 {
   static gdouble l;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & SEGMENT)
     {
       l = ((segment *) item)->getDirection ().norm ();
-      return gh_double2scm (l);
+      return scm_from_double (l);
     }
   else if (item->getCategory () & CIRCLE)
     {
       l = 2 * M_PI * ((circle *) item)->getRadius ();
-      return gh_double2scm (l);
+      return scm_from_double (l);
     }
   else if (item->getCategory () & ARC_CIRCLE)
     {
       l = ABS (((arcCircle *) item)->getLength ()) *
 	((arcCircle *) item)->getRadius ();
-      return gh_double2scm (l);
+      return scm_from_double (l);
     }
   return SCM_UNSPECIFIED;
 }
@@ -271,7 +271,7 @@
 {
   static drgeoPoint p;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & CIRCLE)
     {
       p = ((circle *) item)->getCenter ();
@@ -297,16 +297,16 @@
 {
   static gdouble r;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & CIRCLE)
     {
       r = ((circle *) item)->getRadius ();
-      return gh_double2scm (r);
+      return scm_from_double (r);
     }
   else if (item->getCategory () & ARC_CIRCLE)
     {
       r = ((arcCircle *) item)->getRadius ();
-      return gh_double2scm (r);
+      return scm_from_double (r);
     }
   /* This is not a value object */
   return SCM_UNSPECIFIED;
@@ -324,11 +324,11 @@
 {
   static gdouble d;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & VALUE)
     {
       d = ((value *) item)->getValue ();
-      return gh_double2scm (d);
+      return scm_from_double (d);
     }
   /* This is not a value object */
   return SCM_UNSPECIFIED;
@@ -344,9 +344,9 @@
 SCM
 drgeo_scm_setValue (SCM object, SCM v)
 {
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getType () & FREE_VALUE)
-    ((value *) item)->setValue (gh_scm2double (v));
+    ((value *) item)->setValue (scm_to_double (v));
   return SCM_UNSPECIFIED;
 }
 
@@ -362,11 +362,11 @@
 {
   static gdouble d;
 
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   if (item->getCategory () & ANGLE)
     {
       d = 180 * ((value *) item)->getValue () / M_PI;
-      return (gh_double2scm (d));
+      return (scm_from_double (d));
     }
   /* This is not an angle object */
   return SCM_UNSPECIFIED;
@@ -383,7 +383,7 @@
 SCM
 drgeo_scm_move (SCM object, SCM t)
 {
-  item = (geometricObject *) gh_scm2ulong (object);
+  item = (geometricObject *) scm_to_ulong (object);
   item->move (scmVector2drgeoVector (t));
   return SCM_UNSPECIFIED;
 }
diff -ur drgeo-1.1.0/geo/drgeo_scm_api.h ../drgeo-1.1.0/geo/drgeo_scm_api.h
--- drgeo-1.1.0/geo/drgeo_scm_api.h	2003-09-23 16:21:47.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_scm_api.h	2017-04-14 16:07:41.201825486 -0400
@@ -24,7 +24,7 @@
 #ifndef DRGEO_SCM_API_H
 #define DRGEO_SCM_API_H
 
-#include <guile/gh.h>
+#include <libguile.h>
 
 
 #ifdef __cplusplus
diff -ur drgeo-1.1.0/geo/drgeo_scm_helper.cc ../drgeo-1.1.0/geo/drgeo_scm_helper.cc
--- drgeo-1.1.0/geo/drgeo_scm_helper.cc	2003-09-19 10:23:32.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_scm_helper.cc	2017-04-14 16:33:31.671477332 -0400
@@ -38,7 +38,7 @@
 scmCoord2drgeoPoint (SCM x, SCM y)
 {
   static drgeoPoint t;
-  t.set (gh_scm2double (x), gh_scm2double (y));
+  t.set (scm_to_double (x), scm_to_double (y));
   return t;
 }
 
@@ -46,7 +46,7 @@
 scmList2drgeoVector (SCM l)
 {
   static drgeoVector t;
-  t.set (gh_scm2double (gh_car (l)), gh_scm2double (gh_cadr (l)));
+  t.set (scm_to_double (scm_car (l)), scm_to_double (scm_cadr (l)));
   return t;
 }
 
@@ -54,10 +54,8 @@
 scmVector2drgeoVector (SCM v)
 {
   static drgeoVector t;
-  static gdouble gv[2];
 
-  gh_scm2doubles (v, gv);
-  t.set (gv[0], gv[1]);
+  t.set (scm_to_double (scm_car (v)), scm_to_double (scm_cadr (v)));
   return t;
 }
 
@@ -66,9 +64,9 @@
 drgeoPoint2scmList (drgeoPoint & p)
 {
   static SCM x, y;
-  x = gh_double2scm (p.getX ());
-  y = gh_double2scm (p.getY ());
-  return gh_list (x, y, SCM_UNDEFINED);
+  x = scm_from_double (p.getX ());
+  y = scm_from_double (p.getY ());
+  return scm_list_n (x, y, SCM_UNDEFINED);
 }
 
 
@@ -89,7 +87,7 @@
 				   GTK_MESSAGE_ERROR,
 				   GTK_BUTTONS_CLOSE,
 				   _("Error! Just got the following error tag: %s\n"),
-				    SCM_CHARS(tag) , g_strerror (errno));
+				   scm_c_make_string (scm_c_string_length (tag), tag) , g_strerror (errno));
 
   g_signal_connect_swapped (GTK_OBJECT (dialog), "response",
 			    G_CALLBACK (gtk_widget_destroy),
diff -ur drgeo-1.1.0/geo/drgeo_scm_helper.h ../drgeo-1.1.0/geo/drgeo_scm_helper.h
--- drgeo-1.1.0/geo/drgeo_scm_helper.h	2003-08-16 15:11:55.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_scm_helper.h	2017-04-14 16:07:41.205825605 -0400
@@ -25,7 +25,7 @@
 #define DRGEO_SCM_HELPER_H
 
 #include <gtk/gtk.h>
-#include <guile/gh.h>
+#include <libguile.h>
 #include "drgeo_drgeoVector.h"
 
 drgeoPoint & scmCoord2drgeoPoint (SCM x, SCM y);
diff -ur drgeo-1.1.0/geo/drgeo_scm_interface.cc ../drgeo-1.1.0/geo/drgeo_scm_interface.cc
--- drgeo-1.1.0/geo/drgeo_scm_interface.cc	2004-10-17 04:50:11.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_scm_interface.cc	2017-04-14 16:07:41.205825605 -0400
@@ -67,7 +67,7 @@
 	   FALSE, figure->getFigureList());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 SCM
 ScmInterface::make_pointOnCurve (SCM name, SCM c, SCM v)
@@ -75,13 +75,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (c));
+  parents->ajoute ((void *) scm_to_ulong (c));
 
   item = (geometricObject *) 
-    new point (gh_scm2double (v), *parents, FALSE, figure->getFigureList ());
+    new point (scm_to_double (v), *parents, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 SCM 
 ScmInterface::make_middle2Points (SCM name, SCM p1, SCM p2)
@@ -89,13 +89,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p1));
-  parents->ajoute ((void *) gh_scm2ulong (p2));
+  parents->ajoute ((void *) scm_to_ulong (p1));
+  parents->ajoute ((void *) scm_to_ulong (p2));
   item = (geometricObject *) new
     point (*parents, MIDDLE_2PTS, FALSE, figure->getFigureList (), 0);
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 SCM 
 ScmInterface::make_middleSegment (SCM name, SCM s)
@@ -103,12 +103,12 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (s));
+  parents->ajoute ((void *) scm_to_ulong (s));
   item = (geometricObject *) new
     point (*parents, MIDDLE_SEGMENT, FALSE, figure->getFigureList (), 0);
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 SCM
 ScmInterface::make_intersection (SCM name, SCM obj1, SCM obj2, SCM k)
@@ -116,16 +116,16 @@
   geometricObject *item;
   gint myK;
 
-  myK = gh_scm2int (k);
+  myK = scm_to_int (k);
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (obj1));
-  parents->ajoute ((void *) gh_scm2ulong (obj2));
+  parents->ajoute ((void *) scm_to_ulong (obj1));
+  parents->ajoute ((void *) scm_to_ulong (obj2));
   item = (geometricObject *) new
     point (*parents, INTERSECTION, FALSE, figure->getFigureList (), myK);
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);    
+  return scm_from_ulong ((unsigned long) item);    
 }
 
 SCM
@@ -134,13 +134,13 @@
   geometricObject *item, *myObject;
   objectCategory category;
   
-  myObject = (geometricObject *)  gh_scm2ulong (object);
+  myObject = (geometricObject *)  scm_to_ulong (object);
   category = myObject->getCategory ();
 
   parents->vide ();
   parents->ajoute ((void *) myObject);
-  parents->ajoute ((void *) gh_scm2ulong (c));
-  parents->ajoute ((void *) gh_scm2ulong (a));
+  parents->ajoute ((void *) scm_to_ulong (c));
+  parents->ajoute ((void *) scm_to_ulong (a));
 
 
   if (category & POINT)
@@ -180,7 +180,7 @@
 
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item); 
+  return scm_from_ulong ((unsigned long) item); 
 }
 SCM
 ScmInterface::make_scale (SCM name, SCM object, SCM c, SCM f)
@@ -188,13 +188,13 @@
   geometricObject *item, *myObject;
   objectCategory category;
   
-  myObject = (geometricObject *)  gh_scm2ulong (object);
+  myObject = (geometricObject *)  scm_to_ulong (object);
   category = myObject->getCategory ();
 
   parents->vide ();
   parents->ajoute ((void *) myObject);
-  parents->ajoute ((void *) gh_scm2ulong (c));
-  parents->ajoute ((void *) gh_scm2ulong (f));
+  parents->ajoute ((void *) scm_to_ulong (c));
+  parents->ajoute ((void *) scm_to_ulong (f));
 
 
   if (category & POINT)
@@ -234,7 +234,7 @@
 
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item); 
+  return scm_from_ulong ((unsigned long) item); 
 }
 SCM
 ScmInterface::make_symmetry (SCM name, SCM object, SCM c)
@@ -242,12 +242,12 @@
   geometricObject *item, *myObject;
   objectCategory category;
   
-  myObject = (geometricObject *)  gh_scm2ulong (object);
+  myObject = (geometricObject *)  scm_to_ulong (object);
   category = myObject->getCategory ();
 
   parents->vide ();
   parents->ajoute ((void *) myObject);
-  parents->ajoute ((void *) gh_scm2ulong (c));
+  parents->ajoute ((void *) scm_to_ulong (c));
 
   if (category & POINT)
     item = (geometricObject *) new
@@ -286,7 +286,7 @@
 
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item); 
+  return scm_from_ulong ((unsigned long) item); 
 }
 SCM
 ScmInterface::make_reflexion (SCM name, SCM object, SCM d)
@@ -294,12 +294,12 @@
   geometricObject *item, *myObject;
   objectCategory category;
   
-  myObject = (geometricObject *)  gh_scm2ulong (object);
+  myObject = (geometricObject *)  scm_to_ulong (object);
   category = myObject->getCategory ();
 
   parents->vide ();
   parents->ajoute ((void *) myObject);
-  parents->ajoute ((void *) gh_scm2ulong (d));
+  parents->ajoute ((void *) scm_to_ulong (d));
 
   if (category & POINT)
     item = (geometricObject *) new
@@ -338,7 +338,7 @@
 
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item); 
+  return scm_from_ulong ((unsigned long) item); 
 }
 SCM
 ScmInterface::make_translation (SCM name, SCM object, SCM v)
@@ -346,12 +346,12 @@
   geometricObject *item, *myObject;
   objectCategory category;
   
-  myObject = (geometricObject *)  gh_scm2ulong (object);
+  myObject = (geometricObject *)  scm_to_ulong (object);
   category = myObject->getCategory ();
 
   parents->vide ();
   parents->ajoute ((void *) myObject);
-  parents->ajoute ((void *) gh_scm2ulong (v));
+  parents->ajoute ((void *) scm_to_ulong (v));
 
   if (category & POINT)
     item = (geometricObject *) new
@@ -386,7 +386,7 @@
 
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item); 
+  return scm_from_ulong ((unsigned long) item); 
 }
 SCM
 ScmInterface::make_segmentExtremity (SCM name, SCM p1, SCM p2)
@@ -394,13 +394,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p1));
-  parents->ajoute ((void *) gh_scm2ulong (p2));
+  parents->ajoute ((void *) scm_to_ulong (p1));
+  parents->ajoute ((void *) scm_to_ulong (p2));
   item = (geometricObject *) new
     segment (*parents, SEGMENT_2PTS, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 
 SCM
@@ -409,13 +409,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p1));
-  parents->ajoute ((void *) gh_scm2ulong (p2));
+  parents->ajoute ((void *) scm_to_ulong (p1));
+  parents->ajoute ((void *) scm_to_ulong (p2));
   item = (geometricObject *) new
     line (*parents, LINE_2PTS, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 SCM
 ScmInterface::make_parallel (SCM name, SCM p, SCM d)
@@ -423,13 +423,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p));
-  parents->ajoute ((void *) gh_scm2ulong (d));
+  parents->ajoute ((void *) scm_to_ulong (p));
+  parents->ajoute ((void *) scm_to_ulong (d));
   item = (geometricObject *) new
     line (*parents, LINE_PAR_DIRECTION, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 SCM
 ScmInterface::make_orthogonal (SCM name, SCM p, SCM d)
@@ -437,13 +437,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p));
-  parents->ajoute ((void *) gh_scm2ulong (d));
+  parents->ajoute ((void *) scm_to_ulong (p));
+  parents->ajoute ((void *) scm_to_ulong (d));
   item = (geometricObject *) new
     line (*parents, LINE_PER_DIRECTION, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 
 SCM
@@ -452,13 +452,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p1));
-  parents->ajoute ((void *) gh_scm2ulong (p2));
+  parents->ajoute ((void *) scm_to_ulong (p1));
+  parents->ajoute ((void *) scm_to_ulong (p2));
   item = (geometricObject *) new
     halfLine (*parents, HALFLINE_2PTS, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 
 SCM
@@ -467,13 +467,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p1));
-  parents->ajoute ((void *) gh_scm2ulong (p2));
+  parents->ajoute ((void *) scm_to_ulong (p1));
+  parents->ajoute ((void *) scm_to_ulong (p2));
   item = (geometricObject *) new
     vector (*parents, VECTOR_2PTS, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 
 SCM
@@ -482,13 +482,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p));
-  parents->ajoute ((void *) gh_scm2ulong (c));
+  parents->ajoute ((void *) scm_to_ulong (p));
+  parents->ajoute ((void *) scm_to_ulong (c));
   item = (geometricObject *) new
     circle (*parents, CIRCLE_2PTS, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 SCM
 ScmInterface::make_circleRadius (SCM name, SCM p, SCM r)
@@ -496,13 +496,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p));
-  parents->ajoute ((void *) gh_scm2ulong (r));
+  parents->ajoute ((void *) scm_to_ulong (p));
+  parents->ajoute ((void *) scm_to_ulong (r));
   item = (geometricObject *) new
     circle (*parents, CIRCLE_VALUE, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 SCM
 ScmInterface::make_circleSegment (SCM name, SCM p, SCM s)
@@ -510,13 +510,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p));
-  parents->ajoute ((void *) gh_scm2ulong (s));
+  parents->ajoute ((void *) scm_to_ulong (p));
+  parents->ajoute ((void *) scm_to_ulong (s));
   item = (geometricObject *) new
     circle (*parents, CIRCLE_SEGMENT, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 
 SCM 
@@ -525,14 +525,14 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p1));
-  parents->ajoute ((void *) gh_scm2ulong (p2));
-  parents->ajoute ((void *) gh_scm2ulong (p3));
+  parents->ajoute ((void *) scm_to_ulong (p1));
+  parents->ajoute ((void *) scm_to_ulong (p2));
+  parents->ajoute ((void *) scm_to_ulong (p3));
   item = (geometricObject *) new
     arcCircle (*parents, ARCCIRCLE_3PTS, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 SCM
 ScmInterface::make_locus (SCM name, SCM p1, SCM p2)
@@ -540,13 +540,13 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p1));
-  parents->ajoute ((void *) gh_scm2ulong (p2));
+  parents->ajoute ((void *) scm_to_ulong (p1));
+  parents->ajoute ((void *) scm_to_ulong (p2));
   item = (geometricObject *) new
     locus (*parents, FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 
 SCM
@@ -555,16 +555,16 @@
   geometricObject *item;
 
   parents->vide ();
-  while (!gh_null_p (list))
+  while (!scm_is_null (list))
     {
-      parents->ajoute ((void *) gh_scm2ulong (gh_car(list)));
-      list = gh_cdr (list);
+      parents->ajoute ((void *) scm_to_ulong (scm_car (list)));
+      list = scm_cdr (list);
     }
   item = (geometricObject *) new polygon (*parents, POLYGON_NPTS, 
 					  FALSE, figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);  
+  return scm_from_ulong ((unsigned long) item);  
 }
 
 
@@ -574,11 +574,11 @@
   geometricObject *item;
 
   item = (geometricObject *) new numeric (scmCoord2drgeoPoint (x, y), 
-					  gh_scm2double (v), 
+					  scm_to_double (v), 
 					  (numericType) FREE_VALUE, false);
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 
 SCM
@@ -587,14 +587,14 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (s));
+  parents->ajoute ((void *) scm_to_ulong (s));
 
   item = (geometricObject *) new numeric (scmCoord2drgeoPoint (x, y), *parents,
 					  (numericType) SEGMENT_LENGTH, false,
 					  figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 SCM
 ScmInterface::make_vectorNorm (SCM name, SCM x, SCM y, SCM s)
@@ -602,14 +602,14 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (s));
+  parents->ajoute ((void *) scm_to_ulong (s));
 
   item = (geometricObject *) new numeric (scmCoord2drgeoPoint (x, y), *parents,
 					  (numericType) VECTOR_NORM, false,
 					  figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 SCM
 ScmInterface::make_distancePointCircle (SCM name, SCM x, SCM y, 
@@ -618,15 +618,15 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p));
-  parents->ajoute ((void *) gh_scm2ulong (c));
+  parents->ajoute ((void *) scm_to_ulong (p));
+  parents->ajoute ((void *) scm_to_ulong (c));
 
   item = (geometricObject *) new numeric (scmCoord2drgeoPoint (x, y), *parents,
 					  (numericType) DISTANCE_PT_CIRCLE, false,
 					  figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 
 SCM
@@ -635,15 +635,15 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p));
-  parents->ajoute ((void *) gh_scm2ulong (l));
+  parents->ajoute ((void *) scm_to_ulong (p));
+  parents->ajoute ((void *) scm_to_ulong (l));
 
   item = (geometricObject *) new numeric (scmCoord2drgeoPoint (x, y), *parents,
 					  (numericType) DISTANCE_PT_LINE, false,
 					  figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 
 SCM
@@ -652,15 +652,15 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p1));
-  parents->ajoute ((void *) gh_scm2ulong (p2));
+  parents->ajoute ((void *) scm_to_ulong (p1));
+  parents->ajoute ((void *) scm_to_ulong (p2));
 
   item = (geometricObject *) new numeric (scmCoord2drgeoPoint (x, y), *parents,
 					  (numericType) DISTANCE_2PTS, false,
 					  figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 
 SCM
@@ -669,14 +669,14 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (c));
+  parents->ajoute ((void *) scm_to_ulong (c));
 
   item = (geometricObject *) new numeric (scmCoord2drgeoPoint (x, y), *parents,
 					  (numericType) CIRCLE_PERIMETER, false,
 					  figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 
 SCM
@@ -685,14 +685,14 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (l));
+  parents->ajoute ((void *) scm_to_ulong (l));
 
   item = (geometricObject *) new numeric (scmCoord2drgeoPoint (x, y), *parents,
 					  (numericType) LINE_SLOPE, false,
 					  figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 
 SCM
@@ -701,14 +701,14 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (arc));
+  parents->ajoute ((void *) scm_to_ulong (arc));
 
   item = (geometricObject *) new numeric (scmCoord2drgeoPoint (x, y), *parents,
 					  (numericType) ARC_CIRCLE_LENGTH, false,
 					  figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 
 SCM
@@ -718,16 +718,16 @@
   drgeoPoint p;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (p1));
-  parents->ajoute ((void *) gh_scm2ulong (p2));
-  parents->ajoute ((void *) gh_scm2ulong (p3));
+  parents->ajoute ((void *) scm_to_ulong (p1));
+  parents->ajoute ((void *) scm_to_ulong (p2));
+  parents->ajoute ((void *) scm_to_ulong (p3));
 
   item = (geometricObject *) new angle (p, *parents,
 					(angleType) ANGLE_3PTS, false,
 					figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 
 SCM
@@ -736,38 +736,38 @@
   geometricObject *item;
 
   parents->vide ();
-  parents->ajoute ((void *) gh_scm2ulong (v1));
-  parents->ajoute ((void *) gh_scm2ulong (v2));
+  parents->ajoute ((void *) scm_to_ulong (v1));
+  parents->ajoute ((void *) scm_to_ulong (v2));
 
   item = (geometricObject *) new angle (scmCoord2drgeoPoint (x, y), *parents,
 					(angleType) ANGLE_2VEC, false,
 					figure->getFigureList ());
   setObjectName (name, item);
   figure->addToFigureListNoRedraw (item, TRUE);
-  return gh_ulong2scm ((unsigned long) item);
+  return scm_from_ulong ((unsigned long) item);
 }
 
 void 
 ScmInterface::change_color (SCM item, SCM color)
 {
-  ((geometricObject *)gh_scm2ulong(item))->getStyle ().color = 
-    ((drgeoColorType) gh_scm2int(color));
+  ((geometricObject *)scm_to_ulong(item))->getStyle ().color = 
+    ((drgeoColorType) scm_to_int(color));
   figure->getDrawable ()->refresh ();
 }
 
 void 
 ScmInterface::change_thickness (SCM item, SCM thickness)
 {
-  ((geometricObject *)gh_scm2ulong(item))->getStyle ().thick = 
-    ((drgeoThicknessType) gh_scm2int(thickness));
+  ((geometricObject *)scm_to_ulong(item))->getStyle ().thick = 
+    ((drgeoThicknessType) scm_to_int(thickness));
   figure->getDrawable ()->refresh ();
 }
 
 void 
 ScmInterface::change_pointShape (SCM item, SCM shape)
 {
-  ((geometricObject *)gh_scm2ulong(item))->getStyle ().pointShape = 
-    ((drgeoPointType) gh_scm2int(shape));
+  ((geometricObject *)scm_to_ulong(item))->getStyle ().pointShape = 
+    ((drgeoPointType) scm_to_int(shape));
   figure->getDrawable ()->refresh ();
 }
 
@@ -776,11 +776,11 @@
 {
   masked myMask;
 
-  myMask = ((geometricObject *)gh_scm2ulong(item))->getStyle ().mask;
+  myMask = ((geometricObject *)scm_to_ulong(item))->getStyle ().mask;
   if (myMask == yes)
-    ((geometricObject *)gh_scm2ulong(item))->getStyle ().mask = no;
+    ((geometricObject *)scm_to_ulong(item))->getStyle ().mask = no;
   else
-    ((geometricObject *)gh_scm2ulong(item))->getStyle ().mask = yes;    
+    ((geometricObject *)scm_to_ulong(item))->getStyle ().mask = yes;    
 }
 
 
@@ -789,7 +789,7 @@
 {
   gchar *str;
 
-  str = gh_scm2newstr (name, NULL);
+  str = scm_to_locale_string (name);
   item->setName (str); 
   g_free (str);
   item->initName ();
@@ -807,11 +807,11 @@
   mdi->newGeometricDocument (NULL);
   figure = ((geoView *) mdi->activeView ())->figure ();
 
-  str = gh_scm2newstr (name, NULL);
+  str = scm_to_locale_string (name);
   mdi->renameView (((drgeoGtkDrawable *) figure->getDrawable())->getGeoView (), str);
   g_free (str);
 
-  return gh_ulong2scm ((unsigned long) figure);
+  return scm_from_ulong ((unsigned long) figure);
 
 }
 
@@ -821,7 +821,7 @@
 
 /* Define some macro to make our life easier */
 
-#define SCM_INTERFACE(fig) (((drgeoFigure *)gh_scm2ulong(fig))->getScmInterface ())
+#define SCM_INTERFACE(fig) (((drgeoFigure *)scm_to_ulong(fig))->getScmInterface ())
 
 SCM
 drgeo_scm_make_freePoint (SCM figure, SCM name, SCM x, SCM y)
@@ -833,7 +833,7 @@
   if (interface)
     return interface->make_freePoint (name, x, y);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM
 drgeo_scm_make_pointOnCurve (SCM figure, SCM name, SCM c, SCM a)
@@ -845,7 +845,7 @@
   if (interface)
     return interface->make_pointOnCurve (name, c, a);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM
@@ -858,7 +858,7 @@
   if (interface)
     return interface->make_middle2Points (name, p1, p2);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM
@@ -871,7 +871,7 @@
   if (interface)
     return interface->make_middleSegment (name, s);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM
 drgeo_scm_make_intersection (SCM figure, SCM name, SCM obj1, SCM obj2, SCM k)
@@ -883,7 +883,7 @@
   if (interface)
     return interface->make_intersection (name, obj1, obj2, k);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 /***********************/
 /* THE TRANSFORMATIONS */
@@ -898,7 +898,7 @@
   if (interface)
     return interface->make_rotation (name, object, c, a);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM 
 drgeo_scm_make_scale (SCM figure, SCM name, SCM object, SCM c, SCM f)
@@ -910,7 +910,7 @@
   if (interface)
     return interface->make_scale (name, object, c, f);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM 
 drgeo_scm_make_symmetry (SCM figure, SCM name, SCM object, SCM c)
@@ -922,7 +922,7 @@
   if (interface)
     return interface->make_symmetry (name, object, c);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM 
 drgeo_scm_make_reflexion (SCM figure, SCM name, SCM object, SCM d)
@@ -934,7 +934,7 @@
   if (interface)
     return interface->make_reflexion (name, object, d);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM 
 drgeo_scm_make_translation (SCM figure, SCM name, SCM object, SCM v)
@@ -946,7 +946,7 @@
   if (interface)
     return interface->make_translation (name, object, v);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 
@@ -960,7 +960,7 @@
   if (interface)
     return interface->make_segmentExtremity (name, p1, p2);
   else
-    return gh_ulong2scm (0);
+    return scm_from_ulong (0);
 }
 
 SCM
@@ -973,7 +973,7 @@
   if (interface)
     return interface->make_line (name, p1, p2);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM
 drgeo_scm_make_parallel (SCM figure, SCM name, SCM p, SCM d)
@@ -985,7 +985,7 @@
   if (interface)
     return interface->make_parallel (name, p, d);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM
 drgeo_scm_make_orthogonal (SCM figure, SCM name, SCM p, SCM d)
@@ -997,7 +997,7 @@
   if (interface)
     return interface->make_orthogonal (name, p, d);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM
@@ -1010,7 +1010,7 @@
   if (interface)
     return interface->make_ray (name, p1, p2);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM
@@ -1023,7 +1023,7 @@
   if (interface)
     return interface->make_vector (name, p1, p2);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM
@@ -1036,7 +1036,7 @@
   if (interface)
     return interface->make_circle2Points (name, c, p);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM
 drgeo_scm_make_circleRadius (SCM figure, SCM name, SCM c, SCM r)
@@ -1048,7 +1048,7 @@
   if (interface)
     return interface->make_circleRadius (name, c, r);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM
 drgeo_scm_make_circleSegment (SCM figure, SCM name, SCM c, SCM s)
@@ -1060,7 +1060,7 @@
   if (interface)
     return interface->make_circleSegment (name, c, s);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM 
@@ -1073,7 +1073,7 @@
   if (interface)
     return interface->make_arc (name, p1, p2, p3);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 
@@ -1087,7 +1087,7 @@
   if (interface)
     return interface->make_locus (name, p1, p2);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM
@@ -1100,7 +1100,7 @@
   if (interface)
     return interface->make_polygon (name, list);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 
@@ -1114,7 +1114,7 @@
   if (interface)
     return interface->make_freeValue (name, x, y, v);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM
 drgeo_scm_make_segmentLength (SCM figure, SCM name, SCM x, SCM y, SCM s)
@@ -1126,7 +1126,7 @@
   if (interface)
     return interface->make_segmentLength (name, x, y, s);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM
 drgeo_scm_make_vectorNorm (SCM figure, SCM name, SCM x, SCM y, SCM v)
@@ -1138,7 +1138,7 @@
   if (interface)
     return interface->make_vectorNorm (name, x, y, v);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 SCM
 drgeo_scm_make_distancePointCircle (SCM figure, SCM name, SCM x, SCM y, SCM p, SCM c)
@@ -1150,7 +1150,7 @@
   if (interface)
     return interface->make_distancePointCircle (name, x, y, p, c);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM 
@@ -1163,7 +1163,7 @@
   if (interface)
     return interface->make_distancePointLine (name, x, y, p, l);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM 
@@ -1176,7 +1176,7 @@
   if (interface)
     return interface->make_distancePointPoint (name, x, y, p1, p2);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM 
@@ -1189,7 +1189,7 @@
   if (interface)
     return interface->make_circleLength (name, x, y, c);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM 
@@ -1202,7 +1202,7 @@
   if (interface)
     return interface->make_lineSlope (name, x, y, l);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM 
@@ -1215,7 +1215,7 @@
   if (interface)
     return interface->make_arcLength (name, x, y, arc);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM
@@ -1228,7 +1228,7 @@
   if (interface)
     return interface->make_geometricAngle (name, p1, p2, p3);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM
@@ -1241,7 +1241,7 @@
   if (interface)
     return interface->make_orientedAngle (name, x, y, v1, v2);
   else
-    return gh_ulong2scm(0);
+    return scm_from_ulong(0);
 }
 
 SCM
diff -ur drgeo-1.1.0/geo/drgeo_scm_interface.h ../drgeo-1.1.0/geo/drgeo_scm_interface.h
--- drgeo-1.1.0/geo/drgeo_scm_interface.h	2003-10-06 07:42:00.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_scm_interface.h	2017-04-14 16:07:41.205825605 -0400
@@ -24,7 +24,7 @@
 #ifndef DRGEO_SCM_INTERFACE_H
 #define DRGEO_SCM_INTERFACE_H
 
-#include <guile/gh.h>
+#include <libguile.h>
 #include "drgeo_figure.h"
 
 /* define scm_interface into a class */
diff -ur drgeo-1.1.0/geo/drgeo_script.cc ../drgeo-1.1.0/geo/drgeo_script.cc
--- drgeo-1.1.0/geo/drgeo_script.cc	2004-08-25 15:27:03.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_script.cc	2017-04-15 18:27:15.095009455 -0400
@@ -21,7 +21,7 @@
  * 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include <guile/gh.h>
+#include <libguile.h>
 #include "config.h"
 #include "drgeo_script.h"
 #include "drgeo_drawable.h"
@@ -104,7 +104,7 @@
   g_free (scriptCode);
 
   tmpScript = g_strdup_printf ("(undefine script%d)", this);
-  gh_eval_str (tmpScript);
+  scm_c_eval_string (tmpScript);
   g_free (tmpScript);
   //      scm_gc();
 }
@@ -132,13 +132,16 @@
     }
   tmp1 = g_strconcat (tmpScript, ")", NULL);
   g_free (tmpScript);
-  ret = gh_eval_str_with_catch (tmp1, standard_handler);
+  ret = scm_internal_catch (SCM_BOOL_T, (scm_t_catch_body)
+                            scm_c_eval_string, tmp1, 
+                            (scm_t_catch_handler) standard_handler, tmp1);
+
   g_free (tmp1);
   /* there is no gh_ equivalent in the guile interface,
      therefore I use the internal stuff */
   if (SCM_NFALSEP (scm_real_p (ret)))
     {
-      setValue (gh_scm2double (ret));
+      setValue (scm_to_double (ret));
       if (name ? strlen (name) : 0)
 	{
 	  tmp = g_strdup_printf ("%%s = %%.%df",numericPrecision);      
@@ -152,8 +155,8 @@
 	  g_free (tmp);
 	}      
     }
-  else if (gh_string_p (ret))
-    setString (gh_scm2newstr (ret, NULL));
+  else if (scm_is_string (ret))
+    setString (scm_to_locale_string (ret));
   else
     setString (g_strdup (_("Unprintable result")));
 }
@@ -257,7 +260,9 @@
   tmp1 = g_strconcat (tmpScript, ")", scriptCode, ")", NULL);
   g_free (tmpScript);
   /* define the procedure in the Guile interpretor */
-  gh_eval_str_with_catch (tmp1, standard_handler);
+  scm_internal_catch (SCM_BOOL_T, (scm_t_catch_body)
+                            scm_c_eval_string, tmp1, 
+                            (scm_t_catch_handler) standard_handler, tmp1);
   g_free (tmp1);
 }
 
diff -ur drgeo-1.1.0/geo/drgeo_script.h ../drgeo-1.1.0/geo/drgeo_script.h
--- drgeo-1.1.0/geo/drgeo_script.h	2003-09-22 12:38:19.000000000 -0400
+++ ../drgeo-1.1.0/geo/drgeo_script.h	2017-04-14 16:07:41.213825843 -0400
@@ -24,7 +24,7 @@
 #ifndef DRGEO_SCRIPT_H
 #define DRGEO_SCRIPT_H
 
-#include <guile/gh.h>
+#include <libguile.h>
 #include "drgeo_value.h"
 
 class script:public value
diff -ur drgeo-1.1.0/Makefile.am ../drgeo-1.1.0/Makefile.am
--- drgeo-1.1.0/Makefile.am	2005-07-11 16:26:46.000000000 -0400
+++ ../drgeo-1.1.0/Makefile.am	2017-04-14 15:00:41.327816190 -0400
@@ -4,7 +4,7 @@
 appicondir = $(datadir)/pixmaps
 SUBDIRS = po geo examples icons glade scm plugin encode
 
-INCLUDES = \
+AM_CPPFLAGS = \
 	-DGNOMELOCALEDIR=\""$(datadir)/locale"\" 	\
 	-DDRGEO_GLADEDIR=\""$(gladedir)"\"		\
 	-DDRGEO_SCMDIR=\""$(scmdir)"\"			\
diff -ur drgeo-1.1.0/scm/drgeo_scm_interface.scm ../drgeo-1.1.0/scm/drgeo_scm_interface.scm
--- drgeo-1.1.0/scm/drgeo_scm_interface.scm	2003-10-26 11:09:36.000000000 -0500
+++ ../drgeo-1.1.0/scm/drgeo_scm_interface.scm	2017-04-15 19:06:27.971034562 -0400
@@ -140,7 +140,7 @@
                   ((middle-segment) (send parent 'init (drgeoMake-middleSegment 
 							currentFigure myName
 							(send (car Lopt) 'id))))
-		  ((coordinate) ())
+		  ;((coordinate) ())
 		  ;; line, line (no circle and arc)
 		  ((intersection) (send parent 'init (drgeoMake-intersection
 						     currentFigure myName
@@ -443,4 +443,4 @@
 
 ;(new-figure "Ma figure")
 ;(define a (Numeric "a" 'free 0 0 1))
-;(define p (Point "o" 'intersection a a))
\ Pas de fin de ligne à la fin du fichier
+;(define p (Point "o" 'intersection a a))

Reply via email to