// End GitHub Copilot
send_log(client->FD, databuf.buf, databuf.len, 0);
sendall_log(client->FD, databuf.buf, databuf.len, 0);
+ *strchr(packet, '\n') = '\0';
+ for(int i=0; i<CLIENTS; i++)
+ if(clients[i] && clients[i]->nick[0]) {
+ databuf.len = 0;
+ append_strf(&databuf, ":irc.patchysicp.xyz 353 %s = %s :%s\n", client->nick, packet+5+(packet[5]==':'), clients[i]->nick);
+ send_log(client->FD, databuf.buf, databuf.len, 0);
+ }
+ databuf.len = 0;
+ append_strf(&databuf, ":irc.patchysicp.xyz 366 %s :End of /NAMES list\n", client->nick);
+ send_log(client->FD, databuf.buf, databuf.len, 0);
} else if(strncmp(packet, "PRIVMSG ", 8) == 0) {
append_str(&databuf, ":");
append_str(&databuf, client->nick);
goto unknown;
}
while (*p != ' ' && *p != '\n') {
+ databuf.len = 0;
switch (*p) {
case 'i':
if (off) {
goto unknown;
}
}
+ } else if(strncmp(packet, "NAMES ", 6) == 0) {
+ // TODO: actual channel support
+ char *p = strchr(packet+6, '\n');
+ *p = '\0';
+ for(int i=0; i<CLIENTS; i++)
+ if(clients[i] && clients[i]->nick[0]) {
+ databuf.len = 0;
+ append_strf(&databuf, ":irc.patchysicp.xyz 353 %s = %s :%s\n", client->nick, packet+6, clients[i]->nick);
+ send_log(client->FD, databuf.buf, databuf.len, 0);
+ }
+ databuf.len = 0;
+ append_strf(&databuf, ":irc.patchysicp.xyz 366 %s :End of /NAMES list\n", client->nick);
+ send_log(client->FD, databuf.buf, databuf.len, 0);
} else {
unknown:
printf("Unknown packet: %s", packet);