#!/bin/sh
# Complete check of a stateless encoding.
# Usage: check-stateless SRCDIR CHARSET
srcdir="$1"
charset="$2"
set -e

# charset, modified for use in filenames.
charsetf=`echo "$charset" | sed -e 's,:,-,g'`

# For systems with severe filename restrictions
# allow for an alternate filename.
UNAME=${UNAME-`uname 2>/dev/null`}
case X$UNAME in
  *-DOS) filename=`echo "$charsetf" | sed "s|ISO-|ISO/|; \
                                           s|Mac|Mac/|; \
                                           s|BIG5-HKSCS-|BIG5-HKSCS/|; \
                                           s|Georgian-|Georgian/|"`
         tmp_filename=`echo "$filename" | sed "s|/|/tmp-|"`
         tmp_orig_filename=`echo "$filename" | sed "s|/|/tmp-orig-|"` ;;
  *)     filename="$charsetf"
         tmp_filename="$charsetf"
         tmp_orig_filename="$charsetf" ;;
esac

# iconv in one direction.
./table-from "$charset" > "${srcdir}"/"$tmp_filename".TXT

# iconv in the other direction.
./table-to "$charset" | sort > "${srcdir}"/"$tmp_filename".INVERSE-TXT

# Check 1: charmap and iconv forward should be identical.
cmp "${srcdir}"/"$filename".TXT "${srcdir}"/"$tmp_filename".TXT 2> /dev/null

# Check 2: the difference between the charmap and iconv backward.
sed -e '/	.* 0x/d' < "${srcdir}"/"$filename".TXT > tmp-noprecomposed-"$charsetf".TXT
if test -f "${srcdir}"/"$filename".IRREVERSIBLE-TXT; then
  cat tmp-noprecomposed-"$charsetf".TXT "${srcdir}"/"$filename".IRREVERSIBLE-TXT | sort | uniq -u > tmp-orig-"$charsetf".INVERSE-TXT
else
  cp tmp-noprecomposed-"$charsetf".TXT tmp-orig-"$charsetf".INVERSE-TXT
fi
cmp tmp-orig-"$charsetf".INVERSE-TXT "${srcdir}"/"$tmp_filename".INVERSE-TXT 2> /dev/null

rm -f "${srcdir}"/"$tmp_filename".TXT "${srcdir}"/"$tmp_filename".INVERSE-TXT tmp-noprecomposed-"$charsetf".TXT tmp-orig-"$charsetf".INVERSE-TXT
exit 0
# For a new encoding:
# You can create the "$charsetf".TXT like this:
#   ./table-from "$charset" > "$charsetf".TXT
# You can create the "$charsetf".IRREVERSIBLE-TXT like this:
#   ./table-to "$charset" | sort > "$charsetf".INVERSE-TXT
#   diff "$charsetf".TXT "$charsetf".INVERSE-TXT | grep '^[<>]' | sed -e 's,^. ,,' > "$charsetf".IRREVERSIBLE-TXT
