sacc

sacc (saccomys): simple gopher client.
Log | Files | Refs | LICENSE

commit 392dcb24732c88f500266b923bafdda8eb631220
parent e8930420e7c31a3cea0484314bd38aba5197fa39
Author: Quentin Rameau <quinq@fifth.space>
Date:   Tue, 20 Sep 2022 23:30:55 +0200

io: Use defines instead of constants

Diffstat:
Mio.h | 5+++++
Mio_tls.c | 39++++++++++++++++++++++-----------------
Msacc.c | 5++---
Mui_ti.c | 4++--
4 files changed, 31 insertions(+), 22 deletions(-)

diff --git 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 @@ -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 @@ -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 @@ -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);