aboutsummaryrefslogtreecommitdiff
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.zip
glibc-76a2102b0874ed777309caf846b5f4d021bb830d.tar.gz
glibc-76a2102b0874ed777309caf846b5f4d021bb830d.tar.bz2
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 7d327ed..d4738b5 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