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 |