> PS. Hiroyuki, could you send me your httpd-2.0/srclib/apr/apr.exports
>     please? I'm curious if my thoughts are matching the behaviour on
>     your machine.

apr.exports and apr.exports.patched are attached in this mail.
the former is created from apr_sms_threads.h rev 1.1 and the
latter from that after applying my patch.
The diff is very simple as follows.

--- apr.exports Fri Jul 13 23:36:11 2001
+++ apr.exports.patched Fri Jul 13 23:35:04 2001
@@ -262,8 +262,10 @@
        apr_sms_dump_stats
 /APR_SMS_ALLOC_STATS
 apr_sms_blocks_create
-apr_sms_threads_create
-apr_sms_threads_create_ex
+APR_HAS_THREADS
+       apr_sms_threads_create
+       apr_sms_threads_create_ex
+/APR_HAS_THREADS
 apr_sms_tracking_create
 apr_sms_trivial_create
 apr_sms_trivial_create_ex

My system is FreeBSD-current which is built a few days before.
/usr/bin/awk is gawk 3.0.6; same as Sander's.

cheers,

hiro hanai
APR_HAS_DSO
        apr_dso_load
        apr_dso_unload
        apr_dso_sym
        apr_dso_error
/APR_HAS_DSO
apr_strerror
apr_stat
apr_lstat
apr_dir_open
apr_dir_close
apr_dir_read
apr_dir_rewind
apr_filepath_root
apr_filepath_merge
apr_filepath_get
apr_filepath_set
apr_file_open
apr_file_close
apr_file_remove
apr_file_rename
apr_file_eof
apr_file_open_stderr
apr_file_open_stdout
apr_file_open_stdin
apr_file_read
apr_file_write
apr_file_writev
apr_file_read_full
apr_file_write_full
apr_file_putc
apr_file_getc
apr_file_ungetc
apr_file_gets
apr_file_puts
apr_file_flush
apr_file_dup
apr_file_seek
apr_file_pipe_create
apr_file_namedpipe_create
apr_file_pipe_timeout_get
apr_file_pipe_timeout_set
apr_file_lock
apr_file_unlock
apr_file_name_get
apr_file_data_get
apr_file_data_set
apr_file_printf
apr_file_perms_set
apr_dir_make
apr_dir_remove
apr_file_info_get
apr_file_trunc
apr_fnmatch
apr_is_fnmatch
strcasecmp
strncasecmp
memchr
APR_HAS_RANDOM
        apr_generate_random_bytes
/APR_HAS_RANDOM
apr_initialize
apr_terminate
apr_terminate2
apr_getopt_init
apr_getopt
apr_getopt_long
apr_hash_make
apr_hash_set
apr_hash_get
apr_hash_first
apr_hash_next
apr_hash_this
apr_hash_count
apr_filename_of_pathname
apr_vformatter
apr_password_validate
apr_password_get
apr_lock_create
apr_lock_acquire
apr_lock_acquire_rw
apr_lock_release
apr_lock_destroy
apr_lock_child_init
apr_lock_data_get
apr_lock_data_set
APR_HAS_LOCK_CREATE_NP
        apr_lock_create_np
/APR_HAS_LOCK_CREATE_NP
apr_md5_init
APR_HAS_XLATE
        apr_md5_set_xlate
/APR_HAS_XLATE
apr_md5_update
apr_md5_final
apr_md5
apr_md5_encode
APR_HAS_MMAP
        apr_mmap_create
        apr_mmap_delete
        apr_mmap_offset
/APR_HAS_MMAP
apr_socket_create
apr_shutdown
apr_socket_close
apr_bind
apr_listen
apr_accept
apr_connect
apr_sockaddr_info_get
apr_getnameinfo
apr_parse_addr_port
apr_gethostname
apr_socket_data_get
apr_socket_data_set
apr_send
apr_sendv
apr_sendto
apr_recvfrom
APR_HAS_SENDFILE
        apr_sendfile
