refactor plugin config API and add skeleton for xchat_pluginpref_list

This commit is contained in:
Berke Viktor 2012-01-15 19:07:48 +01:00
parent e421c11686
commit 4942dc667f
6 changed files with 124 additions and 71 deletions

View File

@ -81,10 +81,12 @@ margin-right: 32px;
<br><a href="#xchat_strip">xchat_strip</a> <br><a href="#xchat_strip">xchat_strip</a>
<br><a href="#xchat_free">xchat_free</a> <br><a href="#xchat_free">xchat_free</a>
<br> <br>
<br><a href="#xchat_set_pluginpref_str">xchat_set_pluginpref_str</a> <br><a href="#xchat_pluginpref_set_str">xchat_pluginpref_set_str</a>
<br><a href="#xchat_get_pluginpref_str">xchat_get_pluginpref_str</a> <br><a href="#xchat_pluginpref_get_str">xchat_pluginpref_get_str</a>
<br><a href="#xchat_set_pluginpref_int">xchat_set_pluginpref_int</a> <br><a href="#xchat_pluginpref_set_int">xchat_pluginpref_set_int</a>
<br><a href="#xchat_get_pluginpref_int">xchat_get_pluginpref_int</a> <br><a href="#xchat_pluginpref_get_int">xchat_pluginpref_get_int</a>
<br><a href="#xchat_pluginpref_delete">xchat_pluginpref_delete</a>
<br><a href="#xchat_pluginpref_list">xchat_pluginpref_list</a>
<br> <br>
<br><a href="#lists">xchat_list_get</a> <br><a href="#lists">xchat_list_get</a>
<br><a href="#lists">xchat_list_free</a> <br><a href="#lists">xchat_list_free</a>
@ -1003,8 +1005,8 @@ A newly allocated string or NULL for failure. You must free this string with xch
<br><br> <br><br>
<h3><a class=cmd name="xchat_set_pluginpref_str">&nbsp;xchat_set_pluginpref_str()&nbsp;</a><small>(new for 2.8.10)</small></h3> <h3><a class=cmd name="xchat_pluginpref_set_str">&nbsp;xchat_pluginpref_set_str()&nbsp;</a><small>(new for 2.8.10)</small></h3>
<b>Prototype:</b> int xchat_set_pluginpref_str (xchat_plugin *ph, const char *var, const char *value); <b>Prototype:</b> int xchat_pluginpref_set_str (xchat_plugin *ph, const char *var, const char *value);
<br> <br>
<br><b>Description:</b> Saves a plugin-specific setting with string value to a plugin-specific config file. <br><b>Description:</b> Saves a plugin-specific setting with string value to a plugin-specific config file.
<br> <br>
@ -1028,8 +1030,8 @@ A newly allocated string or NULL for failure. You must free this string with xch
*plugin_desc = "Testing stuff"; *plugin_desc = "Testing stuff";
*plugin_version = "1.0"; *plugin_version = "1.0";
xchat_set_pluginpref_str (ph, "myvar1", "I want to save this string!"); xchat_pluginpref_set_str (ph, "myvar1", "I want to save this string!");
xchat_set_pluginpref_str (ph, "myvar2", "This is important, too."); xchat_pluginpref_set_str (ph, "myvar2", "This is important, too.");
return 1; /* return 1 for success */ return 1; /* return 1 for success */
}</pre> }</pre>
@ -1042,8 +1044,8 @@ myvar2 = This is important, too.</pre>
You should never need to edit this file manually. You should never need to edit this file manually.
<br><br><br> <br><br><br>
<h3><a class=cmd name="xchat_get_pluginpref_str">&nbsp;xchat_get_pluginpref_str()&nbsp;</a><small>(new for 2.8.10)</small></h3> <h3><a class=cmd name="xchat_pluginpref_get_str">&nbsp;xchat_pluginpref_get_str()&nbsp;</a><small>(new for 2.8.10)</small></h3>
<b>Prototype:</b> int xchat_get_pluginpref_str (xchat_plugin *ph, const char *var, char *dest); <b>Prototype:</b> int xchat_pluginpref_get_str (xchat_plugin *ph, const char *var, char *dest);
<br> <br>
<br><b>Description:</b> Loads a plugin-specific setting with string value from a plugin-specific config file. <br><b>Description:</b> Loads a plugin-specific setting with string value from a plugin-specific config file.
<br> <br>
@ -1056,8 +1058,8 @@ You should never need to edit this file manually.
<b>Returns:</b> 1 for success, 0 for failure. <b>Returns:</b> 1 for success, 0 for failure.
<br><br><br> <br><br><br>
<h3><a class=cmd name="xchat_set_pluginpref_int">&nbsp;xchat_set_pluginpref_int()&nbsp;</a><small>(new for 2.8.10)</small></h3> <h3><a class=cmd name="xchat_pluginpref_set_int">&nbsp;xchat_pluginpref_set_int()&nbsp;</a><small>(new for 2.8.10)</small></h3>
<b>Prototype:</b> int xchat_set_pluginpref_int (xchat_plugin *ph, const char *var, int value); <b>Prototype:</b> int xchat_pluginpref_set_int (xchat_plugin *ph, const char *var, int value);
<br> <br>
<br><b>Description:</b> Saves a plugin-specific setting with decimal value to a plugin-specific config file. <br><b>Description:</b> Saves a plugin-specific setting with decimal value to a plugin-specific config file.
<br> <br>
@ -1076,7 +1078,7 @@ You should never need to edit this file manually.
if (buffer > 0 && buffer < INT_MAX) if (buffer > 0 && buffer < INT_MAX)
{ {
if (xchat_set_pluginpref_int (ph, "myint1", buffer)) if (xchat_pluginpref_set_int (ph, "myint1", buffer))
{ {
xchat_printf (ph, "Setting successfully saved!\n"); xchat_printf (ph, "Setting successfully saved!\n");
} }
@ -1093,10 +1095,11 @@ You should never need to edit this file manually.
return XCHAT_EAT_XCHAT; return XCHAT_EAT_XCHAT;
}</pre> }</pre>
</blockquote> </blockquote>
<br><br> You only need these kind of complex checks if you're saving user input, which can be non-numeric.
<br><br><br>
<h3><a class=cmd name="xchat_get_pluginpref_int">&nbsp;xchat_get_pluginpref_int()&nbsp;</a><small>(new for 2.8.10)</small></h3> <h3><a class=cmd name="xchat_pluginpref_get_int">&nbsp;xchat_pluginpref_get_int()&nbsp;</a><small>(new for 2.8.10)</small></h3>
<b>Prototype:</b> int xchat_get_pluginpref_int (xchat_plugin *ph, const char *var); <b>Prototype:</b> int xchat_pluginpref_get_int (xchat_plugin *ph, const char *var);
<br> <br>
<br><b>Description:</b> Loads a plugin-specific setting with decimal value from a plugin-specific config file. <br><b>Description:</b> Loads a plugin-specific setting with decimal value from a plugin-specific config file.
<br> <br>
@ -1108,5 +1111,31 @@ You should never need to edit this file manually.
<b>Returns:</b> The decimal value of the requested setting upon success, -1 for failure. <b>Returns:</b> The decimal value of the requested setting upon success, -1 for failure.
<br><br><br> <br><br><br>
<h3><a class=cmd name="xchat_pluginpref_delete">&nbsp;xchat_pluginpref_delete()&nbsp;</a><small>(new for 2.8.10)</small></h3>
<b>Prototype:</b> int xchat_pluginpref_delete (xchat_plugin *ph, const char *var);
<br>
<br><b>Description:</b> Deletes a plugin-specific setting from a plugin-specific config file.
<br>
<br><b>Arguments:</b>
<blockquote><b>ph:</b> Plugin handle (as given to xchat_plugin_init).
<br><b>var:</b> Name of the setting to delete.
<br>
</blockquote>
<b>Returns:</b> 1 for success, 0 for failure. If the given setting didn't exist, it also returns 1, so 1 only indicates that the setting won't exist after the call.
<br><br><br>
<h3><a class=cmd name="xchat_pluginpref_list">&nbsp;xchat_pluginpref_list()&nbsp;</a><small>(new for 2.8.10)</small></h3>
<b>Prototype:</b> int xchat_pluginpref_list (xchat_plugin *ph, const char *dest);
<br>
<br><b>Description:</b> Builds a comma-separated list of the currently saved settings from a plugin-specific config file.
<br>
<br><b>Arguments:</b>
<blockquote><b>ph:</b> Plugin handle (as given to xchat_plugin_init).
<br><b>dest:</b> Array to save the list to.
<br>
</blockquote>
<b>Returns:</b> 1 for success, 0 for failure.
<br><br><br>
</body> </body>
</html> </html>

