diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-12-08 04:02:45 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-12-08 04:02:45 +0000 |
commit | 76a2102b0874ed777309caf846b5f4d021bb830d (patch) | |
tree | 29b483d3fa775eeec677c06ecf3dbdfdf5e413d9 /iconv/gconv_dl.c | |
parent | 8f61a78efeb714b82549df45f735f5e7ee9c1826 (diff) | |
download | glibc-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.c | 30 |
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 |