split polypcore/util.[ch] into polypcore/core-util.[ch] and polyp/util.[ch]
authorLennart Poettering <lennart@poettering.net>
Wed, 17 May 2006 20:09:57 +0000 (20:09 +0000)
committerLennart Poettering <lennart@poettering.net>
Wed, 17 May 2006 20:09:57 +0000 (20:09 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@917 fefdeb5f-60dc-0310-8127-8f9354f1896f

53 files changed:
src/Makefile.am
src/modules/module-alsa-sink.c
src/modules/module-alsa-source.c
src/modules/module-combine.c
src/modules/module-detect.c
src/modules/module-esound-compat-spawnfd.c
src/modules/module-esound-compat-spawnpid.c
src/modules/module-esound-sink.c
src/modules/module-jack-sink.c
src/modules/module-jack-source.c
src/modules/module-match.c
src/modules/module-mmkbd-evdev.c
src/modules/module-null-sink.c
src/modules/module-oss-mmap.c
src/modules/module-oss.c
src/modules/module-pipe-sink.c
src/modules/module-pipe-source.c
src/modules/module-protocol-stub.c
src/modules/module-solaris.c
src/modules/module-tunnel.c
src/modules/module-volume-restore.c
src/modules/module-waveout.c
src/modules/module-x11-publish.c
src/modules/module-zeroconf-publish.c
src/modules/oss-util.c
src/polyp/util.c [new file with mode: 0644]
src/polyp/util.h [new file with mode: 0644]
src/polypcore/authkey.c
src/polypcore/cli-command.c
src/polypcore/conf-parser.c
src/polypcore/core-scache.c
src/polypcore/core-util.c [moved from src/polypcore/util.c with 77% similarity]
src/polypcore/core-util.h [moved from src/polypcore/util.h with 79% similarity]
src/polypcore/core.c
src/polypcore/iochannel.c
src/polypcore/log.c
src/polypcore/modargs.c
src/polypcore/modinfo.c
src/polypcore/module.c
src/polypcore/namereg.c
src/polypcore/parseaddr.c
src/polypcore/pdispatch.c
src/polypcore/pid.c
src/polypcore/poll.c
src/polypcore/protocol-esound.c
src/polypcore/protocol-native.c
src/polypcore/random.c
src/polypcore/sink.c
src/polypcore/socket-client.c
src/polypcore/socket-server.c
src/polypcore/socket-util.c
src/polypcore/strlist.c
src/utils/pabrowse.c

index 72db5f8..e7ad2fd 100644 (file)
@@ -271,17 +271,9 @@ mainloop_test_glib12_CFLAGS = $(mainloop_test_CFLAGS) $(GLIB12_CFLAGS) -DGLIB_MA
 mainloop_test_glib12_LDADD = $(mainloop_test_LDADD) $(GLIB12_LIBS) libpolyp-mainloop-glib12.la
 mainloop_test_glib12_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
 
-memblockq_test_SOURCES = \
-       tests/memblockq-test.c \
-       polyp/xmalloc.c \
-       polypcore/memblockq.c \
-       polypcore/log.c \
-       polypcore/memblock.c \
-       polypcore/util.c \
-       polypcore/mcalign.c \
-       polypcore/memchunk.c
+memblockq_test_SOURCES = tests/memblockq-test.c
 memblockq_test_CFLAGS = $(AM_CFLAGS)
-memblockq_test_LDADD = $(AM_LDADD) $(WINSOCK_LIBS)
+memblockq_test_LDADD = $(AM_LDADD) $(WINSOCK_LIBS) libpolypcore.la
 memblockq_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
 
 sync_playback_SOURCES = tests/sync-playback.c
@@ -315,7 +307,8 @@ polypinclude_HEADERS = \
                polyp/sample.h \
                polyp/utf8.h \
                polyp/volume.h \
-               polyp/xmalloc.h
+               polyp/xmalloc.h \
+               polyp/util.h
 
 if HAVE_HOWL
 polypinclude_HEADERS += \
@@ -364,8 +357,7 @@ libpolyp_la_SOURCES = \
                polyp/mainloop-signal.c polyp/mainloop-signal.h \
                polyp/thread-mainloop.c polyp/thread-mainloop.h \
                polyp/xmalloc.c polyp/xmalloc.h \
-               polypcore/pipe.c polypcore/pipe.h \
-               polypcore/poll.c polypcore/poll.h
+               polyp/util.c polyp/util.h 
 
 # Internal stuff that is shared with libpolypcore
 libpolyp_la_SOURCES += \
@@ -394,9 +386,11 @@ libpolyp_la_SOURCES += \
                polypcore/strbuf.c polypcore/strbuf.h \
                polypcore/strlist.c polypcore/strlist.h \
                polypcore/tagstruct.c polypcore/tagstruct.h \
-               polypcore/util.c polypcore/util.h \
+               polypcore/core-util.c polypcore/core-util.h \
                polypcore/winsock.h \
-               polypcore/llist.h
+               polypcore/llist.h \
+               polypcore/pipe.c polypcore/pipe.h \
+               polypcore/poll.c polypcore/poll.h
 
 if OS_IS_WIN32
 libpolyp_la_SOURCES += \
@@ -487,7 +481,7 @@ polypcoreinclude_HEADERS = \
                polypcore/source-output.h \
                polypcore/strbuf.h \
                polypcore/tokenizer.h \
-               polypcore/util.h
+               polypcore/core-util.h
 
 lib_LTLIBRARIES += libpolypcore.la
 
@@ -500,7 +494,8 @@ libpolypcore_la_SOURCES = \
                polyp/sample.c polyp/sample.h \
                polyp/volume.c polyp/volume.h \
                polyp/utf8.c polyp/utf8.h \
-               polyp/xmalloc.c polyp/xmalloc.h
+               polyp/xmalloc.c polyp/xmalloc.h \
+               polyp/util.c polyp/util.h
 
 # Pure core stuff (some are shared in libpolyp though).
 libpolypcore_la_SOURCES += \
@@ -547,7 +542,7 @@ libpolypcore_la_SOURCES += \
                polypcore/source-output.c polypcore/source-output.h \
                polypcore/strbuf.c polypcore/strbuf.h \
                polypcore/tokenizer.c polypcore/tokenizer.h \
-               polypcore/util.c polypcore/util.h \
+               polypcore/core-util.c polypcore/core-util.h \
                polypcore/winsock.h
 
 if OS_IS_WIN32
index 94de771..e768e16 100644 (file)
@@ -41,7 +41,7 @@
 #include <polypcore/memchunk.h>
 #include <polypcore/sink.h>
 #include <polypcore/modargs.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/sample-util.h>
 #include <polypcore/log.h>
 
index b9d1ff8..654f3e4 100644 (file)
@@ -41,7 +41,7 @@
 #include <polypcore/memchunk.h>
 #include <polypcore/sink.h>
 #include <polypcore/modargs.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/sample-util.h>
 #include <polypcore/log.h>
 
index b31fe56..5047fc3 100644 (file)
@@ -34,7 +34,7 @@
 #include <polypcore/sink-input.h>
 #include <polypcore/memblockq.h>
 #include <polypcore/log.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/namereg.h>
 
index ea14e68..2edbea5 100644 (file)
@@ -38,7 +38,7 @@
 #include <polypcore/module.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "module-detect-symdef.h"
 
index 9b72448..bf89ca7 100644 (file)
@@ -30,7 +30,7 @@
 
 #include <polypcore/module.h>
 #include <polypcore/modargs.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 
 #include "module-esound-compat-spawnfd-symdef.h"
index f8c07d3..895abec 100644 (file)
@@ -29,7 +29,7 @@
 #include <signal.h>
 
 #include <polypcore/module.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 
index 1d61e01..cf3ce80 100644 (file)
@@ -38,7 +38,7 @@
 #include <polypcore/iochannel.h>
 #include <polypcore/sink.h>
 #include <polypcore/module.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 #include <polypcore/socket-client.h>
index 1aa7349..96db837 100644 (file)
@@ -41,7 +41,7 @@
 #include <polypcore/iochannel.h>
 #include <polypcore/sink.h>
 #include <polypcore/module.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 #include <polyp/mainloop-api.h>
index 29c46d8..3d78314 100644 (file)
@@ -41,7 +41,7 @@
 #include <polypcore/iochannel.h>
 #include <polypcore/source.h>
 #include <polypcore/module.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 #include <polyp/mainloop-api.h>
index 1692b5d..c7ca12a 100644 (file)
 #include <polyp/xmalloc.h>
 
 #include <polypcore/module.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 #include <polypcore/core-subscribe.h>
 #include <polypcore/sink-input.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "module-match-symdef.h"
 
index 654fbaa..55f0b2c 100644 (file)
@@ -40,7 +40,7 @@
 #include <polypcore/namereg.h>
 #include <polypcore/sink.h>
 #include <polypcore/modargs.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "module-mmkbd-evdev-symdef.h"
 
index 2cc4906..7885001 100644 (file)
@@ -38,7 +38,7 @@
 #include <polypcore/iochannel.h>
 #include <polypcore/sink.h>
 #include <polypcore/module.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 
index 82e7d66..a1b4038 100644 (file)
@@ -43,7 +43,7 @@
 #include <polypcore/source.h>
 #include <polypcore/module.h>
 #include <polypcore/sample-util.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 
index 46d100f..9233420 100644 (file)
@@ -42,7 +42,7 @@
 #include <polypcore/source.h>
 #include <polypcore/module.h>
 #include <polypcore/sample-util.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 
index b59808f..6492ba6 100644 (file)
@@ -38,7 +38,7 @@
 #include <polypcore/iochannel.h>
 #include <polypcore/sink.h>
 #include <polypcore/module.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 
index 4f3f9a6..9f75544 100644 (file)
@@ -38,7 +38,7 @@
 #include <polypcore/iochannel.h>
 #include <polypcore/source.h>
 #include <polypcore/module.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 
index 79a59cd..cfe661a 100644 (file)
@@ -47,7 +47,7 @@
 #include <polypcore/module.h>
 #include <polypcore/socket-server.h>
 #include <polypcore/socket-util.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 #include <polypcore/native-common.h>
index d82e336..77eb4e4 100644 (file)
@@ -48,7 +48,7 @@
 #include <polypcore/source.h>
 #include <polypcore/module.h>
 #include <polypcore/sample-util.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 
index a2a1e33..81c3228 100644 (file)
@@ -35,7 +35,7 @@
 #include <polyp/xmalloc.h>
 
 #include <polypcore/module.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 #include <polypcore/core-subscribe.h>
index ea40d86..e74567b 100644 (file)
 #include <polyp/xmalloc.h>
 
 #include <polypcore/module.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/modargs.h>
 #include <polypcore/log.h>
 #include <polypcore/core-subscribe.h>
 #include <polypcore/sink-input.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polyp/volume.h>
 
 #include "module-volume-restore-symdef.h"
index 3d1f1b0..ce9ea84 100644 (file)
@@ -36,7 +36,7 @@
 #include <polypcore/module.h>
 #include <polypcore/modargs.h>
 #include <polypcore/sample-util.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 
 #include "module-waveout-symdef.h"
index e974487..eddcb3b 100644 (file)
@@ -41,7 +41,7 @@
 #include <polypcore/namereg.h>
 #include <polypcore/log.h>
 #include <polypcore/x11wrap.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/native-common.h>
 #include <polypcore/authkey-prop.h>
 #include <polypcore/authkey.h>
index e5dce75..5c5db28 100644 (file)
@@ -35,7 +35,7 @@
 #include <polypcore/sink.h>
 #include <polypcore/source.h>
 #include <polypcore/native-common.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 #include <polypcore/core-subscribe.h>
 #include <polypcore/dynarray.h>
index 2c573b2..a84276f 100644 (file)
@@ -34,7 +34,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 
 #include "oss-util.h"
diff --git a/src/polyp/util.c b/src/polyp/util.c
new file mode 100644 (file)
index 0000000..dd59732
--- /dev/null
@@ -0,0 +1,350 @@
+/* $Id$ */
+
+/***
+  This file is part of polypaudio.
+  polypaudio is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License as
+  published by the Free Software Foundation; either version 2.1 of the
+  License, or (at your option) any later version.
+  polypaudio is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+  You should have received a copy of the GNU Lesser General Public
+  License along with polypaudio; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+  USA.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdarg.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <errno.h>
+#include <assert.h>
+#include <string.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <limits.h>
+#include <time.h>
+#include <ctype.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+
+#ifdef HAVE_GRP_H
+#include <grp.h>
+#endif
+
+#ifdef HAVE_WINDOWS_H
+#include <windows.h>
+#endif
+
+#include <polyp/xmalloc.h>
+#include <polypcore/log.h>
+#include <polypcore/util.h>
+
+#include "util.h"
+
+#ifndef OS_IS_WIN32
+#define PATH_SEP '/'
+#else
+#define PATH_SEP '\\'
+#endif
+
+/* Return the current username in the specified string buffer. */
+char *pa_get_user_name(char *s, size_t l) {
+    char *p;
+    char buf[1024];
+
+#ifdef HAVE_PWD_H
+    struct passwd pw, *r;
+#endif
+
+    assert(s && l > 0);
+
+    if (!(p = getenv("USER")) && !(p = getenv("LOGNAME")) && !(p = getenv("USERNAME"))) {
+#ifdef HAVE_PWD_H
+        
+#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;
+        }
+        
+        p = r->pw_name;
+
+#elif defined(OS_IS_WIN32) /* HAVE_PWD_H */
+        DWORD size = sizeof(buf);
+
+        if (!GetUserName(buf, &size))
+            return NULL;
+
+        p = buf;
+
+#else /* HAVE_PWD_H */
+        return NULL;
+#endif /* HAVE_PWD_H */
+    }
+
+    return pa_strlcpy(s, p, l);
+}
+
+/* Return the current hostname in the specified buffer. */
+char *pa_get_host_name(char *s, size_t l) {
+    assert(s && l > 0);
+    if (gethostname(s, l) < 0) {
+        pa_log(__FILE__": gethostname(): %s", strerror(errno));
+        return NULL;
+    }
+    s[l-1] = 0;
+    return s;
+}
+
+/* Return the home directory of the current user */
+char *pa_get_home_dir(char *s, size_t l) {
+    char *e;
+
+#ifdef HAVE_PWD_H
+    char buf[1024];
+    struct passwd pw, *r;
+#endif
+
+    assert(s && l);
+
+    if ((e = getenv("HOME")))
+        return pa_strlcpy(s, e, l);
+
+    if ((e = getenv("USERPROFILE")))
+        return pa_strlcpy(s, e, l);
+
+#ifdef HAVE_PWD_H
+#ifdef HAVE_GETPWUID_R
+    if (getpwuid_r(getuid(), &pw, buf, sizeof(buf), &r) != 0 || !r) {
+        pa_log(__FILE__": getpwuid_r() failed");
+#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) {
+        pa_log(__FILE__": getpwuid_r() failed");
+#endif
+        return NULL;
+    }
+
+    return pa_strlcpy(s, r->pw_dir, l);
+#else /* HAVE_PWD_H */
+    return NULL;
+#endif
+}
+
+struct timeval *pa_gettimeofday(struct timeval *tv) {
+#ifdef HAVE_GETTIMEOFDAY
+    assert(tv);
+    
+    return gettimeofday(tv, NULL) < 0 ? NULL : tv;
+#elif defined(OS_IS_WIN32)
+    /*
+     * Copied from implementation by Steven Edwards (LGPL).
+     * Found on wine mailing list.
+     */
+
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+#define EPOCHFILETIME (116444736000000000i64)
+#else
+#define EPOCHFILETIME (116444736000000000LL)
+#endif
+
+    FILETIME        ft;
+    LARGE_INTEGER   li;
+    __int64         t;
+
+    assert(tv);
+
+    GetSystemTimeAsFileTime(&ft);
+    li.LowPart  = ft.dwLowDateTime;
+    li.HighPart = ft.dwHighDateTime;
+    t  = li.QuadPart;       /* In 100-nanosecond intervals */
+    t -= EPOCHFILETIME;     /* Offset to the Epoch time */
+    t /= 10;                /* In microseconds */
+    tv->tv_sec  = (long)(t / 1000000);
+    tv->tv_usec = (long)(t % 1000000);
+
+    return tv;
+#else
+#error "Platform lacks gettimeofday() or equivalent function."
+#endif
+}
+
+/* Calculate the difference between the two specfified timeval
+ * timestamsps. */
+pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b) {
+    pa_usec_t r;
+    assert(a && b);
+
+    /* Check which whan is the earlier time and swap the two arguments if reuqired. */
+    if (pa_timeval_cmp(a, b) < 0) {
+        const struct timeval *c;
+        c = a;
+        a = b;
+        b = c;
+    }
+
+    /* Calculate the second difference*/
+    r = ((pa_usec_t) a->tv_sec - b->tv_sec)* 1000000;
+
+    /* Calculate the microsecond difference */
+    if (a->tv_usec > b->tv_usec)
+        r += ((pa_usec_t) a->tv_usec - b->tv_usec);
+    else if (a->tv_usec < b->tv_usec)
+        r -= ((pa_usec_t) b->tv_usec - a->tv_usec);
+
+    return r;
+}
+
+/* Compare the two timeval structs and return 0 when equal, negative when a < b, positive otherwse */
+int pa_timeval_cmp(const struct timeval *a, const struct timeval *b) {
+    assert(a && b);
+
+    if (a->tv_sec < b->tv_sec)
+        return -1;
+
+    if (a->tv_sec > b->tv_sec)
+        return 1;
+
+    if (a->tv_usec < b->tv_usec)
+        return -1;
+
+    if (a->tv_usec > b->tv_usec)
+        return 1;
+
+    return 0;
+}
+
+/* Return the time difference between now and the specified timestamp */
+pa_usec_t pa_timeval_age(const struct timeval *tv) {
+    struct timeval now;
+    assert(tv);
+    
+    return pa_timeval_diff(pa_gettimeofday(&now), tv);
+}
+
+/* Add the specified time inmicroseconds to the specified timeval structure */
+void pa_timeval_add(struct timeval *tv, pa_usec_t v) {
+    unsigned long secs;
+    assert(tv);
+    
+    secs = (v/1000000);
+    tv->tv_sec += (unsigned long) secs;
+    v -= secs*1000000;
+
+    tv->tv_usec += v;
+
+    /* Normalize */
+    while (tv->tv_usec >= 1000000) {
+        tv->tv_sec++;
+        tv->tv_usec -= 1000000;
+    }
+}
+
+/* Return the binary file name of the current process. Works on Linux
+ * only. This shoul be used for eyecandy only, don't rely on return
+ * non-NULL! */
+char *pa_get_binary_name(char *s, size_t l) {
+
+#ifdef HAVE_READLINK
+    char path[PATH_MAX];
+    int i;
+    assert(s && l);
+
+    /* This works on Linux only */
+    
+    snprintf(path, sizeof(path), "/proc/%u/exe", (unsigned) getpid());
+    if ((i = readlink(path, s, l-1)) < 0)
+        return NULL;
+
+    s[i] = 0;
+    return s;
+#elif defined(OS_IS_WIN32)
+    char path[PATH_MAX];
+    if (!GetModuleFileName(NULL, path, PATH_MAX))
+        return NULL;
+    pa_strlcpy(s, pa_path_get_filename(path), l);
+    return s;
+#else
+    return NULL;
+#endif
+}
+
+/* Return a pointer to the filename inside a path (which is the last
+ * component). */
+const char *pa_path_get_filename(const char *p) {
+    char *fn;
+
+    if ((fn = strrchr(p, PATH_SEP)))
+        return fn+1;
+
+    return (const char*) p;
+}
+
+/* Return the fully qualified domain name in *s */
+char *pa_get_fqdn(char *s, size_t l) {
+    char hn[256];
+#ifdef HAVE_GETADDRINFO    
+    struct addrinfo *a, hints;
+#endif
+
+    if (!pa_get_host_name(hn, sizeof(hn)))
+        return NULL;
+
+#ifdef HAVE_GETADDRINFO
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_flags = AI_CANONNAME;
+    
+    if (getaddrinfo(hn, NULL, &hints, &a) < 0 || !a || !a->ai_canonname || !*a->ai_canonname)
+        return pa_strlcpy(s, hn, l);
+
+    pa_strlcpy(s, a->ai_canonname, l);
+    freeaddrinfo(a);
+    return s;
+#else
+    return pa_strlcpy(s, hn, l);
+#endif
+}
+
+/* Wait t milliseconds */
+int pa_msleep(unsigned long t) {
+#ifdef OS_IS_WIN32
+    Sleep(t);
+    return 0;
+#elif defined(HAVE_NANOSLEEP)
+    struct timespec ts;
+
+    ts.tv_sec = t/1000;
+    ts.tv_nsec = (t % 1000) * 1000000;
+
+    return nanosleep(&ts, NULL);
+#else
+#error "Platform lacks a sleep function."
+#endif
+}
diff --git a/src/polyp/util.h b/src/polyp/util.h
new file mode 100644 (file)
index 0000000..37232d9
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef fooutilhfoo
+#define fooutilhfoo
+
+/* $Id$ */
+
+/***
+  This file is part of polypaudio.
+  polypaudio is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License as
+  published by the Free Software Foundation; either version 2.1 of the
+  License, or (at your option) any later version.
+  polypaudio is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+  You should have received a copy of the GNU Lesser General Public
+  License along with polypaudio; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+  USA.
+***/
+
+#include <sys/types.h>
+#include <inttypes.h>
+
+#include <polyp/sample.h>
+
+struct timeval;
+
+char *pa_get_user_name(char *s, size_t l);
+char *pa_get_host_name(char *s, size_t l);
+char *pa_get_fqdn(char *s, size_t l);
+char *pa_get_home_dir(char *s, size_t l);
+
+char *pa_get_binary_name(char *s, size_t l);
+const char *pa_path_get_filename(const char *p);
+
+struct timeval *pa_gettimeofday(struct timeval *tv);
+pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b);
+int pa_timeval_cmp(const struct timeval *a, const struct timeval *b);
+pa_usec_t pa_timeval_age(const struct timeval *tv);
+void pa_timeval_add(struct timeval *tv, pa_usec_t v);
+
+int pa_msleep(unsigned long t);
+
+#endif
index 6eafb67..1231c7a 100644 (file)
@@ -35,7 +35,7 @@
 #include <limits.h>
 #include <sys/stat.h>
 
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 #include <polypcore/random.h>
 
