Add -v flag
parent
856d40d121
commit
2b3a8bfb9c
|
@ -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
7
chat.c
|
@ -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
3
chat.h
|
@ -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
14
irc.c
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue