summaryrefslogtreecommitdiff
path: root/c/plugin.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/plugin.c')
-rw-r--r--c/plugin.c124
1 files changed, 0 insertions, 124 deletions
diff --git a/c/plugin.c b/c/plugin.c
deleted file mode 100644
index 7182626..0000000
--- a/c/plugin.c
+++ /dev/null
@@ -1,124 +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.
-*/
-
-#include <stdio.h>
-#include <stdlib.h> /* EXIT_FAILURE */
-#include <unistd.h> /* file acces */
-#include <string.h>
-
-#include <errno.h>
-#include <error.h>
-
-#include <dirent.h>
-#include <sys/stat.h>
-
-#include "rvs.h"
-#include "plugin.h"
-
-/* finds a plugin with `name'. Start looking at `plugin' (linked list) */
-struct plugin *
-_plugin_find_plugin(struct plugin *plugin, char *name)
-{
- if (strcmp(plugin->name,name) == 0) {
- return plugin;
- } else {
- if (plugin->next==NULL) {
- error(EXIT_FAILURE,0,"cannot find plugin `%s'",name);
- return NULL;
- } else {
- return _plugin_find_plugin(plugin->next,name);
- }
- }
-}
-
-/* finds a command with `name'. Start looking at `command' (linked list) */
-struct plugin_command *
-_plugin_find_command(struct plugin_command *command, char *name)
-{
- if (strcmp(command->name,name) == 0) {
- return command;
- } else {
- if (command->p_next==NULL) {
- error(EXIT_FAILURE,0,
- "plugin `%s' does not contain command `%s'",
- command->plugin->name,name);
- return NULL;
- } else {
- return _plugin_find_command(command->p_next,name);
- }
- }
-}
-
-#include "plugin-parse.c"
-#include "plugin-depend.c"
-
-struct plugin *
-_plugin_load (char *plug_name, char *plugin_conf)
-{
- struct plugin *plugin=(struct plugin *)xmalloc(sizeof(*plugin));
- char *plug_name2 = (char *)xmalloc(strlen(plug_name)+1);
- strcpy(plug_name2,plug_name);
- plugin->name=plug_name2;
- plugin->next=NULL;
-
- xchdir(plug_name);
- FILE *file = xfopen(plugin_conf,"r");
-
- plugin->child=_plugin_parse(plugin, file);
-
- fclose( file );
- xchdir("..");
- return plugin;
-}
-
-struct plugin_tree *
-load_plugins (char *libexecdir, char *plugin_conf)
-{
- struct plugin_tree *tree=(struct plugin_tree *)xmalloc(sizeof(*tree));
- struct plugin **last=&tree->plugins;
- *last=NULL;
- struct plugin *plugin;
-
- xchdir(libexecdir);
-
- 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);
- *last=plugin;/* this sets the last's `next' */
- last=&plugin->next;
- }
- }
- }
- closedir (cwd);
-
- _plugin_depend(tree);
-
- xchdir("..");
- return tree;
-}
-