1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
#ifndef __SERVERS_REDIRECT_H
#define __SERVERS_REDIRECT_H
/* Register new redirection command.
remote - Specifies if the command is by default a remote command
(eg. sent to another server). server_redirect_event() may override this.
timeout - If remote is TRUE, specifies how many seconds to wait for
reply before aborting.
... - char *start, int argpos, char *start, int argpos, ..., NULL,
char *stop, int argpos, char *stop, int argpos, ..., NULL
List of events that start and stop this redirection.
Start event list may be just NULL, but there must be at least one
stop event. `argpos' specifies the word number in event string which
is compared to wanted argument, -1 = don't compare, TRUE always. */
void server_redirect_register(const char *command,
int remote, int timeout, ...);
/* start/stop lists shouldn't be free'd after, and their strings
should be dynamically allocated */
void server_redirect_register_list(const char *command,
int remote, int timeout,
GSList *start, GSList *stop);
/* Specify that the next command sent to server will be redirected.
NOTE: This command MUST be called before irc_send_cmd().
command - Specifies the registered command that should be used for this
redirection.
arg - The argument to be compared in event strings. You can give multiple
arguments separated with space.
remote - Specifies if the command is a remote command, -1 = use default.
failure_signal - If irssi can't find the stop signal for the redirection,
this signal is called.
... - char *event, char *redirect_signal, ..., NULL
If the `event' is "", all the events belonging to the redirection but not
specified here, will be sent there. */
void server_redirect_event(IRC_SERVER_REC *server, const char *command,
const char *arg, int remote,
const char *failure_signal, ...);
/* Signals list shouldn't be free'd after, and it's strings should be
dynamically allocated */
void server_redirect_event_list(IRC_SERVER_REC *server, const char *command,
const char *arg, int remote,
const char *failure_signal, GSList *signals);
/* INTERNAL: */
/* irc_send_cmd() calls this to make sure redirecting knows
what's sent to server */
void server_redirect_command(IRC_SERVER_REC *server, const char *command,
REDIRECT_REC *redirect);
/* Returns the redirection signal for specified event.
This is the function that contains the real redirecting logic. */
const char *server_redirect_get_signal(IRC_SERVER_REC *server,
const char *event,
const char *args);
/* Returns the redirection signal for specified event.
Doesn't change the server state in any way, so if you really wish to
use the signal, call server_redirect_get_signal() after this. */
const char *server_redirect_peek_signal(IRC_SERVER_REC *server,
const char *event,
const char *args);
/* Destroy redirection record */
void server_redirect_destroy(REDIRECT_REC *rec);
void servers_redirect_init(void);
void servers_redirect_deinit(void);
#endif
|