c/wcplus.c
2023-01-07 16:20:12 +01:00

115 lines
3.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*********************\
| 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;
}