summaryrefslogtreecommitdiff
path: root/libmisc/error_generated.c.gen
blob: 944d9097aeb2562c522acfa540497381e8ad374a (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
27
28
29
30
31
32
33
34
35
#!/usr/bin/env bash
# libmisc/error_generated.c.gen - Generate _errnum strings
#
# Copyright (C) 2025  Luke T. Shumaker <lukeshu@lukeshu.com>
# SPDX-License-Identifier: AGPL-3.0-or-later

error_h=$1
outfile=$2

{
	echo "/* ${outfile} - Generated by $0.  DO NOT EDIT!  */"
	echo
	echo '#include <libmisc/error.h>'
	echo
	echo 'const char *_errnum_str_sym(_errnum errnum) {'
	echo $'\tswitch (errnum) {'
	sed -nE \
		-e 's@^(#define)?\s+(E_[_A-Z0-9]+)[ ,][^/]*/\* ([^*(]+) (\*/|\().*@'$'\tcase \\2: return "\\2";''@p' \
		-- "$error_h"
	echo $'\tcase E_EUNKNOWN: return "E_EUNKNOWN";'
	echo $'\tdefault: return "E_<invalid>";'
	echo $'\t}'
	echo '}'
	echo
	echo 'const char *_errnum_str_msg(_errnum errnum) {'
	echo $'\tswitch (errnum) {'
	sed -nE \
		-e 's@^(#define)?\s+(E_[_A-Z0-9]+)[ ,][^/]*/\* ([^*(]+) (\*/|\().*@'$'\tcase \\2: return "\\3";''@p' \
		-- "$error_h"
	echo $'\tcase E_EUNKNOWN:'
	echo $'\tdefault:'
	echo $'\t\treturn "unknown error";'
	echo $'\t}'
	echo '}'
} >"$outfile"