From bddd6fb07906e660260ef0fced05440ecac8d9e9 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 24 Oct 2009 02:23:22 -0400 Subject: switching to git --- wrapper/plugin-load.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 wrapper/plugin-load.c (limited to 'wrapper/plugin-load.c') diff --git a/wrapper/plugin-load.c b/wrapper/plugin-load.c new file mode 100644 index 0000000..142fcd5 --- /dev/null +++ b/wrapper/plugin-load.c @@ -0,0 +1,78 @@ +/* wrapper/plugin-load.h -- load rvs plugins into mem + system depens: , GNU + Copyright (C) 2009 Luke Shumaker + + This file is part of rvs. + + rvs 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, or (at your + option) any later version. + + rvs 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 rvs; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include +#include + +#include "rvs.h" +#include "plugins.h" +#include "plugin-parse.h" + +#include "plugin-load.h" + +/*- plugin_load ----------------------------------------------------*\ + now, load plugin plug_name, +\* whose configuration file is plugin_conf */ +struct plugin * +plugin_load (const char *plug_name) +{ + struct plugin *plugin=xmalloc( sizeof(*plugin) ); + plugin->name=stralloc(plug_name); + plugin->next=NULL; + + xchdir(plug_name); + FILE *file = xfopen(plugin_conf,"r"); + plugin->commands=plugin_parse(plugin, file); + fclose( file ); + xchdir(".."); + + return plugin; +} + +/*- load_plugins ---------------------------------------------------*\ + Load all the plugins + assume we're in rvs's libexecdir, where plugins are +\* Use `plugin_conf' as the name of the config file for each plugin */ + +struct plugin * +load_plugins (FILE *list) +{ + struct plugin *first=NULL; /* we return this */ + struct plugin **prev=&first; /* this is the previous plugin->next */ + struct plugin *plugin; /* this is the current plugin */ + + size_t nbytes = 10; + char *plug_name=(char *)xmalloc(nbytes); + while ( getline(&plug_name, &nbytes, list) > 0 ) { + char *del=strchr(plug_name,'\n'); + del[0]='\0'; + /*if (strlen(plug_name)!=0) {*/ + if (plug_name[0]!='\0') {; + plugin=plugin_load(plug_name); + *prev=plugin;/* this sets the last's `next' */ + prev=&plugin->next; + } + } + + return first; +} + -- cgit v1.2.3-2-g168b