1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-27 05:16:38 +02:00

Added /setp command (set plugin options)

This commit is contained in:
Sebastien Helleu
2006-03-24 09:38:54 +00:00
parent 9fb1176b1b
commit d9c032fee3
28 changed files with 2980 additions and 1886 deletions
+64 -15
View File
@@ -26,6 +26,7 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -36,6 +37,7 @@
t_plugin_option *plugin_options = NULL;
t_plugin_option *last_plugin_option = NULL;
/*
@@ -51,8 +53,7 @@ plugin_config_search_internal (char *option)
for (ptr_plugin_option = plugin_options; ptr_plugin_option;
ptr_plugin_option = ptr_plugin_option->next_option)
{
if (ascii_strcasecmp (ptr_plugin_option->option_name,
option) == 0)
if (ascii_strcasecmp (ptr_plugin_option->name, option) == 0)
{
return ptr_plugin_option;
}
@@ -88,6 +89,24 @@ plugin_config_search (t_weechat_plugin *plugin, char *option)
return ptr_plugin_option;
}
/*
* plugin_config_find_pos: find position for a plugin option (for sorting options)
*/
t_plugin_option *
plugin_config_find_pos (char *name)
{
t_plugin_option *ptr_option;
for (ptr_option = plugin_options; ptr_option;
ptr_option = ptr_option->next_option)
{
if (ascii_strcasecmp (name, ptr_option->name) < 0)
return ptr_option;
}
return NULL;
}
/*
* plugin_config_set_internal: set value for a plugin option (internal function)
* This function should not be called directly.
@@ -96,7 +115,7 @@ plugin_config_search (t_weechat_plugin *plugin, char *option)
int
plugin_config_set_internal (char *option, char *value)
{
t_plugin_option *ptr_plugin_option;
t_plugin_option *ptr_plugin_option, *pos_option;
ptr_plugin_option = plugin_config_search_internal (option);
if (ptr_plugin_option)
@@ -125,18 +144,48 @@ plugin_config_set_internal (char *option, char *value)
}
else
{
ptr_plugin_option = (t_plugin_option *)malloc (sizeof (t_plugin_option));
if (ptr_plugin_option)
if (value && value[0])
{
/* create new option */
ptr_plugin_option->option_name = strdup (option);
ptr_plugin_option->value = strdup (value);
if (plugin_options)
plugin_options->prev_option = ptr_plugin_option;
ptr_plugin_option->prev_option = NULL;
ptr_plugin_option->next_option = plugin_options;
plugin_options = ptr_plugin_option;
return 1;
ptr_plugin_option = (t_plugin_option *)malloc (sizeof (t_plugin_option));
if (ptr_plugin_option)
{
/* create new option */
ptr_plugin_option->name = strdup (option);
ascii_tolower (ptr_plugin_option->name);
ptr_plugin_option->value = strdup (value);
if (plugin_options)
{
pos_option = plugin_config_find_pos (ptr_plugin_option->name);
if (pos_option)
{
/* insert option into the list (before option found) */
ptr_plugin_option->prev_option = pos_option->prev_option;
ptr_plugin_option->next_option = pos_option;
if (pos_option->prev_option)
pos_option->prev_option->next_option = ptr_plugin_option;
else
plugin_options = ptr_plugin_option;
pos_option->prev_option = ptr_plugin_option;
}
else
{
/* add option to the end */
ptr_plugin_option->prev_option = last_plugin_option;
ptr_plugin_option->next_option = NULL;
last_plugin_option->next_option = ptr_plugin_option;
last_plugin_option = ptr_plugin_option;
}
}
else
{
ptr_plugin_option->prev_option = NULL;
ptr_plugin_option->next_option = NULL;
plugin_options = ptr_plugin_option;
last_plugin_option = ptr_plugin_option;
}
return 1;
}
}
}
@@ -318,7 +367,7 @@ plugin_config_write ()
ptr_plugin_option = ptr_plugin_option->next_option)
{
fprintf (file, "%s = \"%s\"\n",
ptr_plugin_option->option_name,
ptr_plugin_option->name,
ptr_plugin_option->value);
}
+5 -1
View File
@@ -27,13 +27,17 @@ typedef struct t_plugin_option t_plugin_option;
struct t_plugin_option
{
char *option_name; /* option name in config file */
char *name; /* option name in config file */
char *value; /* value of option */
t_plugin_option *prev_option; /* link to previous option */
t_plugin_option *next_option; /* link to next option */
};
extern t_plugin_option *plugin_options;
extern t_plugin_option *plugin_config_search_internal (char *);
extern t_plugin_option *plugin_config_search (t_weechat_plugin *, char *);
extern int plugin_config_set_internal (char *, char *);
extern int plugin_config_set (t_weechat_plugin *, char *, char *);
extern void plugin_config_read ();
extern int plugin_config_write ();
+1
View File
@@ -22,6 +22,7 @@
#define __WEECHAT_PLUGINS_H 1
#include "weechat-plugin.h"
#include "plugins-config.h"
#include "../irc/irc.h"
#include "../gui/gui.h"