/APR_HAS_SENDFILE
apr_recv
apr_setsocketopt
apr_getsocketopt
apr_socket_addr_get
apr_sockaddr_port_set
apr_sockaddr_port_get
apr_sockaddr_ip_set
apr_sockaddr_ip_get
apr_poll_setup
apr_poll
apr_poll_socket_add
apr_poll_socket_mask
apr_poll_socket_remove
apr_poll_socket_clear
apr_poll_revents_get
apr_poll_data_get
apr_poll_data_set
APR_FILES_AS_SOCKETS
        apr_socket_from_file
/APR_FILES_AS_SOCKETS
apr_getservbyname
apr_ipsubnet_create
apr_ipsubnet_test
APR_OS_ACCEPT_FILTER
        apr_socket_accept_filter
/APR_OS_ACCEPT_FILTER
defined(APR_POOL_DEBUG) || defined(DOXYGEN)
        apr_pool_join
        apr_find_pool
        apr_pool_num_bytes
        apr_pool_free_blocks_num_bytes
/defined(APR_POOL_DEBUG) || defined(DOXYGEN)
apr_pool_is_ancestor
apr_pool_alloc_init
apr_pool_alloc_term
apr_pool_create
!defined(APR_POOLS_ARE_SMS) || defined(DOXYGEN)
        apr_pool_set_abort
        apr_pool_get_abort
        apr_pool_get_parent
        apr_pool_userdata_set
        apr_pool_userdata_get
        apr_pool_clear
        apr_pool_destroy
        apr_palloc
        apr_pcalloc
/!defined(APR_POOLS_ARE_SMS) || defined(DOXYGEN)
apr_pool_sub_make
defined(APR_POOL_DEBUG) || defined(DOXYGEN) 
        apr_pool_num_bytes
        apr_pool_free_blocks_num_bytes
/defined(APR_POOL_DEBUG) || defined(DOXYGEN) 
apr_pool_cleanup_register
!defined(APR_POOLS_ARE_SMS) || defined(DOXYGEN)
        apr_pool_cleanup_kill
        apr_pool_cleanup_run
        apr_pool_cleanup_null
/!defined(APR_POOLS_ARE_SMS) || defined(DOXYGEN)
apr_pool_cleanup_for_exec
APR_POOLS_ARE_SMS
/APR_POOLS_ARE_SMS
apr_os_file_get
apr_os_dir_get
apr_os_sock_get
apr_os_lock_get
apr_os_exp_time_get
apr_os_imp_time_get
APR_HAS_THREADS
        apr_os_thread_get
        apr_os_threadkey_get
/APR_HAS_THREADS
apr_os_file_put
apr_os_dir_put
apr_os_sock_put
apr_os_sock_make
apr_os_lock_put
apr_os_imp_time_put
apr_os_exp_time_put
APR_HAS_THREADS
        apr_os_thread_put
        apr_os_threadkey_put
/APR_HAS_THREADS
APR_HAS_DSO
        apr_os_dso_handle_put
        apr_os_dso_handle_get
/APR_HAS_DSO
APR_HAS_THREADS
        apr_os_thread_current
        apr_os_thread_equal
        apr_sms_thread_register
        apr_sms_thread_unregister
/APR_HAS_THREADS
apr_shm_init
apr_shm_destroy
apr_shm_malloc
apr_shm_calloc
apr_shm_free
apr_shm_name_get
apr_shm_name_set
apr_shm_open
apr_shm_avail
APR_HAVE_SIGACTION
        apr_signal
defined(SIG_IGN) && !defined(SIG_ERR)
/defined(SIG_IGN) && !defined(SIG_ERR)
/APR_HAVE_SIGACTION
apr_signal_get_description
apr_signal_init
apr_sms_malloc
apr_sms_calloc
apr_sms_realloc
apr_sms_free
APR_ASSERT_MEMORY
        apr_sms_assert
