AmendHub

Download

jcs

/

wallops

/

irc.h

 

(View History)

jcs   chatter+irc: Rewrite nick list handling Latest amendment: 24 on 2022-02-10

1 /*
2 * Copyright (c) 2022 joshua stein <jcs@jcs.org>
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17 #ifndef __IRC_H__
18 #define __IRC_H__
19
20 enum {
21 IRC_STATE_UNINITED = 0,
22 IRC_STATE_DISCONNECTED,
23 IRC_STATE_CONNECTING,
24 IRC_STATE_CONNECTED,
25 IRC_STATE_IDLE
26 };
27
28 #define IRC_MSG_MAX_ARGS 6
29
30 struct irc_msg {
31 short code;
32 char cmd[16];
33 char source[64];
34 char msg[512];
35 char arg[IRC_MSG_MAX_ARGS][64];
36 };
37
38 struct irc_user {
39 char nick[32];
40 char username[32];
41 char hostname[128];
42 };
43
44 struct irc_channel_nick {
45 char nick[32];
46 char flags;
47 #define IRC_NICK_FLAG_OP (7 << 0)
48 #define IRC_NICK_FLAG_VOICE (6 << 0)
49 short next_nick;
50 };
51
52 struct irc_channel {
53 char name[64];
54 struct irc_channel_nick *nicks;
55 size_t nnicks;
56 size_t nicks_size;
57 short first_nick;
58 char topic[400];
59 };
60
61 void irc_process(struct chatter *chatter);
62 void irc_abort(struct chatter *chatter);
63 void irc_close(struct chatter *chatter);
64 void irc_process_input(struct chatter *chatter, char *input);
65
66 #endif