mirror of https://github.com/Cisco-Talos/clamav
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.3 KiB
57 lines
1.3 KiB
#!/bin/bash
|
|
|
|
IFS='
|
|
'
|
|
GIT_DIR=$(git rev-parse --git-dir)
|
|
if [ -z "$GIT_DIR" ]; then
|
|
echo "run me from a git path"
|
|
exit 1
|
|
fi
|
|
|
|
BASEDIR="$GIT_DIR/.."
|
|
pushd "$BASEDIR" > /dev/null
|
|
|
|
GIT_DIR=$(git rev-parse --git-dir)
|
|
BASEDIR="$GIT_DIR/.."
|
|
|
|
DATE=`date`
|
|
OUTFILE="$BASEDIR/win32/compat/w32_errno_defs.c"
|
|
INFILE="$BASEDIR/win32/compat/referrno.txt"
|
|
|
|
if [ ! -f "$INFILE" ]; then
|
|
echo "reference file missing"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
cat > "$OUTFILE" <<EOH
|
|
/* Automatically generated on $DATE */
|
|
|
|
#include <errno.h>
|
|
|
|
static const struct errno_struct {
|
|
int err;
|
|
const char *strerr;
|
|
} w32_errnos[] = {
|
|
EOH
|
|
|
|
maxerr=0
|
|
|
|
for pippo in `cat "$INFILE"`; do
|
|
symbol=`echo $pippo | cut -d'|' -f1`
|
|
value=`echo $pippo | cut -d'|' -f2`
|
|
value=$((value+1000))
|
|
[ $value -gt $maxerr ] && maxerr=$value
|
|
descr=`echo $pippo | cut -d'|' -f3`
|
|
git grep $symbol | egrep -v '(referrno|w32_errno_defs)' > /dev/null
|
|
used=$?
|
|
[ $used -ne 0 ] && echo "#ifdef __ERRNO_INCLUDE_UNUSED" >> "$OUTFILE"
|
|
echo -e "#ifndef $symbol\n#define $symbol $value\n#endif\n{ $symbol, \"$descr\" }," >> "$OUTFILE"
|
|
[ $used -ne 0 ] && echo "#endif /* __ERRNO_INCLUDE_UNUSED */" >> "$OUTFILE"
|
|
done
|
|
maxerr=$((maxerr+1))
|
|
echo -e "#ifndef EBOGUSWSOCK\n#define EBOGUSWSOCK $maxerr\n#endif\n{ EBOGUSWSOCK, \"WinSock error\"}\n};" >> "$OUTFILE"
|
|
|
|
popd >/dev/null
|
|
|
|
|
|
|