Skip to content

Commit 7cadfac

Browse files
committed
more cleanup
1 parent 325db06 commit 7cadfac

File tree

1 file changed

+26
-22
lines changed

1 file changed

+26
-22
lines changed

kirc.c

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212
#include <sys/wait.h>
1313
#include <termios.h>
1414

15-
#define BUFF 512 /* buffer size (see RFC 2812) */
15+
#define IRC_MSG_MAX 512 /* guaranteed max message length */
16+
#define IRC_CHAN_MAX 200 /* gauranteed max channel length */
1617

17-
static int conn; /* socket connection */
18+
static int conn; /* connection socket */
1819
static int verb = 0; /* verbose output (e.g. raw stream) */
1920
static int cmax = 80; /* max number of chars per line */
2021
static int gutl = 10; /* max char width of left column */
@@ -66,21 +67,24 @@ input_handler(size_t size) {
6667

6768
/* send command to irc server */
6869
static void
69-
raw(char *s, char *fmt, ...) {
70+
raw(char *cmd_str, char *fmt, ...) {
7071

7172
va_list ap;
7273

7374
va_start(ap, fmt);
74-
vsnprintf(s, BUFF, fmt, ap);
75+
vsnprintf(cmd_str, IRC_MSG_MAX, fmt, ap);
7576
va_end(ap);
76-
if (verb) printf("<< %s", s);
77-
write(conn, s, strlen(s));
77+
78+
if (verb) printf("<< %s", cmd_str);
79+
80+
write(conn, cmd_str, strlen(cmd_str));
7881
}
7982

8083
/* initial irc server connection */
8184
static void
82-
irc_init(char *s) {
85+
irc_init(size_t size) {
8386

87+
char *s = malloc(sizeof(char) * (size + 1));
8488
struct addrinfo *res, hints = {
8589
.ai_family = AF_INET,
8690
.ai_socktype = SOCK_STREAM
@@ -90,11 +94,11 @@ irc_init(char *s) {
9094
conn = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
9195
connect(conn, res->ai_addr, res->ai_addrlen);
9296

93-
if (nick) raw(s, "NICK %s\r\n", nick);
94-
if (user && real) raw(s, "USER %s - - :%s\r\n", user, real);
95-
if (user && !real && nick) raw(s, "USER %s - - :%s\r\n", user, nick);
97+
if (nick) raw(s, "NICK %s\r\n", nick);
98+
if (user && real) raw(s, "USER %s - - :%s\r\n", user, real);
99+
if (user && !real && nick) raw(s, "USER %s - - :%s\r\n", user, nick);
96100
if (!user && !real && nick) raw(s, "USER %s - - :%s\r\n", nick, nick);
97-
if (pass) raw(s, "PASS %s\r\n", pass);
101+
if (pass) raw(s, "PASS %s\r\n", pass);
98102

99103
fcntl(conn, F_SETFL, O_NONBLOCK);
100104
}
@@ -104,11 +108,11 @@ static void
104108
printw(const char *format, ...) {
105109

106110
va_list argptr;
107-
char *tok, line[BUFF + 1];
111+
char *tok, line[IRC_MSG_MAX + 1];
108112
int len, i, s;
109113

110114
va_start(argptr, format);
111-
vsnprintf(line, BUFF + 1, format, argptr);
115+
vsnprintf(line, IRC_MSG_MAX + 1, format, argptr);
112116
va_end(argptr);
113117
for (i = 0; isspace(line[i]); i++) printf("%c", line[i]);
114118

@@ -132,14 +136,14 @@ static void
132136
parser(int sl, char *s) {
133137

134138
int len, i, o = -1;
135-
char buf_c[BUFF + 1], ltr[200], cha[50], nic[200], hos[200], \
139+
char buf_c[IRC_MSG_MAX + 1], ltr[200], cha[IRC_CHAN_MAX], nic[200], hos[200], \
136140
usr[200], cmd[200], msg[200], pre[200];
137141

138142
for (i = 0; i < sl; i++) {
139143
o++;
140144
buf_c[o] = s[i];
141145

142-
if ((i > 0 && s[i] == '\n' && s[i - 1] == '\r') || o == BUFF) {
146+
if ((i > 0 && s[i] == '\n' && s[i - 1] == '\r') || o == IRC_MSG_MAX) {
143147
buf_c[o + 1] = '\0';
144148
o = -1;
145149

@@ -208,28 +212,28 @@ main(int argc, char **argv) {
208212

209213
if (pid == 0) {
210214
int sl, i;
211-
char u[BUFF], s[BUFF];
215+
char u[IRC_MSG_MAX], s[IRC_MSG_MAX];
212216

213-
irc_init(s);
217+
irc_init(IRC_MSG_MAX);
214218

215-
while ((sl = read(conn, s, BUFF))) {
219+
while ((sl = read(conn, s, IRC_MSG_MAX))) {
216220
parser(sl, s);
217-
if (read(fd[0], u, BUFF) > 0) {
221+
if (read(fd[0], u, IRC_MSG_MAX) > 0) {
218222
for (i = 0; u[i] != '\n'; i++) continue;
219223
if (u[0] != ':') raw(s, "%-*.*s\r\n", i, i, u);
220224
}
221225
}
222-
printf("%*s<<press RETURN key to exit>>", gutl+2, "");
226+
fprintf(stderr, "%*s <<irc server connection closed>>", gutl, "");
223227
}
224228
else {
225-
char usrin[BUFF], v1[BUFF-20], v2[20], c1;
229+
char usrin[IRC_MSG_MAX], v1[IRC_MSG_MAX-20], v2[20], c1;
226230

227231
while (waitpid(pid, NULL, WNOHANG) == 0) {
228232
while (!kbhit() && waitpid(pid, NULL, WNOHANG) == 0) {
229233
dprintf(fd[1], ":\n");
230234
}
231235

232-
strcpy(usrin, input_handler(BUFF));
236+
strcpy(usrin, input_handler(IRC_MSG_MAX));
233237

234238
if (sscanf(usrin, ":%[M] %s %[^\n]\n", &c1, v2, v1) == 3 ||
235239
sscanf(usrin, ":%[Qnjpm] %[^\n]\n", &c1, v1) == 2 ||

0 commit comments

Comments
 (0)