c/wcplus.c

115 lines
3.9 KiB
C
Raw Normal View History

2023-01-07 16:20:12 +01:00
/*********************\
| 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 darguments: %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",
"Cest 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;
}