#!/bin/sh rm -rf siks mkdir -p siks export GNUSORT_NUMERIC_COMPATIBILITY=x BSDSORT=../sort GNUSORT=~/coreutils/bin/sort #GNUSORT=sort FILECMP=cmp INPUT_FILE=si rm -rf test.log #ru_RU.ISO-8859-5 en_US.ISO8859-15 zh_HK.Big5HKSCS # # ru KOI-8 is an "irregular" locale with non-trivial ordering. # zh* is a 2-bytes locale for lang in ru_RU.KOI8-R C ru_RU.ISO-8859-5 en_US.ISO8859-15 zh_HK.Big5HKSCS do export LANG=${lang} for KEYS in -srh -sfrudb -Vs -sM -siz do echo ${LANG} ${KEYS} ${BSDSORT} ${KEYS} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} crash >> test.log exit fi ${GNUSORT} ${KEYS} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then echo ${LANG} ${KEYS} error >> test.log fi ${BSDSORT} -c ${KEYS} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -c error >> test.log fi rm siks/res.0.0 ${BSDSORT} ${KEYS} -t " " ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -t " " crash >> test.log exit fi ${GNUSORT} ${KEYS} -t " " ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then echo ${LANG} ${KEYS} error -t " " >> test.log fi ${BSDSORT} -c -t " " ${KEYS} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo $? ${LANG} ${KEYS} -t " " -c error >> test.log fi rm siks/res.0.0 ${BSDSORT} ${KEYS} -t "|" ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -t "|" crash >> test.log exit fi ${GNUSORT} ${KEYS} -t "|" ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then echo ${LANG} ${KEYS} error -t "|" >> test.log fi ${BSDSORT} -c -t "|" ${KEYS} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -c -t "|" error >> test.log fi rm siks/res.0.0 ${BSDSORT} ${KEYS} -t '\0' ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -t 0 crash >> test.log exit fi ${GNUSORT} ${KEYS} -t '\0' ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.0.0 2>&1 ; then echo ${LANG} ${KEYS} error -t '\0' >> test.log fi ${BSDSORT} -c -t '\0' ${KEYS} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -c -t '\0' error >> test.log fi rm siks/res.0.0 for f1 in 1 2 3 4 5 6 7 8 9 do for c1 in 1 2 3 4 5 10 15 20 25 30 do echo ${LANG} ${KEYS} ${f1} ${c1} ${BSDSORT} ${KEYS} +${f1}.${c1} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} +${f1}.${c1} crash +- >> test.log exit fi ${GNUSORT} ${KEYS} +${f1}.${c1} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then echo ${LANG} ${KEYS} +${f1}.${c1} error +- >> test.log fi ${BSDSORT} -c ${KEYS} +${f1}.${c1} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} +${f1}.${c1} -c error +- >> test.log fi rm siks/res.${f1}.${c1} ${BSDSORT} ${KEYS} -k${f1}.${c1} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1} crash >> test.log exit fi ${GNUSORT} ${KEYS} -k${f1}.${c1} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1} error >> test.log fi ${BSDSORT} -c ${KEYS} -k${f1}.${c1} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1} -c error >> test.log fi rm siks/res.${f1}.${c1} ${BSDSORT} ${KEYS} -k${f1}.${c1}b ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1}b crash >> test.log exit fi ${GNUSORT} ${KEYS} -k${f1}.${c1}b ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1}b error >> test.log fi ${BSDSORT} -c ${KEYS} -k${f1}.${c1}b siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1}b -c error >> test.log fi rm siks/res.${f1}.${c1} ${BSDSORT} ${KEYS} -t " " -k${f1}.${c1} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -t -k${f1}.${c1} crash >> test.log exit fi ${GNUSORT} ${KEYS} -t " " -k${f1}.${c1} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1} error -t " " >> test.log fi ${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1} -t " " -c error >> test.log fi rm siks/res.${f1}.${c1} ${BSDSORT} ${KEYS} -t " " -k${f1}.${c1}n ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1}n crash >> test.log exit fi ${GNUSORT} ${KEYS} -t " " -k${f1}.${c1}n ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1} error -t " " n >> test.log fi ${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1}n siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1} -c -t " " n error >> test.log fi rm siks/res.${f1}.${c1} ${BSDSORT} ${KEYS} -t "|" -k${f1}.${c1} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -t "|" -k${f1}.${c1} crash >> test.log exit fi ${GNUSORT} ${KEYS} -t "|" -k${f1}.${c1} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1} error -t "|" >> test.log fi ${BSDSORT} -c -t "|" ${KEYS} -k${f1}.${c1} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1} -c -t "|" error >> test.log fi rm siks/res.${f1}.${c1} for f2 in 1 2 3 4 5 6 7 8 9 10 do for c2 in 0 1 2 3 4 5 10 15 20 25 30 do echo ${LANG} ${KEYS} ${f1} ${c1} ${f2} ${c2} ${BSDSORT} ${KEYS} +${f1}.${c1} -${f2}.${c2} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} +${f1}.${c1} -${f2}.${c2} crash >> test.log exit fi ${GNUSORT} ${KEYS} +${f1}.${c1} -${f2}.${c2} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then echo ${LANG} ${KEYS} +${f1}.${c1} -${f2}.${c2} error +- >> test.log fi ${BSDSORT} -c ${KEYS} +${f1}.${c1} -${f2}.${c2} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} +${f1}.${c1} -${f2}.${c2} -c error +- >> test.log fi rm siks/res.${f1}.${c1}.${f2}.${c2} ${BSDSORT} ${KEYS} -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} crash >> test.log exit fi ${GNUSORT} ${KEYS} -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error >> test.log fi ${BSDSORT} -c ${KEYS} -k${f1}.${c1},${f2}.${c2} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c error >> test.log fi rm siks/res.${f1}.${c1}.${f2}.${c2} ${BSDSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} crash >> test.log exit fi ${GNUSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1}.b.${f2}.${c2} error >> test.log fi ${BSDSORT} -c ${KEYS} -k${f1}.${c1}b,${f2}.${c2} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -c error >> test.log fi rm siks/res.${f1}.${c1}.${f2}.${c2} ${BSDSORT} ${KEYS} -t " " -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -t " " -k${f1}.${c1},${f2}.${c2} crash >> test.log exit fi ${GNUSORT} ${KEYS} -t " " -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t " " >> test.log fi ${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1},${f2}.${c2} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t " " error >> test.log fi rm siks/res.${f1}.${c1}.${f2}.${c2} ${BSDSORT} ${KEYS} -t " " -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -t " " -k${f1}.${c1}n,${f2}.${c2} crash >> test.log exit fi ${GNUSORT} ${KEYS} -t " " -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then echo ${LANG} ${KEYS} -t " " -k${f1}.${c1}.${f2}.${c2} error n >> test.log fi ${BSDSORT} -c -t " " ${KEYS} -k${f1}.${c1}n,${f2}.${c2} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t " " n error >> test.log fi rm siks/res.${f1}.${c1}.${f2}.${c2} ${BSDSORT} ${KEYS} -t '\0' -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -t '\0' -k${f1}.${c1}n,${f2}.${c2} crash >> test.log exit fi ${GNUSORT} ${KEYS} -t '\0' -k${f1}.${c1}n,${f2}.${c2} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t '\0' n >> test.log fi ${BSDSORT} -c -t '\0' ${KEYS} -k${f1}.${c1}n,${f2}.${c2} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t '\0' n error >> test.log fi rm siks/res.${f1}.${c1}.${f2}.${c2} ${BSDSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} crash >> test.log exit fi ${GNUSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t "|" >> test.log fi ${BSDSORT} -c -t "|" ${KEYS} -k${f1}.${c1},${f2}.${c2} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t "|" error >> test.log fi rm siks/res.${f1}.${c1}.${f2}.${c2} ${BSDSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} crash >> test.log exit fi ${GNUSORT} ${KEYS} -t "|" -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1}.${f2}.${c2} error -t "|" 2k >> test.log fi ${BSDSORT} -c -t "|" ${KEYS} -k${f1}.${c1},${f2}.${c2} -k${f2}.${c1},${f1}.${c2} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1},${f2}.${c2} -c -t "|" 2k error >> test.log fi rm siks/res.${f1}.${c1}.${f2}.${c2} ${BSDSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} crash >> test.log exit fi ${GNUSORT} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} ${INPUT_FILE} -o siks/sik2 if ! ${FILECMP} siks/sik1 siks/sik2 >siks/res.${f1}.${c1}.${f2}.${c2} 2>&1 ; then echo ${LANG} ${KEYS} -k${f1}.${c1}.b.${f2}.${c2} error 2k >> test.log fi ${BSDSORT} -c ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -k${f2}.${c1},${f1}.${c2} siks/sik1 ER=$? if ! [ ${ER} -eq 0 ] ; then echo ${LANG} ${KEYS} -k${f1}.${c1}b,${f2}.${c2} -c 2k error >> test.log fi rm siks/res.${f1}.${c1}.${f2}.${c2} done done done done done done