⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 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 + -