This repository has been archived on 2021-01-07. You can view files and clone it, but cannot push or open issues or pull requests.
irc-toolkit/irc-messages.c

42 lines
1.3 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "common.h"
int main(void)
{
ssize_t bread = 1, tok;
size_t pos = 0;
char buffer[513];
IRC_Message out;
for (; bread > 0;) {
if ((tok = get_buffer_line(buffer, &out)) > 0) {
if (out.cmd == PRIVMSG || out.cmd == NOTICE) {
if (out.args[0] != NULL) {
printf(strchr("#+&!", *out.args[0]) != NULL ? ANSI_COLOR_YELLOW "%s" ANSI_COLOR_RESET
: ANSI_COLOR_GREEN "%s" ANSI_COLOR_RESET,
strchr("#+&!", *out.args[0]) != NULL ? out.args[0] : "direct");
}
putchar('/');
printf((out.name.nick != NULL) ? ANSI_COLOR_RED "%s" ANSI_COLOR_RESET : ANSI_COLOR_GRAY "%s" ANSI_COLOR_RESET,
(out.name.nick != NULL) ? out.name.nick : "unknown");
if (out.args[1] != NULL) printf(": %s", out.args[1]);
print_local_time(out.tags.time.value);
putchar('\n');
}
for (long unsigned int x = 0; x < sizeof(buffer) && *(buffer + tok + x); x++) *(buffer + x) = *(buffer + x + tok);
pos -= (unsigned long)tok;
*(buffer + pos) = '\0';
memset(&out, '\0', sizeof(out));
continue;
}
if ((bread = read(0, buffer + pos, sizeof(buffer) - 1 - pos)) > 0) {
pos += (size_t)bread;
buffer[pos] = '\0';
}
}
return 0;
}