View File

@ -137,19 +137,21 @@ struct _xchat_plugin
int flags); int flags);
void (*xchat_free) (xchat_plugin *ph, void (*xchat_free) (xchat_plugin *ph,
void *ptr); void *ptr);
int (*xchat_set_pluginpref_str) (xchat_plugin *ph, int (*xchat_pluginpref_set_str) (xchat_plugin *ph,
const char *var, const char *var,
const char *value); const char *value);
int (*xchat_get_pluginpref_str) (xchat_plugin *ph, int (*xchat_pluginpref_get_str) (xchat_plugin *ph,
const char *var, const char *var,
char *dest); char *dest);
int (*xchat_set_pluginpref_int) (xchat_plugin *ph, int (*xchat_pluginpref_set_int) (xchat_plugin *ph,
const char *var, const char *var,
int value); int value);
int (*xchat_get_pluginpref_int) (xchat_plugin *ph, int (*xchat_pluginpref_get_int) (xchat_plugin *ph,
const char *var); const char *var);
int (*xchat_del_pluginpref) (xchat_plugin *ph, int (*xchat_pluginpref_delete) (xchat_plugin *ph,
const char *var); const char *var);
int (*xchat_pluginpref_list) (xchat_plugin *ph,
char *dest);
}; };
#endif #endif
@ -306,27 +308,31 @@ xchat_free (xchat_plugin *ph,
void *ptr); void *ptr);
int int
xchat_set_pluginpref_str (xchat_plugin *ph, xchat_pluginpref_set_str (xchat_plugin *ph,
const char *var, const char *var,
const char *value); const char *value);
int int
xchat_get_pluginpref_str (xchat_plugin *ph, xchat_pluginpref_get_str (xchat_plugin *ph,
const char *var, const char *var,
char *dest); char *dest);
int int
xchat_set_pluginpref_int (xchat_plugin *ph, xchat_pluginpref_set_int (xchat_plugin *ph,
const char *var, const char *var,
int value); int value);
int int
xchat_get_pluginpref_int (xchat_plugin *ph, xchat_pluginpref_get_int (xchat_plugin *ph,
const char *var); const char *var);
int int
xchat_del_pluginpref (xchat_plugin *ph, xchat_pluginpref_delete (xchat_plugin *ph,
const char *var); const char *var);
int
xchat_pluginpref_list (xchat_plugin *ph,
char *dest);
#if !defined(PLUGIN_C) && defined(WIN32) #if !defined(PLUGIN_C) && defined(WIN32)
#ifndef XCHAT_PLUGIN_HANDLE #ifndef XCHAT_PLUGIN_HANDLE
#define XCHAT_PLUGIN_HANDLE (ph) #define XCHAT_PLUGIN_HANDLE (ph)
@ -361,11 +367,12 @@ xchat_del_pluginpref (xchat_plugin *ph,
#define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes) #define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes)
#define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip) #define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip)
#define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free) #define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free)
#define xchat_set_pluginpref_str ((XCHAT_PLUGIN_HANDLE)->xchat_set_pluginpref_str) #define xchat_pluginpref_set_str ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_set_str)
#define xchat_get_pluginpref_str ((XCHAT_PLUGIN_HANDLE)->xchat_get_pluginpref_str) #define xchat_pluginpref_get_str ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_get_str)
#define xchat_set_pluginpref_int ((XCHAT_PLUGIN_HANDLE)->xchat_set_pluginpref_int) #define xchat_pluginpref_set_int ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_set_int)
#define xchat_get_pluginpref_int ((XCHAT_PLUGIN_HANDLE)->xchat_get_pluginpref_int) #define xchat_pluginpref_get_int ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_get_int)
#define xchat_del_pluginpref ((XCHAT_PLUGIN_HANDLE)->xchat_del_pluginpref) #define xchat_pluginpref_delete ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_delete)
#define xchat_pluginpref_list ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_list)
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -270,11 +270,12 @@ plugin_add (session *sess, char *filename, void *handle, void *init_func,
pl->xchat_send_modes = xchat_send_modes; pl->xchat_send_modes = xchat_send_modes;
pl->xchat_strip = xchat_strip; pl->xchat_strip = xchat_strip;
pl->xchat_free = xchat_free; pl->xchat_free = xchat_free;
pl->xchat_set_pluginpref_str = xchat_set_pluginpref_str; pl->xchat_pluginpref_set_str = xchat_pluginpref_set_str;
pl->xchat_get_pluginpref_str = xchat_get_pluginpref_str; pl->xchat_pluginpref_get_str = xchat_pluginpref_get_str;
pl->xchat_set_pluginpref_int = xchat_set_pluginpref_int; pl->xchat_pluginpref_set_int = xchat_pluginpref_set_int;
pl->xchat_get_pluginpref_int = xchat_get_pluginpref_int; pl->xchat_pluginpref_get_int = xchat_pluginpref_get_int;
pl->xchat_del_pluginpref = xchat_del_pluginpref; pl->xchat_pluginpref_delete = xchat_pluginpref_delete;
pl->xchat_pluginpref_list = xchat_pluginpref_list;
/* incase new plugins are loaded on older xchat */ /* incase new plugins are loaded on older xchat */
pl->xchat_dummy4 = xchat_dummy; pl->xchat_dummy4 = xchat_dummy;
@ -1589,7 +1590,7 @@ xchat_free (xchat_plugin *ph, void *ptr)
} }
static int static int
xchat_set_pluginpref_str_real (xchat_plugin *pl, const char *var, const char *value, int mode) /* mode: 0 = delete, 1 = save */ xchat_pluginpref_set_str_real (xchat_plugin *pl, const char *var, const char *value, int mode) /* mode: 0 = delete, 1 = save */
{ {
FILE *fpIn; FILE *fpIn;
int fhOut; int fhOut;
@ -1702,13 +1703,13 @@ xchat_set_pluginpref_str_real (xchat_plugin *pl, const char *var, const char *va
} }
int int
xchat_set_pluginpref_str (xchat_plugin *pl, const char *var, const char *value) xchat_pluginpref_set_str (xchat_plugin *pl, const char *var, const char *value)
{ {
return xchat_set_pluginpref_str_real (pl, var, value, 1); return xchat_pluginpref_set_str_real (pl, var, value, 1);
} }
int int
xchat_get_pluginpref_str (xchat_plugin *pl, const char *var, char *dest) xchat_pluginpref_get_str (xchat_plugin *pl, const char *var, char *dest)
{ {
int fh; int fh;
int l; int l;
@ -1760,20 +1761,20 @@ xchat_get_pluginpref_str (xchat_plugin *pl, const char *var, char *dest)
} }
int int
xchat_set_pluginpref_int (xchat_plugin *pl, const char *var, int value) xchat_pluginpref_set_int (xchat_plugin *pl, const char *var, int value)
{ {
char buffer[12]; char buffer[12];
sprintf (buffer, "%d", value); sprintf (buffer, "%d", value);
return xchat_set_pluginpref_str_real (pl, var, buffer, 1); return xchat_pluginpref_set_str_real (pl, var, buffer, 1);
} }
int int
xchat_get_pluginpref_int (xchat_plugin *pl, const char *var) xchat_pluginpref_get_int (xchat_plugin *pl, const char *var)
{ {
char buffer[12]; char buffer[12];
if (xchat_get_pluginpref_str (pl, var, buffer)) if (xchat_pluginpref_get_str (pl, var, buffer))
{ {
return atoi (buffer); return atoi (buffer);
} }
@ -1784,7 +1785,13 @@ xchat_get_pluginpref_int (xchat_plugin *pl, const char *var)
} }
int int
xchat_del_pluginpref (xchat_plugin *pl, const char *var) xchat_pluginpref_delete (xchat_plugin *pl, const char *var)
{ {
return xchat_set_pluginpref_str_real (pl, var, 0, 0); return xchat_pluginpref_set_str_real (pl, var, 0, 0);
}
int
xchat_pluginpref_list (char* dest)
{
return 0;
} }

View File

@ -98,19 +98,21 @@ struct _xchat_plugin
int flags); int flags);
void (*xchat_free) (xchat_plugin *ph, void (*xchat_free) (xchat_plugin *ph,
void *ptr); void *ptr);
int (*xchat_set_pluginpref_str) (xchat_plugin *ph, int (*xchat_pluginpref_set_str) (xchat_plugin *ph,
const char *var, const char *var,
const char *value); const char *value);
int (*xchat_get_pluginpref_str) (xchat_plugin *ph, int (*xchat_pluginpref_get_str) (xchat_plugin *ph,
const char *var, const char *var,
char *dest); char *dest);
int (*xchat_set_pluginpref_int) (xchat_plugin *ph, int (*xchat_pluginpref_set_int) (xchat_plugin *ph,
const char *var, const char *var,
int value); int value);
int (*xchat_get_pluginpref_int) (xchat_plugin *ph, int (*xchat_pluginpref_get_int) (xchat_plugin *ph,
const char *var); const char *var);
int (*xchat_del_pluginpref) (xchat_plugin *ph, int (*xchat_pluginpref_delete) (xchat_plugin *ph,
const char *var); const char *var);
int (*xchat_pluginpref_list) (xchat_plugin *ph,
char *dest);
void *(*xchat_dummy4) (xchat_plugin *ph); void *(*xchat_dummy4) (xchat_plugin *ph);
void *(*xchat_dummy3) (xchat_plugin *ph); void *(*xchat_dummy3) (xchat_plugin *ph);
void *(*xchat_dummy2) (xchat_plugin *ph); void *(*xchat_dummy2) (xchat_plugin *ph);

