diff options
author | mcpcpc <michaelczigler@icloud.com> | 2020-08-20 20:47:54 -0400 |
---|---|---|
committer | mcpcpc <michaelczigler@icloud.com> | 2020-08-20 20:47:54 -0400 |
commit | 325db065a5dc6e88ff73f019911fb96b92ab70ea (patch) | |
tree | ade02ea236e97fec7936a61d9a1534c5233a8811 /kirc.c | |
parent | move user input event handler to separate function (diff) | |
download | kirc-325db065a5dc6e88ff73f019911fb96b92ab70ea.tar.gz kirc-325db065a5dc6e88ff73f019911fb96b92ab70ea.tar.bz2 kirc-325db065a5dc6e88ff73f019911fb96b92ab70ea.tar.xz kirc-325db065a5dc6e88ff73f019911fb96b92ab70ea.tar.zst kirc-325db065a5dc6e88ff73f019911fb96b92ab70ea.zip |
add comments, cleanup readability of source
Diffstat (limited to '')
-rw-r--r-- | kirc.c | 74 |
1 files changed, 41 insertions, 33 deletions
@@ -1,3 +1,4 @@ +/* See LICENSE file for license details. */ #define _POSIX_C_SOURCE 200809L #include <ctype.h> #include <stdarg.h> @@ -11,20 +12,21 @@ #include <sys/wait.h> #include <termios.h> -#define BUFF 512 /* buffer size (see RFC 2812) */ - -static int conn; /* socket connection */ -static int verb = 0; /* verbose output (e.g. raw stream) */ -static int cmax = 80; /* max number of characters per line */ -static int gutl = 10; /* max character width of left column */ -static char *host = "irc.freenode.org"; /* irc host address */ -static char *chan = "kisslinux"; /* channel */ -static char *port = "6667"; /* port */ -static char *nick = NULL; /* nickname */ -static char *pass = NULL; /* server password */ -static char *user = NULL; /* server username */ -static char *real = NULL; /* real name */ - +#define BUFF 512 /* buffer size (see RFC 2812) */ + +static int conn; /* socket connection */ +static int verb = 0; /* verbose output (e.g. raw stream) */ +static int cmax = 80; /* max number of chars per line */ +static int gutl = 10; /* max char width of left column */ +static char * host = "irc.freenode.org"; /* irc host address */ +static char * chan = "kisslinux"; /* channel */ +static char * port = "6667"; /* server port */ +static char * nick = NULL; /* nickname */ +static char * pass = NULL; /* server password */ +static char * user = NULL; /* server user name */ +static char * real = NULL; /* server user real name */ + +/* wait for keyboard press to interrupt stream */ static int kbhit(void) { @@ -45,6 +47,24 @@ kbhit(void) { return byteswaiting > 0; } +/* handle keyboard strokes for command input */ +static char * +input_handler(size_t size) { + + char *usrin = malloc(sizeof(char) * (size + 1)); + struct termios tp, save; + + tcgetattr(STDIN_FILENO, &tp); + save = tp; + tp.c_cc[VERASE] = 127; + tcsetattr(STDIN_FILENO, TCSANOW, &tp); + fgets(usrin, size, stdin); + tcsetattr(STDIN_FILENO, TCSANOW, &save); + + return usrin; +} + +/* send command to irc server */ static void raw(char *s, char *fmt, ...) { @@ -57,8 +77,9 @@ raw(char *s, char *fmt, ...) { write(conn, s, strlen(s)); } +/* initial irc server connection */ static void -con(char *s) { +irc_init(char *s) { struct addrinfo *res, hints = { .ai_family = AF_INET, @@ -78,6 +99,7 @@ con(char *s) { fcntl(conn, F_SETFL, O_NONBLOCK); } +/* print formatted irc stream with word wrap and hanging indent */ static void printw(const char *format, ...) { @@ -105,8 +127,9 @@ printw(const char *format, ...) { } } +/* parse irc stream */ static void -pars(int sl, char *s) { +parser(int sl, char *s) { int len, i, o = -1; char buf_c[BUFF + 1], ltr[200], cha[50], nic[200], hos[200], \ @@ -149,21 +172,6 @@ pars(int sl, char *s) { } } -static char * -input_handler(size_t size) { - - char *usrin = malloc(sizeof(char) * (size + 1)); - struct termios tp, save; - - tcgetattr(STDIN_FILENO, &tp); - save = tp; - tp.c_cc[VERASE] = 127; - tcsetattr(STDIN_FILENO, TCSANOW, &tp); - fgets(usrin, size, stdin); - tcsetattr(STDIN_FILENO, TCSANOW, &save); - return usrin; -} - int main(int argc, char **argv) { @@ -202,10 +210,10 @@ main(int argc, char **argv) { int sl, i; char u[BUFF], s[BUFF]; - con(s); + irc_init(s); while ((sl = read(conn, s, BUFF))) { - pars(sl, s); + parser(sl, s); if (read(fd[0], u, BUFF) > 0) { for (i = 0; u[i] != '\n'; i++) continue; if (u[0] != ':') raw(s, "%-*.*s\r\n", i, i, u); |