diff options
-rw-r--r-- | chat.c | 10 | ||||
-rw-r--r-- | chat.h | 4 | ||||
-rw-r--r-- | irc.c | 12 |
3 files changed, 18 insertions, 8 deletions
diff --git a/chat.c b/chat.c index b966fd1..9325bb6 100644 --- a/chat.c +++ b/chat.c @@ -55,17 +55,19 @@ static char *prompt(const char *prompt) { int main(int argc, char *argv[]) { char *host = NULL; const char *port = "6697"; - const char *webPass = NULL; + const char *pass = NULL; + const char *webirc = NULL; int opt; - while (0 < (opt = getopt(argc, argv, "h:j:n:p:vw:"))) { + while (0 < (opt = getopt(argc, argv, "W:h:j:n:p:vw:"))) { switch (opt) { + break; case 'W': webirc = optarg; break; case 'h': host = strdup(optarg); break; case 'j': chat.chan = strdup(optarg); break; case 'n': chat.nick = strdup(optarg); break; case 'p': port = optarg; break; case 'v': chat.verbose = true; - break; case 'w': webPass = optarg; + break; case 'w': pass = optarg; break; default: return EX_USAGE; } } @@ -82,7 +84,7 @@ int main(int argc, char *argv[]) { uiLog(L"Traveling..."); uiDraw(); - int sock = ircConnect(host, port, webPass); + int sock = ircConnect(host, port, pass, webirc); free(host); struct pollfd fds[2] = { diff --git a/chat.h b/chat.h index 3a84b6c..af13410 100644 --- a/chat.h +++ b/chat.h @@ -41,7 +41,9 @@ enum { IRC_UNDERLINE = 037, }; -int ircConnect(const char *host, const char *port, const char *webPass); +int ircConnect( + const char *host, const char *port, const char *pass, const char *webPass +); void ircRead(void); void ircWrite(const char *ptr, size_t len); diff --git a/irc.c b/irc.c index b718b13..b9bef73 100644 --- a/irc.c +++ b/irc.c @@ -43,7 +43,9 @@ static void webirc(const char *pass) { ); } -int ircConnect(const char *host, const char *port, const char *webPass) { +int ircConnect( + const char *host, const char *port, const char *pass, const char *webPass +) { int error; struct tls_config *config = tls_config_new(); @@ -80,8 +82,12 @@ int ircConnect(const char *host, const char *port, const char *webPass) { if (error) err(EX_PROTOCOL, "tls_connect"); if (webPass) webirc(webPass); - ircFmt("NICK %s\r\n", chat.nick); - ircFmt("USER %s 0 * :%s\r\n", chat.user, chat.nick); + if (pass) ircFmt("PASS :%s\r\n", pass); + ircFmt( + "NICK %s\r\n" + "USER %s 0 * :%s\r\n", + chat.nick, chat.user, chat.nick + ); return sock; } |