diff options
author | Jamie Bullock <postlude@users.sourceforge.net> | 2010-12-08 09:45:09 +0000 |
---|---|---|
committer | Jamie Bullock <postlude@users.sourceforge.net> | 2010-12-08 09:45:09 +0000 |
commit | 5b43da5a8491e6bb577b9e508c55c9619a1a850f (patch) | |
tree | 737034c9ca1fd01a437991324a7eed00fe4ac0c7 /dssi/src/jsearch.c | |
parent | df7a797838f4941695f253cbb43b9cfe5464dba6 (diff) |
- moved dssi to pluginhost~ in preparation for renaming
svn path=/trunk/externals/postlude/; revision=14575
Diffstat (limited to 'dssi/src/jsearch.c')
-rw-r--r-- | dssi/src/jsearch.c | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/dssi/src/jsearch.c b/dssi/src/jsearch.c deleted file mode 100644 index 593c6f5..0000000 --- a/dssi/src/jsearch.c +++ /dev/null @@ -1,154 +0,0 @@ -/* search.c - - Free software by Richard W.E. Furse. Do with as you will. No - warranty. */ - -/* patched by Jarno Seppänen, jams@cs.tut.fi, for plugin~ */ - -/* patched by Jamie Bullock, jamie@postlude.co.uk, for dssi~ */ - -/*****************************************************************************/ - -#include <dirent.h> -#include <dlfcn.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <unistd.h> - -/*****************************************************************************/ - -#include "dssi.h" -#include "jutils.h" - -/*****************************************************************************/ - -/* Search just the one directory. */ - static void -LADSPADirectoryPluginSearch (const char * pcDirectory, - LADSPAPluginSearchCallbackFunction fCallbackFunction, - void* user_data) -{ - char * pcFilename; - DIR * psDirectory; - DSSI_Descriptor_Function fDescriptorFunction; - long lDirLength; - long iNeedSlash; - struct dirent * psDirectoryEntry; - void * pvPluginHandle; - int is_DSSI = 0; - - lDirLength = strlen(pcDirectory); - if (!lDirLength) - return; - if (pcDirectory[lDirLength - 1] == '/') - iNeedSlash = 0; - else - iNeedSlash = 1; - - psDirectory = opendir(pcDirectory); - if (!psDirectory) - return; - - while (1) { - - psDirectoryEntry = readdir(psDirectory); - if (!psDirectoryEntry) { - closedir(psDirectory); - return; - } - - pcFilename = malloc(lDirLength - + strlen(psDirectoryEntry->d_name) - + 1 + iNeedSlash); - strcpy(pcFilename, pcDirectory); - if (iNeedSlash) - strcat(pcFilename, "/"); - strcat(pcFilename, psDirectoryEntry->d_name); - - pvPluginHandle = dlopen(pcFilename, RTLD_LAZY); - if (pvPluginHandle) { - /* This is a file and the file is a shared library! */ - - dlerror(); - if(fDescriptorFunction = (DSSI_Descriptor_Function)dlsym(pvPluginHandle, - "ladspa_descriptor")) - is_DSSI = 0; - - else if(fDescriptorFunction = (DSSI_Descriptor_Function)dlsym(pvPluginHandle, - "dssi_descriptor")) - is_DSSI = 1; - - if (dlerror() == NULL && fDescriptorFunction) { - /* We've successfully found a ladspa_descriptor function. Pass - it to the callback function. */ - fCallbackFunction(pcFilename, - pvPluginHandle, - fDescriptorFunction, - user_data, - is_DSSI); - dlclose (pvPluginHandle); - } - else { - /* It was a library, but not a LADSPA one. Unload it. */ - dlclose(pcFilename); - } - } - } -} - -/*****************************************************************************/ - - void -LADSPAPluginSearch(LADSPAPluginSearchCallbackFunction fCallbackFunction, - void* user_data) -{ - - char * pcBuffer; - const char * pcEnd; - const char * pcLADSPAPath; - char *pluginPath; - const char * pcStart; - - - pcLADSPAPath = NULL; - - if(getenv("LADSPA_PATH") && getenv("DSSI_PATH")){ - pluginPath = malloc(sizeof(char) * - (strlen(getenv("LADSPA_PATH")) + 1) + - sizeof(char) * strlen(getenv("DSSI_PATH"))); - sprintf(pluginPath, "%s:%s", - getenv("LADSPA_PATH"), getenv("DSSI_PATH")); - pcLADSPAPath = pluginPath; - free(pluginPath); - } - if (pcLADSPAPath == NULL) { - fprintf(stderr, "Warning: no LADSPA_PATH and DSSI_PATH, assuming /usr/lib/ladspa:/usr/local/lib/ladspa:/usr/lib/dssi:/usr/local/lib/dssi\n"); - pcLADSPAPath = - "/usr/lib/ladspa:/usr/local/lib/ladspa:/usr/lib/dssi:/usr/local/lib/dssi"; - } - - pcStart = pcLADSPAPath; - while (*pcStart != '\0') { - pcEnd = pcStart; - while (*pcEnd != ':' && *pcEnd != '\0') - pcEnd++; - - pcBuffer = malloc(1 + pcEnd - pcStart); - if (pcEnd > pcStart) - strncpy(pcBuffer, pcStart, pcEnd - pcStart); - pcBuffer[pcEnd - pcStart] = '\0'; - - LADSPADirectoryPluginSearch(pcBuffer, fCallbackFunction, user_data); - - pcStart = pcEnd; - if (*pcStart == ':') - pcStart++; - } -} - - -/*****************************************************************************/ - -/* EOF */ |