1#!/bin/bash
2
3IFS='
4'
5GIT_DIR=$(git rev-parse --git-dir)
6if [ -z "$GIT_DIR" ]; then
7	echo "run me from a git path"
8	exit 1
9fi
10
11BASEDIR="$GIT_DIR/.."
12pushd "$BASEDIR" > /dev/null
13
14GIT_DIR=$(git rev-parse --git-dir)
15BASEDIR="$GIT_DIR/.."
16
17DATE=`date`
18OUTFILE="$BASEDIR/win32/compat/w32_errno_defs.c"
19INFILE="$BASEDIR/win32/compat/referrno.txt"
20
21if [ ! -f "$INFILE" ]; then
22	echo "reference file missing"
23	exit 1
24fi
25
26
27cat > "$OUTFILE" <<EOH
28/* Automatically generated on $DATE */
29
30#include <errno.h>
31
32static const struct errno_struct {
33	int err;
34	const char *strerr;
35} w32_errnos[] = {
36EOH
37
38maxerr=0
39
40for pippo in `cat "$INFILE"`; do
41	symbol=`echo $pippo | cut -d'|' -f1`
42	value=`echo $pippo | cut -d'|' -f2`
43	value=$((value+1000))
44	[ $value -gt $maxerr ] && maxerr=$value
45	descr=`echo $pippo | cut -d'|' -f3`
46	git grep $symbol | egrep -v '(referrno|w32_errno_defs)' > /dev/null
47	used=$?
48	[ $used -ne 0 ] && echo "#ifdef __ERRNO_INCLUDE_UNUSED" >> "$OUTFILE"
49	echo -e "#ifndef $symbol\n#define $symbol $value\n#endif\n{ $symbol, \"$descr\" }," >> "$OUTFILE"
50	[ $used -ne 0 ] && echo "#endif /* __ERRNO_INCLUDE_UNUSED */" >> "$OUTFILE"
51done
52maxerr=$((maxerr+1))
53echo -e "#ifndef EBOGUSWSOCK\n#define EBOGUSWSOCK $maxerr\n#endif\n{ EBOGUSWSOCK, \"WinSock error\"}\n};" >> "$OUTFILE"
54
55popd >/dev/null
56
57
58