index 5556bcb..3adc9a2 100644 (file)
@@ -48,7 +48,7 @@
 #include <polypcore/autoload.h>
 #include <polypcore/sound-file-stream.h>
 #include <polypcore/props.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "cli-command.h"
 
index 64e66c2..bc99b87 100644 (file)
@@ -31,7 +31,7 @@
 #include <polyp/xmalloc.h>
 
 #include <polypcore/log.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "conf-parser.h"
 
index 8080fcd..068f236 100644 (file)
@@ -52,7 +52,7 @@
 #include <polypcore/core-subscribe.h>
 #include <polypcore/namereg.h>
 #include <polypcore/sound-file.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 
 #include "core-scache.h"
similarity index 77%
rename from src/polypcore/util.c
rename to src/polypcore/core-util.c
index 9783b74..36044c8 100644 (file)
 #include <windows.h>
 #endif
 
-#include <samplerate.h>
-
 #ifdef HAVE_PWD_H
 #include <pwd.h>
 #endif
+
 #ifdef HAVE_GRP_H
 #include <grp.h>
 #endif
 
-#include "winsock.h"
+#include <samplerate.h>
 
 #include <polyp/xmalloc.h>
+#include <polyp/util.h>
 
+#include <polypcore/winsock.h>
 #include <polypcore/log.h>
 
-#include "util.h"
+#include "core-util.h"
 
 #ifndef OS_IS_WIN32
 #define PA_RUNTIME_PATH_PREFIX "/tmp/polypaudio-"
@@ -377,96 +378,6 @@ char *pa_vsprintf_malloc(const char *format, va_list ap) {
     }
 }
 
-/* Return the current username in the specified string buffer. */
-char *pa_get_user_name(char *s, size_t l) {
-    char *p;
-    char buf[1024];
-
-#ifdef HAVE_PWD_H
-    struct passwd pw, *r;
-#endif
-
-    assert(s && l > 0);
-
-    if (!(p = getenv("USER")) && !(p = getenv("LOGNAME")) && !(p = getenv("USERNAME"))) {
-#ifdef HAVE_PWD_H
-        
-#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;
-        }
-        
-        p = r->pw_name;
-
-#elif defined(OS_IS_WIN32) /* HAVE_PWD_H */
-        DWORD size = sizeof(buf);
-
-        if (!GetUserName(buf, &size))
-            return NULL;
-
-        p = buf;
-
-#else /* HAVE_PWD_H */
-        return NULL;
-#endif /* HAVE_PWD_H */
-    }
-
-    return pa_strlcpy(s, p, l);
-}
-
-/* Return the current hostname in the specified buffer. */
-char *pa_get_host_name(char *s, size_t l) {
-    assert(s && l > 0);
-    if (gethostname(s, l) < 0) {
-        pa_log(__FILE__": gethostname(): %s", strerror(errno));
-        return NULL;
-    }
-    s[l-1] = 0;
-    return s;
-}
-
-/* Return the home directory of the current user */
-char *pa_get_home_dir(char *s, size_t l) {
-    char *e;
-
-#ifdef HAVE_PWD_H
-    char buf[1024];
-    struct passwd pw, *r;
-#endif
-
-    assert(s && l);
-
-    if ((e = getenv("HOME")))
-        return pa_strlcpy(s, e, l);
-
-    if ((e = getenv("USERPROFILE")))
-        return pa_strlcpy(s, e, l);
-
-#ifdef HAVE_PWD_H
-#ifdef HAVE_GETPWUID_R
-    if (getpwuid_r(getuid(), &pw, buf, sizeof(buf), &r) != 0 || !r) {
-        pa_log(__FILE__": getpwuid_r() failed");
-#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) {
-        pa_log(__FILE__": getpwuid_r() failed");
-#endif
-        return NULL;
-    }
-
-    return pa_strlcpy(s, r->pw_dir, l);
-#else /* HAVE_PWD_H */
-    return NULL;
-#endif
-}
-
 /* Similar to OpenBSD's strlcpy() function */
 char *pa_strlcpy(char *b, const char *s, size_t l) {
     assert(b && s && l > 0);
@@ -476,115 +387,6 @@ char *pa_strlcpy(char *b, const char *s, size_t l) {
     return b;
 }
 
-struct timeval *pa_gettimeofday(struct timeval *tv) {
-#ifdef HAVE_GETTIMEOFDAY
-    assert(tv);
-    
-    return gettimeofday(tv, NULL) < 0 ? NULL : tv;
-#elif defined(OS_IS_WIN32)
-    /*
-     * Copied from implementation by Steven Edwards (LGPL).
-     * Found on wine mailing list.
-     */
-
-#if defined(_MSC_VER) || defined(__BORLANDC__)
-#define EPOCHFILETIME (116444736000000000i64)
-#else
-#define EPOCHFILETIME (116444736000000000LL)
-#endif
-
-    FILETIME        ft;
-    LARGE_INTEGER   li;
-    __int64         t;
-
-    assert(tv);
-
-    GetSystemTimeAsFileTime(&ft);
-    li.LowPart  = ft.dwLowDateTime;
-    li.HighPart = ft.dwHighDateTime;
-    t  = li.QuadPart;       /* In 100-nanosecond intervals */
-    t -= EPOCHFILETIME;     /* Offset to the Epoch time */
-    t /= 10;                /* In microseconds */
-    tv->tv_sec  = (long)(t / 1000000);
-    tv->tv_usec = (long)(t % 1000000);
-
-    return tv;
-#else
-#error "Platform lacks gettimeofday() or equivalent function."
-#endif
-}
-
-/* Calculate the difference between the two specfified timeval
- * timestamsps. */
-pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b) {
-    pa_usec_t r;
-    assert(a && b);
-
-    /* Check which whan is the earlier time and swap the two arguments if reuqired. */
-    if (pa_timeval_cmp(a, b) < 0) {
-        const struct timeval *c;
-        c = a;
-        a = b;
-        b = c;
-    }
-
-    /* Calculate the second difference*/
-    r = ((pa_usec_t) a->tv_sec - b->tv_sec)* 1000000;
-
-    /* Calculate the microsecond difference */
-    if (a->tv_usec > b->tv_usec)
-        r += ((pa_usec_t) a->tv_usec - b->tv_usec);
-    else if (a->tv_usec < b->tv_usec)
-        r -= ((pa_usec_t) b->tv_usec - a->tv_usec);
-
-    return r;
-}
-
-/* Compare the two timeval structs and return 0 when equal, negative when a < b, positive otherwse */
-int pa_timeval_cmp(const struct timeval *a, const struct timeval *b) {
-    assert(a && b);
-
-    if (a->tv_sec < b->tv_sec)
-        return -1;
-
-    if (a->tv_sec > b->tv_sec)
-        return 1;
-
-    if (a->tv_usec < b->tv_usec)
-        return -1;
-
-    if (a->tv_usec > b->tv_usec)
-        return 1;
-
-    return 0;
-}
-
-/* Return the time difference between now and the specified timestamp */
-pa_usec_t pa_timeval_age(const struct timeval *tv) {
-    struct timeval now;
-    assert(tv);
-    
-    return pa_timeval_diff(pa_gettimeofday(&now), tv);
-}
-
-/* Add the specified time inmicroseconds to the specified timeval structure */
-void pa_timeval_add(struct timeval *tv, pa_usec_t v) {
-    unsigned long secs;
-    assert(tv);
-    
-    secs = (v/1000000);
-    tv->tv_sec += (unsigned long) secs;
-    v -= secs*1000000;
-
-    tv->tv_usec += v;
-
-    /* Normalize */
-    while (tv->tv_usec >= 1000000) {
-        tv->tv_sec++;
-        tv->tv_usec -= 1000000;
-    }
-}
-
 #define NICE_LEVEL (-15)
 
 /* Raise the priority of the current process as much as possible and
@@ -665,46 +467,6 @@ int pa_fd_set_cloexec(int fd, int b) {
     return 0;
 }
 
-/* Return the binary file name of the current process. Works on Linux
- * only. This shoul be used for eyecandy only, don't rely on return
- * non-NULL! */
-char *pa_get_binary_name(char *s, size_t l) {
-
-#ifdef HAVE_READLINK
-    char path[PATH_MAX];
-    int i;
-    assert(s && l);
-
-    /* This works on Linux only */
-    
-    snprintf(path, sizeof(path), "/proc/%u/exe", (unsigned) getpid());
-    if ((i = readlink(path, s, l-1)) < 0)
-        return NULL;
-
-    s[i] = 0;
-    return s;
-#elif defined(OS_IS_WIN32)
-    char path[PATH_MAX];
-    if (!GetModuleFileName(NULL, path, PATH_MAX))
-        return NULL;
-    pa_strlcpy(s, pa_path_get_filename(path), l);
-    return s;
-#else
-    return NULL;
-#endif
-}
-
-/* Return a pointer to the filename inside a path (which is the last
- * component). */
-const char *pa_path_get_filename(const char *p) {
-    char *fn;
-
-    if ((fn = strrchr(p, PATH_SEP)))
-        return fn+1;
-
-    return (const char*) p;
-}
-
 /* Try to parse a boolean string value.*/
 int pa_parse_boolean(const char *v) {
     
@@ -1163,32 +925,6 @@ size_t pa_parsehex(const char *p, uint8_t *d, size_t dlength) {
     return j;
 }
 
-/* Return the fully qualified domain name in *s */
-char *pa_get_fqdn(char *s, size_t l) {
-    char hn[256];
-#ifdef HAVE_GETADDRINFO    
-    struct addrinfo *a, hints;
-#endif
-
-    if (!pa_get_host_name(hn, sizeof(hn)))
-        return NULL;
-
-#ifdef HAVE_GETADDRINFO
-    memset(&hints, 0, sizeof(hints));
-    hints.ai_family = AF_UNSPEC;
-    hints.ai_flags = AI_CANONNAME;
-    
-    if (getaddrinfo(hn, NULL, &hints, &a) < 0 || !a || !a->ai_canonname || !*a->ai_canonname)
-        return pa_strlcpy(s, hn, l);
-
-    pa_strlcpy(s, a->ai_canonname, l);
-    freeaddrinfo(a);
-    return s;
-#else
-    return pa_strlcpy(s, hn, l);
-#endif
-}
-
 /* Returns nonzero when *s starts with *pfx */
 int pa_startswith(const char *s, const char *pfx) {
     size_t l;
@@ -1243,23 +979,6 @@ char *pa_runtime_path(const char *fn, char *s, size_t l) {
     return s;
 }
 
-/* Wait t milliseconds */
-int pa_msleep(unsigned long t) {
-#ifdef OS_IS_WIN32
-    Sleep(t);
-    return 0;
-#elif defined(HAVE_NANOSLEEP)
-    struct timespec ts;
-
-    ts.tv_sec = t/1000;
-    ts.tv_nsec = (t % 1000) * 1000000;
-
-    return nanosleep(&ts, NULL);
-#else
-#error "Platform lacks a sleep function."
-#endif
-}
-
 /* Convert the string s to a signed integer in *ret_i */
 int pa_atoi(const char *s, int32_t *ret_i) {
     char *x = NULL;
similarity index 79%
rename from src/polypcore/util.h
rename to src/polypcore/core-util.h
index df71672..d3db756 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef fooutilhfoo
-#define fooutilhfoo
+#ifndef foocoreutilhfoo
+#define foocoreutilhfoo
 
 /* $Id$ */
 
@@ -27,8 +27,8 @@
 #include <stdarg.h>
 #include <stdio.h>
 
-#include <polyp/sample.h>
 #include <polypcore/gccmacro.h>
+#include <polyp/util.h>
 
 struct timeval;
 
@@ -49,22 +49,8 @@ char *pa_vsprintf_malloc(const char *format, va_list ap);
 
 char *pa_strlcpy(char *b, const char *s, size_t l);
 
-char *pa_get_user_name(char *s, size_t l);
-char *pa_get_host_name(char *s, size_t l);
-char *pa_get_fqdn(char *s, size_t l);
-char *pa_get_binary_name(char *s, size_t l);
-char *pa_get_home_dir(char *s, size_t l);
-
-const char *pa_path_get_filename(const char *p);
-
 char *pa_parent_dir(const char *fn);
 
-struct timeval *pa_gettimeofday(struct timeval *tv);
-pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b);
-int pa_timeval_cmp(const struct timeval *a, const struct timeval *b);
-pa_usec_t pa_timeval_age(const struct timeval *tv);
-void pa_timeval_add(struct timeval *tv, pa_usec_t v);
-
 void pa_raise_priority(void);
 void pa_reset_priority(void);
 
@@ -97,8 +83,6 @@ int pa_endswith(const char *s, const char *sfx);
 
 char *pa_runtime_path(const char *fn, char *s, size_t l);
 
-int pa_msleep(unsigned long t);
-
 int pa_atoi(const char *s, int32_t *ret_i);
 int pa_atou(const char *s, uint32_t *ret_u);
 
index ff8ec08..43f7015 100644 (file)
@@ -34,7 +34,7 @@
 #include <polypcore/sink.h>
 #include <polypcore/source.h>
 #include <polypcore/namereg.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/core-scache.h>
 #include <polypcore/autoload.h>
 #include <polypcore/core-subscribe.h>
index a1ad5de..b953a1d 100644 (file)
@@ -40,7 +40,7 @@
 
 #include <polyp/xmalloc.h>
 
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/socket-util.h>
 #include <polypcore/log.h>
 
index 9908d16..3f5dfa0 100644 (file)
@@ -35,7 +35,7 @@
 
 #include <polyp/xmalloc.h>
 
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "log.h"
 
index 63cc779..5d046d2 100644 (file)
@@ -36,7 +36,7 @@
 #include <polypcore/namereg.h>
 #include <polypcore/sink.h>
 #include <polypcore/source.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "modargs.h"
 
index 241076c..4a9be0f 100644 (file)
@@ -28,7 +28,7 @@
 
 #include <polyp/xmalloc.h>
 
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 
 #include "modinfo.h"
index fe177a5..52cde9c 100644 (file)
@@ -34,7 +34,7 @@
 
 #include <polypcore/core-subscribe.h>
 #include <polypcore/log.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "module.h"
 
index cf11f5a..17d7514 100644 (file)
@@ -35,7 +35,7 @@
 #include <polypcore/source.h>
 #include <polypcore/sink.h>
 #include <polypcore/core-subscribe.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "namereg.h"
 
index 7e518a5..b2c7d1c 100644 (file)
@@ -29,7 +29,7 @@
 
 #include <polyp/xmalloc.h>
 
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "parseaddr.h"
 
index 21e3644..4b0d1bb 100644 (file)
@@ -32,7 +32,7 @@
 #include <polypcore/native-common.h>
 #include <polypcore/llist.h>
 #include <polypcore/log.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "pdispatch.h"
 
index 53b8ad0..e98dc97 100644 (file)
@@ -41,7 +41,7 @@
 
 #include <polyp/xmalloc.h>
 
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 
 #include "pid.h"
index 6a29a95..7b1ed43 100644 (file)
@@ -42,7 +42,7 @@
 
 #ifndef HAVE_SYS_POLL_H
 
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "poll.h"
 
index 8f53694..9873872 100644 (file)
@@ -46,7 +46,7 @@
 #include <polypcore/authkey.h>
 #include <polypcore/namereg.h>
 #include <polypcore/log.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "endianmacros.h"
 
index 338db00..f0e50ec 100644 (file)
@@ -45,7 +45,7 @@
 #include <polypcore/authkey.h>
 #include <polypcore/namereg.h>
 #include <polypcore/core-scache.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/core-subscribe.h>
 #include <polypcore/log.h>
 #include <polypcore/autoload.h>
index 1221206..4bfce97 100644 (file)
@@ -31,7 +31,7 @@
 #include <assert.h>
 #include <time.h>
 
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 
 #include "random.h"
index 6931d39..dc27ca2 100644 (file)
@@ -34,7 +34,7 @@
 
 #include <polypcore/sink-input.h>
 #include <polypcore/namereg.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/sample-util.h>
 #include <polypcore/core-subscribe.h>
 #include <polypcore/log.h>
index a61cf58..4fb0a5d 100644 (file)
@@ -57,7 +57,7 @@
 #include <polyp/xmalloc.h>
 
 #include <polypcore/socket-util.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 #include <polypcore/parseaddr.h>
 
index 959173f..96f8e07 100644 (file)
@@ -65,7 +65,7 @@
 #include <polyp/xmalloc.h>
 
 #include <polypcore/socket-util.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 
 #include "socket-server.h"
index 0961db2..acbb7c1 100644 (file)
@@ -61,7 +61,7 @@
 
 #include <polyp/xmalloc.h>
 
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 #include <polypcore/log.h>
 
 #include "socket-util.h"
index 4d70e9e..b942074 100644 (file)
@@ -29,7 +29,7 @@
 #include <polyp/xmalloc.h>
 
 #include <polypcore/strbuf.h>
-#include <polypcore/util.h>
+#include <polypcore/core-util.h>
 
 #include "strlist.h"
 
index c1bab6b..8063a28 100644 (file)
@@ -27,8 +27,7 @@
 #include <assert.h>
 #include <signal.h>
 
-#include <polyp/mainloop.h>
-#include <polyp/mainloop-signal.h>
+#include <polyp/polypaudio.h>
 #include <polyp/browser.h>
 
 static void exit_signal_callback(pa_mainloop_api*m, pa_signal_event *e, int sig, void *userdata) {
@@ -108,7 +107,6 @@ static void browser_callback(pa_browser *b, pa_browse_opcode_t c, const pa_brows
     }
 }
 
-
 int main(int argc, char *argv[]) {
     pa_mainloop *mainloop = NULL;
     pa_browser *browser = NULL;