diff options
| author | Klemens Nanni | 2021-06-07 23:40:39 +0000 | 
|---|---|---|
| committer | C. McEnroe | 2021-06-09 09:21:17 -0400 | 
| commit | a989e156a14462a1bb6c78f6ead115ddd04fed8f (patch) | |
| tree | 06370ef1733e145809451aa1e5049ff49392e050 | |
| parent | 7ea14eec84241da5ca5dce0df6d86fda45762858 (diff) | |
OpenBSD: hoist -o/printCert code to simplify
Nothing but the TLS handshake is required, so skip all other setup.
On OpenBSD, unveil() handling needs fixing which will involve code
reshuffling -- this is the first related but standalone step.
Also pledge this one-off code path individually such with simpler and
tighter promises while here.
| -rw-r--r-- | chat.c | 19 | 
1 files changed, 13 insertions, 6 deletions
| @@ -266,6 +266,19 @@ int main(int argc, char *argv[]) {  	}  	if (!host) errx(EX_USAGE, "host required"); +	if (printCert) { +#ifdef __OpenBSD__ +		unveilAll(trust, cert, priv); +		int error = pledge("stdio rpath inet dns", NULL); +		if (error) err(EX_OSERR, "pledge"); +#endif +		ircConfig(insecure, trust, cert, priv); +		ircConnect(bind, host, port); +		ircPrintCert(); +		ircClose(); +		return EX_OK; +	} +  	if (!nick) nick = getenv("USER");  	if (!nick) errx(EX_CONFIG, "USER unset");  	if (!user) user = nick; @@ -300,12 +313,6 @@ int main(int argc, char *argv[]) {  #endif  	ircConfig(insecure, trust, cert, priv); -	if (printCert) { -		ircConnect(bind, host, port); -		ircPrintCert(); -		ircClose(); -		return EX_OK; -	}  	uiInitEarly();  	if (save) { | 
