Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 8 Mar 2004 07:58:18 +0000 (07:58 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 8 Mar 2004 07:58:18 +0000 (07:58 +0000)
2004-03-07  Ulrich Drepper  <drepper@redhat.com>

* idn-stub.c: Include <gnu/lib-names.h>.  Use LIBCIDN_SO for dlopen.
* shlib-versions: New file.
* toutf8.c: Include <sys/param.h>.

CANCEL-FCT-WAIVE [new file with mode: 0644]
CANCEL-FILE-WAIVE
libidn/ChangeLog
libidn/idn-stub.c
libidn/shlib-versions [new file with mode: 0644]
libidn/toutf8.c

diff --git a/CANCEL-FCT-WAIVE b/CANCEL-FCT-WAIVE
new file mode 100644 (file)
index 0000000..5d3fed1
--- /dev/null
@@ -0,0 +1,495 @@
+_IO_default_finish
+_IO_default_pbackfail
+_IO_default_xsgetn
+_IO_fgets
+_IO_file_open
+_IO_file_read
+_IO_fprintf
+_IO_free_backup_area
+_IO_free_wbackup_area
+_IO_ftell
+_IO_getc
+_IO_getline
+_IO_getline_info
+_IO_gets
+_IO_peekc_locked
+_IO_printf
+_IO_seekoff
+_IO_seekpos
+_IO_sprintf
+_IO_sscanf
+_IO_str_pbackfail
+_IO_unsave_markers
+_IO_unsave_wmarkers
+_IO_vfprintf
+_IO_vfscanf
+_IO_vsprintf
+_IO_wdefault_finish
+_IO_wdefault_pbackfail
+_IO_wdefault_xsgetn
+_IO_wfile_seekoff
+_IO_wfile_underflow
+__asprintf
+__assert
+__assert_fail
+__assert_perror_fail
+__backtrace_symbols
+__backtrace_symbols_fd
+__close
+__connect
+__dcgettext
+__deregister_frame
+__deregister_frame_info
+__deregister_frame_info_bases
+__dgettext
+__endmntent
+__fork
+__fpurge
+__freelocale
+__getdelim
+__getmntent_r
+__gmtime_r
+__internal_endnetgrent
+__internal_getnetgrent_r
+__libc_accept
+__libc_close
+__libc_connect
+__libc_fork
+__libc_free
+__libc_freeres
+__libc_fsync
+__libc_memalign
+__libc_msgrcv
+__libc_msgsnd
+__libc_msync
+__libc_nanosleep
+__libc_open
+__libc_pause
+__libc_pread
+__libc_pwrite
+__libc_read
+__libc_readv
+__libc_realloc
+__libc_recv
+__libc_recvfrom
+__libc_recvmsg
+__libc_send
+__libc_sendmsg
+__libc_sendto
+__libc_start_main
+__libc_system
+__libc_tcdrain
+__libc_valloc
+__libc_wait
+__libc_waitpid
+__libc_write
+__libc_writev
+__mbrlen
+__mbrtowc
+__nanosleep
+__newlocale
+__nss_group_lookup
+__nss_hostname_digits_dots
+__nss_hosts_lookup
+__nss_lookup_function
+__nss_next
+__nss_passwd_lookup
+__open
+__open_catalog
+__poll
+__printf_fp
+__pselect
+__read
+__res_init
+__res_ninit
+__select
+__send
+__setmntent
+__sigsuspend
+__sigtimedwait
+__sigwait
+__sigwaitinfo
+__strcoll_l
+__strerror_r
+__strfmon_l
+__strftime_l
+__strxfrm_l
+__uflow
+__underflow
+__vfscanf
+__vsnprintf
+__vsscanf
+__wait
+__waitid
+__waitpid
+__wcscoll_l
+__wcsftime_l
+__wcsxfrm_l
+__write
+__wuflow
+__wunderflow
+_dl_close
+_dl_open
+accept
+addmntent
+addseverity
+alphasort
+argp_error
+argp_failure
+argp_state_help
+argp_usage
+argz_add
+argz_add_sep
+argz_append
+argz_create_sep
+argz_delete
+argz_insert
+argz_replace
+asctime
+asctime_r
+asprintf
+backtrace_symbols
+backtrace_symbols_fd
+btowc
+canonicalize_file_name
+catclose
+catopen
+cfree
+clearenv
+close
+closedir
+connect
+creat
+ctime
+ctime_r
+cuserid
+dcgettext
+dcngettext
+dgettext
+dngettext
+dprintf
+ecvt
+ecvt_r
+endaliasent
+endfsent
+endgrent
+endhostent
+endmntent
+endmntent
+endnetent
+endprotoent
+endpwent
+endrpcent
+endservent
+endspent
+endttyent
+endusershell
+envz_add
+envz_merge
+envz_remove
+err
+error
+error_at_line
+errx
+ether_hostton
+ether_ntoa
+ether_ntoa_r
+ether_ntohost
+exit
+fcvt
+fcvt_r
+fexecve
+fgetc
+fgetc_unlocked
+fgetgrent
+fgetgrent_r
+fgetpwent
+fgetpwent_r
+fgets
+fgets_unlocked
+fgetspent
+fgetspent_r
+fgetwc
+fgetwc_unlocked
+fgetws
+fgetws_unlocked
+fmemopen
+fmtmsg
+fopen64
+fork
+fprintf
+free
+freelocale
+freopen
+freopen64
+fscanf
+fseek
+fseeko
+fseeko64
+fstatvfs
+fstatvfs64
+fsync
+ftell
+ftello
+ftello64
+fts_children
+fts_close
+fts_open
+fts_read
+fwprintf
+fwscanf
+gcvt
+get_current_dir_name
+get_nprocs
+get_nprocs_conf
+getaliasbyname
+getaliasent
+getc
+getc_unlocked
+getchar
+getchar_unlocked
+getcwd
+getdate
+getdate_r
+getdelim
+getgrent
+getgrgid
+getgrnam
+getgrouplist
+gethostbyaddr
+gethostbyname
+gethostbyname2
+gethostent
+gethostid
+getline
+getmntent
+getmntent_r
+getnameinfo
+getnetbyaddr
+getnetbyname
+getnetent
+getopt
+getopt_long
+getopt_long_only
+getprotobyname
+getprotobynumber
+getprotoent
+getpt
+getpw
+getpwent
+getpwnam
+getpwuid
+getrpcbyname
+getrpcbynumber
+getrpcent
+gets
+getservbyname
+getservbyport
+getservent
+getspent
+getspnam
+gettext
+getttyent
+getttynam
+getwc
+getwc_unlocked
+getwchar
+getwchar_unlocked
+getwd
+glob
+globfree
+globfree64
+gmtime
+gmtime_r
+hdestroy
+hdestroy_r
+herror
+hstrerror
+iconv
+iconv_close
+iconv_open
+if_freenameindex
+if_indextoname
+if_nameindex
+if_nametoindex
+inet6_option_alloc
+inet6_option_append
+inet_ntoa
+initgroups
+lckpwdf
+localtime
+localtime_r
+lockf
+makecontext
+mblen
+mbrlen
+mbrtowc
+mbsnrtowcs
+mbsrtowcs
+mbstowcs
+mbtowc
+mcheck
+mcheck_pedantic
+memalign
+mkdtemp
+mkstemp
+mkstemp64
+mktemp
+mktime
+msgrcv
+msgsnd
+msync
+mtrace
+mtrace
+muntrace
+nanosleep
+newlocale
+ngettext
+obstack_printf
+obstack_vprintf
+open
+open_memstream
+parse_printf_format
+pause
+perror
+poll
+posix_fallocate
+posix_memalign
+posix_openpt
+posix_spawn
+posix_spawn_file_actions_addclose
+posix_spawn_file_actions_adddup2
+posix_spawn_file_actions_addopen
+posix_spawn_file_actions_destroy
+posix_spawnp
+pread
+printf
+printf_size
+pselect
+psignal
+pthread_exit
+putenv
+putgrent
+putpwent
+putspent
+pwrite
+qecvt
+qecvt_r
+qfcvt
+qfcvt_r
+qgcvt
+qsort
+re_comp
+re_compile_pattern
+read
+readv
+realloc
+recv
+recvfrom
+recvmsg
+regcomp
+regerror
+regfree
+rewind
+scandir
+scanf
+select
+send
+send
+sendmsg
+sendto
+setaliasent
+setenv
+setgrent
+sethostent
+setlocale
+setmntent
+setnetent
+setprotoent
+setpwent
+setrpcent
+setservent
+setspent
+setttyent
+sgetspent
+sigpause
+sigsuspend
+sigtimedwait
+sigwait
+sigwaitinfo
+sleep
+snprintf
+sprintf
+sprofil
+sscanf
+statvfs
+statvfs64
+strcoll
+strcoll_l
+strerror
+strerror_r
+strfmon
+strfmon_l
+strftime
+strftime_l
+strsignal
+strxfrm
+strxfrm_l
+swprintf
+swscanf
+system
+tcdrain
+tdelete
+tempnam
+textdomain
+timegm
+timelocal
+tmpfile64
+tmpnam
+tmpnam_r
+ttyslot
+ulckpwdf
+usleep
+valloc
+vasprintf
+vdprintf
+verr
+verrx
+vfprintf
+vfscanf
+vfwprintf
+vfwscanf
+vprintf
+vscanf
+vsnprintf
+vsprintf
+vsscanf
+vswprintf
+vswscanf
+vwarn
+vwarnx
+vwprintf
+vwscanf
+wait
+waitid
+waitpid
+warn
+warnx
+wcrtomb
+wcscoll
+wcscoll_l
+wcsftime
+wcsftime_l
+wcsnrtombs
+wcsrtombs
+wcstombs
+wcsxfrm
+wcsxfrm_l
+wctob
+wctomb
+wordexp
+wordfree
+wprintf
+write
+writev
+wscanf
index be1f37a..1b209ec 100644 (file)
@@ -1,6 +1,8 @@
 mkdtemp.os
+mktemp.os
 tmpnam.os
 tmpnam_r.os
+tempnam.os
 __assert.os
 assert.os
 assert-perr.os
@@ -31,3 +33,16 @@ fmemopen.os
 closedir.os
 hsearch.os
 hsearch_r.os
+catgets.os
+digits_dots.os
+localealias.os
+gconv_conf.os
+mtrace.os
+tzfile.os
+tzset.os
+ruserpass.os
+mntent_r.os
+fstab.os
+getttyent.os
+nsswitch.os
+res_init.os
index e5c0529..7321197 100644 (file)
@@ -1,3 +1,9 @@
+2004-03-07  Ulrich Drepper  <drepper@redhat.com>
+
+       * idn-stub.c: Include <gnu/lib-names.h>.  Use LIBCIDN_SO for dlopen.
+       * shlib-versions: New file.
+       * toutf8.c: Include <sys/param.h>.
+
 2004-03-07  Simon Josefsson  <jas@extundo.com>
 
        * Banner: New file.
index f2a1161..1e5cc1f 100644 (file)
@@ -23,6 +23,8 @@
 #include <stdio.h>
 #include <string.h>
 #include <dlfcn.h>
+#include <gnu/lib-names.h>
+#include <bits/libc-lock.h>
 
 /* Get specification for idna_to_ascii_lz. */
 #include "idna.h"
@@ -53,20 +55,30 @@ __idna_to_ascii_lz (const char *input, char **output, int flags)
 
   if (h == NULL)
     {
-      h = __libc_dlopen ("libcidn.so");
+      __libc_lock_define_initialized (static, lock);
 
+      __libc_lock_lock (lock);
+
+      /* Retest in case some other thread arrived here at the same time.  */
       if (h == NULL)
-       h = (void *) 1l;
-      else
        {
-         /* Get the function we are interested in.  */
-         to_ascii_lz = __libc_dlsym (h, "idna_to_ascii_lz");
-         if (to_ascii_lz == NULL)
+         h = __libc_dlopen (LIBCIDN_SO);
+
+         if (h == NULL)
+           h = (void *) 1l;
+         else
            {
-             __libc_dlclose (h);
-             h = (void *) 1l;
+             /* Get the function we are interested in.  */
+             to_ascii_lz = __libc_dlsym (h, "idna_to_ascii_lz");
+             if (to_ascii_lz == NULL)
+               {
+                 __libc_dlclose (h);
+                 h = (void *) 1l;
+               }
            }
        }
+
+      __libc_lock_unlock (lock);
     }
 
   if (h == (void *) 1l)
diff --git a/libidn/shlib-versions b/libidn/shlib-versions
new file mode 100644 (file)
index 0000000..9b27e51
--- /dev/null
@@ -0,0 +1 @@
+.*-.*-.*       libcidn=1
index 450cb6d..d16efdb 100644 (file)
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <sys/param.h>
 
 #include "stringprep.h"