/APR_ASSERT_MEMORY
apr_sms_reset
apr_sms_destroy
apr_sms_lock
apr_sms_unlock
apr_sms_is_ancestor
apr_sms_get_identity
apr_sms_get_parent
apr_sms_set_abort
apr_sms_get_abort
apr_sms_userdata_set
apr_sms_userdata_get
apr_sms_cleanup_register
apr_sms_cleanup_unregister
apr_sms_cleanup_unregister_type
apr_sms_cleanup_run
apr_sms_cleanup_run_type
apr_sms_std_create
APR_DEBUG_SHOW_STRUCTURE
        apr_sms_show_structure
/APR_DEBUG_SHOW_STRUCTURE
APR_DEBUG_TAG_SMS
        apr_sms_tag
/APR_DEBUG_TAG_SMS
APR_SMS_ALLOC_STATS
        apr_sms_dump_stats
/APR_SMS_ALLOC_STATS
apr_sms_blocks_create
apr_sms_threads_create
apr_sms_threads_create_ex
apr_sms_tracking_create
apr_sms_trivial_create
apr_sms_trivial_create_ex
apr_strnatcmp
apr_strnatcasecmp
apr_pstrdup
apr_pstrndup
apr_pmemdup
apr_pstrcat
apr_pvsprintf
apr_psprintf
apr_cpystrn
apr_collapse_spaces
apr_tokenize_to_argv
apr_strtok
apr_snprintf
apr_vsnprintf
apr_array_make
apr_array_push
apr_array_cat
apr_array_copy
apr_array_copy_hdr
apr_array_append
apr_array_pstrcat
apr_table_make
apr_table_copy
apr_table_clear
apr_table_get
apr_table_set
apr_table_setn
apr_table_unset
apr_table_merge
apr_table_mergen
apr_table_add
apr_table_addn
apr_table_overlay
apr_table_do
apr_table_vdo
apr_table_overlap
APR_HAS_THREADS
        apr_threadattr_create
        apr_threadattr_detach_set
        apr_threadattr_detach_get
        apr_thread_create
        apr_thread_exit
        apr_thread_join
        apr_thread_detach
        apr_thread_data_get
        apr_thread_data_set
        apr_threadkey_private_create
        apr_threadkey_private_get
        apr_threadkey_private_set
        apr_threadkey_private_delete
        apr_threadkey_data_get
        apr_threadkey_data_set
/APR_HAS_THREADS
apr_procattr_create
apr_procattr_io_set
apr_procattr_child_in_set
apr_procattr_child_out_set
apr_procattr_child_err_set
apr_procattr_dir_set
apr_procattr_cmdtype_set
apr_procattr_detach_set
APR_HAVE_STRUCT_RLIMIT
        apr_procattr_limit_set
/APR_HAVE_STRUCT_RLIMIT
APR_HAS_FORK
        apr_proc_fork
/APR_HAS_FORK
apr_proc_create
apr_proc_wait
apr_proc_wait_all_procs
apr_proc_detach
APR_HAS_OTHER_CHILD
        apr_proc_other_child_register
        apr_proc_other_child_unregister
        apr_proc_other_child_read
        apr_proc_other_child_check
/APR_HAS_OTHER_CHILD
apr_proc_kill
apr_pool_note_subprocess
APR_HAS_THREADS && !defined(OS2) && APR_HAVE_SIGWAIT
        apr_setup_signal_thread
        apr_signal_thread
/APR_HAS_THREADS && !defined(OS2) && APR_HAVE_SIGWAIT
apr_time_now
apr_ansi_time_to_apr_time
apr_explode_time
apr_explode_gmt
apr_explode_localtime
apr_implode_time
apr_implode_gmt
apr_sleep
apr_rfc822_date
apr_ctime
apr_strftime
APR_HAS_USER
        apr_get_username
        apr_get_userid
        apr_get_home_directory
defined(WIN32)
                apr_compare_users
/defined(WIN32)
        apr_get_groupname
