xref: /freebsd/tools/build/make_libc_exterr_cat_filenames.sh (revision 3ef25acf3600fb822bdf1487036184b4978d737f)
1*3ef25acfSKonstantin Belousov#!/bin/sh
2*3ef25acfSKonstantin Belousovset -e
3*3ef25acfSKonstantin Belousov
4*3ef25acfSKonstantin Belousovcheck="lib/libc/gen/uexterr_format.c"
5*3ef25acfSKonstantin Belousovtarget="lib/libc/gen/exterr_cat_filenames.h"
6*3ef25acfSKonstantin Belousov
7*3ef25acfSKonstantin Belousovif [ \! -f "${check}" ] ; then
8*3ef25acfSKonstantin Belousov    echo "Script must be run from the top of the full source tree"
9*3ef25acfSKonstantin Belousov    exit 1
10*3ef25acfSKonstantin Belousovfi
11*3ef25acfSKonstantin Belousov
12*3ef25acfSKonstantin Belousovecho "/*" >"${target}"
13*3ef25acfSKonstantin Belousovprintf " * Automatically %sgenerated, use\\n" \@ >>"${target}"
14*3ef25acfSKonstantin Belousovecho " * tools/build/make_libc_exterr_cat_filenames.sh" >>"${target}"
15*3ef25acfSKonstantin Belousovecho " */" >>"${target}"
16*3ef25acfSKonstantin Belousov
17*3ef25acfSKonstantin Belousov(find sys -type f -name '*.c' | \
18*3ef25acfSKonstantin Belousov    xargs grep -E '^#define[[:space:]]+EXTERR_CATEGORY[[:space:]]+EXTERR_CAT_' | \
19*3ef25acfSKonstantin Belousov    sed -E 's/[[:space:]]+/:/g' | \
20*3ef25acfSKonstantin Belousov    awk -F ':' '{filename = $1; sub(/^sys\//, "", filename);
21*3ef25acfSKonstantin Belousov        printf("\t[%s] = \"%s\",\n", $4, filename)}') \
22*3ef25acfSKonstantin Belousov    >>"${target}"
23