From c63c1683414c044a16722e9f1e738dd6ea63ec69 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Sat, 2 Oct 2021 18:40:19 -0400 Subject: Log IRC to standard output with -v So that it can actually be logged to a file separate from any errors or status messages. Also make sure only LF is used when logging. --- bounce.c | 2 +- bounce.h | 7 +++++++ client.c | 4 ++-- pounce.1 | 4 ++-- server.c | 4 ++-- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/bounce.c b/bounce.c index 515f7d7..ef256bc 100644 --- a/bounce.c +++ b/bounce.c @@ -289,7 +289,7 @@ int main(int argc, char *argv[]) { break; case 's': ringSize = parseSize(optarg); break; case 't': trust = optarg; break; case 'u': user = optarg; - break; case 'v': verbose = true; + break; case 'v': verbose = true; setlinebuf(stdout); break; case 'w': pass = optarg; break; case 'x': hashPass(); return EX_OK; break; case 'y': clientAway = optarg; diff --git a/bounce.h b/bounce.h index 4144324..af3bcc3 100644 --- a/bounce.h +++ b/bounce.h @@ -167,6 +167,13 @@ static inline const char *capList(enum Cap caps, const char *values[CapBits]) { } extern bool verbose; +static inline void +verboseLog(const char *prefix, const char *line, size_t len) { + if (!verbose) return; + if (len && line[len - 1] == '\n') len--; + if (len && line[len - 1] == '\r') len--; + printf("%s %.*s\n", prefix, (int)len, line); +} void ringAlloc(size_t len); void ringProduce(const char *line); diff --git a/client.c b/client.c index bad8c11..de7b2c9 100644 --- a/client.c +++ b/client.c @@ -86,7 +86,7 @@ void clientFree(struct Client *client) { } void clientSend(struct Client *client, const char *ptr, size_t len) { - if (verbose) fprintf(stderr, "<- %.*s", (int)len, ptr); + verboseLog("<-", ptr, len); fcntl(client->sock, F_SETFL, 0); while (len) { ssize_t ret = tls_write(client->tls, ptr, len); @@ -409,7 +409,7 @@ void clientRecv(struct Client *client) { for (;;) { lf = memchr(line, '\n', &client->buf[client->len] - line); if (!lf) break; - if (verbose) fprintf(stderr, "-> %.*s\n", (int)(lf - line), line); + verboseLog("->", line, lf - line); if (client->need || intercept(line, lf - line)) { lf[0] = '\0'; if (lf - line && lf[-1] == '\r') lf[-1] = '\0'; diff --git a/pounce.1 b/pounce.1 index 0a6cf03..e92bc98 100644 --- a/pounce.1 +++ b/pounce.1 @@ -1,4 +1,4 @@ -.Dd August 20, 2021 +.Dd October 2, 2021 .Dt POUNCE 1 .Os . @@ -375,7 +375,7 @@ Set username to The default username is the same as the nickname. . .It Fl v | Cm verbose -Write IRC messages to standard error: +Log IRC messages to standard output: .Pp .Bl -tag -width "<<" -compact .It << diff --git a/server.c b/server.c index 6640f8f..552f521 100644 --- a/server.c +++ b/server.c @@ -168,7 +168,7 @@ void serverPrintCert(void) { } void serverSend(const char *ptr, size_t len) { - if (verbose) fprintf(stderr, "<< %.*s", (int)len, ptr); + verboseLog("<<", ptr, len); while (len) { ssize_t ret = tls_write(client, ptr, len); if (ret == TLS_WANT_POLLIN || ret == TLS_WANT_POLLOUT) continue; @@ -244,7 +244,7 @@ void serverRecv(void) { crlf = memmem(line, &buf[len] - line, "\r\n", 2); if (!crlf) break; crlf[0] = '\0'; - if (verbose) fprintf(stderr, ">> %s\n", line); + verboseLog(">>", line, crlf - line); const char *ping = line; if (ping[0] == '@') { ping += strcspn(ping, " "); -- cgit 1.4.1