cio

a simple irc client
git clone git://kloet.net/cio
Download | Log | Files | Refs | README | LICENSE

commit ae8617668bacced0142bd508bfaaeecfabf92b11
parent 3a6e082601a65e9a451291d066abc11d6d70fb08
Author: Andrew Kloet <andrew@kloet.net>
Date:   Sat,  2 May 2026 16:57:39 -0400

style: code smells

Diffstat:
Mcio.c | 72+++++++++++++++++++++++++++++++++++++-----------------------------------
1 file changed, 37 insertions(+), 35 deletions(-)

diff --git a/cio.c b/cio.c @@ -43,8 +43,8 @@ #include <openssl/x509v3.h> #undef CTRL -#define CTRL(x) (x & 037) -#define IS_CONT(b) (((unsigned char)(b) & 0xC0) == 0x80) +#define CTRL(x) ((x) & 037) +#define IS_CONT(b) (((b) & 0xC0) == 0x80) #define GET_ARG(i) ((argc > (i)) ? argv[i] : "") #define SCROLL 15 @@ -93,19 +93,19 @@ enum { }; static struct { - size_t x, y; + int x, y; WINDOW *sw, *mw, *iw; } scr; static struct Chan { char name[ChanLen]; char *buf, *eol; - int n; /* Scroll offset. */ - int last_mday; /* Tracks tm_mday of last message */ - size_t sz; /* Size of buf. */ - char high; /* Nick highlight. */ - char new; /* New message. */ - char join; /* Channel was 'j'-oined. */ + int n; /* Scroll offset. */ + int last_mday; /* Tracks day of last message */ + size_t sz; /* Size of buf. */ + unsigned char high; /* Nick highlight. */ + unsigned char new; /* New message. */ + unsigned char join; /* Channel was 'j'-oined. */ } chl[MaxChans]; static struct { @@ -177,7 +177,8 @@ srd(void) { static char l[BufSz], *p = l; char *s, *usr, *cmd, *argv[MaxParams]; - int rd, argc; + int argc; + ssize_t rd; if (p - l >= BufSz) p = l; /* Input buffer overflow */ @@ -188,8 +189,8 @@ srd(void) if (rd <= 0) return 0; p += rd; for (;;) { /* Cycle on all received lines. */ - if (!(s = memchr(l, '\n', p - l))) - return 1; + s = memchr(l, '\n', p - l); + if (!s) return 1; if (s > l && s[-1] == '\r') s[-1] = 0; *s++ = 0; char *line = l, *token; @@ -244,10 +245,9 @@ dial(const char *host, const char *service) fd = -1; } freeaddrinfo(res); - if ((srv.fd = fd) == -1) - return "cannot connect to host"; - if (!ssl) - return 0; + srv.fd = fd; + if (!fd) return "cannot connect to host"; + if (!ssl) return 0; /* done */ SSL_load_error_strings(); SSL_library_init(); srv.ctx = SSL_CTX_new(TLS_client_method()); @@ -255,8 +255,8 @@ dial(const char *host, const char *service) if (sslverify && (SSL_CTX_set_verify(srv.ctx, SSL_VERIFY_PEER, NULL), (SSL_CTX_set_default_verify_paths(srv.ctx) != 1))) return "could not load system trust store"; - if (!(srv.ssl = SSL_new(srv.ctx))) - return "could not create ssl object"; + srv.ssl = SSL_new(srv.ctx); + if (!srv.ssl) return "could not create ssl object"; if (sslverify && (SSL_set_hostflags(srv.ssl, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS), !SSL_set1_host(srv.ssl, host) || @@ -301,8 +301,8 @@ chadd(const char *name, int joined) if (nch >= MaxChans || strlen(name) >= ChanLen) return -1; - if ((n = chfind(name)) > 0) - return n; + n = chfind(name); + if (n > 0) return n; strlcpy(chl[nch].name, name, sizeof(chl[nch].name)); chl[nch].sz = LogSz; chl[nch].buf = malloc(LogSz); @@ -349,7 +349,8 @@ pushl(char *p, char *e) if (!eol) eol = e; mbtowc(NULL, NULL, 0); while (p < eol) { - if ((n = mbtowc(&wc, p, eol - p)) <= 0) { + n = mbtowc(&wc, p, eol - p); + if (n <= 0) { mbtowc(NULL, NULL, 0); wc = L'?'; n = 1; } @@ -513,7 +514,7 @@ scmd(char *usr, char *cmd, int argc, char **argv) sndf("CAP END"); break; case AUTHENTICATE: - if (argc < 1 || strcmp(argv[0], "+")) break; + if (argc < 1 || strcmp(argv[0], "+") != 0) break; if (!empty(cert)) { sndf("AUTHENTICATE +"); } else if (!empty(usr) && !empty(key)) { @@ -527,7 +528,7 @@ scmd(char *usr, char *cmd, int argc, char **argv) memcpy(raw + 1, usr, ulen); raw[1 + ulen] = '\0'; memcpy(raw + 2 + ulen, key, klen); - EVP_EncodeBlock((unsigned char *)b64, raw, rlen); + EVP_EncodeBlock((unsigned char *)b64, raw, (int)rlen); sndf("AUTHENTICATE %s", b64); } break; @@ -600,8 +601,8 @@ uparse(char *m) return; case 'm': /* Private message. */ m = p + 1 + (p[1] == ' '); - if (!(p = strchr(m, ' '))) - return; + p = strchr(m, ' '); + if (!p) return; *p++ = 0; sndf("PRIVMSG %s :%s", m, p); return; @@ -634,9 +635,10 @@ tinit(void) getmaxyx(stdscr, scr.y, scr.x); if (scr.y < 4) die("cio: screen too small"); - if ((scr.sw = newwin(1, scr.x, 0, 0)) == 0 - || (scr.mw = newwin(scr.y - 2, scr.x, 1, 0)) == 0 - || (scr.iw = newwin(1, scr.x, scr.y - 1, 0)) == 0) + scr.sw = newwin(1, scr.x, 0, 0); + scr.mw = newwin(scr.y - 2, scr.x, 1, 0); + scr.iw = newwin(1, scr.x, scr.y - 1, 0); + if (!scr.sw || !scr.mw || !scr.iw) die("cio: cannot create windows"); keypad(scr.iw, 1); scrollok(scr.mw, 1); @@ -782,7 +784,7 @@ tgetch(void) int res = wget_wch(scr.iw, &wc); char *p = &inp.buf[inp.cu]; /* Current cursor position */ size_t tail = inp.len - inp.cu; /* Count of chars after cursor */ - size_t i, old; + size_t old; switch (wc) { case CTRL('n'): /* FALLTHROUGH */ @@ -841,7 +843,7 @@ tgetch(void) default: if (res == KEY_CODE_YES || (iswcntrl(wc))) return; char mb[MB_LEN_MAX]; - int n = wctomb(mb, wc); + int n = wctomb(mb, (wchar_t)wc); if (n <= 0 || inp.len + n >= BufSz - 1) return; memmove(p + n, p, tail); memcpy(p, mb, n); @@ -885,8 +887,8 @@ main(int argc, char *argv[]) die("cio-" VERSION); break; case 'l': - if (!(logfp = fopen(optarg, "a"))) - die("cio: fopen: logfile:"); + logfp = fopen(optarg, "a"); + if (!logfp) die("cio: fopen: logfile:"); break; case 'n': if (strlcpy(nick, optarg, sizeof(nick)) >= NickLen) @@ -955,9 +957,9 @@ main(int argc, char *argv[]) } } if (FD_ISSET(srv.fd, &wfs)) { - int wr = ssl ? SSL_write(srv.ssl, outb, outp - outb) - : write(srv.fd, outb, outp - outb); - + size_t n = (size_t)(outp - outb); + ssize_t wr = ssl ? SSL_write(srv.ssl, outb, (int)n) + : write(srv.fd, outb, n); if (wr <= 0) { die("cio: write failed: connection lost"); }