~ubuntu-branches/ubuntu/gutsy/irssi/gutsy-backports

« back to all changes in this revision

Viewing changes to src/perl/irc/Server.xs

  • Committer: Bazaar Package Importer
  • Author(s): David Pashley
  • Date: 2005-12-10 21:25:51 UTC
  • Revision ID: james.westby@ubuntu.com-20051210212551-5qwm108g7inyu2f2
Tags: upstream-0.8.10
ImportĀ upstreamĀ versionĀ 0.8.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "module.h"
 
2
 
 
3
static GSList *register_hash2list(HV *hv)
 
4
{
 
5
        HE *he;
 
6
        GSList *list;
 
7
 
 
8
        if (hv == NULL)
 
9
                return NULL;
 
10
 
 
11
        list = NULL;
 
12
        hv_iterinit(hv);
 
13
        while ((he = hv_iternext(hv)) != NULL) {
 
14
                I32 len;
 
15
                char *key = hv_iterkey(he, &len);
 
16
                int value = (int)SvIV(HeVAL(he));
 
17
 
 
18
                list = g_slist_append(list, g_strdup(key));
 
19
                list = g_slist_append(list, GINT_TO_POINTER(value));
 
20
        }
 
21
        return list;
 
22
}
 
23
 
 
24
static GSList *event_hash2list(HV *hv)
 
25
{
 
26
        HE *he;
 
27
        GSList *list;
 
28
 
 
29
        if (hv == NULL)
 
30
                return NULL;
 
31
 
 
32
        list = NULL;
 
33
        hv_iterinit(hv);
 
34
        while ((he = hv_iternext(hv)) != NULL) {
 
35
                I32 len;
 
36
                char *key = hv_iterkey(he, &len);
 
37
                char *value = SvPV(HeVAL(he), PL_na);
 
38
 
 
39
                list = g_slist_append(list, g_strdup(key));
 
40
                list = g_slist_append(list, g_strdup(value));
 
41
        }
 
42
        return list;
 
43
}
 
44
 
 
45
MODULE = Irssi::Irc::Server     PACKAGE = Irssi::Irc::Server  PREFIX = irc_server_
 
46
PROTOTYPES: ENABLE
 
47
 
 
48
void
 
49
irc_server_get_channels(server)
 
50
        Irssi::Irc::Server server
 
51
PREINIT:
 
52
        char *ret;
 
53
PPCODE:
 
54
        ret = irc_server_get_channels(server);
 
55
        XPUSHs(sv_2mortal(new_pv(ret)));
 
56
        g_free(ret);
 
57
 
 
58
void
 
59
send_raw(server, cmd)
 
60
        Irssi::Irc::Server server
 
61
        char *cmd
 
62
CODE:
 
63
        irc_send_cmd(server, cmd);
 
64
 
 
65
void
 
66
send_raw_now(server, cmd)
 
67
        Irssi::Irc::Server server
 
68
        char *cmd
 
69
CODE:
 
70
        irc_send_cmd_now(server, cmd);
 
71
 
 
72
void
 
73
send_raw_split(server, cmd, nickarg, max_nicks)
 
74
        Irssi::Irc::Server server
 
75
        char *cmd
 
76
        int nickarg
 
77
        int max_nicks
 
78
CODE:
 
79
        irc_send_cmd_split(server, cmd, nickarg, max_nicks);
 
80
 
 
81
MODULE = Irssi::Irc::Server     PACKAGE = Irssi::Irc::Server  PREFIX = server_
 
82
 
 
83
void
 
84
server_redirect_register(command, remote, timeout, start, stop, opt)
 
85
        char *command
 
86
        int remote
 
87
        int timeout
 
88
        SV *start
 
89
        SV *stop
 
90
        SV *opt
 
91
CODE:
 
92
        server_redirect_register_list(command, remote, timeout, 
 
93
                                      register_hash2list(hvref(start)),
 
94
                                      register_hash2list(hvref(stop)),
 
95
                                      register_hash2list(hvref(opt)));
 
96
 
 
97
void
 
98
server_redirect_event(server, command, count, arg, remote, failure_signal, signals)
 
99
        Irssi::Irc::Server server
 
100
        char *command
 
101
        int count
 
102
        char *arg
 
103
        int remote
 
104
        char *failure_signal
 
105
        SV *signals
 
106
CODE:
 
107
        server_redirect_event_list(server, command, count, *arg == '\0' ? NULL : arg, remote,
 
108
                                   *failure_signal == '\0' ? NULL : failure_signal,
 
109
                                   event_hash2list(hvref(signals)));
 
110
 
 
111
char *
 
112
server_redirect_get_signal(server, event, args)
 
113
        Irssi::Irc::Server server
 
114
        char *event
 
115
        char *args
 
116
CODE:
 
117
        RETVAL = (char *) server_redirect_get_signal(server, event, args);
 
118
OUTPUT:
 
119
        RETVAL
 
120
 
 
121
char *
 
122
server_redirect_peek_signal(server, event, args)
 
123
        Irssi::Irc::Server server
 
124
        char *event
 
125
        char *args
 
126
PREINIT:
 
127
        int redirection;
 
128
CODE:
 
129
        RETVAL = (char *) server_redirect_peek_signal(server, event, args, &redirection);
 
130
OUTPUT:
 
131
        RETVAL
 
132
 
 
133
char *
 
134
server_isupport(server, name)
 
135
        Irssi::Irc::Server server
 
136
        char *name
 
137
CODE:
 
138
        RETVAL = (char *) g_hash_table_lookup(server->isupport, name);
 
139
OUTPUT:
 
140
        RETVAL
 
141