📄 test-hashgen-sh
字号:
#!/bin/sh
#ansi_c_comp="cc -ansi -pedantic"
ansi_c_comp="cc"
kr_c_comp="cc -traditional"
cxx_comp="c++ -ansi -pedantic"
filter1="-e % -e keys -e arning"
filter2="-e ."
lang="C"
comp="cc"
ext="c"
optim="0"
filter=$filter1
debug=""
keep=0
opt=1
usage () {
cat << EOF
Usage: `basename $0` [OPTIONS]... INPUT-FILE...
Options:
-l, --language=LANG Language: C, K&R, or C++.
The default value is ${lang}.
-O, --optimization=LEVEL Compiler optimization level (0-3).
The default value is ${optim}.
-k, --keep Don't remove generated sources
and executables.
-D, --debug Debug output.
--help Print this text.
EOF
exit 1
}
die () {
echo $*
exit 1
}
set_language () {
case $1 in
*[cC]++ ) lang="C++" comp="$cxx_comp" ext="cxx" ;;
*[kK]* ) lang="K&R" comp="$kr_c_comp" ext="c" ;;
*[cC] ) lang="C" comp="$ansi_c_comp" ext="c" ;;
* ) usage ;;
esac
}
set_optimization () {
case $1 in
*0 ) optim=0 ;;
*1 ) optim=1 ;;
*2 ) optim=2 ;;
*3 ) optim=3 ;;
* ) usage ;;
esac
}
test $# -ne 0 || usage
case $* in
*--help* ) usage ;;
esac
while test $# -ne 0 ; do
while test $opt -ne 0 ; do
case $1 in
-l )
set_language $2
shift 2
;;
--lang*=* | -lang*=* | -l* )
set_language $1
shift
;;
-O )
set_optimization $2
shift 2
;;
--optim*=* | -optim*=* | -O* )
set_optimization $1
shift
;;
--keep | -keep | -k )
keep=1
shift
;;
--debug | -[dD] )
filter=$filter2
debug="--debug"
shift
;;
-- )
options=0
shift
break
;;
-* ) usage ;;
* ) break ;;
esac
done
test empty$1 != empty || usage
input=$1
shift
test -r $input || die File $input not found
case `file $input` in
[aA][sS][cC][iI][iI]* | *text* ) ;;
* ) die File $input is not a hashgen file ;;
esac
echo "$input"
echo " language $lang"
name=`echo $input | sed -e s/\.hashgen//`
trap "rm -f ${name}_test.$ext ${name}_test; echo; exit 1" 1 2 15
sed \
-e "s/^language *=/#/" \
-e "s/^output *=/#/" \
-e "s/^header *=/#/" \
-e "s/^source *=/#/" \
-e "s/^test *=/#/" \
-- $input \
| hashgen -T${name}_test.$ext -l"$lang" $debug 2>&1 > /dev/null \
| grep $filter \
| sed -e "s/^/ /" || exit 1
echo " compiling test source, optimization level $optim"
$comp -O$optim -ansi -pedantic ${name}_test.$ext -o ${name}_test || exit 1
echo " testing"
./${name}_test \
| sed -e "s/^/ /" || exit 1
test $keep -eq 0 && rm -f ${name}_test.$ext ${name}_test
trap 1 2 15
echo
done
exit 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -