C. McEnroe
e6db22d2bb
Don't scan ignored messages for URLs
2020-07-09 22:43:35 -04:00
C. McEnroe
94fb9798c5
Bump ParamCap to 254
...
Apparently IRCds have decided that the 15-parameter limit doesn't matter
anymore. 254 is the maximum number of single-byte parameters (following
a single-byte command) which fit in a 512-byte CR-LF-terminated line.
When everyone decides that the 512-byte line length limit doesn't matter
either, I will delete my software and people can use some JavaScript
garbage instead.
This makes struct Message 2080 bytes, but there's only ever one or two
of them around at once. Avoid passing it by value to handle.
2020-06-24 13:36:24 -04:00
C. McEnroe
4fb94a1a22
Color mentions up to first ": " rather than just ":"
...
Avoids coloring everything up to a ":)".
2020-06-16 23:14:07 -04:00
C. McEnroe
721c3a9ee6
Add additional permission for linking with LibreSSL
...
https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs
2020-06-08 17:48:07 -04:00
C. McEnroe
73bda18110
Check ignores against id
...
Otherwise they do not work correctly for QUIT and NICK. This also lets
you ignore private messages only by putting the nick in the third field.
2020-04-07 13:18:42 -04:00
C. McEnroe
1969c9125f
Error on missing MODE parameters
2020-04-05 13:17:38 -04:00
C. McEnroe
bb531a71b1
Error on invalid ISUPPORT values
2020-04-05 13:11:19 -04:00
C. McEnroe
75a6aa9258
Use gnu-case-range and gnu-conditional-omitted-operand extensions
...
I'm sad to do this but I just can't stand writing (foo ? foo : bar)
anymore.
2020-04-03 17:10:52 -04:00
C. McEnroe
25f419465f
Add /ignore message filtering patterns
2020-03-31 14:30:42 -04:00
C. McEnroe
ff78362826
Replace some declaration; while loops with for loops
...
I should have been using this for getopt loops already but the call here
is slightly too long to fit on one line as a for loop.
2020-03-30 19:44:45 -04:00
C. McEnroe
bb2f3c7a01
Rewrite mode formatting again and write to log
...
Going back to one line per mode change again because it's easier.
2020-03-28 12:08:10 -04:00
C. McEnroe
3dc998272e
Log chat events
...
Still missing is logging MODE changes, which will be hell, unless it
just logs the raw stuff.
2020-03-25 18:58:48 -04:00
C. McEnroe
4f40ace9d4
Track MODE in replies
2020-03-23 16:52:24 -04:00
C. McEnroe
cf1545870a
Assume worst case for unknown user and host in splitMessage
...
The default USERLEN of 9 doesn't have a great source, the RFC only says
that nicks are length 9, so my assumption is that usernames are not
longer.
2020-03-23 13:25:10 -04:00
C. McEnroe
eb6316c235
Track own host, handle CHGHOST
2020-03-22 14:32:20 -04:00
C. McEnroe
0d0a6d1575
Handle RPL_CHANNELMODEIS
2020-03-22 11:40:58 -04:00
C. McEnroe
61828a12e9
Handle user mode changes
2020-03-22 11:26:16 -04:00
C. McEnroe
8da45d9183
Rewrite handleMode
2020-03-22 11:18:21 -04:00
C. McEnroe
1c508b78ab
Handle RPL_UMODEIS
2020-03-18 08:33:42 -04:00
C. McEnroe
2f53f75892
Ignore 422 ERR_NOMOTD
...
pounce will start sending these because some silly clients don't think
they're connected until some MOTD reply...
2020-03-09 03:08:59 -04:00
C. McEnroe
7e120f00a1
Set self.pos before handling the message
...
This intuitively feels wrong, but isn't. Most importantly, handleError
immediately exits, but we still need to "consume" that message,
otherwise pounce will keep sending it on reconnect. The same goes for
any other handler that might cause an exit, such as a require parameter
count failure.
2020-03-08 23:15:56 -04:00
C. McEnroe
8570a62235
Implement the causal.agency/consumer capability
2020-02-29 01:03:46 -05:00
C. McEnroe
78b4832bfe
Add raw modes to mode message
2020-02-25 03:00:36 -05:00
C. McEnroe
e9524b4af3
Handle changing setParamModes, paramModes and other channel modes
2020-02-25 02:54:15 -05:00
C. McEnroe
431945614d
Fix handling EXCEPTS and INVEX without values
2020-02-25 02:24:29 -05:00
C. McEnroe
3c5e1c95a4
Add /mode, /except, /invex and handle lists replies
2020-02-25 02:12:35 -05:00
C. McEnroe
c3c40d738b
Accumulate mode changes into a buffer for one message
2020-02-23 22:44:19 -05:00
C. McEnroe
9609723dc6
Handle ERR_CHANOPRIVSNEEDED
2020-02-20 05:04:58 -05:00
C. McEnroe
50a6d34a55
Handle MODE changing channel list modes
2020-02-20 04:53:06 -05:00
C. McEnroe
c2c8595012
Handle MODE setting channel prefix modes
2020-02-20 04:18:25 -05:00
C. McEnroe
a3b6d5d9a7
Change ban list formatting
2020-02-20 03:44:57 -05:00
C. McEnroe
b3c5458fc9
Rearrange some handlers
2020-02-20 03:18:48 -05:00
C. McEnroe
42ad42887c
Handle RPL_INVITING when no invite-notify
2020-02-20 02:32:36 -05:00
C. McEnroe
5c79b16a51
Handle ERR_BANLISTFULL
2020-02-20 02:13:23 -05:00
C. McEnroe
1b01045bf0
Add handlers for user-in-channel errors
2020-02-20 01:52:58 -05:00
C. McEnroe
f494fe6edb
Add generic error reply handler
...
This should have been in way earlier...
2020-02-20 01:38:31 -05:00
C. McEnroe
56de4668ac
Add /ban, /unban and handle ban list replies
2020-02-19 21:47:16 -05:00
C. McEnroe
2a33ee68dd
Format WHOIS signon date with %F %T
2020-02-19 21:29:51 -05:00
C. McEnroe
ba524ed804
Replace a lot of snprintf with a catf implementation
2020-02-16 19:12:19 -05:00
C. McEnroe
3885dd5231
Add 379 to WHOIS responses
2020-02-16 18:42:38 -05:00
C. McEnroe
edd8855418
Track EXCEPTS and INVEX modes
2020-02-16 18:31:50 -05:00
C. McEnroe
f84ab67311
Apply colorMentions to actions
...
The first-two-words branch works well for "/me verbs nick".
2020-02-16 05:22:28 -05:00
C. McEnroe
700b5d5870
Replace small integers in size_t with uint
2020-02-15 22:19:55 -05:00
C. McEnroe
83df94b359
Still add nick without prefixes to complete
2020-02-15 22:19:05 -05:00
C. McEnroe
9b1ab69908
Track PREFIX modes and CHANMODES
2020-02-15 05:29:54 -05:00
C. McEnroe
cd341076c0
Show prefixes in NAMES and WHOIS replies
2020-02-15 05:04:43 -05:00
C. McEnroe
42d106260b
Separate network info from self
2020-02-15 04:54:53 -05:00
C. McEnroe
39a343980b
Add /invite
2020-02-14 21:36:58 -05:00
C. McEnroe
8aa6dd86f6
Add /away
2020-02-14 21:10:40 -05:00
C. McEnroe
be08880fac
Only exit on errorneous nick during registration
2020-02-12 19:30:07 -05:00
C. McEnroe
05579773c8
Add 378 to list of WHOIS responses
...
It's the one (from freenode anyway) that tells you where you're
connecting from.
2020-02-12 19:14:49 -05:00
C. McEnroe
489df70c37
Add /list
2020-02-12 02:39:23 -05:00
C. McEnroe
3a325d3914
Handle RPL_AWAY
2020-02-12 00:17:28 -05:00
C. McEnroe
7c171b8aff
Rename query ID on nick change
2020-02-11 18:23:04 -05:00
C. McEnroe
6a5ebb0bab
Don't insert color codes for non-mentions
2020-02-11 18:15:25 -05:00
C. McEnroe
4d532ec738
Take first two words in colorMentions
...
This lets phrases like "hi june" get colored, but still doesn't get
carried away.
2020-02-11 18:08:05 -05:00
C. McEnroe
cc80fae758
Set self.nick to * initially
...
Allows removing a bunch of checks that self.nick is set, and it's what
the server usually calls you before registration.
Never highlight notices as mentions.
2020-02-11 17:52:55 -05:00
C. McEnroe
83a8952cf5
Move base64 out of chat.h
2020-02-11 17:40:08 -05:00
C. McEnroe
ac4876718f
Fix whois idle unit calculation
...
Rookie mistake.
2020-02-11 04:00:25 -05:00
C. McEnroe
36e0bbc4cd
Split on <> in colorMentions
...
This allows it to color the nick in the common case of pasting "<nick>
something they said" into the chat. Technically it should color the
brackets too but that would be too much work.
2020-02-10 20:58:14 -05:00
C. McEnroe
80a79467ef
Only automatically switch to expected joins
2020-02-10 20:24:07 -05:00
C. McEnroe
8e55c049b5
Avoid coloring mentions if there are control codes
...
This was breaking leading color codes.
2020-02-10 03:58:25 -05:00
C. McEnroe
fabb89077d
Update prompt when own nick changes
2020-02-10 01:29:30 -05:00
C. McEnroe
3436cd1068
Add /whois
2020-02-09 16:45:49 -05:00
C. McEnroe
82cf445858
Add self.nick to completion in Network, not None
2020-02-09 02:16:17 -05:00
C. McEnroe
a212a7ae2c
Show realname on JOIN if it is different from nick
2020-02-09 00:55:41 -05:00
C. McEnroe
b30b93f672
Use fmemopen to build colored mentions string
2020-02-08 23:29:32 -05:00
C. McEnroe
ec73174c4c
Use unexpected NAMES replies to populate complete
2020-02-08 22:55:11 -05:00
C. McEnroe
9cbec9ca7e
Color mentions
...
Sort of like Textual does, but only in the first part of the messaage,
either before a colon or before a space. Hopefully this makes it less
costly than it would be, and prevents false positives on people with
common nouns for nicks.
2020-02-08 22:51:13 -05:00
C. McEnroe
f502260dd0
Scan messages for URLs
2020-02-08 18:29:01 -05:00
C. McEnroe
b6bf6d62b0
Only show expected topic/names replies
2020-02-08 03:15:17 -05:00
C. McEnroe
b5707af4b8
Handle KICK
...
See I knew the color cache in complete would be useful in at least one
place!
2020-02-08 00:58:17 -05:00
C. McEnroe
f14175ebed
Handle QUIT
2020-02-08 00:36:23 -05:00
C. McEnroe
7ebfeea330
Handle NAMES reply
2020-02-08 00:25:09 -05:00
C. McEnroe
58e1d5b4e2
Handle NICK
2020-02-08 00:01:59 -05:00
C. McEnroe
8b7cc1a0ed
Clear completion for ID on self-part
2020-02-07 23:44:03 -05:00
C. McEnroe
d314523b90
Update completion on join, part, privmsg
2020-02-07 23:33:23 -05:00
C. McEnroe
87e42cc627
Color notices LightGray by default
2020-02-06 22:59:49 -05:00
C. McEnroe
34514cf2ee
Render actions in italic
...
Also render italic as normal if it's unsupported, as that is what would
happen anyway if curses has A_ITALIC but the terminal has no sitm. That
format string is kinda bad.
2020-02-06 18:48:49 -05:00
C. McEnroe
e1f10958c9
Never consider notices hot
2020-02-06 04:37:28 -05:00
C. McEnroe
32ec697092
Handle mentions
2020-02-06 04:18:15 -05:00
C. McEnroe
30b3780e57
Route own query messages correctly
2020-02-06 04:01:11 -05:00
C. McEnroe
1e6e533538
Send CAP END if CAP LS doesn't list anything good
2020-02-06 03:44:49 -05:00
C. McEnroe
5e98d83f83
Handle TOPIC and replies
2020-02-06 02:07:39 -05:00
C. McEnroe
5fb492f8cd
Handle PART
2020-02-06 01:16:35 -05:00
C. McEnroe
db499dc5f5
Send self.join without colon
...
If someone is weird enough to use channel keys, they can -j '#foo key'.
2020-02-06 01:03:21 -05:00
C. McEnroe
3085779d86
Handle ERROR
2020-02-05 23:27:43 -05:00
C. McEnroe
7414a8a11c
Save own username for message echoing
2020-02-05 00:40:24 -05:00
C. McEnroe
37ec1e8232
Align MOTD after -
2020-02-05 00:24:54 -05:00
C. McEnroe
de4c9df074
Align join messages after nick
2020-02-04 20:40:49 -05:00
C. McEnroe
ea93c9a6d9
Set self.color
2020-02-04 20:27:18 -05:00
C. McEnroe
d57df09511
Align word wrapping with tab character
...
Also fixes handling whitespace directly after control codes.
2020-02-04 19:50:23 -05:00
C. McEnroe
26e9dd9adf
Use time_t rather than struct tm
2020-02-03 18:41:52 -05:00
C. McEnroe
2f9a9c663a
Remove services TODO
...
Two goals:
1. Messages should always be routed to the same place.
2. You should be able to see your messages to *Serv and its responses
together.
2020-02-02 17:50:28 -05:00
C. McEnroe
aec28a9327
Check queries against chanTypes
2020-02-02 17:45:19 -05:00
C. McEnroe
0d6a60cc66
Save NETWORK, CHANTYPES, PREFIX from ISUPPORT
2020-02-02 17:37:36 -05:00
C. McEnroe
b535f0abdd
Handle notices and actions
2020-02-02 17:26:20 -05:00
C. McEnroe
dce7891331
Add extremely basid handlePrivmsg
2020-02-02 03:43:18 -05:00
C. McEnroe
052cd2ed26
Remove style string macros
2020-02-02 03:34:05 -05:00
C. McEnroe
8bb9ea7b7f
Add idColors
2020-02-02 03:27:50 -05:00