summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-01 02:26:35 -0500
committerJune McEnroe <june@causal.agency>2020-02-01 02:26:35 -0500
commit2b3a8bfb9c022269307feed01419c903ba754508 (patch)
tree67f588e8b1abe4563af08fa6ab92a528d74cdca0
parentFix CapNames array indices (diff)
downloadcatgirl-2b3a8bfb9c022269307feed01419c903ba754508.tar.gz
catgirl-2b3a8bfb9c022269307feed01419c903ba754508.zip
Add -v flag
Diffstat (limited to '')
-rw-r--r--catgirl.19
-rw-r--r--chat.c7
-rw-r--r--chat.h3
-rw-r--r--irc.c14
4 files changed, 30 insertions, 3 deletions
diff --git a/catgirl.1 b/catgirl.1
index 158466b..e9bb40e 100644
--- a/catgirl.1
+++ b/catgirl.1
@@ -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 .
diff --git a/chat.c b/chat.c
index 89579c0..5796085 100644
--- a/chat.c
+++ b/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();
+	}
 }
diff --git a/chat.h b/chat.h
index bb8929b..4dd4732 100644
--- a/chat.h
+++ b/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 \
diff --git a/irc.c b/irc.c
index c1c0e7a..cf8aab7 100644
--- a/irc.c
+++ b/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;
 	}
r-highlight'> This patch makes it possible to register mappings from filename extension to mime type in cgitrc and use this mapping when returning blob content in `plain` view. The reason for adding this mapping to cgitrc (as opposed to parsing something like /etc/mime.types) is to allow quick lookup of a limited number of filename extensions (/etc/mime-types on my machine currently contains over 700 entries). NB: A nice addition to this patch would be to parse /etc/mime.types when `plain` view is requested for a file with an extension for which there is no mapping registered in cgitrc. Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-07-25cgit.h: keep config flags sortedLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-07-25cgitrc.5.txt: document 'embedded' and 'noheader'Lars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-07-25Add support for 'noheader' optionLars Hjemli This option can be used to disable the standard cgit page header, which might be useful in combination with the 'embedded' option. Suggested-by: Mark Constable <markc@renta.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-07-25cgitrc.5.txt: document 'head-include'Lars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-07-25ui-blob: return 'application/octet-stream' for binary blobsLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-07-25ui-plain: Return 'application/octet-stream' for binary files.Remko Tronçon Signed-off-by: Remko Tronçon <git@el-tramo.be> Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-06-11use cgit_httpscheme() for atom feedDiego Ongaro 2009-06-11add cgit_httpscheme() -> http:// or https://Diego Ongaro 2009-06-07Return http statuscode 404 on unknown branchLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-06-07Add head-include configuration option.Mark Lodato This patch adds an option to the configuration file, "head-include", which works just like "header" or "footer", except the content is put into the HTML's <head> tag. 2009-03-15CGIT 0.8.2.1Lars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-03-15Fix doc-related glitches in Makefile and .gitignoreLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-03-15ui-snapshot: avoid segfault when no filename is specifiedLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-03-15fix segfault when displaying empty blobsEric Wong When size is zero, subtracting one from it turns it into ULONG_MAX which causes an out-of-bounds access on buf. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-02-19Add support for HEAD requestsLars Hjemli This is a quick 'n dirty hack which makes cgit honor HEAD requests. Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-02-19Add support for ETag in 'plain' viewLars Hjemli When downloading a blob identified by its path, the client might want to know if the blob has been modified since a previous download of the same path. To this end, an ETag containing the blob SHA1 seems to be ideal. Todo: add support for HEAD requests... Suggested-by: Owen Taylor <otaylor@redhat.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-02-12ui-tree: escape ascii-text properly in hexdump viewLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2009-02-12Makefile: add doc-related targetsLars Hjemli