114 lines
3.9 KiB
C
114 lines
3.9 KiB
C
/*********************\
|
||
| WCPlus |
|
||
| By Alnotz |
|
||
\*********************/
|
||
/*
|
||
gcc -fPIC -Wall -Wextra -o wcplus.o `/usr/bin/pkg-config --libs --cflags weechat` -c wcplus.c
|
||
gcc -shared -fPIC -Wall -Wextra -o wcplus.so wcplus.o
|
||
*/
|
||
#include <stdlib.h>
|
||
#include <weechat-plugin.h>
|
||
#define VERBOSE_MASKS_SIZE 3
|
||
#define HELP_MASKS_SIZE 3
|
||
struct t_weechat_plugin *weechat_plugin = NULL;
|
||
WEECHAT_PLUGIN_NAME("WCPlus");
|
||
WEECHAT_PLUGIN_DESCRIPTION("Juste une autre extension");
|
||
WEECHAT_PLUGIN_AUTHOR("Alnotz <alnotz@protonmail.com>");
|
||
WEECHAT_PLUGIN_VERSION("0.2");
|
||
WEECHAT_PLUGIN_LICENSE("GNU GPLv3");
|
||
WEECHAT_PLUGIN_PRIORITY(999);
|
||
void arg_test(int argc,
|
||
char **argv)
|
||
{
|
||
weechat_printf(NULL, "%s###########%s", weechat_color("*green"), weechat_color("reset"));
|
||
weechat_printf(NULL, "%sTotal d’arguments: %s%d%s", weechat_color("red"), weechat_color("*blue"), argc, weechat_color("reset"));
|
||
for(int i=0; i<argc; i=i+1)
|
||
{
|
||
weechat_printf(NULL, "%sArgument n°%d: %s%s%s", weechat_color("red"), i, weechat_color("*blue"), argv[i], weechat_color("reset"));
|
||
}
|
||
weechat_printf(NULL, "%s###########%s", weechat_color("*green"), weechat_color("reset"));
|
||
}
|
||
int command_truc(const void *pointer,
|
||
void *data,
|
||
struct t_gui_buffer *buffer,
|
||
int argc,
|
||
char **argv,
|
||
char **argv_eol)
|
||
{
|
||
(void) pointer;
|
||
(void) data;
|
||
(void) buffer;
|
||
(void) argv_eol;
|
||
if(argc == 1)
|
||
{
|
||
weechat_printf(NULL, "Tu peux taper `%s/truc -help%s`.", weechat_color("*white"), weechat_color("reset"));
|
||
}
|
||
else
|
||
{
|
||
unsigned char verbose_flag = 0;
|
||
unsigned char help_flag = 0;
|
||
for(int i=1; i<argc; i=i+1)
|
||
{
|
||
const char *verbose_masks[VERBOSE_MASKS_SIZE] = {"-v", "-verbose", NULL};
|
||
const char *help_masks[HELP_MASKS_SIZE] = {"-h", "-help", NULL};
|
||
if(weechat_string_match_list(argv[i], verbose_masks, 1) && verbose_flag == 0)
|
||
{
|
||
verbose_flag = 1;
|
||
}
|
||
if(weechat_string_match_list(argv[i], help_masks, 1) && help_flag == 0)
|
||
{
|
||
help_flag = 1;
|
||
}
|
||
}
|
||
if(verbose_flag == 1)
|
||
{
|
||
arg_test(argc, argv);
|
||
}
|
||
if(help_flag == 1)
|
||
{
|
||
weechat_printf(NULL, "Maintenant tu peux taper `%s/help truc%s`.\n:-P", weechat_color("*white"), weechat_color("reset"));
|
||
}
|
||
}
|
||
return WEECHAT_RC_OK;
|
||
}
|
||
int command_truc_options(const void *pointer,
|
||
void *data,
|
||
const char *completion_item,
|
||
struct t_gui_buffer *buffer,
|
||
struct t_gui_completion *completion)
|
||
{
|
||
(void) pointer;
|
||
(void) data;
|
||
(void) completion_item;
|
||
(void) buffer;
|
||
weechat_completion_list_add (completion, "-verbose", 0, WEECHAT_LIST_POS_END);
|
||
weechat_completion_list_add (completion, "-help", 0, WEECHAT_LIST_POS_END);
|
||
return WEECHAT_RC_OK;
|
||
}
|
||
int weechat_plugin_init (struct t_weechat_plugin *plugin,
|
||
int argc, char *argv[])
|
||
{
|
||
weechat_plugin = plugin;
|
||
weechat_hook_completion("truc_options",
|
||
"Complétion des options de `truc`",
|
||
&command_truc_options,
|
||
NULL,
|
||
NULL);
|
||
weechat_hook_command("truc",
|
||
"C’est une commande d'essai.",
|
||
"[-v|-verbose] [-h|-help]",
|
||
"-h|-help : Aide\n"
|
||
"-v|-verbose : Débogage",
|
||
"%(truc_options) %(truc_options)",
|
||
&command_truc,
|
||
NULL,
|
||
NULL);
|
||
weechat_printf(NULL, "%sExtension chargée!%s", weechat_color("*red"), weechat_color("reset"));
|
||
return WEECHAT_RC_OK;
|
||
}
|
||
int weechat_plugin_end (struct t_weechat_plugin *plugin)
|
||
{
|
||
(void) plugin;
|
||
weechat_printf(NULL, "%sExtension dé-chargée!%s", weechat_color("*red"), weechat_color("reset"));
|
||
return WEECHAT_RC_OK;
|
||
}
|