summaryrefslogtreecommitdiff
path: root/lib9p/srv_generated.c.gen
blob: 6a6335ab19a74585fd8916aaa79740a981fc9361 (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
#!/usr/bin/env bash
# lib9p/srv_generated.c.gen - Generate errno translation tables
#
# 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 '#include <lib9p/core.h>'
	echo '#include "srv_errno.h"'
	echo
	echo '#if CONFIG_9P_ENABLE_9P2000_u || CONFIG_9P_ENABLE_9P2000_L'
	echo 'lib9p_errno_t libmisc_to_linuxgeneric_errno(_errnum errnum) {'
	echo $'\tLM_PARTIAL_SWITCH (errnum) {'
	sed -nE \
		-e 's@^(#define)?\s+(E_POSIX_([_A-Z0-9]+))[ ,][^/]*/\* ([^*(]+) (\*/|\().*@'$'\tcase \\2: return LIB9P_ERRNO_L_\\3;''@p' \
		-- "$error_h" |
		grep -v -e '_ENOTSUP' -e '_EWOULDBLOCK'
	echo $'\tcase E_POSIX_ENOTSUP: return LIB9P_ERRNO_L_EOPNOTSUPP;'
	echo $'\tcase E_POSIX_EWOULDBLOCK: return LIB9P_ERRNO_L_EAGAIN;'
	echo $'\tdefault: return LIB9P_ERRNO_L_EIO;'
	echo $'\t}'
	echo '}'
	echo '#endif'
} >"$outfile"