Add -v flag

master
C. McEnroe 2020-02-01 02:26:35 -05:00
parent 856d40d121
commit 2b3a8bfb9c
4 changed files with 30 additions and 3 deletions

View File

@ -8,7 +8,7 @@
.
.Sh SYNOPSIS
.Nm
.Op Fl e
.Op Fl ev
.Op Fl a Ar auth
.Op Fl c Ar cert
.Op Fl h Ar host
@ -88,6 +88,13 @@ Set username to
.Ar user .
The default username is the same as the nickname.
.
.It Fl v
Log raw IRC messages to the
.Sy <debug>
window
as well as standard error
if it is not a terminal.
.
.It Fl w Ar pass
Log in with the server password
.Ar pass .

7
chat.c
View File

@ -39,7 +39,7 @@ int main(int argc, char *argv[]) {
const char *real = NULL;
int opt;
while (0 < (opt = getopt(argc, argv, "!a:c:eh:j:k:n:p:r:u:w:"))) {
while (0 < (opt = getopt(argc, argv, "!a:c:eh:j:k:n:p:r:u:vw:"))) {
switch (opt) {
break; case '!': insecure = true;
break; case 'a': sasl = true; self.plain = optarg;
@ -52,6 +52,7 @@ int main(int argc, char *argv[]) {
break; case 'p': port = optarg;
break; case 'r': real = optarg;
break; case 'u': user = optarg;
break; case 'v': self.debug = true;
break; case 'w': pass = optarg;
}
}
@ -70,4 +71,8 @@ int main(int argc, char *argv[]) {
ircFormat("CAP LS\r\n");
ircFormat("NICK :%s\r\n", nick);
ircFormat("USER %s 0 * :%s\r\n", user, real);
for (;;) {
ircRecv();
}
}

3
chat.h
View File

@ -33,10 +33,11 @@ enum Cap {
};
extern struct Self {
bool debug;
const char *join;
enum Cap caps;
char *plain;
char *nick;
const char *join;
} self;
#define ENUM_TAG \

14
irc.c
View File

@ -101,6 +101,18 @@ int ircConnect(const char *host, const char *port) {
return sock;
}
static void debug(char dir, const char *line) {
if (!self.debug) return;
size_t len = strcspn(line, "\r\n");
/*uiFormat(
Debug, Cold, NULL, "\3%02d%c%c\3 %.*s",
Gray, dir, dir, (int)len, line
);*/
if (!isatty(STDERR_FILENO)) {
fprintf(stderr, "%c%c %.*s\n", dir, dir, (int)len, line);
}
}
void ircSend(const char *ptr, size_t len) {
assert(client);
while (len) {
@ -119,6 +131,7 @@ void ircFormat(const char *format, ...) {
int len = vsnprintf(buf, sizeof(buf), format, ap);
va_end(ap);
assert((size_t)len < sizeof(buf));
debug('<', buf);
ircSend(buf, len);
}
@ -196,6 +209,7 @@ void ircRecv(void) {
crlf = memmem(line, &buf[len] - line, "\r\n", 2);
if (!crlf) break;
*crlf = '\0';
debug('>', line);
handle(parse(line));
line = crlf + 2;
}