/home/dcp1990/prog/fakedbfs/include/fakedbfs/plugins.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2005-2006, Dan Ponte
00003  *
00004  * plugins.h - file plugin stuff
00005  * 
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions
00008  * are met:
00009  * 1. Redistributions of source code must retain the above copyright
00010  *    notice, this list of conditions and the following disclaimer.
00011  * 2. Redistributions in binary form must reproduce the above copyright
00012  *    notice, this list of conditions and the following disclaimer in the
00013  *    documentation and/or other materials provided with the distribution.
00014  * 4. Neither the name of the author nor the names of his contributors
00015  *    may be used to endorse or promote products derived from this software
00016  *    without specific prior written permission.
00017  *
00018  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
00019  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00020  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00021  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
00022  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00023  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
00024  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00025  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00026  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
00027  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00028  * SUCH DAMAGE.
00029  */
00030 /* $Amigan: fakedbfs/include/fakedbfs/plugins.h,v 1.5 2006/04/19 19:58:22 dcp1990 Exp $ */
00035 #ifndef HAVE_FDBFS_PLUGINS_H
00036 #define HAVE_FDBFS_PLUGINS_H
00037 #include <fakedbfs/types.h>
00038 #include <fakedbfs/fficl.h>
00039 
00040 
00041 struct Plugin {
00042         const struct PluginInfo *info;
00043         
00044         int (*init)(fdbfs_t *f, char **errmsg, void **cptr);
00045         int (*shutdown)(fdbfs_t *f, char **errmsg);
00046         int (*check_file)(fdbfs_t *f, const char *filename, char **errmsg);
00047         fields_t* (*extract_from_file)(fdbfs_t *f, const char *filename, char **errmsg);
00048 
00049         union {
00050                 void *libhandle; /* if shared */
00051                 ficlplug_t fplug;
00052         } pl;
00053 
00054         void *cptr; /* client data */
00055                         
00056         int flags;
00057         struct Plugin *next;
00058 };
00059 
00060 #define PLUGIN_IS_FICL  0x1 /* flag */
00061 #define PLUGIN_IS_PRIMITIVE     0x2 /* not shared */
00062 
00069 int fdbfs_plugins_init(fdbfs_t *f);
00070 
00078 void fdbfs_plugins_set_path(fdbfs_t *f, const char *path);
00079 
00085 void fdbfs_free_plugin_list(struct Plugin *h);
00086 
00096 int fdbfs_plugin_set_cptr(fdbfs_t *f, const struct PluginInfo *pinf, void *dat);
00097 
00107 int fdbfs_plugin_get_cptr(fdbfs_t *f, const struct PluginInfo *pinf, void **dat);
00108 #endif

Generated on Wed Apr 19 16:26:23 2006 for fakedbfs by  doxygen 1.4.6