--- /dev/null
+#!/bin/bash
+set -e
+set -o pipefail
+rm -f rules/foundries
+rm -f rules/*.rules rules/foundries.new
+
+chars () {
+ for c in $rest; do
+ ord=`perl -e 'print ord($ARGV[0]),"\n" or die $!' "$c"`
+ ./printrule >&3 "$bad" "$good" $height \
+ "^ENCODING $ord$" $partial "$c"
+ done
+}
+
+while read keyword rest; do
+ case "$keyword" in
+ '#'|'') continue ;;
+ pcf)
+ pcf=$rest
+ for f in good bad; do
+ out=$f/$pcf.bdf
+ zcat $f/$pcf.pcf.gz | pcf2bdf >$out
+ eval "$f=\$out"
+ done
+ ;;
+ rules)
+ newfoundry=$rest
+ eval `perl -ne '
+ next unless s/^BBX\s+//;
+ s/\s+$//;
+ s/\s+/,/g;
+ s/[-+]?\b\d+\b/ sprintf "%d", $& /ge;
+ m/^\d+\,(\d+)\b/ or die;
+ print "key=$_; height=$1\n" or die $!;
+ exit;
+ ' <$good`
+ oldfoundry=`perl -ne '
+ next unless s/^FOUNDRY\s+\"?//;
+ s/\"?\s+$//;
+ print or die $!;
+ exit;
+ ' <$good`
+ printf "%s %s" "$oldfoundry" "$newfoundry" >>rules/foundries.new
+ exec 3>rules/$newfoundry,$key.rules
+ echo >&3 '# -*- perl -*-'
+ echo >&3 '# autogenerated by mkrules'
+ echo >&3 'sub {'
+ ;;
+ endrules)
+ echo >&3 '}'
+ exec 3</dev/null
+ ;;
+ entire)
+ partial=0
+ chars
+ ;;
+ partial)
+ partial=1
+ chars
+ ;;
+ *)
+ echo >&2 "??? $keyword"
+ exit 1
+ ;;
+ esac
+done
+
+mv rules/foundries.new rules/foundries