summaryrefslogtreecommitdiff
blob: 3e0bca7c1ad5f370647c3ee691997bde2f16d886 (plain)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <libircclient/libircclient.h>

#include <string.h>

#include "../error/error.h"

#include "../parameters/parameters.h"

#include "irc.h"
#include "irc_event_handlers.h"

int JH_irc_initialize
(
   struct JH_irc irc [const restrict static 1],
   const struct JH_parameters params [const restrict static 1],
   struct JH_meta_net jh_net [const restrict static 1]
)
{
   memset((void *) &(irc->callbacks), 0, sizeof(irc_callbacks_t));

   irc->callbacks.event_connect     = JH_irc_handle_connected_event;
   irc->callbacks.event_join        = JH_irc_do_nothing;
   irc->callbacks.event_nick        = JH_irc_do_nothing;
   irc->callbacks.event_quit        = JH_irc_do_nothing;
   irc->callbacks.event_part        = JH_irc_do_nothing;
   irc->callbacks.event_mode        = JH_irc_do_nothing;
   irc->callbacks.event_topic       = JH_irc_do_nothing;
   irc->callbacks.event_kick        = JH_irc_do_nothing;
   irc->callbacks.event_channel     = JH_irc_handle_channel_message_event;
   irc->callbacks.event_privmsg     = JH_irc_do_nothing;
   irc->callbacks.event_notice      = JH_irc_do_nothing;
   irc->callbacks.event_invite      = JH_irc_do_nothing;
   irc->callbacks.event_umode       = JH_irc_do_nothing;

   irc->callbacks.event_ctcp_rep    = JH_irc_do_nothing;
   irc->callbacks.event_ctcp_action = JH_irc_handle_ctcp_action_event;
   irc->callbacks.event_unknown     = JH_irc_do_nothing;
   irc->callbacks.event_numeric     = JH_irc_handle_numeric_event;

   irc->callbacks.event_dcc_chat_req = JH_irc_handle_dcc_chat_req_event;
   irc->callbacks.event_dcc_send_req = JH_irc_handle_dcc_send_req_event;

   irc->session = irc_create_session(&(irc->callbacks));

   irc->params = params;
   irc->jh_net = jh_net;

   if (!(irc->session))
   {
      JH_S_FATAL(stderr, "Unable to create IRC session.");

      return -1;
   }

   return 0;
}

int JH_irc_connect (struct JH_irc irc [const restrict static 1])
{
   if (JH_parameters_get_irc_is_ipv6(irc->params))
   {
      return
         irc_connect6
         (
            irc->session,
            JH_parameters_get_irc_server(irc->params),
            JH_parameters_get_irc_port(irc->params),
            JH_parameters_get_irc_password(irc->params),
            JH_parameters_get_irc_nick(irc->params),
            JH_parameters_get_irc_username(irc->params),
            JH_parameters_get_irc_realname(irc->params)
         );
   }
   else
   {
      return
         irc_connect
         (
            irc->session,
            JH_parameters_get_irc_server(irc->params),
            JH_parameters_get_irc_port(irc->params),
            JH_parameters_get_irc_password(irc->params),
            JH_parameters_get_irc_nick(irc->params),
            JH_parameters_get_irc_username(irc->params),
            JH_parameters_get_irc_realname(irc->params)
         );
   }
}

void JH_irc_do_nothing
(
   irc_session_t * session,
   const char * event,
   const char * origin,
   const char ** params,
   unsigned int count
)
{
}

void JH_irc_handle_numeric_event
(
   irc_session_t * session,
   unsigned int event,
   const char * origin,
   const char ** params,
   unsigned int count
)
{
}