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; };