defined(WIN32)
                apr_compare_groups
/defined(WIN32)
        apr_get_user_passwd
/APR_HAS_USER
apr_uuid_get
apr_uuid_format
apr_uuid_parse
APR_HAS_XLATE
        apr_xlate_open
        apr_xlate_get_sb
        apr_xlate_conv_buffer
APR_NOT_DONE_YET
                apr_xlate_conv_char
/APR_NOT_DONE_YET
        apr_xlate_close
/APR_HAS_XLATE
APR_HAS_DSO
        apr_dso_load
        apr_dso_unload
        apr_dso_sym
        apr_dso_error
/APR_HAS_DSO
apr_strerror
apr_stat
apr_lstat
apr_dir_open
apr_dir_close
apr_dir_read
apr_dir_rewind
apr_filepath_root
apr_filepath_merge
apr_filepath_get
apr_filepath_set
apr_file_open
apr_file_close
apr_file_remove
apr_file_rename
apr_file_eof
apr_file_open_stderr
apr_file_open_stdout
apr_file_open_stdin
apr_file_read
apr_file_write
apr_file_writev
apr_file_read_full
apr_file_write_full
apr_file_putc
apr_file_getc
apr_file_ungetc
apr_file_gets
apr_file_puts
apr_file_flush
apr_file_dup
apr_file_seek
apr_file_pipe_create
apr_file_namedpipe_create
apr_file_pipe_timeout_get
apr_file_pipe_timeout_set
apr_file_lock
apr_file_unlock
apr_file_name_get
apr_file_data_get
apr_file_data_set
apr_file_printf
apr_file_perms_set
apr_dir_make
apr_dir_remove
apr_file_info_get
apr_file_trunc
apr_fnmatch
apr_is_fnmatch
strcasecmp
strncasecmp
memchr
APR_HAS_RANDOM
        apr_generate_random_bytes
/APR_HAS_RANDOM
apr_initialize
apr_terminate
apr_terminate2
apr_getopt_init
apr_getopt
apr_getopt_long
apr_hash_make
apr_hash_set
apr_hash_get
apr_hash_first
apr_hash_next
apr_hash_this
apr_hash_count
apr_filename_of_pathname
apr_vformatter
apr_password_validate
apr_password_get
apr_lock_create
apr_lock_acquire
apr_lock_acquire_rw
apr_lock_release
apr_lock_destroy
apr_lock_child_init
apr_lock_data_get
apr_lock_data_set
APR_HAS_LOCK_CREATE_NP
        apr_lock_create_np
/APR_HAS_LOCK_CREATE_NP
apr_md5_init
APR_HAS_XLATE
        apr_md5_set_xlate
/APR_HAS_XLATE
apr_md5_update
apr_md5_final
apr_md5
apr_md5_encode
APR_HAS_MMAP
        apr_mmap_create
        apr_mmap_delete
        apr_mmap_offset
/APR_HAS_MMAP
apr_socket_create
apr_shutdown
apr_socket_close
apr_bind
apr_listen
apr_accept
apr_connect
apr_sockaddr_info_get
apr_getnameinfo
apr_parse_addr_port
apr_gethostname
apr_socket_data_get
apr_socket_data_set
apr_send
apr_sendv
apr_sendto
apr_recvfrom
APR_HAS_SENDFILE
        apr_sendfile
/APR_HAS_SENDFILE
apr_recv
apr_setsocketopt
apr_getsocketopt
apr_socket_addr_get
apr_sockaddr_port_set
apr_sockaddr_port_get
apr_sockaddr_ip_set
apr_sockaddr_ip_get
apr_poll_setup
apr_poll
apr_poll_socket_add
apr_poll_socket_mask
apr_poll_socket_remove
apr_poll_socket_clear
apr_poll_revents_get
apr_poll_data_get
apr_poll_data_set
APR_FILES_AS_SOCKETS
        apr_socket_from_file
