From f41fbba8983ec557d2f2bf5ed9b18e048a98a91c Mon Sep 17 00:00:00 2001 From: sletz Date: Tue, 9 Oct 2007 10:03:04 +0000 Subject: [PATCH] Use .jackdrc file (instead of .jackdmprc). Install script now creates a link jackd git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1582 0c269be4-1314-0410-8aa9-9f06e86f4224 --- ChangeLog | 5 +++++ common/JackGraphManager.cpp | 2 +- common/JackServerGlobals.cpp | 8 ++++---- common/JackServerLaunch.cpp | 12 ++++++------ common/Jackdmp.cpp | 13 ++++++++++--- common/shm.c | 13 +++++++++---- common/shm.h | 2 +- linux/Makefile | 3 +++ macosx/install_jackdmp | 10 +++++++--- macosx/remove_jackdmp | 6 ++++-- windows/JackdmpWIN32.cpp | 9 ++++++++- 11 files changed, 58 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8d1fc80f..d47ba063 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,11 @@ Tom Szilagyi Jackdmp changes log --------------------------- +2007-10-08 Stephane Letz + + * Use .jackdrc file (instead of .jackdmprc). Install script now creates a link "jackd ==> jackdmp" so that automatic launch can work correctly. + * Paul Davis patch for -r (--replace-registry) feature. + 2007-10-07 Stephane Letz * Add missing timestamps.c and timestamps.h files. Correctly export public headers in OSX frameworks. Suppress JackEngine::ClientInternalCloseIm method. diff --git a/common/JackGraphManager.cpp b/common/JackGraphManager.cpp index 67af4eaf..2e53e195 100644 --- a/common/JackGraphManager.cpp +++ b/common/JackGraphManager.cpp @@ -651,7 +651,7 @@ void JackGraphManager::GetConnectionsAux(JackConnectionManager* manager, const c jack_int_t index; int i; - for (i = 0; (i < CONNECTION_NUM) && ((index = connections[i]) != EMPTY) ; i++) { + for (i = 0; (i < CONNECTION_NUM) && ((index = connections[i]) != EMPTY); i++) { JackPort* port = GetPort(index); res[i] = port->fName; } diff --git a/common/JackServerGlobals.cpp b/common/JackServerGlobals.cpp index 826ceb46..ffca9646 100644 --- a/common/JackServerGlobals.cpp +++ b/common/JackServerGlobals.cpp @@ -220,15 +220,15 @@ bool JackServerGlobals::Init() int argc = 0; char* argv[32]; - snprintf(filename, 255, "%s/.jackdmprc", getenv("HOME")); + snprintf(filename, 255, "%s/.jackdrc", getenv("HOME")); fp = fopen(filename, "r"); if (!fp) { - fp = fopen("/etc/jackdmprc", "r"); + fp = fopen("/etc/jackdrc", "r"); } // if still not found, check old config name for backwards compatability if (!fp) { - fp = fopen("/etc/jackdmp.conf", "r"); + fp = fopen("/etc/jackd.conf", "r"); } argc = 0; @@ -355,7 +355,7 @@ bool JackServerGlobals::Init() server_name = jack_default_server_name(); #endif - rc = jack_register_server(server_name); + rc = jack_register_server(server_name, false); switch (rc) { case EEXIST: fprintf(stderr, "`%s' server already active\n", server_name); diff --git a/common/JackServerLaunch.cpp b/common/JackServerLaunch.cpp index cabda903..b7d97521 100644 --- a/common/JackServerLaunch.cpp +++ b/common/JackServerLaunch.cpp @@ -41,15 +41,15 @@ static void start_server_aux(const char* server_name) int good = 0; int ret; - snprintf(filename, 255, "%s/.jackdmprc", getenv("HOME")); + snprintf(filename, 255, "%s/.jackdrc", getenv("HOME")); fp = fopen(filename, "r"); if (!fp) { - fp = fopen("/etc/jackdmprc", "r"); + fp = fopen("/etc/jackdrc", "r"); } /* if still not found, check old config name for backwards compatability */ if (!fp) { - fp = fopen("/etc/jackdmp.conf", "r"); + fp = fopen("/etc/jackd.conf", "r"); } if (fp) { @@ -67,8 +67,8 @@ static void start_server_aux(const char* server_name) } if (!good) { - command = JACK_LOCATION "/jackdmp"; - strncpy(arguments, JACK_LOCATION "/jackdmp -T -d "JACK_DEFAULT_DRIVER, 255); + command = JACK_LOCATION "/jackd"; + strncpy(arguments, JACK_LOCATION "/jackd -T -d "JACK_DEFAULT_DRIVER, 255); } else { result = strcspn(arguments, " "); command = (char*)malloc(result + 1); @@ -97,7 +97,7 @@ static void start_server_aux(const char* server_name) break; } argv[i] = (char*)malloc(result + 1); - strncpy(argv[i], arguments+pos, result); + strncpy(argv[i], arguments + pos, result); argv[i][result] = '\0'; pos += result + 1; ++i; diff --git a/common/Jackdmp.cpp b/common/Jackdmp.cpp index 838b2faf..b573f363 100644 --- a/common/Jackdmp.cpp +++ b/common/Jackdmp.cpp @@ -80,6 +80,7 @@ static void usage(FILE* file) " [ --loopback OR -L loopback-port-number ]\n" // " [ --port-max OR -p maximum-number-of-ports]\n" " [ --verbose OR -v ]\n" + " [ --replace-registry OR -r ]\n" " [ --silent OR -s ]\n" " [ --sync OR -S ]\n" " [ --temporary OR -T ]\n" @@ -245,7 +246,7 @@ int main(int argc, char* argv[]) int waiting; jack_driver_desc_t* driver_desc; - const char *options = "-ad:P:uvshVRL:STFl:t:mn:p:"; + const char *options = "-ad:P:uvrshVRL:STFl:t:mn:p:"; struct option long_options[] = { { "driver", 1, 0, 'd' }, { "verbose", 0, 0, 'v' }, @@ -255,6 +256,7 @@ int main(int argc, char* argv[]) { "name", 0, 0, 'n' }, { "unlock", 0, 0, 'u' }, { "realtime", 0, 0, 'R' }, + { "replace-registry", 0, 0, 'r' }, { "loopback", 0, 0, 'L' }, { "realtime-priority", 1, 0, 'P' }, { "timeout", 1, 0, 't' }, @@ -272,6 +274,7 @@ int main(int argc, char* argv[]) JSList* driver_params; int driver_nargs = 1; int show_version = 0; + int replace_registry = 0; int sync = 0; int rc, i; @@ -313,7 +316,11 @@ int main(int argc, char* argv[]) case 'P': realtime_priority = atoi(optarg); break; - + + case 'r': + replace_registry = 1; + break; + case 'R': realtime = 1; break; @@ -404,7 +411,7 @@ int main(int argc, char* argv[]) copyright(stdout); - rc = jack_register_server(server_name); + rc = jack_register_server(server_name, replace_registry); switch (rc) { case EEXIST: fprintf(stderr, "`%s' server already active\n", server_name); diff --git a/common/shm.c b/common/shm.c index db9aec5e..cf22d05e 100644 --- a/common/shm.c +++ b/common/shm.c @@ -276,7 +276,7 @@ jack_set_server_prefix (const char *server_name) * returns: 0 if successful */ static int -jack_server_initialize_shm (void) +jack_server_initialize_shm (int new_registry) { int rc; @@ -286,6 +286,11 @@ jack_server_initialize_shm (void) jack_shm_lock_registry (); rc = jack_access_registry (®istry_info); + + if (new_registry) { + jack_remove_shm (®istry_id); + rc = ENOENT; + } switch (rc) { case ENOENT: /* registry does not exist */ @@ -430,7 +435,7 @@ jack_release_shm_info (jack_shm_registry_index_t index) * ENOMEM if unable to access shared memory registry */ EXPORT int -jack_register_server (const char *server_name) +jack_register_server (const char *server_name, int new_registry) { int i, res = 0; @@ -442,7 +447,7 @@ jack_register_server (const char *server_name) jack_set_server_prefix (server_name); - if (jack_server_initialize_shm ()) + if (jack_server_initialize_shm (new_registry)) return ENOMEM; jack_shm_lock_registry (); @@ -770,7 +775,7 @@ jack_shmalloc (const char *shm_name, jack_shmsize_t size, jack_shm_info_t* si) * registry index for uniqueness and ignore the shm_name * parameter. Bah! */ - snprintf (name, sizeof (name), "/jack-%d", registry->index); + snprintf (name, sizeof (name), "/jackmp-%d", registry->index); if (strlen (name) >= sizeof (registry->id)) { jack_error ("shm segment name too long %s", name); diff --git a/common/shm.h b/common/shm.h index d8256e0d..90efba7d 100644 --- a/common/shm.h +++ b/common/shm.h @@ -134,7 +134,7 @@ extern "C" /* here beginneth the API */ - EXPORT extern int jack_register_server (const char *server_name); + EXPORT extern int jack_register_server (const char *server_name, int new_registry); EXPORT extern void jack_unregister_server (const char *server_name); extern int jack_initialize_shm (const char *server_name); diff --git a/linux/Makefile b/linux/Makefile index 730335b1..fc16b335 100644 --- a/linux/Makefile +++ b/linux/Makefile @@ -113,9 +113,11 @@ install: cp jack_dummy.so $(prefix)/lib/jackmp [ -f jack_freebob.so ] && cp jack_freebob.so $(prefix)/lib/jackmp || echo "freebob driver not installed" cd $(prefix)/lib && [ -f libjack.so.0.0.23 ] && mv -f libjack.so.0.0.23 tmp_libjack.so.0.0.23 || echo "Jack not found, continue..." + cd $(prefix)/bin && [ -f jackd ] && mv -f jackd tmp_jackd cd $(prefix)/lib && rm -f libjack.so* cd $(prefix)/lib && ln -s libjackmp.so libjack.so cd $(prefix)/lib && ln -s libjackmp.so libjack.so.0 + cd $(prefix)/bin && ln -s jackdmp jackd /sbin/ldconfig # Remove jackdmp and tries to restore jack @@ -129,6 +131,7 @@ remove: cd $(prefix)/lib && rm -f libjack.so* cd $(prefix)/lib && [ -f tmp_libjack.so.0.0.23 ] && mv -f tmp_libjack.so.0.0.23 libjack.so.0.0.23 \ && ln -s libjack.so.0.0.23 libjack.so && ln -s libjack.so.0.0.23 libjack.so.0 || echo "Jack not restored" + cd $(prefix)/bin && [ -f tmp_jackd ] && mv -f tmp_jackd jackd /sbin/ldconfig diff --git a/macosx/install_jackdmp b/macosx/install_jackdmp index 8d520037..3166df19 100755 --- a/macosx/install_jackdmp +++ b/macosx/install_jackdmp @@ -1,23 +1,27 @@ # Install jackdmp and owerwrite jack installation +# Plug-ins sudo cp -r Panda.framework /Library/Frameworks sudo cp -r JackRouterMP.plugin /Library/Audio/Plug-Ins/HAL/ +# Copy libraries and exe sudo cp -r Jackmp.framework /Library/Frameworks/ sudo cp -r Jackdmp.framework /Library/Frameworks/ sudo install -d /usr/local/bin sudo cp jackdmp /usr/local/bin +# Copy drivers sudo install -d /usr/local/lib/jackmp sudo cp jack_coreaudio.so /usr/local/lib/jackmp sudo cp jack_dummy.so /usr/local/lib/jackmp +# Create links to jackmp ressources cd /usr/local/lib && [ -f libjack.0.dylib ] && sudo mv -f libjack.0.dylib tmp_libjack.0.dylib - +cd /usr/local/lib && [ -f jackd ] && sudo mv -f jackd tmp_jackd cd /usr/local/lib && [ -f libjack.dylib ] && sudo rm libjack.dylib +cd /usr/local/bin && [ -f jackd ] && sudo rm jackd cd /usr/local/lib && sudo ln -s /Library/Frameworks/Jackmp.framework/Jackmp libjack.dylib cd /usr/local/lib && sudo ln -s /Library/Frameworks/Jackmp.framework/Jackmp libjack.0.dylib - - +cd /usr/local/bin && sudo ln -s jackdmp jackd diff --git a/macosx/remove_jackdmp b/macosx/remove_jackdmp index 3797be31..99bfe837 100755 --- a/macosx/remove_jackdmp +++ b/macosx/remove_jackdmp @@ -1,13 +1,15 @@ -# Remove jackdmp and tries to restore jack - +# Remove jackdmp resources sudo rm -r "/usr/local/lib/jackmp" sudo rm "/usr/local/bin/jackdmp" +sudo rm -r "/usr/local/lib/jackd" sudo rm "/usr/local/lib/libjackmp.dylib" sudo rm -r "/Library/Frameworks/Jackmp.framework" sudo rm -r "/Library/Frameworks/Jackdmp.framework" sudo rm -r "/Library/Audio/Plug-Ins/HAL/JackRouterMP.plugin" +# Tries to restore jack cd /usr/local/lib && sudo rm -r libjack.0.dylib cd /usr/local/lib && [ -f tmp_libjack.0.dylib ] && sudo mv -f tmp_libjack.0.dylib libjack.0.dylib cd /usr/local/lib && ln -s libjack.0.dylib libjack.dylib +cd /usr/local/bin && [ -f tmp_jackd ] && sudo mv -f tmp_jackd jackd diff --git a/windows/JackdmpWIN32.cpp b/windows/JackdmpWIN32.cpp index 70a37439..88a27a1a 100644 --- a/windows/JackdmpWIN32.cpp +++ b/windows/JackdmpWIN32.cpp @@ -79,6 +79,7 @@ static void usage (FILE *file) " [ --loopback OR -L loopback-port-number ]\n" // " [ --port-max OR -p maximum-number-of-ports]\n" " [ --verbose OR -v ]\n" + " [ --replace-registry OR -r ]\n" " [ --silent OR -s ]\n" " [ --sync OR -S ]\n" " [ --version OR -V ]\n" @@ -262,6 +263,7 @@ int main(int argc, char* argv[]) { "name", 0, 0, 'n' }, { "unlock", 0, 0, 'u' }, { "realtime", 0, 0, 'R' }, + { "replace-registry", 0, 0, 'r' }, { "loopback", 0, 0, 'L' }, { "realtime-priority", 1, 0, 'P' }, { "timeout", 1, 0, 't' }, @@ -279,6 +281,7 @@ int main(int argc, char* argv[]) JSList * driver_params; int driver_nargs = 1; int show_version = 0; + int replace_registry = 0; int sync = 0; int i; int rc; @@ -329,6 +332,10 @@ int main(int argc, char* argv[]) case 'P': realtime_priority = atoi(optarg); break; + + case 'r': + replace_registry = 1; + break; case 'R': realtime = 1; @@ -414,7 +421,7 @@ int main(int argc, char* argv[]) copyright (stdout); - rc = jack_register_server (server_name); + rc = jack_register_server (server_name, replace_registry); switch (rc) { case EEXIST: fprintf (stderr, "`%s' server already active\n", server_name);