hexchat/plugins/doat/doat.c

97 lines
2.2 KiB
C
Raw Normal View History

2011-11-22 20:58:00 +04:00
/* This program is free software. It comes without any warranty, to
* the extent permitted by applicable law. You can redistribute it
* and/or modify it under the terms of the Do What The Fuck You Want
* To Public License, Version 2, as published by Sam Hocevar. See
* http://sam.zoy.org/wtfpl/COPYING or http://lwsitu.com/xchat/COPYING
* for more details. */
2014-12-16 06:57:27 +03:00
#include "config.h"
2011-11-22 20:58:00 +04:00
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
2012-10-24 23:33:02 +04:00
#include "hexchat-plugin.h"
2011-11-22 20:58:00 +04:00
2012-10-30 11:42:48 +04:00
static hexchat_plugin *ph;
2011-11-22 20:58:00 +04:00
static int
parse_command( char *word[], char *word_eol[], void *userdata ) {
char *channel = NULL, *server = NULL, *token = NULL;
/* char *save_ptr1 = NULL;*/
char *str1 = NULL;
char *delimiter = NULL;
2012-10-30 11:42:48 +04:00
hexchat_context *ctx = NULL;
2011-11-22 20:58:00 +04:00
if( word[2] != NULL && word[3] != NULL ) {
for( str1 = word[2]; ; str1 = NULL ) {
/* token = strtok_r( str1, ",", &save_ptr1 );*/
token = strtok( str1, "," );
/* printf( "token: %s\n", token );*/
if( token == NULL ) {
break;
}
2012-06-12 22:40:42 +04:00
channel = strdup( token );
2011-11-22 20:58:00 +04:00
delimiter = strchr( channel, '/' );
server = NULL;
if( delimiter != NULL ) {
*delimiter = '\0';
2012-06-12 22:40:42 +04:00
if( strlen( delimiter + 1 ) > 0 ) {
server = strdup( delimiter + 1 );
}
}
/* /Network form */
if( strlen( channel ) == 0 ) {
free( channel );
channel = NULL;
2011-11-22 20:58:00 +04:00
}
/* printf( "channel[%s] server[%s]\n", channel, server );*/
2012-10-30 11:42:48 +04:00
if( (ctx = hexchat_find_context( ph, server, channel ) ) != NULL ) {
if( hexchat_set_context( ph, ctx ) ) {
hexchat_command( ph, word_eol[3] );
2011-11-22 20:58:00 +04:00
}
}
2012-06-12 22:40:42 +04:00
if( channel != NULL ) {
free( channel );
}
if( server != NULL ) {
free( server );
}
2011-11-22 20:58:00 +04:00
}
}
2012-10-30 13:42:37 +04:00
return HEXCHAT_EAT_HEXCHAT;
2011-11-22 20:58:00 +04:00
}
int
2012-10-30 11:42:48 +04:00
hexchat_plugin_init( hexchat_plugin * plugin_handle, char **plugin_name,
2011-11-22 20:58:00 +04:00
char **plugin_desc, char **plugin_version, char *arg ) {
ph = plugin_handle;
*plugin_name = "Do At";
2012-06-12 22:40:42 +04:00
*plugin_version = "1.0001";
2011-11-22 20:58:00 +04:00
*plugin_desc = "Perform an arbitrary command on multiple channels";
2012-10-30 11:42:48 +04:00
hexchat_hook_command( ph, "doat", HEXCHAT_PRI_NORM, parse_command, "DOAT [channel,list,/network] [command], perform a command on multiple contexts", NULL );
2011-11-22 20:58:00 +04:00
2012-10-30 11:42:48 +04:00
hexchat_print (ph, "Do At plugin loaded\n");
2011-11-22 20:58:00 +04:00
return 1;
}
int
2012-10-30 11:42:48 +04:00
hexchat_plugin_deinit (void)
2011-11-22 20:58:00 +04:00
{
2012-10-30 11:42:48 +04:00
hexchat_print (ph, "Do At plugin unloaded\n");
2011-11-22 20:58:00 +04:00
return 1;
}