Blame src/libout123/legacy_module.c

Packit c32a2d
/*
Packit c32a2d
	legacy_module.c: dummy interface to modular code loader for legacy build system
Packit c32a2d
Packit c32a2d
	copyright 2008 by the mpg123 project - free software under the terms of the LGPL 2.1
Packit c32a2d
	see COPYING and AUTHORS files in distribution or http://mpg123.org
Packit c32a2d
	initially written by Nicholas J Humfrey
Packit c32a2d
*/
Packit c32a2d
Packit c32a2d
#include "out123_int.h"
Packit c32a2d
#include "debug.h"
Packit c32a2d
Packit c32a2d
/* A single module is staticly compiled in for each type */
Packit c32a2d
extern mpg123_module_t mpg123_output_module_info;
Packit c32a2d
/* extern mpg123_module_t mpg123_input_module_info; */
Packit c32a2d
Packit c32a2d
Packit c32a2d
/* Open a module */
Packit c32a2d
mpg123_module_t*
Packit c32a2d
open_module(const char* type, const char* name, int verbose, const char *bindir)
Packit c32a2d
{
Packit c32a2d
	mpg123_module_t *mod = NULL;
Packit c32a2d
	
Packit c32a2d
	/* Select the module info structure, based on the desired type */
Packit c32a2d
	if (strcmp(type, "output")==0) {
Packit c32a2d
		mod = &mpg123_output_module_info;
Packit c32a2d
/*
Packit c32a2d
	} else if (strcmp(type, "input")==0) {
Packit c32a2d
		mod = &mpg123_input_module_info;
Packit c32a2d
*/
Packit c32a2d
	} else {
Packit c32a2d
		if(verbose >= 0)
Packit c32a2d
			error1("Unable to open module type '%s'.", type);
Packit c32a2d
		return NULL;
Packit c32a2d
	}
Packit c32a2d
	
Packit c32a2d
	/* Check the module compiled in is the module requested */
Packit c32a2d
	if (strcmp(name, mod->name)!=0) {
Packit c32a2d
		if(verbose >= 0)
Packit c32a2d
		{
Packit c32a2d
			error1("Unable to open requested module '%s'.", name);
Packit c32a2d
			error1("The only available statically compiled module is '%s'."
Packit c32a2d
			,	mod->name);
Packit c32a2d
		}
Packit c32a2d
		return NULL;
Packit c32a2d
	}
Packit c32a2d
	
Packit c32a2d
	/* Debugging info */
Packit c32a2d
	debug1("Details of static module type '%s':", type);
Packit c32a2d
	debug1("  api_version=%d", mod->api_version);
Packit c32a2d
	debug1("  name=%s", mod->name);
Packit c32a2d
	debug1("  description=%s", mod->description);
Packit c32a2d
	debug1("  revision=%s", mod->revision);
Packit c32a2d
	debug1("  handle=%p", (void*)mod->handle);
Packit c32a2d
Packit c32a2d
	return mod;
Packit c32a2d
}
Packit c32a2d
Packit c32a2d
Packit c32a2d
void close_module(mpg123_module_t* module, int verbose)
Packit c32a2d
{
Packit c32a2d
	debug("close_module()");
Packit c32a2d
	
Packit c32a2d
	/* Module was never really 'loaded', so nothing to do here. */
Packit c32a2d
}
Packit c32a2d
Packit c32a2d
Packit c32a2d
int list_modules(const char *type, char ***names, char ***descr, int verbose
Packit c32a2d
,	const char *bindir)
Packit c32a2d
{
Packit c32a2d
	debug("list_modules()" );
Packit c32a2d
Packit c32a2d
	*names = NULL;
Packit c32a2d
	*descr = NULL;
Packit c32a2d
Packit c32a2d
	if(
Packit c32a2d
		(*names=malloc(sizeof(char*)))
Packit c32a2d
	&&	!((*names)[0]=NULL) /* for safe cleanup */
Packit c32a2d
	&&	((*names)[0]=compat_strdup(mpg123_output_module_info.name))
Packit c32a2d
	&&	(*descr=malloc(sizeof(char*)))
Packit c32a2d
	&&	!((*descr)[0]=NULL) /* for safe cleanup */
Packit c32a2d
	&& ((*descr)[0]=compat_strdup(mpg123_output_module_info.description))
Packit c32a2d
	)
Packit c32a2d
		return 1;
Packit c32a2d
	else
Packit c32a2d
	{
Packit c32a2d
		if(*names)
Packit c32a2d
			free((*names)[0]);
Packit c32a2d
		free(*names);
Packit c32a2d
		if(*descr)
Packit c32a2d
			free((*descr)[0]);
Packit c32a2d
		free(*descr);
Packit c32a2d
		return -1;
Packit c32a2d
	}
Packit c32a2d
}
Packit c32a2d
Packit c32a2d