diff -Nurd -x'*~' howl-1.0.0.orig/configure howl-1.0.0/configure --- howl-1.0.0.orig/configure 2005-05-19 18:29:51.000000000 -0400 +++ howl-1.0.0/configure 2005-09-07 14:46:05.000000000 -0400 @@ -8513,7 +8513,7 @@ LIB_SUBDIRS="howl" HOWL_LIB_SUBDIRS=MacOSX HOWL_LIB_OBJECTS='macosx_salt.lo macosx_socket.lo macosx_time.lo macosx_mdns_stub.lo' - PLATFORM_LIBS="-framework CoreFoundation" + PLATFORM_LIBS="-Wl,-framework,CoreFoundation" HOWL_MAN_PAGES= ;; *-*-linux*) diff -aur howl-1.0.0/src/lib/howl/MacOSX/macosx_salt.c howl-1.0.0.patched/src/lib/howl/MacOSX/macosx_salt.c --- howl-1.0.0/src/lib/howl/MacOSX/macosx_salt.c 2004-07-29 08:18:36.000000000 +0200 +++ howl-1.0.0.patched/src/lib/howl/MacOSX/macosx_salt.c 2005-06-11 20:10:56.000000000 +0200 @@ -66,6 +66,7 @@ char ** argv) { sw_result err = SW_OKAY; + pthread_mutexattr_t attrs; *salt = (sw_salt) sw_malloc(sizeof(struct _sw_salt)); err = sw_translate_error(*salt, SW_E_MEM); @@ -76,6 +77,8 @@ (*salt)->m_sockets.m_prev = NULL; (*salt)->m_step = SW_FALSE; + pthread_mutexattr_settype(&attrs, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&(*salt)->m_mutex, &attrs); signal(SIGPIPE, SIG_IGN); exit: @@ -180,6 +183,22 @@ return SW_OKAY; } +sw_result +sw_salt_lock( + sw_salt self) +{ + sw_assert(self); + pthread_mutex_lock(&self->m_mutex); +} + +sw_result +sw_salt_unlock( + sw_salt self) +{ + sw_assert(self); + pthread_mutex_unlock(&self->m_mutex); +} + sw_result sw_salt_step( diff -aur howl-1.0.0/src/lib/howl/MacOSX/macosx_salt.h howl-1.0.0.patched/src/lib/howl/MacOSX/macosx_salt.h --- howl-1.0.0/src/lib/howl/MacOSX/macosx_salt.h 2004-02-11 02:38:52.000000000 +0100 +++ howl-1.0.0.patched/src/lib/howl/MacOSX/macosx_salt.h 2005-06-11 20:13:21.000000000 +0200 @@ -33,7 +33,7 @@ #include "macosx_socket.h" #include "macosx_time.h" #include - +#include #ifdef __cplusplus extern "C" @@ -46,6 +46,7 @@ CFRunLoopRef m_cf_run_loop; struct _sw_macosx_socket m_sockets; struct _sw_macosx_timer m_timers; + pthread_mutex_t m_mutex; sw_bool m_step; }; diff -Nurd -x'*~' howl-1.0.0.orig/src/lib/howl/Makefile.in howl-1.0.0/src/lib/howl/Makefile.in --- howl-1.0.0.orig/src/lib/howl/Makefile.in 2005-05-19 18:29:28.000000000 -0400 +++ howl-1.0.0/src/lib/howl/Makefile.in 2006-08-08 15:42:58.000000000 -0400 @@ -105,7 +105,7 @@ libhowl_la_SOURCES = $(sources_h) $(sources_c) libhowl_la_LDFLAGS = -version-info $(HOWL_LIBRARY_VERSION) EXTRA_libhowl_la_SOURCES = MacOSX/macosx_salt.c MacOSX/macosx_socket.c MacOSX/macosx_time.c MacOSX/macosx_mdns_stub.c Posix/posix_salt.c Posix/posix_socket.c Posix/posix_time.c Posix/posix_signal.c Posix/posix_interface.c NotOSX/notosx_mdns_stub.c -libhowl_la_LIBADD = @HOWL_LIB_OBJECTS@ +libhowl_la_LIBADD = @HOWL_LIB_OBJECTS@ $(PLATFORM_LIBS) libhowl_la_DEPENDENCIES = @HOWL_LIB_OBJECTS@ subdir = src/lib/howl mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs