summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac5
-rw-r--r--doc/todo2
-rw-r--r--polyp/Makefile.am9
-rw-r--r--polyp/cmdline.c11
-rwxr-xr-xpolyp/esdcompat.sh.in83
-rw-r--r--polyp/main.c4
-rwxr-xr-xpolyp/polypaudio.pa2
7 files changed, 108 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac
index 7aa6c5d4..2c470435 100644
--- a/configure.ac
+++ b/configure.ac
@@ -115,5 +115,8 @@ AM_CONDITIONAL([USE_LYNX], [test "x$lynx" = xyes])
AM_CONDITIONAL(BUILD_LIBPOLYPCORE, false)
-AC_CONFIG_FILES([Makefile polyp/Makefile polyplib.pc polyplib-simple.pc polyplib-mainloop.pc polyplib-error.pc polyplib-glib-mainloop.pc polyplib-glib12-mainloop.pc doc/Makefile doc/README.html doc/cli.html doc/daemon.html doc/modules.html doxygen/Makefile doxygen/doxygen.conf polyp/polyplib-version.h])
+ESDCOMPAT_BINARY=$(bindir)/polypaudio
+AC_SUBST(ESDCOMPAT_BINARY)
+
+AC_CONFIG_FILES([Makefile polyp/Makefile polyplib.pc polyplib-simple.pc polyplib-mainloop.pc polyplib-error.pc polyplib-glib-mainloop.pc polyplib-glib12-mainloop.pc doc/Makefile doc/README.html doc/cli.html doc/daemon.html doc/modules.html doxygen/Makefile doxygen/doxygen.conf polyp/polyplib-version.h polyp/esdcompat.sh])
AC_OUTPUT
diff --git a/doc/todo b/doc/todo
index 8ad59f1b..e9c82562 100644
--- a/doc/todo
+++ b/doc/todo
@@ -12,8 +12,8 @@
- daemon autostart
- cleanup tagstruct and modargs (add s32, pa_volume_t, pa_usec_t)
- remove all gcc warnings
-- esd compatible startup script or personality
- add total sample cache size to stat
+- make fragments settings runtime configurable
** later ***
- xmlrpc/http
diff --git a/polyp/Makefile.am b/polyp/Makefile.am
index cd369657..7d6d9bb3 100644
--- a/polyp/Makefile.am
+++ b/polyp/Makefile.am
@@ -17,17 +17,22 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
+polypincludedir=$(includedir)/polyp
+polypconfdir=$(sysconfdir)/polyp
+
AM_CFLAGS=-D_GNU_SOURCE -I$(top_srcdir) $(PTHREAD_CFLAGS)
-#AM_CFLAGS+= -DDLSEARCHDIR=\"$(pkglibdir)\"
+#AM_CFLAGS+= -DPA_DLSEARCHDIR=\"$(pkglibdir)\"
+AM_CFLAGS+= -DPA_DEFAULT_CONFIG_FILE=\"$(polypconfdir)/polypaudio.pa\"
AM_LDADD=$(PTHREAD_LIBS) -lm
AM_LIBADD=$(PTHREAD_LIBS) -lm
-polypincludedir=$(includedir)/polyp
EXTRA_DIST = polypaudio.pa depmod.py
bin_PROGRAMS = polypaudio pacat pactl
noinst_PROGRAMS = mainloop-test mainloop-test-glib mainloop-test-glib12 pacat-simple parec-simple
+polypconf_DATA=polypaudio.pa
+
BUILT_SOURCES=polyplib-version.h
polypinclude_HEADERS=polyplib.h \
diff --git a/polyp/cmdline.c b/polyp/cmdline.c
index 9935e7b6..6538b930 100644
--- a/polyp/cmdline.c
+++ b/polyp/cmdline.c
@@ -48,6 +48,7 @@ void pa_cmdline_help(const char *argv0) {
" -L MODULE Load the specified plugin module with the specified argument\n"
" -F FILE Run the specified script\n"
" -C Open a command line on the running TTY\n"
+ " -n Don't load configuration file ("PA_DEFAULT_CONFIG_FILE")\n"
" -D Daemonize after loading the modules\n"
" -f Dont quit when the startup fails\n"
" -v Verbose startup\n"
@@ -59,6 +60,7 @@ struct pa_cmdline* pa_cmdline_parse(int argc, char * const argv []) {
char c;
struct pa_cmdline *cmdline = NULL;
struct pa_strbuf *buf = NULL;
+ int no_default_config_file = 0;
assert(argc && argv);
cmdline = pa_xmalloc(sizeof(struct pa_cmdline));
@@ -68,7 +70,7 @@ struct pa_cmdline* pa_cmdline_parse(int argc, char * const argv []) {
buf = pa_strbuf_new();
assert(buf);
- while ((c = getopt(argc, argv, "L:F:CDhfvrRV")) != -1) {
+ while ((c = getopt(argc, argv, "L:F:CDhfvrRVn")) != -1) {
switch (c) {
case 'L':
pa_strbuf_printf(buf, "load %s\n", optarg);
@@ -100,12 +102,19 @@ struct pa_cmdline* pa_cmdline_parse(int argc, char * const argv []) {
case 'V':
cmdline->version = 1;
break;
+ case 'n':
+ no_default_config_file =1;
+ break;
default:
goto fail;
}
}
+ if (!no_default_config_file)
+ pa_strbuf_puts(buf, ".include "PA_DEFAULT_CONFIG_FILE"\n");
+
+
cmdline->cli_commands = pa_strbuf_tostring_free(buf);
return cmdline;
diff --git a/polyp/esdcompat.sh.in b/polyp/esdcompat.sh.in
new file mode 100755
index 00000000..1033930e
--- /dev/null
+++ b/polyp/esdcompat.sh.in
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+# $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 General Public License as published by
+# the Free Software Foundation; either version 2 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU 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.
+
+VERSION_STRING="@PACKAGE_NAME@ esd wrapper @PACKAGE_VERSION@"
+
+fail() {
+ echo "$1" > /dev/stderr
+ exit 1
+}
+
+for N in $(seq $#) ; do
+
+ case "$1" in
+
+ -v|--version)
+ echo "$VERSION_STRING"
+ exit 0
+ ;;
+
+ -h|--help)
+ cat <<EOF
+$VERSION_STRING
+
+Usage: $0 [options]
+
+ -v --version print version information
+ -h --help show this help
+
+Ignored directives:
+
+ -tcp use tcp/ip sockets in addition to unix domain
+ -promiscuous don't require authentication
+ -d DEVICE force esd to use sound device DEVICE
+ -b run server in 8 bit sound mode
+ -r RATE run server at sample rate of RATE
+ -as SECS free audio device after SECS of inactivity
+ -unix use unix domain sockets instead of tcp/ip
+ -public make tcp/ip access public (other than localhost)
+ -terminate terminate esd daemone after last client exits
+ -nobeeps disable startup beeps
+ -trust start esd even if use of /tmp/.esd can be insecure
+ -port PORT listen for connections at PORT (only for tcp/ip)
+ -bind ADDRESS binds to ADDRESS (only for tcp/ip)
+EOF
+ exit 0
+ ;;
+
+ -unix|-b|-public|-terminate|-nobeeps|-trust|-tcp|-promiscuous)
+ # Ignore these commands
+ ;;
+
+ -d|-r|-as|-port|-bind)
+ # Ignore these commands and their arguments
+ shift
+ ;;
+
+ *)
+ fail "Unknown command: $1"
+ ;;
+ esac
+
+ shift
+done
+
+exec "@ESDCOMPAT_BINARY@" -r
diff --git a/polyp/main.c b/polyp/main.c
index 526bf744..e41a106f 100644
--- a/polyp/main.c
+++ b/polyp/main.c
@@ -145,8 +145,8 @@ int main(int argc, char *argv[]) {
r = lt_dlinit();
assert(r == 0);
-#ifdef DLSEARCHDIR
- lt_dladdsearchdir(DLSEARCHDIR);
+#ifdef PA_DLSEARCHDIR
+ lt_dladdsearchdir(PA_DLSEARCHDIR);
#endif
mainloop = pa_mainloop_new();
diff --git a/polyp/polypaudio.pa b/polyp/polypaudio.pa
index 8c5157a1..0c69893a 100755
--- a/polyp/polypaudio.pa
+++ b/polyp/polypaudio.pa
@@ -1,4 +1,4 @@
-#!./polypaudio -rF
+#!./polypaudio -rnF
#
# This file is part of polypaudio.