Recently Written · git

sacc

Mirror of git://bitreich.org/sacc, the sacc gopher client from bitreich.org.

git clone https://github.com/equwal/sacc

Log | Files | Refs


commit 392dcb24732c88f500266b923bafdda8eb631220
Quentin Rameau <quinq@fifth.space>
2022-09-20 23:30:55 +0200

io: Use defines instead of constants

 io.h     |  5 +++++
 io_tls.c | 39 ++++++++++++++++++++++-----------------
 sacc.c   |  5 ++---
 ui_ti.c  |  4 ++--
 4 files changed, 31 insertions(+), 22 deletions(-)
diff --git a/io.h b/io.h
index d18e9ab..a705355 100644
--- a/io.h
+++ b/io.h
@@ -1,5 +1,10 @@
 #include <netdb.h>
 
+#define CONN_VALID 0
+#define CONN_ERROR -1
+#define CONN_RETRY -2
+#define CONN_ABORT -3
+
 struct cnx {
 #ifdef USE_TLS
 	struct tls *tls;
diff --git a/io_tls.c b/io_tls.c
index 7d99f44..3fe7904 100644
--- a/io_tls.c
+++ b/io_tls.c
@@ -12,6 +12,10 @@
 #include "common.h"
 #include "io.h"
 
+#define TLS_OFF 0
+#define TLS_ON  1
+#define TLS_PEM 2
+
 int tls;
 
 static int
@@ -19,7 +23,7 @@ close_tls(struct cnx *c)
 {
 	int r;
 
-	if (tls && c->tls) {
+	if (tls != TLS_OFF && c->tls) {
 		do {
 			r = tls_close(c->tls);
 		} while (r == TLS_WANT_POLLIN || r == TLS_WANT_POLLOUT);
@@ -71,9 +75,10 @@ connect_tls(struct cnx *c, struct addrinfo *ai, const char *host)
 	if ((t = tls_client()) == NULL)
 		return -1;
 
+/* XXX: construct path from getuid home path */
 	snprintf(pempath, sizeof(pempath), "/home/quinq/share/sacc/%s.pem", host);
 	switch (tls) {
-	case 1:
+	case TLS_ON:
 		/* check if there is a local certificate for target */
 		if (access(pempath, R_OK) == 0) {
 			if ((tc = tls_config_new()) == NULL)
@@ -84,7 +89,7 @@ connect_tls(struct cnx *c, struct addrinfo *ai, const char *host)
 				goto end;
 		}
 		break;
-	case 2:
+	case TLS_PEM:
 		/* save target certificate to file */
 		if ((tc = tls_config_new()) == NULL)
 			goto end;
@@ -103,12 +108,12 @@ connect_tls(struct cnx *c, struct addrinfo *ai, const char *host)
 
 	if (r == 0) {
 		switch (tls) {
-		case 1:
+		case TLS_ON:
 			c->tls = t;
 			break;
-		case 2:
-			r = savepem(t, pempath) == 0 ? -2 : -1;
-			tls = 1;
+		case TLS_PEM:
+			r = savepem(t, pempath) == 0 ? CONN_RETRY : CONN_ERROR;
+			tls = TLS_ON;
 			break;
 		}
 	} else {
@@ -119,8 +124,8 @@ connect_tls(struct cnx *c, struct addrinfo *ai, const char *host)
 		switch (*s) {
 		case 'Y':
 		case 'y':
-			tls = 2;
-			r = -2;
+			tls = TLS_PEM;
+			r = CONN_RETRY;
 			goto end;
 		}
 
@@ -129,17 +134,17 @@ connect_tls(struct cnx *c, struct addrinfo *ai, const char *host)
 		case 'Y':
 		case 'y':
 		case '\0':
-			tls = 0;
-			r = -2;
+			tls = TLS_OFF;
+			r = CONN_RETRY;
 			break;
 		default:
-			r = -3;
+			r = CONN_ABORT;
 		}
 	}
 end:
 	free(s);
 	tls_config_free(tc);
-	if (r != 0)
+	if (r != CONN_VALID)
 		tls_free(t);
 
 	return r;
@@ -151,7 +156,7 @@ connerr_tls(struct cnx *c, const char *host, const char *port, int err)
 	if (c->sock == -1) {
 		diag("Can't open socket: %s", strerror(err));
 	} else {
-		if (tls && c->tls) {
+		if (tls != TLS_OFF && c->tls) {
 			diag("Can't establish TLS with \"%s\": %s",
 			     host, tls_error(c->tls));
 		} else {
@@ -170,9 +175,9 @@ parseurl_tls(char *url)
 		if (!strncmp(url, "gopher", p - url)) {
 			if (tls)
 				diag("Switching from gophers to gopher");
-			tls = 0;
+			tls = TLS_OFF;
 		} else if (!strncmp(url, "gophers", p - url)) {
-			tls = 1;
+			tls = TLS_ON;
 		} else {
 			die("Protocol not supported: %.*s", p - url, url);
 		}
@@ -187,7 +192,7 @@ read_tls(struct cnx *c, void *buf, size_t bs)
 {
 	ssize_t n;
 
-	if (tls && c->tls) {
+	if (tls != TLS_OFF && c->tls) {
 		do {
 			n = tls_read(c->tls, buf, bs);
 		} while (n == TLS_WANT_POLLIN || n == TLS_WANT_POLLOUT);
diff --git a/sacc.c b/sacc.c
index 7cdcb08..21ca9e0 100644
--- a/sacc.c
+++ b/sacc.c
@@ -581,13 +581,12 @@ connectto(const char *host, const char *port, struct cnx *c)
 				err = errno;
 				ioclose(c);
 			}
-		/* retry */
-		} while (r == -2);
+		} while (r == CONN_RETRY);
 	}
 
 	freeaddrinfo(addrs);
 
-	if (r == -1)
+	if (r == CONN_ERROR)
 		ioconnerr(c, host, port, err);
 err:
 	sigprocmask(SIG_SETMASK, &oset, NULL);
diff --git a/ui_ti.c b/ui_ti.c
index e256611..b56fdf5 100644
--- a/ui_ti.c
+++ b/ui_ti.c
@@ -501,7 +501,7 @@ uiselectitem(Item *entry)
 			continue;
 		case _key_end:
 		end:
-			jumptoline(entry, dir->nitems, 0);
+			jumptoline(entry, dir->nitems, 1);
 			continue;
 		case _key_lnup:
 		lnup:
@@ -516,7 +516,7 @@ uiselectitem(Item *entry)
 			continue;
 		case _key_home:
 		home:
-			jumptoline(entry, 0, 0);
+			jumptoline(entry, 0, 1);
 			continue;
 		case _key_search:
 			free(searchstr);