Simplified plugin initialization by using a macro.

This commit is contained in:
Jan Vidar Krey 2010-08-30 11:54:34 +02:00
parent ff8b8f5175
commit 21c22288a2
5 changed files with 17 additions and 30 deletions

View File

@ -24,7 +24,7 @@
#include "util/credentials.h" #include "util/credentials.h"
#include "util/ipcalc.h" #include "util/ipcalc.h"
#define PLUGIN_API_VERSION 0 #define PLUGIN_API_VERSION 1
#ifndef MAX_NICK_LEN #ifndef MAX_NICK_LEN
#define MAX_NICK_LEN 64 #define MAX_NICK_LEN 64
@ -158,6 +158,18 @@ struct plugin_handle
struct plugin_funcs funcs; struct plugin_funcs funcs;
}; };
#define PLUGIN_INITIALIZE(PTR, NAME, VERSION, DESCRIPTION) \
do { \
PTR->name = NAME; \
PTR->version = VERSION; \
PTR->description = DESCRIPTION; \
PTR->ptr = NULL; \
PTR->error_msg = NULL; \
PTR->plugin_api_version = PLUGIN_API_VERSION; \
PTR->plugin_funcs_size = sizeof(struct plugin_funcs); \
memset(&PTR->funcs, 0, sizeof(struct plugin_funcs)); \
} while (0)
/** /**
* Implemented by the plugin. * Implemented by the plugin.
* *

View File

@ -202,12 +202,7 @@ static plugin_st delete_user(struct plugin_handle* plugin, struct auth_info* use
int plugin_register(struct plugin_handle* plugin, const char* config) int plugin_register(struct plugin_handle* plugin, const char* config)
{ {
plugin->name = "File authentication plugin"; PLUGIN_INITIALIZE(plugin, "File authentication plugin", "0.1", "Authenticate users based on a read-only text file.");
plugin->version = "0.1";
plugin->description = "Authenticate users based on a read-only text file.";
plugin->plugin_api_version = PLUGIN_API_VERSION;
plugin->plugin_funcs_size = sizeof(struct plugin_funcs);
memset(&plugin->funcs, 0, sizeof(struct plugin_funcs));
// Authentication actions. // Authentication actions.
plugin->funcs.auth_get_user = get_user; plugin->funcs.auth_get_user = get_user;

View File

@ -174,12 +174,7 @@ static plugin_st delete_user(struct plugin_handle* plugin, struct auth_info* use
int plugin_register(struct plugin_handle* plugin, const char* config) int plugin_register(struct plugin_handle* plugin, const char* config)
{ {
plugin->name = "SQLite authentication plugin"; PLUGIN_INITIALIZE(plugin, "SQLite authentication plugin", "0.1", "Authenticate users based on a SQLite database.");
plugin->version = "0.1";
plugin->description = "Authenticate users based on a SQLite database.";
plugin->plugin_api_version = PLUGIN_API_VERSION;
plugin->plugin_funcs_size = sizeof(struct plugin_funcs);
memset(&plugin->funcs, 0, sizeof(struct plugin_funcs));
// Authentication actions. // Authentication actions.
plugin->funcs.auth_get_user = get_user; plugin->funcs.auth_get_user = get_user;

View File

@ -6,22 +6,13 @@
int plugin_register(struct plugin_handle* plugin, const char* config) int plugin_register(struct plugin_handle* plugin, const char* config)
{ {
plugin->name = "Example plugin"; PLUGIN_INITIALIZE(plugin, "Example plugin", "1.0", "A simple example plugin");
plugin->version = "1.0";
plugin->description = "A simple example plugin";
plugin->ptr = NULL;
plugin->plugin_api_version = PLUGIN_API_VERSION;
plugin->plugin_funcs_size = sizeof(struct plugin_funcs);
memset(&plugin->funcs, 0, sizeof(struct plugin_funcs));
puts("plugin register");
return 0; return 0;
} }
int plugin_unregister(struct plugin_handle* plugin) int plugin_unregister(struct plugin_handle* plugin)
{ {
/* No need to do anything! */ /* No need to do anything! */
puts("plugin unregister");
return 0; return 0;
} }

View File

@ -94,13 +94,7 @@ static void log_change_nick(struct plugin_handle* plugin, struct plugin_user* us
int plugin_register(struct plugin_handle* plugin, const char* config) int plugin_register(struct plugin_handle* plugin, const char* config)
{ {
plugin->name = "Logging plugin"; PLUGIN_INITIALIZE(plugin, "Logging plugin", "1.0", "Logs users entering and leaving the hub.");
plugin->version = "1.0";
plugin->description = "Logs users entering and leaving the hub.";
plugin->ptr = NULL;
plugin->plugin_api_version = PLUGIN_API_VERSION;
plugin->plugin_funcs_size = sizeof(struct plugin_funcs);
memset(&plugin->funcs, 0, sizeof(struct plugin_funcs));
plugin->funcs.on_user_login = log_user_login; plugin->funcs.on_user_login = log_user_login;
plugin->funcs.on_user_login_error = log_user_login_error; plugin->funcs.on_user_login_error = log_user_login_error;