diff options
Diffstat (limited to 'wrapper/plugin.c')
-rw-r--r-- | wrapper/plugin.c | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/wrapper/plugin.c b/wrapper/plugin.c deleted file mode 100644 index 6301bbb..0000000 --- a/wrapper/plugin.c +++ /dev/null @@ -1,87 +0,0 @@ -/* 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. -*/ -#ifndef FILE_plugin_c_SEEN -#define FILE_plugin_c_SEEN - -#include "rvs.h" -#include "plugin.h" - -#include "plugin-parse.c" - -/* directory listing for load_plugins */ -/* there seriously has to be a better way to do this */ -#include <string.h> -#include <unistd.h> -#include <dirent.h> -#include <sys/stat.h> - -/* assume we're in rvs's libexecdir, where plugins are - now, load plugin plug_name, - whose configuration file is plugin_conf */ -struct plugin * -_plugin_load (const char *plug_name, const char *plugin_conf) -{ - 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(file); - fclose( file ); - - xchdir(".."); - return plugin; -} - -/* load all the plugins in libexecdir, using the config file plugin_conf */ -struct plugin * -load_plugins (const char *libexecdir, const char *plugin_conf) -{ - 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 */ - - xchdir(libexecdir); - - /* Yeah, I know this next bit is pretty ugly. */ - DIR *cwd; - struct dirent *dirent; - int serr; - struct stat sbuf; - cwd = xopendir ("./"); - while ( (dirent = readdir (cwd)) != NULL ) { - if ((strcmp(dirent->d_name,"." )!=0)&& - (strcmp(dirent->d_name,"..")!=0)) { - serr = stat(dirent->d_name, &sbuf); - if (!serr && S_ISDIR(sbuf.st_mode)) { - plugin=_plugin_load(dirent->d_name,plugin_conf); - *prev=plugin;/* this sets the last's `next' */ - prev=&plugin->next; - } - } - } - closedir (cwd); - - xchdir(".."); - return first; -} - -#endif - |