Add save_dllvar() function exported to modules
This helper function is for modules to save the contents of their module variables to a file as SET commands. It will remove the need to export the raw dll_variable list to modules.
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
[Changes 1.2.2]
|
||||
|
||||
* Add save_dllvar() function exported to modules. (caf)
|
||||
|
||||
* Shitlist level 3/4 should kick regardless of /CSET KICK_IF_BANNED.
|
||||
Reported by Ancient. (caf)
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* if we change the table below, we change this module number to the
|
||||
* current date (YYYYMMDDxx where xx is a serial number).
|
||||
*/
|
||||
#define MODULE_VERSION 2017071701UL
|
||||
#define MODULE_VERSION 2017110601UL
|
||||
|
||||
#include "struct.h"
|
||||
|
||||
@@ -92,6 +92,7 @@ char *BX_get_dllstring_var(char *);
|
||||
int BX_get_dllint_var(char *);
|
||||
void BX_set_dllstring_var(char *, char *);
|
||||
void BX_set_dllint_var(char *, unsigned int);
|
||||
void BX_save_dllvar(FILE *, char *);
|
||||
RawDll *find_raw_proc(char *, char **);
|
||||
|
||||
int check_version(unsigned long);
|
||||
@@ -418,6 +419,7 @@ enum FUNCTION_VALUE
|
||||
SET_DLLINT_VAR,
|
||||
GET_DLLSTRING_VAR,
|
||||
SET_DLLSTRING_VAR,
|
||||
SAVE_DLLVAR,
|
||||
GET_INT_VAR,
|
||||
SET_INT_VAR,
|
||||
GET_STRING_VAR,
|
||||
|
||||
@@ -463,6 +463,7 @@ extern Function_ptr *global;
|
||||
#define set_dllint_var (*(void (*)(char *, unsigned int ))global[SET_DLLINT_VAR])
|
||||
#define get_dllstring_var (*(char *(*)(char *))global[GET_DLLSTRING_VAR])
|
||||
#define set_dllstring_var (*(void (*)(char *, char *))global[SET_DLLSTRING_VAR])
|
||||
#define save_dllvar (*(void (*)(FILE *, char *))global[SAVE_DLLVAR])
|
||||
|
||||
#define get_int_var (*(int (*)(enum VAR_TYPES ))global[GET_INT_VAR])
|
||||
#define set_int_var (*(void (*)(enum VAR_TYPES , unsigned int ))global[SET_INT_VAR])
|
||||
|
||||
@@ -548,11 +548,13 @@ static int already_done = 0;
|
||||
global_table[SET_DLLINT_VAR] = (Function_ptr) BX_set_dllint_var;
|
||||
global_table[GET_DLLSTRING_VAR] = (Function_ptr) BX_get_dllstring_var;
|
||||
global_table[SET_DLLSTRING_VAR] = (Function_ptr) BX_set_dllstring_var;
|
||||
global_table[SAVE_DLLVAR] = (Function_ptr) BX_save_dllvar;
|
||||
#else
|
||||
global_table[GET_DLLINT_VAR] = (Function_ptr) null_function;
|
||||
global_table[SET_DLLINT_VAR] = (Function_ptr) null_function;
|
||||
global_table[GET_DLLSTRING_VAR] = (Function_ptr) null_function;
|
||||
global_table[SET_DLLSTRING_VAR] = (Function_ptr) null_function;
|
||||
global_table[SAVE_DLLVAR] = (Function_ptr) null_function;
|
||||
#endif
|
||||
global_table[GET_INT_VAR] = (Function_ptr) BX_get_int_var;
|
||||
global_table[SET_INT_VAR] = (Function_ptr) BX_set_int_var;
|
||||
@@ -759,6 +761,33 @@ void BX_set_dllint_var(char *typestr, unsigned int value)
|
||||
}
|
||||
}
|
||||
|
||||
void BX_save_dllvar(FILE *fp, char *var)
|
||||
{
|
||||
IrcVariableDll *dll = lookup_dllvar(var);
|
||||
|
||||
if (dll)
|
||||
{
|
||||
switch (dll->type)
|
||||
{
|
||||
case BOOL_TYPE_VAR:
|
||||
fprintf(fp, "SET %s %s\n", dll->name, dll->integer ? "ON" : "OFF");
|
||||
break;
|
||||
case CHAR_TYPE_VAR:
|
||||
fprintf(fp, "SET %s %c\n", dll->name, dll->integer);
|
||||
break;
|
||||
case INT_TYPE_VAR:
|
||||
fprintf(fp, "SET %s %d\n", dll->name, dll->integer);
|
||||
break;
|
||||
case STR_TYPE_VAR:
|
||||
if (dll->string)
|
||||
fprintf(fp, "SET %s %s\n", dll->name, dll->string);
|
||||
else
|
||||
fprintf(fp, "SET -%s\n", dll->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BUILT_IN_COMMAND(dll_load)
|
||||
{
|
||||
#if defined(HPUX) /* HP machines */
|
||||
|
||||
Reference in New Issue
Block a user