View File

@ -137,19 +137,21 @@ struct _xchat_plugin
int flags); int flags);
void (*xchat_free) (xchat_plugin *ph, void (*xchat_free) (xchat_plugin *ph,
void *ptr); void *ptr);
int (*xchat_set_pluginpref_str) (xchat_plugin *ph, int (*xchat_pluginpref_set_str) (xchat_plugin *ph,
const char *var, const char *var,
const char *value); const char *value);
int (*xchat_get_pluginpref_str) (xchat_plugin *ph, int (*xchat_pluginpref_get_str) (xchat_plugin *ph,
const char *var, const char *var,
char *dest); char *dest);
int (*xchat_set_pluginpref_int) (xchat_plugin *ph, int (*xchat_pluginpref_set_int) (xchat_plugin *ph,
const char *var, const char *var,
int value); int value);
int (*xchat_get_pluginpref_int) (xchat_plugin *ph, int (*xchat_pluginpref_get_int) (xchat_plugin *ph,
const char *var); const char *var);
int (*xchat_del_pluginpref) (xchat_plugin *ph, int (*xchat_pluginpref_delete) (xchat_plugin *ph,
const char *var); const char *var);
int (*xchat_pluginpref_list) (xchat_plugin *ph,
char *dest);
}; };
#endif #endif
@ -306,27 +308,31 @@ xchat_free (xchat_plugin *ph,
void *ptr); void *ptr);
int int
xchat_set_pluginpref_str (xchat_plugin *ph, xchat_pluginpref_set_str (xchat_plugin *ph,
const char *var, const char *var,
const char *value); const char *value);
int int
xchat_get_pluginpref_str (xchat_plugin *ph, xchat_pluginpref_get_str (xchat_plugin *ph,
const char *var, const char *var,
char *dest); char *dest);
int int
xchat_set_pluginpref_int (xchat_plugin *ph, xchat_pluginpref_set_int (xchat_plugin *ph,
const char *var, const char *var,
int value); int value);
int int
xchat_get_pluginpref_int (xchat_plugin *ph, xchat_pluginpref_get_int (xchat_plugin *ph,
const char *var); const char *var);
int int
xchat_del_pluginpref (xchat_plugin *ph, xchat_pluginpref_delete (xchat_plugin *ph,
const char *var); const char *var);
int
xchat_pluginpref_list (xchat_plugin *ph,
char *dest);
#if !defined(PLUGIN_C) && defined(WIN32) #if !defined(PLUGIN_C) && defined(WIN32)
#ifndef XCHAT_PLUGIN_HANDLE #ifndef XCHAT_PLUGIN_HANDLE
#define XCHAT_PLUGIN_HANDLE (ph) #define XCHAT_PLUGIN_HANDLE (ph)
@ -361,11 +367,12 @@ xchat_del_pluginpref (xchat_plugin *ph,
#define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes) #define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes)
#define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip) #define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip)
#define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free) #define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free)
#define xchat_set_pluginpref_str ((XCHAT_PLUGIN_HANDLE)->xchat_set_pluginpref_str) #define xchat_pluginpref_set_str ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_set_str)
#define xchat_get_pluginpref_str ((XCHAT_PLUGIN_HANDLE)->xchat_get_pluginpref_str) #define xchat_pluginpref_get_str ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_get_str)
#define xchat_set_pluginpref_int ((XCHAT_PLUGIN_HANDLE)->xchat_set_pluginpref_int) #define xchat_pluginpref_set_int ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_set_int)
#define xchat_get_pluginpref_int ((XCHAT_PLUGIN_HANDLE)->xchat_get_pluginpref_int) #define xchat_pluginpref_get_int ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_get_int)
#define xchat_del_pluginpref ((XCHAT_PLUGIN_HANDLE)->xchat_del_pluginpref) #define xchat_pluginpref_delete ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_delete)
#define xchat_pluginpref_list ((XCHAT_PLUGIN_HANDLE)->xchat_pluginpref_list)
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -30,10 +30,11 @@ EXPORTED {
xchat_send_modes; xchat_send_modes;
xchat_strip; xchat_strip;
xchat_free; xchat_free;
xchat_set_pluginpref_str; xchat_pluginpref_set_str;
xchat_get_pluginpref_str; xchat_pluginpref_get_str;
xchat_set_pluginpref_int; xchat_pluginpref_set_int;
xchat_get_pluginpref_int; xchat_pluginpref_get_int;
xchat_del_pluginpref; xchat_pluginpref_delete;
xchat_pluginpref_list;
local: *; local: *;
}; };