/APR_FILES_AS_SOCKETS
apr_getservbyname
apr_ipsubnet_create
apr_ipsubnet_test
APR_OS_ACCEPT_FILTER
        apr_socket_accept_filter
/APR_OS_ACCEPT_FILTER
defined(APR_POOL_DEBUG) || defined(DOXYGEN)
        apr_pool_join
        apr_find_pool
        apr_pool_num_bytes
        apr_pool_free_blocks_num_bytes
/defined(APR_POOL_DEBUG) || defined(DOXYGEN)
apr_pool_is_ancestor
apr_pool_alloc_init
apr_pool_alloc_term
apr_pool_create
!defined(APR_POOLS_ARE_SMS) || defined(DOXYGEN)
        apr_pool_set_abort
        apr_pool_get_abort
        apr_pool_get_parent
        apr_pool_userdata_set
        apr_pool_userdata_get
        apr_pool_clear
        apr_pool_destroy
        apr_palloc
        apr_pcalloc
/!defined(APR_POOLS_ARE_SMS) || defined(DOXYGEN)
apr_pool_sub_make
defined(APR_POOL_DEBUG) || defined(DOXYGEN) 
        apr_pool_num_bytes
        apr_pool_free_blocks_num_bytes
/defined(APR_POOL_DEBUG) || defined(DOXYGEN) 
apr_pool_cleanup_register
!defined(APR_POOLS_ARE_SMS) || defined(DOXYGEN)
        apr_pool_cleanup_kill
        apr_pool_cleanup_run
        apr_pool_cleanup_null
/!defined(APR_POOLS_ARE_SMS) || defined(DOXYGEN)
apr_pool_cleanup_for_exec
APR_POOLS_ARE_SMS
/APR_POOLS_ARE_SMS
apr_os_file_get
apr_os_dir_get
apr_os_sock_get
apr_os_lock_get
apr_os_exp_time_get
apr_os_imp_time_get
APR_HAS_THREADS
        apr_os_thread_get
        apr_os_threadkey_get
/APR_HAS_THREADS
apr_os_file_put
apr_os_dir_put
apr_os_sock_put
apr_os_sock_make
apr_os_lock_put
apr_os_imp_time_put
apr_os_exp_time_put
APR_HAS_THREADS
        apr_os_thread_put
        apr_os_threadkey_put
/APR_HAS_THREADS
APR_HAS_DSO
        apr_os_dso_handle_put
        apr_os_dso_handle_get
/APR_HAS_DSO
APR_HAS_THREADS
        apr_os_thread_current
        apr_os_thread_equal
        apr_sms_thread_register
        apr_sms_thread_unregister
/APR_HAS_THREADS
apr_shm_init
apr_shm_destroy
apr_shm_malloc
apr_shm_calloc
apr_shm_free
apr_shm_name_get
apr_shm_name_set
apr_shm_open
apr_shm_avail
APR_HAVE_SIGACTION
        apr_signal
defined(SIG_IGN) && !defined(SIG_ERR)
/defined(SIG_IGN) && !defined(SIG_ERR)
/APR_HAVE_SIGACTION
apr_signal_get_description
apr_signal_init
apr_sms_malloc
apr_sms_calloc
apr_sms_realloc
apr_sms_free
APR_ASSERT_MEMORY
        apr_sms_assert
/APR_ASSERT_MEMORY
apr_sms_reset
apr_sms_destroy
apr_sms_lock
apr_sms_unlock
apr_sms_is_ancestor
apr_sms_get_identity
apr_sms_get_parent
apr_sms_set_abort
apr_sms_get_abort
apr_sms_userdata_set
apr_sms_userdata_get
apr_sms_cleanup_register
apr_sms_cleanup_unregister
apr_sms_cleanup_unregister_type
apr_sms_cleanup_run
apr_sms_cleanup_run_type
apr_sms_std_create
APR_DEBUG_SHOW_STRUCTURE
        apr_sms_show_structure
