From cef65632734caf00fbf1b0e44672d0e3c533c52f Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Wed, 3 Oct 2007 14:47:26 +0000 Subject: [PATCH] Assorted minor Windows compatibility fixes for recent code updates. git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1928 fefdeb5f-60dc-0310-8127-8f9354f1896f --- configure.ac | 1 + libltdl/config.h | 30 +++++++++++++------------- src/Makefile.am | 4 ++-- src/pulsecore/authkey.c | 4 ++++ src/pulsecore/core-util.c | 45 +++++++++++++++++++++++++++++++++++++-- src/pulsecore/fdsem.c | 7 ++++++ src/pulsecore/ioline.c | 1 + src/pulsecore/mutex-win32.c | 2 +- src/pulsecore/once.c | 2 -- src/pulsecore/pid.c | 5 ++++- src/pulsecore/rtsig.h | 3 --- src/pulsecore/sound-file-stream.c | 6 +++++- src/pulsecore/sound-file.c | 6 +++++- src/pulsecore/thread-win32.c | 19 +++++++---------- src/pulsecore/winsock.h | 2 ++ 15 files changed, 98 insertions(+), 39 deletions(-) diff --git a/configure.ac b/configure.ac index 152cd51..cf9069a 100644 --- a/configure.ac +++ b/configure.ac @@ -219,6 +219,7 @@ AC_CHECK_HEADERS([windows.h winsock2.h ws2tcpip.h]) # Other AC_CHECK_HEADERS([sys/ioctl.h]) AC_CHECK_HEADERS([byteswap.h]) +AC_CHECK_HEADERS([sys/syscall.h]) #### Typdefs, structures, etc. #### diff --git a/libltdl/config.h b/libltdl/config.h index a04820a..a4186d9 100644 --- a/libltdl/config.h +++ b/libltdl/config.h @@ -2,22 +2,22 @@ /* config-h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the `argz_append' function. */ -#define HAVE_ARGZ_APPEND 1 +/* #undef HAVE_ARGZ_APPEND */ /* Define to 1 if you have the `argz_create_sep' function. */ -#define HAVE_ARGZ_CREATE_SEP 1 +/* #undef HAVE_ARGZ_CREATE_SEP */ /* Define to 1 if you have the header file. */ -#define HAVE_ARGZ_H 1 +/* #undef HAVE_ARGZ_H */ /* Define to 1 if you have the `argz_insert' function. */ -#define HAVE_ARGZ_INSERT 1 +/* #undef HAVE_ARGZ_INSERT */ /* Define to 1 if you have the `argz_next' function. */ -#define HAVE_ARGZ_NEXT 1 +/* #undef HAVE_ARGZ_NEXT */ /* Define to 1 if you have the `argz_stringify' function. */ -#define HAVE_ARGZ_STRINGIFY 1 +/* #undef HAVE_ARGZ_STRINGIFY */ /* Define to 1 if you have the header file. */ #define HAVE_ASSERT_H 1 @@ -42,10 +42,10 @@ /* #undef HAVE_DLD_H */ /* Define to 1 if you have the `dlerror' function. */ -#define HAVE_DLERROR 1 +/* #undef HAVE_DLERROR */ /* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 +/* #undef HAVE_DLFCN_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DL_H */ @@ -57,7 +57,7 @@ #define HAVE_ERRNO_H 1 /* Define to 1 if the system has the type `error_t'. */ -#define HAVE_ERROR_T 1 +/* #undef HAVE_ERROR_T */ /* Define to 1 if you have the `index' function. */ /* #undef HAVE_INDEX */ @@ -66,7 +66,7 @@ #define HAVE_INTTYPES_H 1 /* Define if you have the libdl library or equivalent. */ -#define HAVE_LIBDL 1 +/* #undef HAVE_LIBDL */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MACH_O_DYLD_H */ @@ -146,7 +146,7 @@ #define HAVE_UNISTD_H 1 /* Define if the OS needs help to load dependent libraries for dlopen(). */ -/* #undef LTDL_DLOPEN_DEPLIBS */ +#define LTDL_DLOPEN_DEPLIBS 1 /* Define to the sub-directory in which libtool stores uninstalled libraries. */ @@ -154,13 +154,13 @@ /* Define to the name of the environment variable that determines the dynamic library search path. */ -#define LTDL_SHLIBPATH_VAR "LD_LIBRARY_PATH" +#define LTDL_SHLIBPATH_VAR "PATH" /* Define to the extension used for shared libraries, say, ".so". */ -#define LTDL_SHLIB_EXT ".so" +#define LTDL_SHLIB_EXT ".dll" /* Define to the system default library search path. */ -#define LTDL_SYSSEARCHPATH "/lib:/usr/lib:/usr/lib/atlas:/usr/local/lib:/lib/i486-linux-gnu:/usr/lib/i486-linux-gnu:/usr/local/lib" +#define LTDL_SYSSEARCHPATH "/lib:/usr/lib" /* Define if dlsym() requires a leading underscore in symbol names. */ /* #undef NEED_USCORE */ @@ -187,7 +187,7 @@ /* #undef const */ /* Define to a type to use for `error_t' if it is not otherwise available. */ -/* #undef error_t */ +#define error_t int /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ diff --git a/src/Makefile.am b/src/Makefile.am index e1d210b..98e7874 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -78,8 +78,8 @@ endif if OS_IS_WIN32 PA_THREAD_OBJS = \ pulsecore/mutex-win32.c pulsecore/mutex.h \ - pulsecore/thread-win32.c pulsecore/thread.h -# pulsecore/semaphore-win32.c pulsecore/semaphore.h + pulsecore/thread-win32.c pulsecore/thread.h \ + pulsecore/semaphore-win32.c pulsecore/semaphore.h else PA_THREAD_OBJS = \ pulsecore/mutex-posix.c pulsecore/mutex.h \ diff --git a/src/pulsecore/authkey.c b/src/pulsecore/authkey.c index 4d9bfd3..d422d6a 100644 --- a/src/pulsecore/authkey.c +++ b/src/pulsecore/authkey.c @@ -71,6 +71,10 @@ static int generate(int fd, void *ret_data, size_t length) { #define O_BINARY 0 #endif +#ifndef O_NOCTTY +#define O_NOCTTY 0 +#endif + /* Load an euthorization cookie from file fn and store it in data. If * the cookie file doesn't exist, create it */ static int load(const char *fn, void *data, size_t length) { diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index 3defe2b..a644b66 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -653,13 +653,21 @@ const char *pa_sig2str(int sig) { case SIGHUP: return "SIGHUP"; #endif case SIGINT: return "SIGINT"; +#ifdef SIGQUIT case SIGQUIT: return "SIGQUIT"; +#endif case SIGILL: return "SIGULL"; +#ifdef SIGTRAP case SIGTRAP: return "SIGTRAP"; +#endif case SIGABRT: return "SIGABRT"; +#ifdef SIGBUS case SIGBUS: return "SIGBUS"; +#endif case SIGFPE: return "SIGFPE"; +#ifdef SIGKILL case SIGKILL: return "SIGKILL"; +#endif #ifdef SIGUSR1 case SIGUSR1: return "SIGUSR1"; #endif @@ -670,30 +678,58 @@ const char *pa_sig2str(int sig) { #ifdef SIGPIPE case SIGPIPE: return "SIGPIPE"; #endif +#ifdef SIGALRM case SIGALRM: return "SIGALRM"; +#endif case SIGTERM: return "SIGTERM"; +#ifdef SIGSTKFLT case SIGSTKFLT: return "SIGSTKFLT"; +#endif #ifdef SIGCHLD case SIGCHLD: return "SIGCHLD"; #endif +#ifdef SIGCONT case SIGCONT: return "SIGCONT"; +#endif +#ifdef SIGSTOP case SIGSTOP: return "SIGSTOP"; +#endif +#ifdef SIGTSTP case SIGTSTP: return "SIGTSTP"; +#endif +#ifdef SIGTTIN case SIGTTIN: return "SIGTTIN"; +#endif +#ifdef SIGTTOU case SIGTTOU: return "SIGTTOU"; +#endif +#ifdef SIGURG case SIGURG: return "SIGURG"; +#endif #ifdef SIGXCPU case SIGXCPU: return "SIGXCPU"; #endif #ifdef SIGXFSZ case SIGXFSZ: return "SIGXFSZ"; #endif +#ifdef SIGVTALRM case SIGVTALRM: return "SIGVTALRM"; +#endif +#ifdef SIGPROF case SIGPROF: return "SIGPROF"; +#endif +#ifdef SIGWINCH case SIGWINCH: return "SIGWINCH"; +#endif +#ifdef SIGIO case SIGIO: return "SIGIO"; +#endif +#ifdef SIGPWR case SIGPWR: return "SIGPWR"; +#endif +#ifdef SIGSYS case SIGSYS: return "SIGSYS"; +#endif } #ifdef SIGRTMIN @@ -943,7 +979,10 @@ int pa_lock_lockfile(const char *fn) { for (;;) { struct stat st; - if ((fd = open(fn, O_CREAT|O_RDWR|O_NOCTTY + if ((fd = open(fn, O_CREAT|O_RDWR +#ifdef O_NOCTTY + |O_NOCTTY +#endif #ifdef O_NOFOLLOW |O_NOFOLLOW #endif @@ -1431,6 +1470,7 @@ void *pa_will_need(const void *p, size_t l) { pa_log_debug("posix_madvise() failed (or doesn't exist), trying mlock(): %s", pa_cstrerror(r)); +#ifdef HAVE_MLOCK while (size > 0 && bs > 0) { if (bs > size) @@ -1446,9 +1486,10 @@ void *pa_will_need(const void *p, size_t l) { a = (const uint8_t*) a + bs; size -= bs; } +#endif if (bs <= 0) - pa_log_debug("mlock() failed too, giving up: %s", pa_cstrerror(errno)); + pa_log_debug("mlock() failed too (or doesn't exist), giving up: %s", pa_cstrerror(errno)); else pa_log_debug("mlock() worked fine!"); diff --git a/src/pulsecore/fdsem.c b/src/pulsecore/fdsem.c index b919ba4..927bf00 100644 --- a/src/pulsecore/fdsem.c +++ b/src/pulsecore/fdsem.c @@ -25,7 +25,10 @@ #include #endif +#ifdef HAVE_SYS_SYSCALL_H #include +#endif + #include #include @@ -36,6 +39,10 @@ #include #include +#ifndef HAVE_PIPE +#include +#endif + #ifdef __linux__ #if !defined(__NR_eventfd) && defined(__i386__) diff --git a/src/pulsecore/ioline.c b/src/pulsecore/ioline.c index a362700..efb5072 100644 --- a/src/pulsecore/ioline.c +++ b/src/pulsecore/ioline.c @@ -32,6 +32,7 @@ #include +#include #include #include #include diff --git a/src/pulsecore/mutex-win32.c b/src/pulsecore/mutex-win32.c index 1f16e24..77d63d1 100644 --- a/src/pulsecore/mutex-win32.c +++ b/src/pulsecore/mutex-win32.c @@ -40,7 +40,7 @@ struct pa_cond { pa_hashmap *wait_events; }; -pa_mutex* pa_mutex_new(int recursive) { +pa_mutex* pa_mutex_new(pa_bool_t recursive, pa_bool_t inherit_priority) { pa_mutex *m; m = pa_xnew(pa_mutex, 1); diff --git a/src/pulsecore/once.c b/src/pulsecore/once.c index 4f6e5b6..198bd41 100644 --- a/src/pulsecore/once.c +++ b/src/pulsecore/once.c @@ -25,8 +25,6 @@ #include #endif -#include - #include #include diff --git a/src/pulsecore/pid.c b/src/pulsecore/pid.c index 38d2681..55ff208 100644 --- a/src/pulsecore/pid.c +++ b/src/pulsecore/pid.c @@ -88,7 +88,10 @@ static int open_pid_file(const char *fn, int mode) { for (;;) { struct stat st; - if ((fd = open(fn, mode|O_NOCTTY + if ((fd = open(fn, mode +#ifdef O_NOCTTY + |O_NOCTTY +#endif #ifdef O_NOFOLLOW |O_NOFOLLOW #endif diff --git a/src/pulsecore/rtsig.h b/src/pulsecore/rtsig.h index 48f5f05..7830d27 100644 --- a/src/pulsecore/rtsig.h +++ b/src/pulsecore/rtsig.h @@ -24,9 +24,6 @@ USA. ***/ -#include -#include - /* Return the next unused POSIX Realtime signals */ int pa_rtsig_get(void); diff --git a/src/pulsecore/sound-file-stream.c b/src/pulsecore/sound-file-stream.c index 6c70c4f..d9f11a2 100644 --- a/src/pulsecore/sound-file-stream.c +++ b/src/pulsecore/sound-file-stream.c @@ -244,7 +244,11 @@ int pa_play_file( memset(&sfinfo, 0, sizeof(sfinfo)); - if ((fd = open(fname, O_RDONLY|O_NOCTTY)) < 0) { + if ((fd = open(fname, O_RDONLY +#ifdef O_NOCTTY + |O_NOCTTY +#endif + )) < 0) { pa_log("Failed to open file %s: %s", fname, pa_cstrerror(errno)); goto fail; } diff --git a/src/pulsecore/sound-file.c b/src/pulsecore/sound-file.c index b1c509f..5035293 100644 --- a/src/pulsecore/sound-file.c +++ b/src/pulsecore/sound-file.c @@ -63,7 +63,11 @@ int pa_sound_file_load( pa_memchunk_reset(chunk); memset(&sfinfo, 0, sizeof(sfinfo)); - if ((fd = open(fname, O_RDONLY|O_NOCTTY)) < 0) { + if ((fd = open(fname, O_RDONLY +#ifdef O_NOCTTY + |O_NOCTTY +#endif + )) < 0) { pa_log("Failed to open file %s: %s", fname, pa_cstrerror(errno)); goto finish; } diff --git a/src/pulsecore/thread-win32.c b/src/pulsecore/thread-win32.c index 46d273b..cad1420 100644 --- a/src/pulsecore/thread-win32.c +++ b/src/pulsecore/thread-win32.c @@ -53,9 +53,8 @@ struct pa_tls_monitor { }; static pa_tls *thread_tls; -static pa_once_t thread_tls_once = PA_ONCE_INIT; +static pa_once thread_tls_once = PA_ONCE_INIT; static pa_tls *monitor_tls; -static pa_once_t monitor_tls_once = PA_ONCE_INIT; static void thread_tls_once_func(void) { thread_tls = pa_tls_new(NULL); @@ -66,7 +65,7 @@ static DWORD WINAPI internal_thread_func(LPVOID param) { pa_thread *t = param; assert(t); - pa_once(&thread_tls_once, thread_tls_once_func); + pa_run_once(&thread_tls_once, thread_tls_once_func); pa_tls_set(thread_tls, t); t->thread_func(t->userdata); @@ -122,7 +121,7 @@ int pa_thread_join(pa_thread *t) { } pa_thread* pa_thread_self(void) { - pa_once(&thread_tls_once, thread_tls_once_func); + pa_run_once(&thread_tls_once, thread_tls_once_func); return pa_tls_get(thread_tls); } @@ -130,12 +129,6 @@ void pa_thread_yield(void) { Sleep(0); } -static void monitor_tls_once_func(void) { - monitor_tls = pa_tls_new(NULL); - assert(monitor_tls); - pa_tls_set(monitor_tls, NULL); -} - static DWORD WINAPI monitor_thread_func(LPVOID param) { struct pa_tls_monitor *m = param; assert(m); @@ -191,7 +184,11 @@ void *pa_tls_set(pa_tls *t, void *userdata) { if (t->free_func) { struct pa_tls_monitor *m; - pa_once(&monitor_tls_once, monitor_tls_once_func); + PA_ONCE_BEGIN { + monitor_tls = pa_tls_new(NULL); + assert(monitor_tls); + pa_tls_set(monitor_tls, NULL); + } PA_ONCE_END; m = pa_tls_get(monitor_tls); if (!m) { diff --git a/src/pulsecore/winsock.h b/src/pulsecore/winsock.h index ae868b3..0352bf4 100644 --- a/src/pulsecore/winsock.h +++ b/src/pulsecore/winsock.h @@ -15,6 +15,8 @@ #define EHOSTUNREACH WSAEHOSTUNREACH #define EWOULDBLOCK WSAEWOULDBLOCK +typedef long suseconds_t; + #endif #ifdef HAVE_WS2TCPIP_H -- 2.7.4