X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fperl%2Fcommon%2FCore.xs;fp=apps%2Firssi%2Fsrc%2Fperl%2Fcommon%2FCore.xs;h=0000000000000000000000000000000000000000;hb=72c2de619079457f7a68100eb13385275a424a23;hp=451a07e2d735b8a78a20b6e125be9b81a409c9ca;hpb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;p=runtime.git diff --git a/apps/irssi/src/perl/common/Core.xs b/apps/irssi/src/perl/common/Core.xs deleted file mode 100644 index 451a07e2..00000000 --- a/apps/irssi/src/perl/common/Core.xs +++ /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); -