]> code.delx.au - pulseaudio/commitdiff
Apply Joe Marcus Clarke's FreeBSD patches
authorLennart Poettering <lennart@poettering.net>
Mon, 1 Nov 2004 23:37:36 +0000 (23:37 +0000)
committerLennart Poettering <lennart@poettering.net>
Mon, 1 Nov 2004 23:37:36 +0000 (23:37 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@269 fefdeb5f-60dc-0310-8127-8f9354f1896f

configure.ac
polyp/Makefile.am
polyp/packet.h
polyp/polyplib-context.c
polyp/socket-util.c
polyp/util.c

index 14a6842d1e2dc997c43130481c5e14bea4f5966a..ddf0a3411349c00e5f3aea694a7363d35800e467 100644 (file)
@@ -74,11 +74,15 @@ AC_FUNC_REALLOC
 AC_FUNC_SETPGRP
 AC_FUNC_VPRINTF
 AC_TYPE_SIGNAL
-AC_CHECK_FUNCS([gethostname gettimeofday memchr memmove memset mkdir mkfifo munmap rmdir socket strcspn strerror strrchr strspn strstr strtol strtoul pow strcasecmp putenv strchr strpbrk strdup])
+AC_TYPE_UID_T
+AC_CHECK_FUNCS([gethostname gettimeofday memchr memmove memset mkdir mkfifo munmap rmdir socket strcspn strerror strrchr strspn strstr strtol strtoul strcasecmp putenv strchr strpbrk strdup getgrgid_r getpwuid_r regcomp])
+AC_CHECK_LIB(m, pow)
+AC_CHECK_FUNCS(pow)
 AC_FUNC_STAT
 AC_HEADER_SYS_WAIT
 
 AC_C_BIGENDIAN
+AC_FUNC_GETGROUPS
 
 AC_CHECK_LIB(cap, cap_init, [CAP_LIBS='-lcap'], [CAP_LIBS=''])
 AC_SUBST(CAP_LIBS)
index d90d32295f6e4270805fba0c8fbc3863b427aaee..e97ed94dbd65ec0c6dfb2a70a68ba3242a556ee1 100644 (file)
@@ -624,7 +624,7 @@ endif
 ### Some minor stuff
 
 suid: polypaudio
-       chown root:root $<
+       chown root $<
        chmod u+s $<
 
 esdcompat.sh: esdcompat.sh.in Makefile
@@ -643,7 +643,7 @@ daemon.conf: daemon.conf.in Makefile
                -e 's,@DEFAULT_CONFIG_FILE\@,$(polypconfdir)/daemon.conf,g' < $< > $@
 
 install-exec-hook:
-       chown root:root $(DESTDIR)$(bindir)/polypaudio
+       chown root $(DESTDIR)$(bindir)/polypaudio
        chmod u+s $(DESTDIR)$(bindir)/polypaudio
 
 $(SYMDEF_FILES): module-defs.h.m4
index 8bea07e1952e1f3118f8deedada521a1ed826b3d..8f5cb8354bd72f09338aeb3a40167da90d35bc8e 100644 (file)
@@ -23,7 +23,7 @@
 ***/
 
 #include <sys/types.h>
-#include <stdint.h>
+#include <inttypes.h>
 
 struct pa_packet {
     enum { PA_PACKET_APPENDED, PA_PACKET_DYNAMIC } type;
index cf1a8e60c73ced97eab4d7b941bee8b4cce97b69..1a25523fd1d3e73c9a6311f561171de7dba0d120 100644 (file)
@@ -34,6 +34,7 @@
 #include <sys/stat.h>
 #include <errno.h>
 #include <sys/wait.h>
+#include <signal.h>
 
 #include "polyplib-internal.h"
 #include "polyplib-context.h"
index 499739bd34dc36e74a7e6f76052f985a09cf07b0..4e1eb6ab857dd8e944141c828243dc457f894f56 100644 (file)
 #include <assert.h>
 #include <string.h>
 #include <stdio.h>
+#include <sys/types.h>
 #include <sys/un.h>
 #include <netinet/in.h>
 #include <fcntl.h>
 #include <unistd.h>
-#include <sys/types.h>
+#include <netinet/in_systm.h>
 #include <netinet/tcp.h>
 #include <netinet/ip.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
 #include <netdb.h>
 
 #include "socket-util.h"
@@ -94,9 +97,11 @@ int pa_socket_low_delay(int fd) {
     int priority;
     assert(fd >= 0);
 
+#ifdef SO_PRIORITY
     priority = 7;
     if (setsockopt(fd, SOL_SOCKET, SO_PRIORITY, &priority, sizeof(priority)) < 0)
         return -1;
+#endif
 
     return 0;
 }
@@ -109,12 +114,25 @@ int pa_socket_tcp_low_delay(int fd) {
     ret = pa_socket_low_delay(fd);
     
     on = 1;
+#if defined(SOL_TCP) || defined(IPPROTO_TCP)
+#if defined(SOL_TCP)
     if (setsockopt(fd, SOL_TCP, TCP_NODELAY, &on, sizeof(on)) < 0)
+#else
+    if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)) < 0)
+#endif
         ret = -1;