/APR_DEBUG_SHOW_STRUCTURE
APR_DEBUG_TAG_SMS
        apr_sms_tag
/APR_DEBUG_TAG_SMS
APR_SMS_ALLOC_STATS
        apr_sms_dump_stats
/APR_SMS_ALLOC_STATS
apr_sms_blocks_create
APR_HAS_THREADS
        apr_sms_threads_create
        apr_sms_threads_create_ex
/APR_HAS_THREADS
apr_sms_tracking_create
apr_sms_trivial_create
apr_sms_trivial_create_ex
apr_strnatcmp
apr_strnatcasecmp
apr_pstrdup
apr_pstrndup
apr_pmemdup
apr_pstrcat
apr_pvsprintf
apr_psprintf
apr_cpystrn
apr_collapse_spaces
apr_tokenize_to_argv
apr_strtok
apr_snprintf
apr_vsnprintf
apr_array_make
apr_array_push
apr_array_cat
apr_array_copy
apr_array_copy_hdr
apr_array_append
apr_array_pstrcat
apr_table_make
apr_table_copy
apr_table_clear
apr_table_get
apr_table_set
apr_table_setn
apr_table_unset
apr_table_merge
apr_table_mergen
apr_table_add
apr_table_addn
apr_table_overlay
apr_table_do
apr_table_vdo
apr_table_overlap
APR_HAS_THREADS
        apr_threadattr_create
        apr_threadattr_detach_set
        apr_threadattr_detach_get
        apr_thread_create
        apr_thread_exit
        apr_thread_join
        apr_thread_detach
        apr_thread_data_get
        apr_thread_data_set
        apr_threadkey_private_create
        apr_threadkey_private_get
        apr_threadkey_private_set
        apr_threadkey_private_delete
        apr_threadkey_data_get
        apr_threadkey_data_set
/APR_HAS_THREADS
apr_procattr_create
apr_procattr_io_set
apr_procattr_child_in_set
apr_procattr_child_out_set
apr_procattr_child_err_set
apr_procattr_dir_set
apr_procattr_cmdtype_set
apr_procattr_detach_set
APR_HAVE_STRUCT_RLIMIT
        apr_procattr_limit_set
/APR_HAVE_STRUCT_RLIMIT
APR_HAS_FORK
        apr_proc_fork
/APR_HAS_FORK
apr_proc_create
apr_proc_wait
apr_proc_wait_all_procs
apr_proc_detach
APR_HAS_OTHER_CHILD
        apr_proc_other_child_register
        apr_proc_other_child_unregister
        apr_proc_other_child_read
        apr_proc_other_child_check
/APR_HAS_OTHER_CHILD
apr_proc_kill
apr_pool_note_subprocess
APR_HAS_THREADS && !defined(OS2) && APR_HAVE_SIGWAIT
        apr_setup_signal_thread
        apr_signal_thread
/APR_HAS_THREADS && !defined(OS2) && APR_HAVE_SIGWAIT
apr_time_now
apr_ansi_time_to_apr_time
apr_explode_time
apr_explode_gmt
apr_explode_localtime
apr_implode_time
apr_implode_gmt
apr_sleep
apr_rfc822_date
apr_ctime
apr_strftime
APR_HAS_USER
        apr_get_username
        apr_get_userid
        apr_get_home_directory
defined(WIN32)
                apr_compare_users
/defined(WIN32)
        apr_get_groupname
defined(WIN32)
                apr_compare_groups
/defined(WIN32)
        apr_get_user_passwd
/APR_HAS_USER
apr_uuid_get
apr_uuid_format
apr_uuid_parse
APR_HAS_XLATE
        apr_xlate_open
        apr_xlate_get_sb
        apr_xlate_conv_buffer
APR_NOT_DONE_YET
                apr_xlate_conv_char
/APR_NOT_DONE_YET
        apr_xlate_close
/APR_HAS_XLATE

Reply via email to