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]
|
[Changes 1.2.2]
|
||||||
|
|
||||||
|
* Add save_dllvar() function exported to modules. (caf)
|
||||||
|
|
||||||
* Shitlist level 3/4 should kick regardless of /CSET KICK_IF_BANNED.
|
* Shitlist level 3/4 should kick regardless of /CSET KICK_IF_BANNED.
|
||||||
Reported by Ancient. (caf)
|
Reported by Ancient. (caf)
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
* if we change the table below, we change this module number to the
|
* if we change the table below, we change this module number to the
|
||||||
* current date (YYYYMMDDxx where xx is a serial number).
|
* current date (YYYYMMDDxx where xx is a serial number).
|
||||||
*/
|
*/
|
||||||
#define MODULE_VERSION 2017071701UL
|
#define MODULE_VERSION 2017110601UL
|
||||||
|
|
||||||
#include "struct.h"
|
#include "struct.h"
|
||||||
|
|
||||||
@@ -92,6 +92,7 @@ char *BX_get_dllstring_var(char *);
|
|||||||
int BX_get_dllint_var(char *);
|
int BX_get_dllint_var(char *);
|
||||||
void BX_set_dllstring_var(char *, char *);
|
void BX_set_dllstring_var(char *, char *);
|
||||||
void BX_set_dllint_var(char *, unsigned int);
|
void BX_set_dllint_var(char *, unsigned int);
|
||||||
|
void BX_save_dllvar(FILE *, char *);
|
||||||
RawDll *find_raw_proc(char *, char **);
|
RawDll *find_raw_proc(char *, char **);
|
||||||
|
|
||||||
int check_version(unsigned long);
|
int check_version(unsigned long);
|
||||||
@@ -418,6 +419,7 @@ enum FUNCTION_VALUE
|
|||||||
SET_DLLINT_VAR,
|
SET_DLLINT_VAR,
|
||||||
GET_DLLSTRING_VAR,
|
GET_DLLSTRING_VAR,
|
||||||
SET_DLLSTRING_VAR,
|
SET_DLLSTRING_VAR,
|
||||||
|
SAVE_DLLVAR,
|
||||||
GET_INT_VAR,
|
GET_INT_VAR,
|
||||||
SET_INT_VAR,
|
SET_INT_VAR,
|
||||||
GET_STRING_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 set_dllint_var (*(void (*)(char *, unsigned int ))global[SET_DLLINT_VAR])
|
||||||
#define get_dllstring_var (*(char *(*)(char *))global[GET_DLLSTRING_VAR])
|
#define get_dllstring_var (*(char *(*)(char *))global[GET_DLLSTRING_VAR])
|
||||||
#define set_dllstring_var (*(void (*)(char *, char *))global[SET_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 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])
|
#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[SET_DLLINT_VAR] = (Function_ptr) BX_set_dllint_var;
|
||||||
global_table[GET_DLLSTRING_VAR] = (Function_ptr) BX_get_dllstring_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[SET_DLLSTRING_VAR] = (Function_ptr) BX_set_dllstring_var;
|
||||||
|
global_table[SAVE_DLLVAR] = (Function_ptr) BX_save_dllvar;
|
||||||
#else
|
#else
|
||||||
global_table[GET_DLLINT_VAR] = (Function_ptr) null_function;
|
global_table[GET_DLLINT_VAR] = (Function_ptr) null_function;
|
||||||
global_table[SET_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[GET_DLLSTRING_VAR] = (Function_ptr) null_function;
|
||||||
global_table[SET_DLLSTRING_VAR] = (Function_ptr) null_function;
|
global_table[SET_DLLSTRING_VAR] = (Function_ptr) null_function;
|
||||||
|
global_table[SAVE_DLLVAR] = (Function_ptr) null_function;
|
||||||
#endif
|
#endif
|
||||||
global_table[GET_INT_VAR] = (Function_ptr) BX_get_int_var;
|
global_table[GET_INT_VAR] = (Function_ptr) BX_get_int_var;
|
||||||
global_table[SET_INT_VAR] = (Function_ptr) BX_set_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)
|
BUILT_IN_COMMAND(dll_load)
|
||||||
{
|
{
|
||||||
#if defined(HPUX) /* HP machines */
|
#if defined(HPUX) /* HP machines */
|
||||||
|
|||||||
Reference in New Issue
Block a user