summary refs log tree commit diff stats
path: root/plugins/tcl/tclplugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/tcl/tclplugin.h')
-rw-r--r--plugins/tcl/tclplugin.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/plugins/tcl/tclplugin.h b/plugins/tcl/tclplugin.h
new file mode 100644
index 00000000..075c28f8
--- /dev/null
+++ b/plugins/tcl/tclplugin.h
@@ -0,0 +1,98 @@
+/***************************************************************************
+                           tclplugin.h  -  TCL plugin header file
+                           -------------------------------------------------
+    begin                : Sat Nov  9 17:31:20 MST 2002
+    copyright            : Copyright 2002-2010 Daniel P. Stasinski
+    email                : daniel@avenues.org
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#define BADARGS(nl,nh,example) \
+    if ((argc<(nl)) || (argc>(nh))) { \
+    Tcl_AppendResult(irp,"wrong # args: should be \"",argv[0], \
+        (example),"\"",NULL); \
+        return TCL_ERROR; \
+    }
+
+#define CHECKCTX(ctx) \
+    if (ctx == NULL) { \
+        Tcl_AppendResult(irp, "No such server/channel/nick", NULL); \
+        return TCL_ERROR; \
+    }
+
+typedef struct {
+    char *procPtr;
+    xchat_hook *hook;
+} alias;
+
+typedef struct {
+    int timerid;
+    time_t timestamp;
+    char *procPtr;
+    int count;
+    int seconds;
+} timer;
+
+typedef struct {
+    int result;
+    int defresult;
+    char **word;
+    char **word_eol;
+} t_complete;
+
+#define MAX_TIMERS 512
+#define MAX_COMPLETES 128
+
+static char *StrDup(const char *string, int *length);
+static char *myitoa(long value);
+static xchat_context *xchat_smart_context(const char *arg1, const char *arg2);
+static void queue_nexttimer();
+static int insert_timer(int seconds, int count, const char *script);
+static void do_timer();
+static int Server_raw_line(char *word[], char *word_eol[], void *userdata);
+static int Print_Hook(char *word[], void *userdata);
+static int tcl_timerexists(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_killtimer(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_timers(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_timer(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_on(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_off(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_alias(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_complete(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_raw(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_command(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_xchat_puts(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_print(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_channels(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_servers(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_queries(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_users(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_chats(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_ignores(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_dcclist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_me(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_xchat_nickcmp(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_strip(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_topic(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_word(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_word_eol(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int tcl_notifylist(ClientData cd, Tcl_Interp * irp, int argc, const char *argv[]);
+static int Command_Alias(char *word[], char *word_eol[], void *userdata);
+static int Null_Command_Alias(char *word[], char *word_eol[], void *userdata);
+static int Command_TCL(char *word[], char *word_eol[], void *userdata);
+static int Command_Source(char *word[], char *word_eol[], void *userdata);
+static int Command_Reload(char *word[], char *word_eol[], void *userdata);
+static int TCL_Event_Handler(void *userdata);
+static void Tcl_Plugin_Init();
+static void Tcl_Plugin_DeInit();
+static void banner();
+int xchat_plugin_init(xchat_plugin * plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg);
+int xchat_plugin_deinit();