Rename client to irc
parent
b163492552
commit
35589a5624
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@ CFLAGS += -Wall -Wextra -Wpedantic
|
||||||
CFLAGS += -I/usr/local/include
|
CFLAGS += -I/usr/local/include
|
||||||
LDFLAGS += -L/usr/local/lib
|
LDFLAGS += -L/usr/local/lib
|
||||||
LDLIBS = -lcursesw -ltls
|
LDLIBS = -lcursesw -ltls
|
||||||
OBJS = chat.o client.o handle.o input.o ui.o
|
OBJS = chat.o handle.o input.o irc.o ui.o
|
||||||
|
|
||||||
all: tags chat
|
all: tags chat
|
||||||
|
|
||||||
|
|
4
chat.c
4
chat.c
|
@ -71,7 +71,7 @@ int main(int argc, char *argv[]) {
|
||||||
uiChat("Traveling...");
|
uiChat("Traveling...");
|
||||||
uiDraw();
|
uiDraw();
|
||||||
|
|
||||||
int sock = clientConnect(host, port, webPass);
|
int sock = ircConnect(host, port, webPass);
|
||||||
free(host);
|
free(host);
|
||||||
|
|
||||||
struct pollfd fds[2] = {
|
struct pollfd fds[2] = {
|
||||||
|
@ -87,7 +87,7 @@ int main(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fds[0].revents) uiRead();
|
if (fds[0].revents) uiRead();
|
||||||
if (fds[1].revents) clientRead();
|
if (fds[1].revents) ircRead();
|
||||||
uiDraw();
|
uiDraw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
8
chat.h
8
chat.h
|
@ -28,12 +28,12 @@ struct {
|
||||||
char *chan;
|
char *chan;
|
||||||
} chat;
|
} chat;
|
||||||
|
|
||||||
int clientConnect(const char *host, const char *port, const char *webPass);
|
int ircConnect(const char *host, const char *port, const char *webPass);
|
||||||
void clientRead(void);
|
void ircRead(void);
|
||||||
void clientWrite(const char *ptr, size_t len);
|
void ircWrite(const char *ptr, size_t len);
|
||||||
|
|
||||||
__attribute__((format(printf, 1, 2)))
|
__attribute__((format(printf, 1, 2)))
|
||||||
void clientFmt(const char *format, ...);
|
void ircFmt(const char *format, ...);
|
||||||
|
|
||||||
void uiInit(void);
|
void uiInit(void);
|
||||||
void uiHide(void);
|
void uiHide(void);
|
||||||
|
|
6
handle.c
6
handle.c
|
@ -50,7 +50,7 @@ static char *shift(char **params) {
|
||||||
|
|
||||||
static void handlePing(char *prefix, char *params) {
|
static void handlePing(char *prefix, char *params) {
|
||||||
(void)prefix;
|
(void)prefix;
|
||||||
clientFmt("PONG %s\r\n", params);
|
ircFmt("PONG %s\r\n", params);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle432(char *prefix, char *params) {
|
static void handle432(char *prefix, char *params) {
|
||||||
|
@ -70,7 +70,7 @@ static void handle001(char *prefix, char *params) {
|
||||||
free(chat.nick);
|
free(chat.nick);
|
||||||
chat.nick = strdup(nick);
|
chat.nick = strdup(nick);
|
||||||
}
|
}
|
||||||
clientFmt("JOIN %s\r\n", chat.chan);
|
ircFmt("JOIN %s\r\n", chat.chan);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handleJoin(char *prefix, char *params) {
|
static void handleJoin(char *prefix, char *params) {
|
||||||
|
@ -149,7 +149,7 @@ static void handle366(char *prefix, char *params) {
|
||||||
(void)prefix;
|
(void)prefix;
|
||||||
shift(¶ms);
|
shift(¶ms);
|
||||||
char *chan = shift(¶ms);
|
char *chan = shift(¶ms);
|
||||||
clientFmt("WHO %s\r\n", chan);
|
ircFmt("WHO %s\r\n", chan);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char whoBuf[4096];
|
static char whoBuf[4096];
|
||||||
|
|
10
input.c
10
input.c
|
@ -44,7 +44,7 @@ static void privmsg(bool action, const wchar_t *mesg) {
|
||||||
(action ? "\1ACTION " : ""), mesg, (action ? "\1" : "")
|
(action ? "\1ACTION " : ""), mesg, (action ? "\1" : "")
|
||||||
);
|
);
|
||||||
if (!line) err(EX_OSERR, "asprintf");
|
if (!line) err(EX_OSERR, "asprintf");
|
||||||
clientFmt("%s\r\n", &line[send]);
|
ircFmt("%s\r\n", &line[send]);
|
||||||
handle(line);
|
handle(line);
|
||||||
free(line);
|
free(line);
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ static void inputMe(wchar_t *params) {
|
||||||
static void inputNick(wchar_t *params) {
|
static void inputNick(wchar_t *params) {
|
||||||
wchar_t *nick = wcssep(¶ms, L" ");
|
wchar_t *nick = wcssep(¶ms, L" ");
|
||||||
if (nick) {
|
if (nick) {
|
||||||
clientFmt("NICK %ls\r\n", nick);
|
ircFmt("NICK %ls\r\n", nick);
|
||||||
} else {
|
} else {
|
||||||
uiChat("/nick requires a name");
|
uiChat("/nick requires a name");
|
||||||
}
|
}
|
||||||
|
@ -66,14 +66,14 @@ static void inputNick(wchar_t *params) {
|
||||||
|
|
||||||
static void inputWho(wchar_t *params) {
|
static void inputWho(wchar_t *params) {
|
||||||
(void)params;
|
(void)params;
|
||||||
clientFmt("WHO %s\r\n", chat.chan);
|
ircFmt("WHO %s\r\n", chat.chan);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void inputQuit(wchar_t *params) {
|
static void inputQuit(wchar_t *params) {
|
||||||
if (params) {
|
if (params) {
|
||||||
clientFmt("QUIT :%ls\r\n", params);
|
ircFmt("QUIT :%ls\r\n", params);
|
||||||
} else {
|
} else {
|
||||||
clientFmt("QUIT :Goodbye\r\n");
|
ircFmt("QUIT :Goodbye\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,13 +36,13 @@ static void webirc(const char *pass) {
|
||||||
int len = strlen(ssh);
|
int len = strlen(ssh);
|
||||||
const char *sp = strchr(ssh, ' ');
|
const char *sp = strchr(ssh, ' ');
|
||||||
if (sp) len = sp - ssh;
|
if (sp) len = sp - ssh;
|
||||||
clientFmt(
|
ircFmt(
|
||||||
"WEBIRC %s %s %.*s %.*s\r\n",
|
"WEBIRC %s %s %.*s %.*s\r\n",
|
||||||
pass, chat.user, len, ssh, len, ssh
|
pass, chat.user, len, ssh, len, ssh
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
int clientConnect(const char *host, const char *port, const char *webPass) {
|
int ircConnect(const char *host, const char *port, const char *webPass) {
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
struct tls_config *config = tls_config_new();
|
struct tls_config *config = tls_config_new();
|
||||||
|
@ -76,13 +76,13 @@ int clientConnect(const char *host, const char *port, const char *webPass) {
|
||||||
if (error) err(EX_PROTOCOL, "tls_connect");
|
if (error) err(EX_PROTOCOL, "tls_connect");
|
||||||
|
|
||||||
if (webPass) webirc(webPass);
|
if (webPass) webirc(webPass);
|
||||||
clientFmt("NICK %s\r\n", chat.nick);
|
ircFmt("NICK %s\r\n", chat.nick);
|
||||||
clientFmt("USER %s 0 * :%s\r\n", chat.user, chat.nick);
|
ircFmt("USER %s 0 * :%s\r\n", chat.user, chat.nick);
|
||||||
|
|
||||||
return sock;
|
return sock;
|
||||||
}
|
}
|
||||||
|
|
||||||
void clientWrite(const char *ptr, size_t len) {
|
void ircWrite(const char *ptr, size_t len) {
|
||||||
while (len) {
|
while (len) {
|
||||||
ssize_t ret = tls_write(client, ptr, len);
|
ssize_t ret = tls_write(client, ptr, len);
|
||||||
if (ret == TLS_WANT_POLLIN || ret == TLS_WANT_POLLOUT) continue;
|
if (ret == TLS_WANT_POLLIN || ret == TLS_WANT_POLLOUT) continue;
|
||||||
|
@ -92,7 +92,7 @@ void clientWrite(const char *ptr, size_t len) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void clientFmt(const char *format, ...) {
|
void ircFmt(const char *format, ...) {
|
||||||
char *buf;
|
char *buf;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
|
@ -100,14 +100,14 @@ void clientFmt(const char *format, ...) {
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
if (!buf) err(EX_OSERR, "vasprintf");
|
if (!buf) err(EX_OSERR, "vasprintf");
|
||||||
if (chat.verbose) uiFmt("<<< %.*s", len - 2, buf);
|
if (chat.verbose) uiFmt("<<< %.*s", len - 2, buf);
|
||||||
clientWrite(buf, len);
|
ircWrite(buf, len);
|
||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void clientRead(void) {
|
|
||||||
static char buf[4096];
|
static char buf[4096];
|
||||||
static size_t len;
|
static size_t len;
|
||||||
|
|
||||||
|
void ircRead(void) {
|
||||||
ssize_t read = tls_read(client, &buf[len], sizeof(buf) - len);
|
ssize_t read = tls_read(client, &buf[len], sizeof(buf) - len);
|
||||||
if (read < 0) errx(EX_IOERR, "tls_read: %s", tls_error(client));
|
if (read < 0) errx(EX_IOERR, "tls_read: %s", tls_error(client));
|
||||||
if (!read) {
|
if (!read) {
|
Loading…
Reference in New Issue