Created SILC Runtime Toolkit git repository Part I.
[runtime.git] / apps / irssi / src / perl / common / Core.xs
diff --git a/apps/irssi/src/perl/common/Core.xs b/apps/irssi/src/perl/common/Core.xs
deleted file mode 100644 (file)
index 451a07e..0000000
+++ /dev/null
@@ -1,704 +0,0 @@
-#include "module.h"
-#include "irssi-version.h"
-#include "core.h"
-
-#include "pidwait.h"
-#include "session.h"
-
-#define DEFAULT_COMMAND_CATEGORY "Perl scripts' commands"
-
-void perl_signal_add_hash(int priority, SV *sv)
-{
-       HV *hv;
-        HE *he;
-       I32 len;
-
-       if (!is_hvref(sv))
-               croak("Usage: Irssi::signal_add(hash)");
-
-        hv = hvref(sv);
-       hv_iterinit(hv);
-       while ((he = hv_iternext(hv)) != NULL)
-                perl_signal_add_full(hv_iterkey(he, &len), HeVAL(he), priority);
-}
-
-static void perl_command_bind_add_hash(int priority, SV *sv, char *category)
-{
-       HV *hv;
-        HE *he;
-       I32 len;
-
-        hv = hvref(sv);
-       hv_iterinit(hv);
-       while ((he = hv_iternext(hv)) != NULL)
-               perl_command_bind_to(hv_iterkey(he, &len), category, HeVAL(he), priority);
-}
-
-static void handle_command_bind(int priority, int items, SV *p0, SV *p1, SV *p2)
-{
-       char *category;
-       int hash;
-
-       hash = items > 0 && is_hvref(p0);
-       if (!hash) {
-               if (items < 2 || items > 3)
-                       croak("Usage: Irssi::command_bind(signal, func, category)");
-       } else if (items > 2)
-               croak("Usage: Irssi::command_bind(signals_hash, category)");
-
-       if (!hash) {
-               category = items < 3 ? DEFAULT_COMMAND_CATEGORY :
-                       (char *)SvPV(p2, PL_na);
-               perl_command_bind_to((char *)SvPV(p0, PL_na), category, p1, priority);
-       } else {
-               category = items < 2 ? DEFAULT_COMMAND_CATEGORY :
-                       (char *)SvPV(p1, PL_na);
-               perl_command_bind_add_hash(priority, p0, category);
-       }
-}
-
-MODULE = Irssi::Core  PACKAGE = Irssi
-PROTOTYPES: ENABLE
-
-void
-signal_emit(signal, ...)
-       char *signal
-CODE:
-       void *p[SIGNAL_MAX_ARGUMENTS];
-       int n;
-
-       memset(p, 0, sizeof(p));
-       for (n = 1; n < items && n < SIGNAL_MAX_ARGUMENTS+1; n++) {
-               if (SvPOKp(ST(n)))
-                       p[n-1] = SvPV(ST(n), PL_na);
-               else if (irssi_is_ref_object(ST(n)))
-                       p[n-1] = irssi_ref_object(ST(n));
-               else if (SvROK(ST(n)))
-                       p[n-1] = (void *) SvIV((SV*)SvRV(ST(n)));
-               else if (SvIOK(ST(n)))
-                       p[n-1] = (void *)SvIV(ST(n));
-               else
-                       p[n-1] = NULL;
-       }
-       signal_emit(signal, items-1, p[0], p[1], p[2], p[3], p[4], p[5]);
-
-void
-signal_continue(...)
-CODE:
-       void *p[SIGNAL_MAX_ARGUMENTS];
-       int n;
-
-       memset(p, 0, sizeof(p));
-       for (n = 0; n < items && n < SIGNAL_MAX_ARGUMENTS; n++) {
-               if (SvPOKp(ST(n)))
-                       p[n] = SvPV(ST(n), PL_na);
-               else if (irssi_is_ref_object(ST(n)))
-                       p[n] = irssi_ref_object(ST(n));
-               else if (SvROK(ST(n)))
-                       p[n] = (void *) SvIV((SV*)SvRV(ST(n)));
-               else if (SvIOK(ST(n)))
-                       p[n] = (void *) SvIV(ST(n));
-               else
-                       p[n] = NULL;
-       }
-       signal_continue(items, p[0], p[1], p[2], p[3], p[4], p[5]);
-
-void
-signal_add(...)
-CODE:
-       if (items != 1 && items != 2)
-               croak("Usage: Irssi::signal_add(signal, func)");
-       if (items == 2)
-               perl_signal_add_full((char *)SvPV(ST(0),PL_na), ST(1),
-                                    SIGNAL_PRIORITY_DEFAULT);
-       else
-               perl_signal_add_hash(SIGNAL_PRIORITY_DEFAULT, ST(0));
-
-void
-signal_add_first(...)
-CODE:
-       if (items != 1 && items != 2)
-               croak("Usage: Irssi::signal_add_first(signal, func)");
-       if (items == 2)
-               perl_signal_add_full((char *)SvPV(ST(0),PL_na), ST(1),
-                                    SIGNAL_PRIORITY_HIGH);
-       else
-               perl_signal_add_hash(SIGNAL_PRIORITY_HIGH, ST(0));
-
-void
-signal_add_last(...)
-CODE:
-       if (items != 1 && items != 2)
-               croak("Usage: Irssi::signal_add_last(signal, func)");
-       if (items == 2)
-               perl_signal_add_full((char *)SvPV(ST(0),PL_na), ST(1),
-                                    SIGNAL_PRIORITY_LOW);
-       else
-               perl_signal_add_hash(SIGNAL_PRIORITY_LOW, ST(0));
-
-void
-signal_add_priority(...)
-CODE:
-       if (items != 2 && items != 3)
-               croak("Usage: Irssi::signal_add_priority(signal, func, priority)");
-       if (items == 3)
-               perl_signal_add_full((char *)SvPV(ST(0),PL_na), ST(1), SvIV(ST(2)));
-       else
-               perl_signal_add_hash(SvIV(ST(0)), ST(1));
-
-void
-signal_register(...)
-PREINIT:
-       HV *hv;
-        HE *he;
-       I32 len, pos;
-       const char *arr[7];
-CODE:
-       if (items != 1 || !is_hvref(ST(0)))
-               croak("Usage: Irssi::signal_register(hash)");
-
-        hv = hvref(ST(0));
-       hv_iterinit(hv);
-       while ((he = hv_iternext(hv)) != NULL) {
-               const char *key = hv_iterkey(he, &len);
-               SV *val = HeVAL(he);
-               AV *av;
-
-               if (!SvROK(val) || SvTYPE(SvRV(val)) != SVt_PVAV)
-                       croak("not array reference");
-
-               av = (AV *) SvRV(val);
-               len = av_len(av)+1;
-               if (len > 6) len = 6;
-               for (pos = 0; pos < len; pos++) {
-                       SV **val = av_fetch(av, pos, 0);
-                       arr[pos] = SvPV(*val, PL_na);
-               }
-               arr[pos] = NULL;
-               perl_signal_register(key, arr);
-       }
-
-
-int
-SIGNAL_PRIORITY_LOW()
-CODE:
-       RETVAL = SIGNAL_PRIORITY_LOW;
-OUTPUT:
-       RETVAL
-
-int
-SIGNAL_PRIORITY_DEFAULT()
-CODE:
-       RETVAL = SIGNAL_PRIORITY_DEFAULT;
-OUTPUT:
-       RETVAL
-
-int
-SIGNAL_PRIORITY_HIGH()
-CODE:
-       RETVAL = SIGNAL_PRIORITY_HIGH;
-OUTPUT:
-       RETVAL
-
-void
-signal_remove(signal, func)
-       char *signal
-       SV *func
-CODE:
-       perl_signal_remove(signal, func);
-
-void
-signal_stop()
-
-void
-signal_stop_by_name(signal)
-       char *signal
-
-char *
-signal_get_emitted()
-CODE:
-       RETVAL = (char *) signal_get_emitted();
-OUTPUT:
-       RETVAL
-
-int
-signal_get_emitted_id()
-
-int
-timeout_add(msecs, func, data)
-       int msecs
-       SV *func
-       SV *data
-CODE:
-       if (msecs < 10) {
-               croak("Irssi::timeout() : msecs must be >= 10");
-               RETVAL = -1;
-       } else {
-               RETVAL = perl_timeout_add(msecs, func, data, FALSE);
-       }
-OUTPUT:
-       RETVAL
-
-int
-timeout_add_once(msecs, func, data)
-       int msecs
-       SV *func
-       SV *data
-CODE:
-       if (msecs < 10) {
-               croak("Irssi::timeout_once() : msecs must be >= 10");
-               RETVAL = -1;
-       } else {
-               RETVAL = perl_timeout_add(msecs, func, data, TRUE);
-       }
-OUTPUT:
-       RETVAL
-
-void
-timeout_remove(tag)
-       int tag
-CODE:
-       perl_source_remove(tag);
-
-
-int
-INPUT_READ()
-CODE:
-       RETVAL = G_INPUT_READ;
-OUTPUT:
-       RETVAL
-
-int
-INPUT_WRITE()
-CODE:
-       RETVAL = G_INPUT_WRITE;
-OUTPUT:
-       RETVAL
-
-int
-input_add(source, condition, func, data)
-       int source
-       int condition
-       SV *func
-       SV *data
-CODE:
-       RETVAL = perl_input_add(source, condition, func, data, FALSE);
-OUTPUT:
-       RETVAL
-
-void
-input_remove(tag)
-       int tag
-CODE:
-       perl_source_remove(tag);
-
-# maybe there's some easier way than this..? :)
-int
-MSGLEVEL_CRAP()
-CODE:
-       RETVAL = MSGLEVEL_CRAP;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_MSGS()
-CODE:
-       RETVAL = MSGLEVEL_MSGS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_PUBLIC()
-CODE:
-       RETVAL = MSGLEVEL_PUBLIC;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_NOTICES()
-CODE:
-       RETVAL = MSGLEVEL_NOTICES;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_SNOTES()
-CODE:
-       RETVAL = MSGLEVEL_SNOTES;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_CTCPS()
-CODE:
-       RETVAL = MSGLEVEL_CTCPS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_ACTIONS()
-CODE:
-       RETVAL = MSGLEVEL_ACTIONS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_JOINS()
-CODE:
-       RETVAL = MSGLEVEL_JOINS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_PARTS()
-CODE:
-       RETVAL = MSGLEVEL_PARTS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_QUITS()
-CODE:
-       RETVAL = MSGLEVEL_QUITS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_KICKS()
-CODE:
-       RETVAL = MSGLEVEL_KICKS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_MODES()
-CODE:
-       RETVAL = MSGLEVEL_MODES;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_TOPICS()
-CODE:
-       RETVAL = MSGLEVEL_TOPICS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_WALLOPS()
-CODE:
-       RETVAL = MSGLEVEL_WALLOPS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_INVITES()
-CODE:
-       RETVAL = MSGLEVEL_INVITES;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_NICKS()
-CODE:
-       RETVAL = MSGLEVEL_NICKS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_DCC()
-CODE:
-       RETVAL = MSGLEVEL_DCC;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_DCCMSGS()
-CODE:
-       RETVAL = MSGLEVEL_DCCMSGS;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_CLIENTNOTICE()
-CODE:
-       RETVAL = MSGLEVEL_CLIENTNOTICE;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_CLIENTCRAP()
-CODE:
-       RETVAL = MSGLEVEL_CLIENTCRAP;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_CLIENTERROR()
-CODE:
-       RETVAL = MSGLEVEL_CLIENTERROR;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_HILIGHT()
-CODE:
-       RETVAL = MSGLEVEL_HILIGHT;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_ALL()
-CODE:
-       RETVAL = MSGLEVEL_ALL;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_NOHILIGHT()
-CODE:
-       RETVAL = MSGLEVEL_NOHILIGHT;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_NO_ACT()
-CODE:
-       RETVAL = MSGLEVEL_NO_ACT;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_NEVER()
-CODE:
-       RETVAL = MSGLEVEL_NEVER;
-OUTPUT:
-       RETVAL
-
-int
-MSGLEVEL_LASTLOG()
-CODE:
-       RETVAL = MSGLEVEL_LASTLOG;
-OUTPUT:
-       RETVAL
-
-int
-level2bits(str)
-       char *str
-
-void
-bits2level(bits)
-       int bits
-PREINIT:
-       char *ret;
-PPCODE:
-       ret = bits2level(bits);
-       XPUSHs(sv_2mortal(new_pv(ret)));
-       g_free(ret);
-
-int
-combine_level(level, str)
-       int level
-       char *str
-
-void
-command(cmd)
-       char *cmd
-CODE:
-       perl_command(cmd, NULL, NULL);
-
-void
-commands()
-PREINIT:
-       GSList *tmp;
-PPCODE:
-       for (tmp = commands; tmp != NULL; tmp = tmp->next) {
-               XPUSHs(sv_2mortal(plain_bless(tmp->data, "Irssi::Command")));
-       }
-
-void
-command_bind_first(...)
-CODE:
-       handle_command_bind(SIGNAL_PRIORITY_HIGH, items, ST(0), ST(1), ST(2));
-
-void
-command_bind(...)
-CODE:
-       handle_command_bind(SIGNAL_PRIORITY_DEFAULT, items, ST(0), ST(1), ST(2));
-
-void
-command_bind_last(...)
-CODE:
-       handle_command_bind(SIGNAL_PRIORITY_LOW, items, ST(0), ST(1), ST(2));
-
-void
-command_runsub(cmd, data, server, item)
-       char *cmd
-       char *data
-       Irssi::Server server
-       Irssi::Windowitem item
-CODE:
-       perl_command_runsub(cmd, data, server, item);
-
-void
-command_unbind(cmd, func)
-       char *cmd
-       SV *func
-CODE:
-       perl_command_unbind(cmd, func);
-
-void
-command_set_options(cmd, options)
-       char *cmd
-       char *options
-
-void
-pidwait_add(pid)
-       int pid
-
-void 
-pidwait_remove(pid)
-       int pid
-
-void
-parse_special(cmd, data="", flags=0)
-       char *cmd
-       char *data
-       int flags
-PREINIT:
-       char *ret;
-PPCODE:
-       ret = parse_special_string(cmd, NULL, NULL, data, NULL, flags);
-       XPUSHs(sv_2mortal(new_pv(ret)));
-       g_free_not_null(ret);
-
-char *
-get_irssi_dir()
-CODE:
-       RETVAL = (char *) get_irssi_dir();
-OUTPUT:
-       RETVAL
-
-char *
-get_irssi_config()
-CODE:
-       RETVAL = (char *) get_irssi_config();
-OUTPUT:
-       RETVAL
-
-char *
-get_irssi_binary()
-CODE:
-       RETVAL = irssi_binary;
-OUTPUT:
-       RETVAL
-
-char *
-version()
-PREINIT:
-       char version[100];
-CODE:
-       g_snprintf(version, sizeof(version), "%d.%04d",
-                  IRSSI_VERSION_DATE, IRSSI_VERSION_TIME);
-       RETVAL = version;
-OUTPUT:
-        RETVAL
-
-int
-get_gui()
-CODE:
-       RETVAL = irssi_gui;
-OUTPUT:
-       RETVAL
-
-int
-IRSSI_GUI_NONE()
-CODE:
-       RETVAL = IRSSI_GUI_NONE;
-OUTPUT:
-       RETVAL
-
-int
-IRSSI_GUI_TEXT()
-CODE:
-       RETVAL = IRSSI_GUI_TEXT;
-OUTPUT:
-       RETVAL
-
-int
-IRSSI_GUI_GTK()
-CODE:
-       RETVAL = IRSSI_GUI_GTK;
-OUTPUT:
-       RETVAL
-
-int
-IRSSI_GUI_GNOME()
-CODE:
-       RETVAL = IRSSI_GUI_GNOME;
-OUTPUT:
-       RETVAL
-
-int
-IRSSI_GUI_QT()
-CODE:
-       RETVAL = IRSSI_GUI_QT;
-OUTPUT:
-       RETVAL
-
-int
-IRSSI_GUI_KDE()
-CODE:
-       RETVAL = IRSSI_GUI_KDE;
-OUTPUT:
-       RETVAL
-
-#*******************************
-MODULE = Irssi::Core   PACKAGE = Irssi::Server
-#*******************************
-
-void
-parse_special(server, cmd, data="", flags=0)
-       Irssi::Server server
-       char *cmd
-       char *data
-       int flags
-PREINIT:
-       char *ret;
-PPCODE:
-       ret = parse_special_string(cmd, server, NULL, data, NULL, flags);
-       XPUSHs(sv_2mortal(new_pv(ret)));
-       g_free_not_null(ret);
-
-void
-command(server, cmd)
-       Irssi::Server server
-       char *cmd
-CODE:
-       perl_command(cmd, server, NULL);
-
-
-#*******************************
-MODULE = Irssi::Core   PACKAGE = Irssi::Windowitem
-#*******************************
-
-void
-parse_special(item, cmd, data="", flags=0)
-       Irssi::Windowitem item
-       char *cmd
-       char *data
-       int flags
-PREINIT:
-       char *ret;
-PPCODE:
-       ret = parse_special_string(cmd, item->server, item, data, NULL, flags);
-       XPUSHs(sv_2mortal(new_pv(ret)));
-       g_free_not_null(ret);
-
-void
-command(item, cmd)
-       Irssi::Windowitem item
-       char *cmd
-CODE:
-       perl_command(cmd, item->server, item);
-