aboutsummaryrefslogtreecommitdiffstats
path: root/src/inputPlugin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/inputPlugin.c')
-rw-r--r--src/inputPlugin.c82
1 files changed, 13 insertions, 69 deletions
diff --git a/src/inputPlugin.c b/src/inputPlugin.c
index 2afe17719..d90a0e944 100644
--- a/src/inputPlugin.c
+++ b/src/inputPlugin.c
@@ -7,75 +7,10 @@
static List * inputPlugin_list = NULL;
-InputPlugin * newInputPlugin(char * name, InputPlugin_streamDecodeFunc
- streamDecodeFunc, InputPlugin_fileDecodeFunc fileDecodeFunc,
- InputPlugin_tagDupFunc tagDupFunc, unsigned char streamTypes)
-{
- InputPlugin * ret = malloc(sizeof(InputPlugin));
-
- memset(ret->name,0,INPUT_PLUGIN_NAME_LENGTH);
- strncpy(ret->name, name, INPUT_PLUGIN_NAME_LENGTH-1);
-
- ret->suffixes = NULL;
- ret->mimeTypes = NULL;
-
- ret->streamTypes = streamTypes;
-
- ret->streamDecodeFunc = streamDecodeFunc;
- ret->fileDecodeFunc = fileDecodeFunc;
- ret->tagDupFunc = tagDupFunc;
-
- return ret;
-}
-
-static void freeStringArray(char ** ptr) {
- if(ptr) {
- char ** tmp = ptr;
-
- while(*tmp) {
- if(*tmp) free(*tmp);
- tmp++;
- }
-
- free (ptr);
- }
-}
-
-void freeInputPlugin(InputPlugin * inPlugin) {
- freeStringArray(inPlugin->suffixes);
- freeStringArray(inPlugin->mimeTypes);
-
- free(inPlugin);
-}
-
-static char ** AddStringToArray(char ** array, char * string) {
- int arraySize = 1;
-
- if(array) {
- char ** tmp = array;
- while(*tmp) {
- arraySize++;
- tmp++;
- }
- }
-
- array = realloc(array, (arraySize+1)*sizeof(char *));
-
- array[arraySize-1] = strdup(string);
- array[arraySize] = NULL;
-
- return array;
-}
-
-void addSuffixToInputPlugin(InputPlugin * inPlugin, char * suffix) {
- inPlugin->suffixes = AddStringToArray(inPlugin->suffixes, suffix);
-}
-
-void addMimeTypeToInputPlugin(InputPlugin * inPlugin, char * mimeType) {
- inPlugin->mimeTypes = AddStringToArray(inPlugin->mimeTypes, mimeType);
-}
-
void loadInputPlugin(InputPlugin * inputPlugin) {
+ if(!inputPlugin) return;
+ if(!inputPlugin->name) return;
+
insertInList(inputPlugin_list, inputPlugin->name, (void *)inputPlugin);
}
@@ -96,11 +31,14 @@ InputPlugin * getInputPluginFromSuffix(char * suffix) {
ListNode * node = inputPlugin_list->firstNode;
InputPlugin * plugin = NULL;
+ if(suffix == NULL) return NULL;
+
while(node != NULL) {
plugin = node->data;
if(stringFoundInStringArray(plugin->suffixes, suffix)) {
return plugin;
}
+ node = node->nextNode;
}
return NULL;
@@ -115,6 +53,7 @@ InputPlugin * getInputPluginFromMimeType(char * mimeType) {
if(stringFoundInStringArray(plugin->mimeTypes, mimeType)) {
return plugin;
}
+ node = node->nextNode;
}
return NULL;
@@ -128,10 +67,15 @@ InputPlugin * getInputPluginFromName(char * name) {
return (InputPlugin *)plugin;
}
+extern InputPlugin mp3Plugin;
+extern InputPlugin oggPlugin;
+
void initInputPlugins() {
- inputPlugin_list = makeList((ListFreeDataFunc *)freeInputPlugin);
+ inputPlugin_list = makeList(NULL);
/* load plugins here */
+ loadInputPlugin(&mp3Plugin);
+ loadInputPlugin(&oggPlugin);
}
void finishInputPlugins() {