summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chat.c10
-rw-r--r--chat.h4
-rw-r--r--irc.c12
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;
}