+#endif
 
+#if defined(IPTOS_LOWDELAY) && defined(IP_TOS) && (defined(SOL_IP) || \
+       defined(IPPROTO_IP))
     tos = IPTOS_LOWDELAY;
+#ifdef SOL_IP
     if (setsockopt(fd, SOL_IP, IP_TOS, &tos, sizeof(tos)) < 0)
+#else
+    if (setsockopt(fd, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)) < 0)
+#endif
         ret = -1;
+#endif
 
     return ret;
 
index 9697a1ebe6e40a3c0f468491653892f7b72fe4f8..b138266b3edcc76eb74208a50ffac043f6e7750c 100644 (file)
@@ -209,7 +209,13 @@ char *pa_get_user_name(char *s, size_t l) {
         if (!(p = getenv("LOGNAME")))
             if (!(p = getenv("USERNAME"))) {
                 
+#ifdef HAVE_GETPWUID_R
                 if (getpwuid_r(getuid(), &pw, buf, sizeof(buf), &r) != 0 || !r) {
+#else
+               /* XXX Not thread-safe, but needed on OSes (e.g. FreeBSD 4.X)
+                * that do not support getpwuid_r. */
+               if ((r = getpwuid(getuid())) == NULL) {
+#endif
                     snprintf(s, l, "%lu", (unsigned long) getuid());
                     return s;
                 }
@@ -445,11 +451,17 @@ int pa_parse_resample_method(const char *string) {
 
 static int is_group(gid_t gid, const char *name) {
     struct group group, *result = NULL;
-    long n = sysconf(_SC_GETGR_R_SIZE_MAX);
+    long n;
     void *data;
     int r = -1;
-    
-    assert(n > 0);
+
+#ifdef HAVE_GETGRGID_R
+#ifdef _SC_GETGR_R_SIZE_MAX
+    n = sysconf(_SC_GETGR_R_SIZE_MAX);
+#else
+    n = -1;
+#endif
+    if (n < 0) n = 512;
     data = pa_xmalloc(n);
 
     if (getgrgid_r(gid, &group, data, n, &result) < 0 || !result) {
@@ -462,6 +474,18 @@ static int is_group(gid_t gid, const char *name) {
     
 finish:
     pa_xfree(data);
+#else
+    /* XXX Not thread-safe, but needed on OSes (e.g. FreeBSD 4.X) that do not
+     * support getgrgid_r. */
+    if ((result = getgrgid(gid)) == NULL) {
+       pa_log(__FILE__ ": getgrgid(%u) failed: %s\n", gid, strerror(errno));
+       goto finish;
+    }
+
+    r = strcmp(name, result->gr_name) == 0;
+
+finish:
+#endif
     
     return r;
 }