about summary refs log tree commit diff
path: root/iconv/gconv_dl.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-12-08 04:02:45 +0000
committerUlrich Drepper <drepper@redhat.com>1999-12-08 04:02:45 +0000
commit76a2102b0874ed777309caf846b5f4d021bb830d (patch)
tree29b483d3fa775eeec677c06ecf3dbdfdf5e413d9 /iconv/gconv_dl.c
parent8f61a78efeb714b82549df45f735f5e7ee9c1826 (diff)
downloadglibc-76a2102b0874ed777309caf846b5f4d021bb830d.tar.gz
glibc-76a2102b0874ed777309caf846b5f4d021bb830d.tar.xz
glibc-76a2102b0874ed777309caf846b5f4d021bb830d.zip
Update.
1999-12-07  Ulrich Drepper  <drepper@cygnus.com>

	* iconv/gconv_db.c (gen_steps): Set __counter initialy to 1.
	(increment_counter): New function.  Broken out of find_derivation.
	(find_derivation): No need for a lock.  Increment counter only when
	the derivation was already available.
	* iconv/gconv_dl.c: Add debugging functions.
	(known_compare): We have to use strcmp.
Diffstat (limited to 'iconv/gconv_dl.c')
-rw-r--r--iconv/gconv_dl.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/iconv/gconv_dl.c b/iconv/gconv_dl.c
index 7d327edc68..d4738b5c03 100644
--- a/iconv/gconv_dl.c
+++ b/iconv/gconv_dl.c
@@ -28,6 +28,13 @@
 
 #include <gconv_int.h>
 
+
+#ifdef DEBUG
+/* For debugging purposes.  */
+static void print_all (void);
+#endif
+
+
 /* This is a tuning parameter.  If a transformation module is not used
    anymore it gets not immediately unloaded.  Instead we wait a certain
    number of load attempts for further modules.  If none of the
@@ -50,7 +57,7 @@ known_compare (const void *p1, const void *p2)
   const struct __gconv_loaded_object *s2 =
     (const struct __gconv_loaded_object *) p2;
 
-  return (intptr_t) s1->handle - (intptr_t) s2->handle;
+  return strcmp (s1->name, s2->name);
 }
 
 /* Open the gconv database if necessary.  A non-negative return value
@@ -198,3 +205,24 @@ free_mem (void)
   __tdestroy (loaded, do_release_all);
 }
 text_set_element (__libc_subfreeres, free_mem);
+
+
+#ifdef DEBUG
+static void
+do_print (const void *nodep, VISIT value, int level)
+{
+  struct __gconv_loaded_object *obj = *(struct __gconv_loaded_object **) nodep;
+
+  printf ("%10s: \"%s\", %d\n",
+	  value == leaf ? "leaf" :
+	  value == preorder ? "preorder" :
+	  value == postorder ? "postorder" : "endorder",
+	  obj->name, obj->counter);
+}
+
+static void
+print_all (void)
+{
+  __twalk (loaded, do_print);
+}
+#endif