Add -v flag
parent
856d40d121
commit
2b3a8bfb9c
|
@ -8,7 +8,7 @@
|
||||||
.
|
.
|
||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.Nm
|
.Nm
|
||||||
.Op Fl e
|
.Op Fl ev
|
||||||
.Op Fl a Ar auth
|
.Op Fl a Ar auth
|
||||||
.Op Fl c Ar cert
|
.Op Fl c Ar cert
|
||||||
.Op Fl h Ar host
|
.Op Fl h Ar host
|
||||||
|
@ -88,6 +88,13 @@ Set username to
|
||||||
.Ar user .
|
.Ar user .
|
||||||
The default username is the same as the nickname.
|
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
|
.It Fl w Ar pass
|
||||||
Log in with the server password
|
Log in with the server password
|
||||||
.Ar pass .
|
.Ar pass .
|
||||||
|
|
7
chat.c
7
chat.c
|
@ -39,7 +39,7 @@ int main(int argc, char *argv[]) {
|
||||||
const char *real = NULL;
|
const char *real = NULL;
|
||||||
|
|
||||||
int opt;
|
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) {
|
switch (opt) {
|
||||||
break; case '!': insecure = true;
|
break; case '!': insecure = true;
|
||||||
break; case 'a': sasl = true; self.plain = optarg;
|
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 'p': port = optarg;
|
||||||
break; case 'r': real = optarg;
|
break; case 'r': real = optarg;
|
||||||
break; case 'u': user = optarg;
|
break; case 'u': user = optarg;
|
||||||
|
break; case 'v': self.debug = true;
|
||||||
break; case 'w': pass = optarg;
|
break; case 'w': pass = optarg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,4 +71,8 @@ int main(int argc, char *argv[]) {
|
||||||
ircFormat("CAP LS\r\n");
|
ircFormat("CAP LS\r\n");
|
||||||
ircFormat("NICK :%s\r\n", nick);
|
ircFormat("NICK :%s\r\n", nick);
|
||||||
ircFormat("USER %s 0 * :%s\r\n", user, real);
|
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 {
|
extern struct Self {
|
||||||
|
bool debug;
|
||||||
|
const char *join;
|
||||||
enum Cap caps;
|
enum Cap caps;
|
||||||
char *plain;
|
char *plain;
|
||||||
char *nick;
|
char *nick;
|
||||||
const char *join;
|
|
||||||
} self;
|
} self;
|
||||||
|
|
||||||
#define ENUM_TAG \
|
#define ENUM_TAG \
|
||||||
|
|
14
irc.c
14
irc.c
|
@ -101,6 +101,18 @@ int ircConnect(const char *host, const char *port) {
|
||||||
return sock;
|
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) {
|
void ircSend(const char *ptr, size_t len) {
|
||||||
assert(client);
|
assert(client);
|
||||||
while (len) {
|
while (len) {
|
||||||
|
@ -119,6 +131,7 @@ void ircFormat(const char *format, ...) {
|
||||||
int len = vsnprintf(buf, sizeof(buf), format, ap);
|
int len = vsnprintf(buf, sizeof(buf), format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
assert((size_t)len < sizeof(buf));
|
assert((size_t)len < sizeof(buf));
|
||||||
|
debug('<', buf);
|
||||||
ircSend(buf, len);
|
ircSend(buf, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,6 +209,7 @@ void ircRecv(void) {
|
||||||
crlf = memmem(line, &buf[len] - line, "\r\n", 2);
|
crlf = memmem(line, &buf[len] - line, "\r\n", 2);
|
||||||
if (!crlf) break;
|
if (!crlf) break;
|
||||||
*crlf = '\0';
|
*crlf = '\0';
|
||||||
|
debug('>', line);
|
||||||
handle(parse(line));
|
handle(parse(line));
|
||||||
line = crlf + 2;
|
line = crlf + 2;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue