summaryrefslogtreecommitdiff
path: root/libmisc/error.c
blob: dfe4e8049779138dd8fd36aea1544c5edda8f363 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* libmisc/error.c - Go-esque errors
 *
 * Copyright (C) 2025  Luke T. Shumaker <lukeshu@lukeshu.com>
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */

#include <libmisc/error.h>

const char *error_msg(error err) {
	return (err._msg && err._msg[0])
		? err._msg
		: _errnum_str_msg(err.num);
}

void error_cleanup(error *errptr) {
	if (!errptr)
		return;
	if (errptr->_msg)
		free(errptr->_msg);
	errptr->num = E_NOERROR;
	errptr->_msg = NULL;
}

void fmt_print_error(lo_interface fmt_dest w, error err) {
	fmt_print(w, (str, error_msg(err)), " (", _errnum_str_sym(err.num), ")");
}